@webiny/api-apw 0.0.0-unstable.990c3ab1b6 → 0.0.0-unstable.99666aeb00

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 (74) hide show
  1. package/crud/createContentReviewMethods.js +20 -5
  2. package/crud/createContentReviewMethods.js.map +1 -1
  3. package/index.d.ts +1 -2
  4. package/index.js +1 -5
  5. package/index.js.map +1 -1
  6. package/package.json +40 -47
  7. package/plugins/context.d.ts +0 -1
  8. package/plugins/context.js +2 -16
  9. package/plugins/context.js.map +1 -1
  10. package/plugins/graphql/changeRequest.gql.js +2 -2
  11. package/plugins/graphql/changeRequest.gql.js.map +1 -1
  12. package/plugins/graphql/comment.gql.js +2 -2
  13. package/plugins/graphql/comment.gql.js.map +1 -1
  14. package/plugins/graphql/contentReview.gql.js +5 -5
  15. package/plugins/graphql/contentReview.gql.js.map +1 -1
  16. package/plugins/graphql/reviewer.gql.js +2 -2
  17. package/plugins/graphql/reviewer.gql.js.map +1 -1
  18. package/plugins/graphql/workflow.gql.js +2 -2
  19. package/plugins/graphql/workflow.gql.js.map +1 -1
  20. package/plugins/graphql.js +2 -2
  21. package/plugins/graphql.js.map +1 -1
  22. package/plugins/hooks/initializeContentReviewSteps.js +8 -2
  23. package/plugins/hooks/initializeContentReviewSteps.js.map +1 -1
  24. package/plugins/hooks/notifications/changeRequestAfterCreate.js +3 -8
  25. package/plugins/hooks/notifications/changeRequestAfterCreate.js.map +1 -1
  26. package/plugins/hooks/notifications/commentAfterCreate.js +3 -8
  27. package/plugins/hooks/notifications/commentAfterCreate.js.map +1 -1
  28. package/plugins/hooks/notifications/contentReviewAfterCreate.js +3 -8
  29. package/plugins/hooks/notifications/contentReviewAfterCreate.js.map +1 -1
  30. package/plugins/hooks/notifications/reviewers.js +15 -14
  31. package/plugins/hooks/notifications/reviewers.js.map +1 -1
  32. package/scheduler/createScheduleActionMethods.js +2 -7
  33. package/scheduler/createScheduleActionMethods.js.map +1 -1
  34. package/scheduler/handlers/executeAction/index.d.ts +1 -1
  35. package/scheduler/handlers/executeAction/index.js +37 -7
  36. package/scheduler/handlers/executeAction/index.js.map +1 -1
  37. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.d.ts +6 -0
  38. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js +14 -0
  39. package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js.map +1 -1
  40. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.d.ts +2 -3
  41. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js +7 -2
  42. package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js.map +1 -1
  43. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.d.ts +2 -2
  44. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js +3 -59
  45. package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js.map +1 -1
  46. package/scheduler/handlers/scheduleAction/index.d.ts +1 -1
  47. package/scheduler/handlers/scheduleAction/index.js +5 -1
  48. package/scheduler/handlers/scheduleAction/index.js.map +1 -1
  49. package/scheduler/handlers/scheduleAction/scheduleAction.utils.js +2 -0
  50. package/scheduler/handlers/scheduleAction/scheduleAction.utils.js.map +1 -1
  51. package/scheduler/handlers/utils.d.ts +1 -2
  52. package/scheduler/handlers/utils.js +0 -1
  53. package/scheduler/handlers/utils.js.map +1 -1
  54. package/scheduler/types.d.ts +2 -20
  55. package/scheduler/types.js +0 -5
  56. package/scheduler/types.js.map +1 -1
  57. package/storageOperations/changeRequestStorageOperations.js +20 -20
  58. package/storageOperations/changeRequestStorageOperations.js.map +1 -1
  59. package/storageOperations/commentStorageOperations.js +23 -23
  60. package/storageOperations/commentStorageOperations.js.map +1 -1
  61. package/storageOperations/contentReviewStorageOperations.js +20 -20
  62. package/storageOperations/contentReviewStorageOperations.js.map +1 -1
  63. package/storageOperations/models/contentModelPluginFactory.d.ts +3 -10
  64. package/storageOperations/models/contentModelPluginFactory.js +3 -6
  65. package/storageOperations/models/contentModelPluginFactory.js.map +1 -1
  66. package/storageOperations/models/index.js +0 -4
  67. package/storageOperations/models/index.js.map +1 -1
  68. package/storageOperations/reviewerStorageOperations.js +23 -28
  69. package/storageOperations/reviewerStorageOperations.js.map +1 -1
  70. package/storageOperations/workflowStorageOperations.js +20 -18
  71. package/storageOperations/workflowStorageOperations.js.map +1 -1
  72. package/types.d.ts +6 -5
  73. package/types.js.map +1 -1
  74. package/utils/resolve.d.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["contentReviewSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwContentReviewContent","version","parent","_","context","getContent","apw","getContentGetter","type","content","id","settings","publishedOn","publishedBy","reviewer","list","where","identityId","scheduledBy","ApwContentReviewListItem","activeStep","steps","find","step","status","ApwContentReviewStepStatus","ACTIVE","totalComments","reduce","count","isNaN","reviewers","reviewerIds","includes","push","ApwQuery","getContentReview","args","resolve","contentReview","get","listContentReviews","entries","meta","ListResponse","e","ErrorResponse","isReviewRequired","data","ApwMutation","createContentReview","create","deleteContentReview","delete","provideSignOff","retractSignOff","publishContent","datetime","unpublishContent","deleteScheduledAction"],"sources":["contentReview.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport {\n ApwContentReviewStep,\n ApwContentReviewStepStatus,\n ApwContext,\n ApwContentReviewListParams,\n ApwContentReviewContent\n} from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst contentReviewSchema = new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type ApwContentReviewListItem {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # ContentReview specific fields\n title: String\n steps: [ApwContentReviewStep]\n content: ApwContentReviewContent\n reviewStatus: ApwContentReviewStatus\n activeStep: ApwContentReviewStep\n totalComments: Int\n latestCommentId: String\n reviewers: [ID!]!\n }\n\n type ApwListContentReviewsResponse {\n data: [ApwContentReviewListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwContentReviewReviewer {\n id: ID\n displayName: String\n }\n\n type ApwContentReviewComment {\n body: JSON\n author: String\n }\n\n type ApwContentReviewChangeRequested {\n title: String\n body: JSON\n media: JSON\n step: String\n resolved: Boolean\n comments: [ApwContentReviewComment]\n }\n\n enum ApwContentReviewStepStatus {\n done\n active\n inactive\n }\n\n enum ApwContentReviewStatus {\n underReview\n readyToBePublished\n published\n requiresMyAttention\n }\n\n type ApwContentReviewStep {\n status: ApwContentReviewStepStatus\n id: String\n title: String\n pendingChangeRequests: Int\n signOffProvidedOn: DateTime\n signOffProvidedBy: ApwCreatedBy\n }\n\n type ApwContentReview {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # ContentReview specific fields\n title: String\n steps: [ApwContentReviewStep]\n content: ApwContentReviewContent\n workflow: ID\n reviewStatus: ApwContentReviewStatus\n }\n\n type ApwContentReviewResponse {\n data: ApwContentReview\n error: ApwError\n }\n\n type ApwDeleteContentReviewResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwListContentReviewsSort {\n id_ASC\n id_DESC\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n title_ASC\n title_DESC\n }\n\n input ApwContentReviewReviewerInput {\n id: ID\n }\n\n input ApwContentReviewScopeInput {\n type: String\n options: JSON\n }\n\n input ApwContentReviewCommentInput {\n body: JSON\n author: String\n }\n\n input ApwContentReviewChangeRequestedInput {\n title: String\n body: JSON\n media: JSON\n step: String\n resolved: Boolean\n comments: [ApwContentReviewCommentInput]\n }\n\n enum ApwContentReviewContentTypes {\n page\n cms_entry\n }\n\n type ApwContentReviewContentSettings {\n modelId: String\n }\n\n input ApwContentReviewContentSettingsInput {\n modelId: String\n }\n\n type ApwContentReviewContent {\n id: ID!\n type: ApwContentReviewContentTypes!\n version: Int!\n settings: ApwContentReviewContentSettings\n publishedOn: String\n publishedBy: ApwCreatedBy\n scheduledOn: DateTime\n scheduledBy: ApwCreatedBy\n }\n\n input ApwContentReviewContentInput {\n id: ID!\n type: ApwContentReviewContentTypes!\n settings: ApwContentReviewContentSettingsInput\n }\n\n input ApwCreateContentReviewInput {\n content: ApwContentReviewContentInput!\n }\n\n input ApwListContentReviewsWhereInput {\n id: ID\n reviewStatus: ApwContentReviewStatus\n title: String\n title_contains: String\n }\n\n type ApwProvideSignOffResponse {\n data: Boolean\n error: ApwError\n }\n\n type ApwIsReviewRequiredData {\n isReviewRequired: Boolean\n contentReviewId: ID\n }\n\n type ApwIsReviewRequiredResponse {\n data: ApwIsReviewRequiredData\n error: ApwError\n }\n\n type ApwPublishContentResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwContentActions {\n publish\n unpublish\n }\n\n type ApwScheduleActionResponse {\n data: Boolean\n error: ApwError\n }\n\n input ApwScheduleActionInput {\n action: ApwContentActions!\n datetime: String!\n type: ApwContentReviewContentTypes!\n entryId: ID!\n }\n\n extend type ApwQuery {\n getContentReview(id: ID!): ApwContentReviewResponse\n\n listContentReviews(\n where: ApwListContentReviewsWhereInput\n limit: Int\n after: String\n sort: [ApwListContentReviewsSort!]\n ): ApwListContentReviewsResponse\n\n isReviewRequired(data: ApwContentReviewContentInput!): ApwIsReviewRequiredResponse\n }\n\n extend type ApwMutation {\n createContentReview(data: ApwCreateContentReviewInput!): ApwContentReviewResponse\n\n deleteContentReview(id: ID!): ApwDeleteContentReviewResponse\n\n provideSignOff(id: ID!, step: String!): ApwProvideSignOffResponse\n\n retractSignOff(id: ID!, step: String!): ApwProvideSignOffResponse\n\n publishContent(id: ID!, datetime: String): ApwPublishContentResponse\n\n unpublishContent(id: ID!, datetime: String): ApwPublishContentResponse\n\n scheduleAction(data: ApwScheduleActionInput!): ApwScheduleActionResponse\n\n deleteScheduledAction(id: ID!): ApwScheduleActionResponse\n }\n `,\n resolvers: {\n ApwContentReviewContent: {\n version: async (parent: ApwContentReviewContent, _, context: ApwContext) => {\n const getContent = context.apw.getContentGetter(parent.type);\n const content = await getContent(parent.id, parent.settings);\n if (!content) {\n return null;\n }\n return content.version;\n },\n publishedOn: async (parent: ApwContentReviewContent, _, context: ApwContext) => {\n const getContent = context.apw.getContentGetter(parent.type);\n const content = await getContent(parent.id, parent.settings);\n if (!content) {\n return null;\n }\n return content.publishedOn;\n },\n publishedBy: async (parent: ApwContentReviewContent, _, context: ApwContext) => {\n const id = parent.publishedBy;\n if (id) {\n const [[reviewer]] = await context.apw.reviewer.list({\n where: { identityId: id }\n });\n return reviewer;\n }\n return null;\n },\n scheduledBy: async (parent: ApwContentReviewContent, _, context: ApwContext) => {\n const id = parent.scheduledBy;\n if (id) {\n const [[reviewer]] = await context.apw.reviewer.list({\n where: { identityId: id }\n });\n return reviewer;\n }\n return null;\n }\n },\n ApwContentReviewListItem: {\n activeStep: async parent => {\n const steps: ApwContentReviewStep[] = parent.steps;\n return steps.find(step => step.status === ApwContentReviewStepStatus.ACTIVE);\n },\n totalComments: async parent => {\n const steps: ApwContentReviewStep[] = parent.steps;\n return steps.reduce((count, step) => {\n /**\n * Aggregate totalComments from each step.\n */\n if (!isNaN(step.totalComments)) {\n count += step.totalComments;\n }\n\n return count;\n }, 0);\n },\n reviewers: async parent => {\n const steps: ApwContentReviewStep[] = parent.steps;\n const reviewerIds: string[] = [];\n\n for (const step of steps) {\n for (const reviewer of step.reviewers) {\n if (!reviewerIds.includes(reviewer.id)) {\n reviewerIds.push(reviewer.id);\n }\n }\n }\n return reviewerIds;\n }\n },\n ApwQuery: {\n getContentReview: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.get(args.id));\n },\n listContentReviews: async (_, args: any, context) => {\n try {\n /**\n * We know that args is ApwContentReviewListParams.\n */\n const [entries, meta] = await context.apw.contentReview.list(\n args as unknown as ApwContentReviewListParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n isReviewRequired: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.isReviewRequired(args.data));\n }\n },\n ApwMutation: {\n createContentReview: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.create(args.data));\n },\n deleteContentReview: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.delete(args.id));\n },\n provideSignOff: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.provideSignOff(args.id, args.step));\n },\n retractSignOff: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.retractSignOff(args.id, args.step));\n },\n publishContent: async (_, args: any, context) => {\n return resolve(() =>\n context.apw.contentReview.publishContent(args.id, args.datetime)\n );\n },\n unpublishContent: async (_, args: any, context) => {\n return resolve(() =>\n context.apw.contentReview.unpublishContent(args.id, args.datetime)\n );\n },\n deleteScheduledAction: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.deleteScheduledAction(args.id));\n }\n }\n }\n});\n\nexport default contentReviewSchema;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAOA;AAEA,MAAMA,mBAAmB,GAAG,IAAIC,4BAAmB,CAAa;EAC5DC,QAAQ,EAAE,aAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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"}
1
+ {"version":3,"names":["contentReviewSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwContentReviewContent","version","parent","_","context","getContent","apw","getContentGetter","type","content","id","settings","publishedOn","publishedBy","reviewer","list","where","identityId","scheduledBy","ApwContentReviewListItem","activeStep","steps","find","step","status","ApwContentReviewStepStatus","ACTIVE","totalComments","reduce","count","isNaN","reviewers","reviewerIds","includes","push","ApwQuery","getContentReview","args","resolve","contentReview","get","listContentReviews","entries","meta","ListResponse","e","ErrorResponse","isReviewRequired","data","ApwMutation","createContentReview","create","deleteContentReview","delete","provideSignOff","retractSignOff","publishContent","datetime","unpublishContent","deleteScheduledAction"],"sources":["contentReview.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport {\n ApwContentReviewStep,\n ApwContentReviewStepStatus,\n ApwContext,\n ApwContentReviewListParams,\n ApwContentReviewContent\n} from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst contentReviewSchema = new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type ApwContentReviewListItem {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwIdentity\n # ContentReview specific fields\n title: String\n steps: [ApwContentReviewStep]\n content: ApwContentReviewContent\n reviewStatus: ApwContentReviewStatus\n activeStep: ApwContentReviewStep\n totalComments: Int\n latestCommentId: String\n reviewers: [ID!]!\n }\n\n type ApwListContentReviewsResponse {\n data: [ApwContentReviewListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwContentReviewReviewer {\n id: ID\n displayName: String\n }\n\n type ApwContentReviewComment {\n body: JSON\n author: String\n }\n\n type ApwContentReviewChangeRequested {\n title: String\n body: JSON\n media: JSON\n step: String\n resolved: Boolean\n comments: [ApwContentReviewComment]\n }\n\n enum ApwContentReviewStepStatus {\n done\n active\n inactive\n }\n\n enum ApwContentReviewStatus {\n underReview\n readyToBePublished\n published\n requiresMyAttention\n }\n\n type ApwContentReviewStep {\n status: ApwContentReviewStepStatus\n id: String\n title: String\n pendingChangeRequests: Int\n signOffProvidedOn: DateTime\n signOffProvidedBy: ApwIdentity\n }\n\n type ApwContentReview {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwIdentity\n # ContentReview specific fields\n title: String\n steps: [ApwContentReviewStep]\n content: ApwContentReviewContent\n workflow: ID\n reviewStatus: ApwContentReviewStatus\n }\n\n type ApwContentReviewResponse {\n data: ApwContentReview\n error: ApwError\n }\n\n type ApwDeleteContentReviewResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwListContentReviewsSort {\n id_ASC\n id_DESC\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n title_ASC\n title_DESC\n }\n\n input ApwContentReviewReviewerInput {\n id: ID\n }\n\n input ApwContentReviewScopeInput {\n type: String\n options: JSON\n }\n\n input ApwContentReviewCommentInput {\n body: JSON\n author: String\n }\n\n input ApwContentReviewChangeRequestedInput {\n title: String\n body: JSON\n media: JSON\n step: String\n resolved: Boolean\n comments: [ApwContentReviewCommentInput]\n }\n\n enum ApwContentReviewContentTypes {\n page\n cms_entry\n }\n\n type ApwContentReviewContentSettings {\n modelId: String\n }\n\n input ApwContentReviewContentSettingsInput {\n modelId: String\n }\n\n type ApwContentReviewContent {\n id: ID!\n type: ApwContentReviewContentTypes!\n version: Int!\n settings: ApwContentReviewContentSettings\n publishedOn: String\n publishedBy: ApwIdentity\n scheduledOn: DateTime\n scheduledBy: ApwIdentity\n }\n\n input ApwContentReviewContentInput {\n id: ID!\n type: ApwContentReviewContentTypes!\n settings: ApwContentReviewContentSettingsInput\n }\n\n input ApwCreateContentReviewInput {\n content: ApwContentReviewContentInput!\n }\n\n input ApwListContentReviewsWhereInput {\n id: ID\n reviewStatus: ApwContentReviewStatus\n title: String\n title_contains: String\n }\n\n type ApwProvideSignOffResponse {\n data: Boolean\n error: ApwError\n }\n\n type ApwIsReviewRequiredData {\n isReviewRequired: Boolean\n contentReviewId: ID\n }\n\n type ApwIsReviewRequiredResponse {\n data: ApwIsReviewRequiredData\n error: ApwError\n }\n\n type ApwPublishContentResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwContentActions {\n publish\n unpublish\n }\n\n type ApwScheduleActionResponse {\n data: Boolean\n error: ApwError\n }\n\n input ApwScheduleActionInput {\n action: ApwContentActions!\n datetime: String!\n type: ApwContentReviewContentTypes!\n entryId: ID!\n }\n\n extend type ApwQuery {\n getContentReview(id: ID!): ApwContentReviewResponse\n\n listContentReviews(\n where: ApwListContentReviewsWhereInput\n limit: Int\n after: String\n sort: [ApwListContentReviewsSort!]\n ): ApwListContentReviewsResponse\n\n isReviewRequired(data: ApwContentReviewContentInput!): ApwIsReviewRequiredResponse\n }\n\n extend type ApwMutation {\n createContentReview(data: ApwCreateContentReviewInput!): ApwContentReviewResponse\n\n deleteContentReview(id: ID!): ApwDeleteContentReviewResponse\n\n provideSignOff(id: ID!, step: String!): ApwProvideSignOffResponse\n\n retractSignOff(id: ID!, step: String!): ApwProvideSignOffResponse\n\n publishContent(id: ID!, datetime: String): ApwPublishContentResponse\n\n unpublishContent(id: ID!, datetime: String): ApwPublishContentResponse\n\n scheduleAction(data: ApwScheduleActionInput!): ApwScheduleActionResponse\n\n deleteScheduledAction(id: ID!): ApwScheduleActionResponse\n }\n `,\n resolvers: {\n ApwContentReviewContent: {\n version: async (parent: ApwContentReviewContent, _, context: ApwContext) => {\n const getContent = context.apw.getContentGetter(parent.type);\n const content = await getContent(parent.id, parent.settings);\n if (!content) {\n return null;\n }\n return content.version;\n },\n publishedOn: async (parent: ApwContentReviewContent, _, context: ApwContext) => {\n const getContent = context.apw.getContentGetter(parent.type);\n const content = await getContent(parent.id, parent.settings);\n if (!content) {\n return null;\n }\n return content.publishedOn;\n },\n publishedBy: async (parent: ApwContentReviewContent, _, context: ApwContext) => {\n const id = parent.publishedBy;\n if (id) {\n const [[reviewer]] = await context.apw.reviewer.list({\n where: { identityId: id }\n });\n return reviewer;\n }\n return null;\n },\n scheduledBy: async (parent: ApwContentReviewContent, _, context: ApwContext) => {\n const id = parent.scheduledBy;\n if (id) {\n const [[reviewer]] = await context.apw.reviewer.list({\n where: { identityId: id }\n });\n return reviewer;\n }\n return null;\n }\n },\n ApwContentReviewListItem: {\n activeStep: async parent => {\n const steps: ApwContentReviewStep[] = parent.steps;\n return steps.find(step => step.status === ApwContentReviewStepStatus.ACTIVE);\n },\n totalComments: async parent => {\n const steps: ApwContentReviewStep[] = parent.steps;\n return steps.reduce((count, step) => {\n /**\n * Aggregate totalComments from each step.\n */\n if (!isNaN(step.totalComments)) {\n count += step.totalComments;\n }\n\n return count;\n }, 0);\n },\n reviewers: async parent => {\n const steps: ApwContentReviewStep[] = parent.steps;\n const reviewerIds: string[] = [];\n\n for (const step of steps) {\n for (const reviewer of step.reviewers) {\n if (!reviewerIds.includes(reviewer.id)) {\n reviewerIds.push(reviewer.id);\n }\n }\n }\n return reviewerIds;\n }\n },\n ApwQuery: {\n getContentReview: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.get(args.id));\n },\n listContentReviews: async (_, args: any, context) => {\n try {\n /**\n * We know that args is ApwContentReviewListParams.\n */\n const [entries, meta] = await context.apw.contentReview.list(\n args as unknown as ApwContentReviewListParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n },\n isReviewRequired: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.isReviewRequired(args.data));\n }\n },\n ApwMutation: {\n createContentReview: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.create(args.data));\n },\n deleteContentReview: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.delete(args.id));\n },\n provideSignOff: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.provideSignOff(args.id, args.step));\n },\n retractSignOff: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.retractSignOff(args.id, args.step));\n },\n publishContent: async (_, args: any, context) => {\n return resolve(() =>\n context.apw.contentReview.publishContent(args.id, args.datetime)\n );\n },\n unpublishContent: async (_, args: any, context) => {\n return resolve(() =>\n context.apw.contentReview.unpublishContent(args.id, args.datetime)\n );\n },\n deleteScheduledAction: async (_, args: any, context) => {\n return resolve(() => context.apw.contentReview.deleteScheduledAction(args.id));\n }\n }\n }\n});\n\nexport default contentReviewSchema;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAOA;AAEA,MAAMA,mBAAmB,GAAG,IAAIC,4BAAmB,CAAa;EAC5DC,QAAQ,EAAE,aAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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"}
@@ -15,7 +15,7 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
15
15
  id: ID
16
16
  savedOn: DateTime
17
17
  createdOn: DateTime
18
- createdBy: ApwCreatedBy
18
+ createdBy: ApwIdentity
19
19
  # Reviewer specific fields
20
20
  identityId: ID
21
21
  displayName: String
@@ -34,7 +34,7 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
34
34
  id: ID
35
35
  savedOn: DateTime
36
36
  createdOn: DateTime
37
- createdBy: ApwCreatedBy
37
+ createdBy: ApwIdentity
38
38
  # Reviewer specific fields
39
39
  identityId: ID
40
40
  displayName: String
@@ -1 +1 @@
1
- {"version":3,"names":["workflowSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwQuery","getReviewer","_","args","context","resolve","apw","reviewer","get","id","listReviewers","entries","meta","list","ListResponse","e","ErrorResponse"],"sources":["reviewer.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { ApwContext, ApwReviewerListParams } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type ApwReviewerListItem {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # Reviewer specific fields\n identityId: ID\n displayName: String\n type: String\n email: String\n }\n\n type ApwListReviewersResponse {\n data: [ApwReviewerListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwReviewer {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # Reviewer specific fields\n identityId: ID\n displayName: String\n type: String\n email: String\n }\n\n type ApwReviewerResponse {\n data: ApwReviewer\n error: ApwError\n }\n\n type ApwDeleteReviewerResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwListReviewersSort {\n id_ASC\n id_DESC\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n publishedOn_ASC\n publishedOn_DESC\n title_ASC\n title_DESC\n }\n\n input ApwListReviewersWhereInput {\n identityId: ID\n }\n\n input ApwListReviewersSearchInput {\n # By specifying \"query\", the search will be performed against workflow' \"title\" field.\n query: String\n }\n\n extend type ApwQuery {\n getReviewer(id: ID!): ApwReviewerResponse\n\n listReviewers(\n where: ApwListReviewersWhereInput\n limit: Int\n after: String\n sort: [ApwListReviewersSort!]\n search: ApwListReviewersSearchInput\n ): ApwListReviewersResponse\n }\n `,\n resolvers: {\n ApwQuery: {\n getReviewer: async (_, args: any, context) => {\n return resolve(() => context.apw.reviewer.get(args.id));\n },\n listReviewers: async (_, args: any, context) => {\n try {\n /**\n * We know that args is ApwReviewerListParams.\n */\n const [entries, meta] = await context.apw.reviewer.list(\n args as unknown as ApwReviewerListParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n }\n }\n});\n\nexport default workflowSchema;\n"],"mappings":";;;;;;;AAAA;AACA;AAEA;AAEA,MAAMA,cAAc,GAAG,IAAIC,4BAAmB,CAAa;EACvDC,QAAQ,EAAE,aAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;EACDC,SAAS,EAAE;IACPC,QAAQ,EAAE;MACNC,WAAW,EAAE,OAAOC,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC1C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,QAAQ,CAACC,GAAG,CAACL,IAAI,CAACM,EAAE,CAAC,CAAC;MAC3D,CAAC;MACDC,aAAa,EAAE,OAAOR,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC5C,IAAI;UACA;AACpB;AACA;UACoB,MAAM,CAACO,OAAO,EAAEC,IAAI,CAAC,GAAG,MAAMR,OAAO,CAACE,GAAG,CAACC,QAAQ,CAACM,IAAI,CACnDV,IAAI,CACP;UACD,OAAO,IAAIW,4BAAY,CAACH,OAAO,EAAEC,IAAI,CAAC;QAC1C,CAAC,CAAC,OAAOG,CAAC,EAAE;UACR,OAAO,IAAIC,6BAAa,CAACD,CAAC,CAAC;QAC/B;MACJ;IACJ;EACJ;AACJ,CAAC,CAAC;AAAC,eAEYnB,cAAc;AAAA"}
1
+ {"version":3,"names":["workflowSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwQuery","getReviewer","_","args","context","resolve","apw","reviewer","get","id","listReviewers","entries","meta","list","ListResponse","e","ErrorResponse"],"sources":["reviewer.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { ApwContext, ApwReviewerListParams } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type ApwReviewerListItem {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwIdentity\n # Reviewer specific fields\n identityId: ID\n displayName: String\n type: String\n email: String\n }\n\n type ApwListReviewersResponse {\n data: [ApwReviewerListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwReviewer {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwIdentity\n # Reviewer specific fields\n identityId: ID\n displayName: String\n type: String\n email: String\n }\n\n type ApwReviewerResponse {\n data: ApwReviewer\n error: ApwError\n }\n\n type ApwDeleteReviewerResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwListReviewersSort {\n id_ASC\n id_DESC\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n publishedOn_ASC\n publishedOn_DESC\n title_ASC\n title_DESC\n }\n\n input ApwListReviewersWhereInput {\n identityId: ID\n }\n\n input ApwListReviewersSearchInput {\n # By specifying \"query\", the search will be performed against workflow' \"title\" field.\n query: String\n }\n\n extend type ApwQuery {\n getReviewer(id: ID!): ApwReviewerResponse\n\n listReviewers(\n where: ApwListReviewersWhereInput\n limit: Int\n after: String\n sort: [ApwListReviewersSort!]\n search: ApwListReviewersSearchInput\n ): ApwListReviewersResponse\n }\n `,\n resolvers: {\n ApwQuery: {\n getReviewer: async (_, args: any, context) => {\n return resolve(() => context.apw.reviewer.get(args.id));\n },\n listReviewers: async (_, args: any, context) => {\n try {\n /**\n * We know that args is ApwReviewerListParams.\n */\n const [entries, meta] = await context.apw.reviewer.list(\n args as unknown as ApwReviewerListParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n }\n }\n});\n\nexport default workflowSchema;\n"],"mappings":";;;;;;;AAAA;AACA;AAEA;AAEA,MAAMA,cAAc,GAAG,IAAIC,4BAAmB,CAAa;EACvDC,QAAQ,EAAE,aAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;EACDC,SAAS,EAAE;IACPC,QAAQ,EAAE;MACNC,WAAW,EAAE,OAAOC,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC1C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,QAAQ,CAACC,GAAG,CAACL,IAAI,CAACM,EAAE,CAAC,CAAC;MAC3D,CAAC;MACDC,aAAa,EAAE,OAAOR,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC5C,IAAI;UACA;AACpB;AACA;UACoB,MAAM,CAACO,OAAO,EAAEC,IAAI,CAAC,GAAG,MAAMR,OAAO,CAACE,GAAG,CAACC,QAAQ,CAACM,IAAI,CACnDV,IAAI,CACP;UACD,OAAO,IAAIW,4BAAY,CAACH,OAAO,EAAEC,IAAI,CAAC;QAC1C,CAAC,CAAC,OAAOG,CAAC,EAAE;UACR,OAAO,IAAIC,6BAAa,CAACD,CAAC,CAAC;QAC/B;MACJ;IACJ;EACJ;AACJ,CAAC,CAAC;AAAC,eAEYnB,cAAc;AAAA"}
@@ -15,7 +15,7 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
15
15
  id: ID
16
16
  savedOn: DateTime
17
17
  createdOn: DateTime
18
- createdBy: ApwCreatedBy
18
+ createdBy: ApwIdentity
19
19
  # Workflow specific fields
20
20
  app: ApwWorkflowApplication
21
21
  title: String
@@ -46,7 +46,7 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
46
46
  id: ID
47
47
  savedOn: DateTime
48
48
  createdOn: DateTime
49
- createdBy: ApwCreatedBy
49
+ createdBy: ApwIdentity
50
50
  # Workflow specific fields
51
51
  app: ApwWorkflowApplication
52
52
  title: String
@@ -1 +1 @@
1
- {"version":3,"names":["workflowSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwWorkflowStep","reviewers","parent","map","id","ApwQuery","getWorkflow","_","args","context","resolve","apw","workflow","get","listWorkflows","entries","meta","list","ListResponse","e","ErrorResponse","ApwMutation","createWorkflow","create","data","updateWorkflow","update","deleteWorkflow","delete"],"sources":["workflow.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { ApwContext, ApwReviewer, ListWorkflowsParams } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type ApwWorkflowListItem {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # Workflow specific fields\n app: ApwWorkflowApplication\n title: String\n steps: [ApwWorkflowStep]\n scope: ApwWorkflowScope\n }\n\n type ApwListWorkflowsResponse {\n data: [ApwWorkflowListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwWorkflowStep {\n title: String!\n id: String!\n type: ApwWorkflowStepTypes!\n reviewers: [ID!]\n }\n\n type ApwWorkflowScope {\n type: String\n data: JSON\n }\n\n type ApwWorkflow {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwCreatedBy\n # Workflow specific fields\n app: ApwWorkflowApplication\n title: String\n steps: [ApwWorkflowStep]\n scope: ApwWorkflowScope\n }\n\n type ApwWorkflowResponse {\n data: ApwWorkflow\n error: ApwError\n }\n\n type ApwDeleteWorkflowResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwWorkflowApplication {\n pageBuilder\n cms\n formBuilder\n }\n\n enum ApwWorkflowStepTypes {\n mandatoryBlocking\n mandatoryNonBlocking\n notMandatory\n }\n\n enum ApwListWorkflowsSort {\n id_ASC\n id_DESC\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n publishedOn_ASC\n publishedOn_DESC\n title_ASC\n title_DESC\n }\n\n input ApwWorkflowReviewerInput {\n id: ID\n }\n\n input ApwCreateWorkflowStepInput {\n id: String!\n title: String!\n type: ApwWorkflowStepTypes!\n reviewers: [ID!]!\n }\n\n input ApwUpdateWorkflowStepInput {\n id: String!\n title: String!\n type: ApwWorkflowStepTypes!\n reviewers: [ID!]\n }\n\n input ApwWorkflowScopeInput {\n type: String!\n data: JSON\n }\n\n input ApwCreateWorkflowInput {\n title: String!\n steps: [ApwCreateWorkflowStepInput!]!\n scope: ApwWorkflowScopeInput!\n app: ApwWorkflowApplication!\n }\n\n input ApwUpdateWorkflowInput {\n title: String\n steps: [ApwUpdateWorkflowStepInput!]\n scope: ApwWorkflowScopeInput\n }\n\n input ApwListWorkflowsWhereInput {\n app: ApwWorkflowApplication\n }\n\n input ApwListWorkflowsSearchInput {\n # By specifying \"query\", the search will be performed against workflow' \"title\" field.\n query: String\n }\n\n type ApwQuery {\n getWorkflow(id: ID!): ApwWorkflowResponse\n\n listWorkflows(\n where: ApwListWorkflowsWhereInput\n limit: Int\n after: String\n sort: [ApwListWorkflowsSort!]\n search: ApwListWorkflowsSearchInput\n ): ApwListWorkflowsResponse\n }\n\n type ApwMutation {\n createWorkflow(data: ApwCreateWorkflowInput!): ApwWorkflowResponse\n\n # Update workflow by given ID.\n updateWorkflow(id: ID!, data: ApwUpdateWorkflowInput!): ApwWorkflowResponse\n\n # Delete workflow\n deleteWorkflow(id: ID!): ApwDeleteWorkflowResponse\n }\n `,\n resolvers: {\n ApwWorkflowStep: {\n reviewers: parent => {\n const reviewers: ApwReviewer[] = parent.reviewers;\n return reviewers.map(({ id }) => id);\n }\n },\n ApwQuery: {\n getWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.get(args.id));\n },\n listWorkflows: async (_, args: any, context) => {\n try {\n /**\n * We know that args is ListWorkflowsParams.\n */\n const [entries, meta] = await context.apw.workflow.list(\n args as unknown as ListWorkflowsParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n ApwMutation: {\n createWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.create(args.data));\n },\n updateWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.update(args.id, args.data));\n },\n deleteWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.delete(args.id));\n }\n }\n }\n});\n\nexport default workflowSchema;\n"],"mappings":";;;;;;;AAAA;AACA;AAEA;AAEA,MAAMA,cAAc,GAAG,IAAIC,4BAAmB,CAAa;EACvDC,QAAQ,EAAE,aAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;EACDC,SAAS,EAAE;IACPC,eAAe,EAAE;MACbC,SAAS,EAAEC,MAAM,IAAI;QACjB,MAAMD,SAAwB,GAAGC,MAAM,CAACD,SAAS;QACjD,OAAOA,SAAS,CAACE,GAAG,CAAC,CAAC;UAAEC;QAAG,CAAC,KAAKA,EAAE,CAAC;MACxC;IACJ,CAAC;IACDC,QAAQ,EAAE;MACNC,WAAW,EAAE,OAAOC,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC1C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,QAAQ,CAACC,GAAG,CAACL,IAAI,CAACJ,EAAE,CAAC,CAAC;MAC3D,CAAC;MACDU,aAAa,EAAE,OAAOP,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC5C,IAAI;UACA;AACpB;AACA;UACoB,MAAM,CAACM,OAAO,EAAEC,IAAI,CAAC,GAAG,MAAMP,OAAO,CAACE,GAAG,CAACC,QAAQ,CAACK,IAAI,CACnDT,IAAI,CACP;UACD,OAAO,IAAIU,4BAAY,CAACH,OAAO,EAAEC,IAAI,CAAC;QAC1C,CAAC,CAAC,OAAOG,CAAC,EAAE;UACR,OAAO,IAAIC,6BAAa,CAACD,CAAC,CAAC;QAC/B;MACJ;IACJ,CAAC;IACDE,WAAW,EAAE;MACTC,cAAc,EAAE,OAAOf,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC7C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,QAAQ,CAACW,MAAM,CAACf,IAAI,CAACgB,IAAI,CAAC,CAAC;MAChE,CAAC;MACDC,cAAc,EAAE,OAAOlB,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC7C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,QAAQ,CAACc,MAAM,CAAClB,IAAI,CAACJ,EAAE,EAAEI,IAAI,CAACgB,IAAI,CAAC,CAAC;MACzE,CAAC;MACDG,cAAc,EAAE,OAAOpB,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC7C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,QAAQ,CAACgB,MAAM,CAACpB,IAAI,CAACJ,EAAE,CAAC,CAAC;MAC9D;IACJ;EACJ;AACJ,CAAC,CAAC;AAAC,eAEYR,cAAc;AAAA"}
1
+ {"version":3,"names":["workflowSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwWorkflowStep","reviewers","parent","map","id","ApwQuery","getWorkflow","_","args","context","resolve","apw","workflow","get","listWorkflows","entries","meta","list","ListResponse","e","ErrorResponse","ApwMutation","createWorkflow","create","data","updateWorkflow","update","deleteWorkflow","delete"],"sources":["workflow.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { ApwContext, ApwReviewer, ListWorkflowsParams } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n typeDefs: /* GraphQL */ `\n type ApwWorkflowListItem {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwIdentity\n # Workflow specific fields\n app: ApwWorkflowApplication\n title: String\n steps: [ApwWorkflowStep]\n scope: ApwWorkflowScope\n }\n\n type ApwListWorkflowsResponse {\n data: [ApwWorkflowListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwWorkflowStep {\n title: String!\n id: String!\n type: ApwWorkflowStepTypes!\n reviewers: [ID!]\n }\n\n type ApwWorkflowScope {\n type: String\n data: JSON\n }\n\n type ApwWorkflow {\n # System generated fields\n id: ID\n savedOn: DateTime\n createdOn: DateTime\n createdBy: ApwIdentity\n # Workflow specific fields\n app: ApwWorkflowApplication\n title: String\n steps: [ApwWorkflowStep]\n scope: ApwWorkflowScope\n }\n\n type ApwWorkflowResponse {\n data: ApwWorkflow\n error: ApwError\n }\n\n type ApwDeleteWorkflowResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwWorkflowApplication {\n pageBuilder\n cms\n formBuilder\n }\n\n enum ApwWorkflowStepTypes {\n mandatoryBlocking\n mandatoryNonBlocking\n notMandatory\n }\n\n enum ApwListWorkflowsSort {\n id_ASC\n id_DESC\n savedOn_ASC\n savedOn_DESC\n createdOn_ASC\n createdOn_DESC\n publishedOn_ASC\n publishedOn_DESC\n title_ASC\n title_DESC\n }\n\n input ApwWorkflowReviewerInput {\n id: ID\n }\n\n input ApwCreateWorkflowStepInput {\n id: String!\n title: String!\n type: ApwWorkflowStepTypes!\n reviewers: [ID!]!\n }\n\n input ApwUpdateWorkflowStepInput {\n id: String!\n title: String!\n type: ApwWorkflowStepTypes!\n reviewers: [ID!]\n }\n\n input ApwWorkflowScopeInput {\n type: String!\n data: JSON\n }\n\n input ApwCreateWorkflowInput {\n title: String!\n steps: [ApwCreateWorkflowStepInput!]!\n scope: ApwWorkflowScopeInput!\n app: ApwWorkflowApplication!\n }\n\n input ApwUpdateWorkflowInput {\n title: String\n steps: [ApwUpdateWorkflowStepInput!]\n scope: ApwWorkflowScopeInput\n }\n\n input ApwListWorkflowsWhereInput {\n app: ApwWorkflowApplication\n }\n\n input ApwListWorkflowsSearchInput {\n # By specifying \"query\", the search will be performed against workflow' \"title\" field.\n query: String\n }\n\n type ApwQuery {\n getWorkflow(id: ID!): ApwWorkflowResponse\n\n listWorkflows(\n where: ApwListWorkflowsWhereInput\n limit: Int\n after: String\n sort: [ApwListWorkflowsSort!]\n search: ApwListWorkflowsSearchInput\n ): ApwListWorkflowsResponse\n }\n\n type ApwMutation {\n createWorkflow(data: ApwCreateWorkflowInput!): ApwWorkflowResponse\n\n # Update workflow by given ID.\n updateWorkflow(id: ID!, data: ApwUpdateWorkflowInput!): ApwWorkflowResponse\n\n # Delete workflow\n deleteWorkflow(id: ID!): ApwDeleteWorkflowResponse\n }\n `,\n resolvers: {\n ApwWorkflowStep: {\n reviewers: parent => {\n const reviewers: ApwReviewer[] = parent.reviewers;\n return reviewers.map(({ id }) => id);\n }\n },\n ApwQuery: {\n getWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.get(args.id));\n },\n listWorkflows: async (_, args: any, context) => {\n try {\n /**\n * We know that args is ListWorkflowsParams.\n */\n const [entries, meta] = await context.apw.workflow.list(\n args as unknown as ListWorkflowsParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n ApwMutation: {\n createWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.create(args.data));\n },\n updateWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.update(args.id, args.data));\n },\n deleteWorkflow: async (_, args: any, context) => {\n return resolve(() => context.apw.workflow.delete(args.id));\n }\n }\n }\n});\n\nexport default workflowSchema;\n"],"mappings":";;;;;;;AAAA;AACA;AAEA;AAEA,MAAMA,cAAc,GAAG,IAAIC,4BAAmB,CAAa;EACvDC,QAAQ,EAAE,aAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;EACDC,SAAS,EAAE;IACPC,eAAe,EAAE;MACbC,SAAS,EAAEC,MAAM,IAAI;QACjB,MAAMD,SAAwB,GAAGC,MAAM,CAACD,SAAS;QACjD,OAAOA,SAAS,CAACE,GAAG,CAAC,CAAC;UAAEC;QAAG,CAAC,KAAKA,EAAE,CAAC;MACxC;IACJ,CAAC;IACDC,QAAQ,EAAE;MACNC,WAAW,EAAE,OAAOC,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC1C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,QAAQ,CAACC,GAAG,CAACL,IAAI,CAACJ,EAAE,CAAC,CAAC;MAC3D,CAAC;MACDU,aAAa,EAAE,OAAOP,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC5C,IAAI;UACA;AACpB;AACA;UACoB,MAAM,CAACM,OAAO,EAAEC,IAAI,CAAC,GAAG,MAAMP,OAAO,CAACE,GAAG,CAACC,QAAQ,CAACK,IAAI,CACnDT,IAAI,CACP;UACD,OAAO,IAAIU,4BAAY,CAACH,OAAO,EAAEC,IAAI,CAAC;QAC1C,CAAC,CAAC,OAAOG,CAAC,EAAE;UACR,OAAO,IAAIC,6BAAa,CAACD,CAAC,CAAC;QAC/B;MACJ;IACJ,CAAC;IACDE,WAAW,EAAE;MACTC,cAAc,EAAE,OAAOf,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC7C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,QAAQ,CAACW,MAAM,CAACf,IAAI,CAACgB,IAAI,CAAC,CAAC;MAChE,CAAC;MACDC,cAAc,EAAE,OAAOlB,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC7C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,QAAQ,CAACc,MAAM,CAAClB,IAAI,CAACJ,EAAE,EAAEI,IAAI,CAACgB,IAAI,CAAC,CAAC;MACzE,CAAC;MACDG,cAAc,EAAE,OAAOpB,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC7C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,QAAQ,CAACgB,MAAM,CAACpB,IAAI,CAACJ,EAAE,CAAC,CAAC;MAC9D;IACJ;EACJ;AACJ,CAAC,CAAC;AAAC,eAEYR,cAAc;AAAA"}
@@ -5,12 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
- var _plugins = require("@webiny/handler-graphql/plugins");
9
8
  var _workflow = _interopRequireDefault(require("./graphql/workflow.gql"));
10
9
  var _contentReview = _interopRequireDefault(require("./graphql/contentReview.gql"));
11
10
  var _reviewer = _interopRequireDefault(require("./graphql/reviewer.gql"));
12
11
  var _comment = _interopRequireDefault(require("./graphql/comment.gql"));
13
12
  var _changeRequest = _interopRequireDefault(require("./graphql/changeRequest.gql"));
13
+ var _plugins = require("@webiny/handler-graphql/plugins");
14
14
  var _api = require("@webiny/api");
15
15
  const emptyResolver = () => ({});
16
16
  const baseSchema = new _plugins.GraphQLSchemaPlugin({
@@ -42,7 +42,7 @@ const baseSchema = new _plugins.GraphQLSchemaPlugin({
42
42
  totalCount: Int
43
43
  cursor: String
44
44
  }
45
- type ApwCreatedBy {
45
+ type ApwIdentity {
46
46
  id: ID
47
47
  displayName: String
48
48
  type: String
@@ -1 +1 @@
1
- {"version":3,"names":["emptyResolver","baseSchema","GraphQLSchemaPlugin","typeDefs","resolvers","Query","apw","Mutation","ContextPlugin","context","wcp","canUseFeature","plugins","register","workflowSchema","contentReviewSchema","reviewerSchema","commentSchema","changeRequestedSchema"],"sources":["graphql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport workflowSchema from \"./graphql/workflow.gql\";\nimport contentReviewSchema from \"./graphql/contentReview.gql\";\nimport reviewerSchema from \"./graphql/reviewer.gql\";\nimport commentSchema from \"./graphql/comment.gql\";\nimport changeRequestedSchema from \"./graphql/changeRequest.gql\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { ApwContext } from \"~/types\";\n\nconst emptyResolver = () => ({});\n\nconst baseSchema = new GraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n input ApwRefFieldInput {\n id: ID!\n modelId: String\n }\n\n input ApwRefFieldWhereInput {\n id: String\n id_not: String\n id_in: [String!]\n id_not_in: [String]\n entryId: String\n entryId_not: String\n entryId_in: [String!]\n entryId_not_in: [String!]\n }\n\n type ApwRefField {\n modelId: String!\n entryId: ID!\n id: ID!\n }\n\n type ApwMeta {\n hasMoreItems: Boolean\n totalCount: Int\n cursor: String\n }\n type ApwCreatedBy {\n id: ID\n displayName: String\n type: String\n }\n type ApwError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n extend type Query {\n apw: ApwQuery\n }\n extend type Mutation {\n apw: ApwMutation\n }\n `,\n resolvers: {\n Query: {\n apw: emptyResolver\n },\n Mutation: {\n apw: emptyResolver\n }\n }\n});\n\nexport default () => {\n return new ContextPlugin<ApwContext>(context => {\n if (!context.wcp.canUseFeature(\"advancedPublishingWorkflow\")) {\n return;\n }\n\n context.plugins.register([\n baseSchema,\n workflowSchema,\n contentReviewSchema,\n reviewerSchema,\n commentSchema,\n changeRequestedSchema\n ]);\n });\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,MAAMA,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;AAEhC,MAAMC,UAAU,GAAG,IAAIC,4BAAmB,CAAC;EACvCC,QAAQ,EAAE,aAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;EACDC,SAAS,EAAE;IACPC,KAAK,EAAE;MACHC,GAAG,EAAEN;IACT,CAAC;IACDO,QAAQ,EAAE;MACND,GAAG,EAAEN;IACT;EACJ;AACJ,CAAC,CAAC;AAAC,eAEY,MAAM;EACjB,OAAO,IAAIQ,kBAAa,CAAaC,OAAO,IAAI;IAC5C,IAAI,CAACA,OAAO,CAACC,GAAG,CAACC,aAAa,CAAC,4BAA4B,CAAC,EAAE;MAC1D;IACJ;IAEAF,OAAO,CAACG,OAAO,CAACC,QAAQ,CAAC,CACrBZ,UAAU,EACVa,iBAAc,EACdC,sBAAmB,EACnBC,iBAAc,EACdC,gBAAa,EACbC,sBAAqB,CACxB,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAAA"}
1
+ {"version":3,"names":["emptyResolver","baseSchema","GraphQLSchemaPlugin","typeDefs","resolvers","Query","apw","Mutation","ContextPlugin","context","wcp","canUseFeature","plugins","register","workflowSchema","contentReviewSchema","reviewerSchema","commentSchema","changeRequestedSchema"],"sources":["graphql.ts"],"sourcesContent":["import workflowSchema from \"./graphql/workflow.gql\";\nimport contentReviewSchema from \"./graphql/contentReview.gql\";\nimport reviewerSchema from \"./graphql/reviewer.gql\";\nimport commentSchema from \"./graphql/comment.gql\";\nimport changeRequestedSchema from \"./graphql/changeRequest.gql\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ContextPlugin } from \"@webiny/api\";\nimport { ApwContext } from \"~/types\";\n\nconst emptyResolver = () => ({});\n\nconst baseSchema = new GraphQLSchemaPlugin({\n typeDefs: /* GraphQL */ `\n input ApwRefFieldInput {\n id: ID!\n modelId: String\n }\n\n input ApwRefFieldWhereInput {\n id: String\n id_not: String\n id_in: [String!]\n id_not_in: [String]\n entryId: String\n entryId_not: String\n entryId_in: [String!]\n entryId_not_in: [String!]\n }\n\n type ApwRefField {\n modelId: String!\n entryId: ID!\n id: ID!\n }\n\n type ApwMeta {\n hasMoreItems: Boolean\n totalCount: Int\n cursor: String\n }\n type ApwIdentity {\n id: ID\n displayName: String\n type: String\n }\n type ApwError {\n code: String\n message: String\n data: JSON\n stack: String\n }\n extend type Query {\n apw: ApwQuery\n }\n extend type Mutation {\n apw: ApwMutation\n }\n `,\n resolvers: {\n Query: {\n apw: emptyResolver\n },\n Mutation: {\n apw: emptyResolver\n }\n }\n});\n\nexport default () => {\n return new ContextPlugin<ApwContext>(context => {\n if (!context.wcp.canUseFeature(\"advancedPublishingWorkflow\")) {\n return;\n }\n\n context.plugins.register([\n baseSchema,\n workflowSchema,\n contentReviewSchema,\n reviewerSchema,\n commentSchema,\n changeRequestedSchema\n ]);\n });\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,MAAMA,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC;AAEhC,MAAMC,UAAU,GAAG,IAAIC,4BAAmB,CAAC;EACvCC,QAAQ,EAAE,aAAe;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;EACDC,SAAS,EAAE;IACPC,KAAK,EAAE;MACHC,GAAG,EAAEN;IACT,CAAC;IACDO,QAAQ,EAAE;MACND,GAAG,EAAEN;IACT;EACJ;AACJ,CAAC,CAAC;AAAC,eAEY,MAAM;EACjB,OAAO,IAAIQ,kBAAa,CAAaC,OAAO,IAAI;IAC5C,IAAI,CAACA,OAAO,CAACC,GAAG,CAACC,aAAa,CAAC,4BAA4B,CAAC,EAAE;MAC1D;IACJ;IAEAF,OAAO,CAACG,OAAO,CAACC,QAAQ,CAAC,CACrBZ,UAAU,EACVa,iBAAc,EACdC,sBAAmB,EACnBC,iBAAc,EACdC,gBAAa,EACbC,sBAAqB,CACxB,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAAA"}
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.initializeContentReviewSteps = void 0;
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
9
  var _set = _interopRequireDefault(require("lodash/set"));
10
+ var _types = require("../../types");
10
11
  var _utils = require("../utils");
11
12
  var _handlerGraphql = require("@webiny/handler-graphql");
12
13
  var _contentApwSettingsPlugin = require("../../utils/contentApwSettingsPlugin");
@@ -64,9 +65,14 @@ const initializeContentReviewSteps = ({
64
65
  });
65
66
  });
66
67
  /**
67
- * TODO Figure our what does this actually do?
68
- * There is no steps property on CreateApwContentReviewParams
68
+ * If there are only steps which are not mandatory ones, put review status to ApwContentReviewStatus.READY_TO_BE_PUBLISHED.
69
69
  */
70
+ const isNonMandatory = updatedSteps.every(step => {
71
+ return step.type === _types.ApwWorkflowStepTypes.NON_MANDATORY;
72
+ });
73
+ if (isNonMandatory) {
74
+ input.reviewStatus = _types.ApwContentReviewStatus.READY_TO_BE_PUBLISHED;
75
+ }
70
76
  input = (0, _set.default)(input, "steps", updatedSteps);
71
77
  });
72
78
  };
@@ -1 +1 @@
1
- {"version":3,"names":["initializeContentReviewSteps","apw","plugins","contentReview","onContentReviewBeforeCreate","subscribe","input","type","id","settings","content","getContent","getContentGetter","NotFoundError","title","lodashSet","contentApwSettingsPlugin","getContentApwSettingsPlugin","workflowId","getWorkflowId","workflow","get","workflowSteps","steps","previousStepStatus","undefined","updatedSteps","map","step","index","status","getContentReviewStepInitialStatus","pendingChangeRequests","totalComments"],"sources":["initializeContentReviewSteps.ts"],"sourcesContent":["import lodashSet from \"lodash/set\";\nimport { ApwContentReviewStepStatus, ApwContext } from \"~/types\";\nimport { getContentReviewStepInitialStatus } from \"~/plugins/utils\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { getContentApwSettingsPlugin } from \"~/utils/contentApwSettingsPlugin\";\n\nexport const initializeContentReviewSteps = ({ apw, plugins }: ApwContext) => {\n apw.contentReview.onContentReviewBeforeCreate.subscribe(async ({ input }) => {\n const { type, id, settings } = input.content;\n /*\n * Let's set \"title\" field value.\n */\n const getContent = apw.getContentGetter(type);\n const content = await getContent(id, settings);\n if (!content) {\n throw new NotFoundError(`Content \"${type}\" with id ${id} not found.`);\n }\n\n const { title } = content;\n input = lodashSet(input, \"title\", title);\n\n /**\n * We need to find a plugin which can get a workflow ID for the given type of content.\n */\n const contentApwSettingsPlugin = getContentApwSettingsPlugin({\n plugins,\n type\n });\n\n const workflowId = contentApwSettingsPlugin.getWorkflowId(content);\n\n /**\n * Let's initialize the \"ContentReview\" steps.\n */\n if (!workflowId) {\n throw new NotFoundError(`Unable to initiate a \"Content review\". No workflow found!`);\n }\n\n input.workflowId = workflowId;\n\n const workflow = await apw.workflow.get(workflowId);\n const workflowSteps = workflow.steps;\n\n let previousStepStatus: ApwContentReviewStepStatus | undefined = undefined;\n const updatedSteps = workflow.steps.map((step, index) => {\n const status = getContentReviewStepInitialStatus(\n workflowSteps,\n index,\n previousStepStatus\n );\n previousStepStatus = status;\n return {\n ...step,\n status,\n pendingChangeRequests: 0,\n totalComments: 0\n };\n });\n /**\n * TODO Figure our what does this actually do?\n * There is no steps property on CreateApwContentReviewParams\n */\n input = lodashSet(input, \"steps\", updatedSteps);\n });\n};\n"],"mappings":";;;;;;;;AAAA;AAEA;AACA;AACA;AAEO,MAAMA,4BAA4B,GAAG,CAAC;EAAEC,GAAG;EAAEC;AAAoB,CAAC,KAAK;EAC1ED,GAAG,CAACE,aAAa,CAACC,2BAA2B,CAACC,SAAS,CAAC,OAAO;IAAEC;EAAM,CAAC,KAAK;IACzE,MAAM;MAAEC,IAAI;MAAEC,EAAE;MAAEC;IAAS,CAAC,GAAGH,KAAK,CAACI,OAAO;IAC5C;AACR;AACA;IACQ,MAAMC,UAAU,GAAGV,GAAG,CAACW,gBAAgB,CAACL,IAAI,CAAC;IAC7C,MAAMG,OAAO,GAAG,MAAMC,UAAU,CAACH,EAAE,EAAEC,QAAQ,CAAC;IAC9C,IAAI,CAACC,OAAO,EAAE;MACV,MAAM,IAAIG,6BAAa,CAAE,YAAWN,IAAK,aAAYC,EAAG,aAAY,CAAC;IACzE;IAEA,MAAM;MAAEM;IAAM,CAAC,GAAGJ,OAAO;IACzBJ,KAAK,GAAG,IAAAS,YAAS,EAACT,KAAK,EAAE,OAAO,EAAEQ,KAAK,CAAC;;IAExC;AACR;AACA;IACQ,MAAME,wBAAwB,GAAG,IAAAC,qDAA2B,EAAC;MACzDf,OAAO;MACPK;IACJ,CAAC,CAAC;IAEF,MAAMW,UAAU,GAAGF,wBAAwB,CAACG,aAAa,CAACT,OAAO,CAAC;;IAElE;AACR;AACA;IACQ,IAAI,CAACQ,UAAU,EAAE;MACb,MAAM,IAAIL,6BAAa,CAAE,2DAA0D,CAAC;IACxF;IAEAP,KAAK,CAACY,UAAU,GAAGA,UAAU;IAE7B,MAAME,QAAQ,GAAG,MAAMnB,GAAG,CAACmB,QAAQ,CAACC,GAAG,CAACH,UAAU,CAAC;IACnD,MAAMI,aAAa,GAAGF,QAAQ,CAACG,KAAK;IAEpC,IAAIC,kBAA0D,GAAGC,SAAS;IAC1E,MAAMC,YAAY,GAAGN,QAAQ,CAACG,KAAK,CAACI,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;MACrD,MAAMC,MAAM,GAAG,IAAAC,wCAAiC,EAC5CT,aAAa,EACbO,KAAK,EACLL,kBAAkB,CACrB;MACDA,kBAAkB,GAAGM,MAAM;MAC3B,mEACOF,IAAI;QACPE,MAAM;QACNE,qBAAqB,EAAE,CAAC;QACxBC,aAAa,EAAE;MAAC;IAExB,CAAC,CAAC;IACF;AACR;AACA;AACA;IACQ3B,KAAK,GAAG,IAAAS,YAAS,EAACT,KAAK,EAAE,OAAO,EAAEoB,YAAY,CAAC;EACnD,CAAC,CAAC;AACN,CAAC;AAAC"}
1
+ {"version":3,"names":["initializeContentReviewSteps","apw","plugins","contentReview","onContentReviewBeforeCreate","subscribe","input","type","id","settings","content","getContent","getContentGetter","NotFoundError","title","lodashSet","contentApwSettingsPlugin","getContentApwSettingsPlugin","workflowId","getWorkflowId","workflow","get","workflowSteps","steps","previousStepStatus","undefined","updatedSteps","map","step","index","status","getContentReviewStepInitialStatus","pendingChangeRequests","totalComments","isNonMandatory","every","ApwWorkflowStepTypes","NON_MANDATORY","reviewStatus","ApwContentReviewStatus","READY_TO_BE_PUBLISHED"],"sources":["initializeContentReviewSteps.ts"],"sourcesContent":["import lodashSet from \"lodash/set\";\nimport {\n ApwContentReviewStatus,\n ApwContentReviewStepStatus,\n ApwContext,\n ApwWorkflowStepTypes\n} from \"~/types\";\nimport { getContentReviewStepInitialStatus } from \"~/plugins/utils\";\nimport { NotFoundError } from \"@webiny/handler-graphql\";\nimport { getContentApwSettingsPlugin } from \"~/utils/contentApwSettingsPlugin\";\n\nexport const initializeContentReviewSteps = ({ apw, plugins }: ApwContext) => {\n apw.contentReview.onContentReviewBeforeCreate.subscribe(async ({ input }) => {\n const { type, id, settings } = input.content;\n /*\n * Let's set \"title\" field value.\n */\n const getContent = apw.getContentGetter(type);\n const content = await getContent(id, settings);\n if (!content) {\n throw new NotFoundError(`Content \"${type}\" with id ${id} not found.`);\n }\n\n const { title } = content;\n input = lodashSet(input, \"title\", title);\n\n /**\n * We need to find a plugin which can get a workflow ID for the given type of content.\n */\n const contentApwSettingsPlugin = getContentApwSettingsPlugin({\n plugins,\n type\n });\n\n const workflowId = contentApwSettingsPlugin.getWorkflowId(content);\n\n /**\n * Let's initialize the \"ContentReview\" steps.\n */\n if (!workflowId) {\n throw new NotFoundError(`Unable to initiate a \"Content review\". No workflow found!`);\n }\n\n input.workflowId = workflowId;\n\n const workflow = await apw.workflow.get(workflowId);\n const workflowSteps = workflow.steps;\n\n let previousStepStatus: ApwContentReviewStepStatus | undefined = undefined;\n const updatedSteps = workflow.steps.map((step, index) => {\n const status = getContentReviewStepInitialStatus(\n workflowSteps,\n index,\n previousStepStatus\n );\n previousStepStatus = status;\n return {\n ...step,\n status,\n pendingChangeRequests: 0,\n totalComments: 0\n };\n });\n /**\n * If there are only steps which are not mandatory ones, put review status to ApwContentReviewStatus.READY_TO_BE_PUBLISHED.\n */\n const isNonMandatory = updatedSteps.every(step => {\n return step.type === ApwWorkflowStepTypes.NON_MANDATORY;\n });\n if (isNonMandatory) {\n input.reviewStatus = ApwContentReviewStatus.READY_TO_BE_PUBLISHED;\n }\n\n input = lodashSet(input, \"steps\", updatedSteps);\n });\n};\n"],"mappings":";;;;;;;;AAAA;AACA;AAMA;AACA;AACA;AAEO,MAAMA,4BAA4B,GAAG,CAAC;EAAEC,GAAG;EAAEC;AAAoB,CAAC,KAAK;EAC1ED,GAAG,CAACE,aAAa,CAACC,2BAA2B,CAACC,SAAS,CAAC,OAAO;IAAEC;EAAM,CAAC,KAAK;IACzE,MAAM;MAAEC,IAAI;MAAEC,EAAE;MAAEC;IAAS,CAAC,GAAGH,KAAK,CAACI,OAAO;IAC5C;AACR;AACA;IACQ,MAAMC,UAAU,GAAGV,GAAG,CAACW,gBAAgB,CAACL,IAAI,CAAC;IAC7C,MAAMG,OAAO,GAAG,MAAMC,UAAU,CAACH,EAAE,EAAEC,QAAQ,CAAC;IAC9C,IAAI,CAACC,OAAO,EAAE;MACV,MAAM,IAAIG,6BAAa,CAAE,YAAWN,IAAK,aAAYC,EAAG,aAAY,CAAC;IACzE;IAEA,MAAM;MAAEM;IAAM,CAAC,GAAGJ,OAAO;IACzBJ,KAAK,GAAG,IAAAS,YAAS,EAACT,KAAK,EAAE,OAAO,EAAEQ,KAAK,CAAC;;IAExC;AACR;AACA;IACQ,MAAME,wBAAwB,GAAG,IAAAC,qDAA2B,EAAC;MACzDf,OAAO;MACPK;IACJ,CAAC,CAAC;IAEF,MAAMW,UAAU,GAAGF,wBAAwB,CAACG,aAAa,CAACT,OAAO,CAAC;;IAElE;AACR;AACA;IACQ,IAAI,CAACQ,UAAU,EAAE;MACb,MAAM,IAAIL,6BAAa,CAAE,2DAA0D,CAAC;IACxF;IAEAP,KAAK,CAACY,UAAU,GAAGA,UAAU;IAE7B,MAAME,QAAQ,GAAG,MAAMnB,GAAG,CAACmB,QAAQ,CAACC,GAAG,CAACH,UAAU,CAAC;IACnD,MAAMI,aAAa,GAAGF,QAAQ,CAACG,KAAK;IAEpC,IAAIC,kBAA0D,GAAGC,SAAS;IAC1E,MAAMC,YAAY,GAAGN,QAAQ,CAACG,KAAK,CAACI,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;MACrD,MAAMC,MAAM,GAAG,IAAAC,wCAAiC,EAC5CT,aAAa,EACbO,KAAK,EACLL,kBAAkB,CACrB;MACDA,kBAAkB,GAAGM,MAAM;MAC3B,mEACOF,IAAI;QACPE,MAAM;QACNE,qBAAqB,EAAE,CAAC;QACxBC,aAAa,EAAE;MAAC;IAExB,CAAC,CAAC;IACF;AACR;AACA;IACQ,MAAMC,cAAc,GAAGR,YAAY,CAACS,KAAK,CAACP,IAAI,IAAI;MAC9C,OAAOA,IAAI,CAACrB,IAAI,KAAK6B,2BAAoB,CAACC,aAAa;IAC3D,CAAC,CAAC;IACF,IAAIH,cAAc,EAAE;MAChB5B,KAAK,CAACgC,YAAY,GAAGC,6BAAsB,CAACC,qBAAqB;IACrE;IAEAlC,KAAK,GAAG,IAAAS,YAAS,EAACT,KAAK,EAAE,OAAO,EAAEoB,YAAY,CAAC;EACnD,CAAC,CAAC;AACN,CAAC;AAAC"}
@@ -103,14 +103,9 @@ const attachChangeRequestAfterCreate = context => {
103
103
  });
104
104
  }
105
105
  };
106
- try {
107
- context.security.disableAuthorization();
108
- await execute();
109
- } catch (ex) {
110
- throw ex;
111
- } finally {
112
- context.security.enableAuthorization();
113
- }
106
+ await context.security.withoutAuthorization(async () => {
107
+ return execute();
108
+ });
114
109
  });
115
110
  };
116
111
  exports.attachChangeRequestAfterCreate = attachChangeRequestAfterCreate;
@@ -1 +1 @@
1
- {"version":3,"names":["attachChangeRequestAfterCreate","context","apw","changeRequest","onChangeRequestAfterCreate","subscribe","execute","id","contentReviewId","stepId","extractContentReviewIdAndStep","step","WebinyError","settings","getAppUrl","changeRequestUrl","createChangeRequestUrl","baseUrl","appUrl","changeRequestId","contentReview","get","workflow","workflowId","contentUrl","createContentUrl","plugins","reviewers","fetchReviewers","exclude","createdBy","length","sendChangeRequestNotification","ex","error","message","code","data","stack","security","disableAuthorization","enableAuthorization"],"sources":["changeRequestAfterCreate.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ApwContext } from \"~/types\";\nimport { extractContentReviewIdAndStep } from \"~/plugins/utils\";\nimport { createContentUrl } from \"./contentUrl\";\nimport { sendChangeRequestNotification } from \"./sendChangeRequestNotification\";\nimport { fetchReviewers } from \"./reviewers\";\nimport { createChangeRequestUrl } from \"./changeRequestUrl\";\nimport { getAppUrl } from \"~/plugins/hooks/notifications/appUrl\";\n\nexport const attachChangeRequestAfterCreate = (context: ApwContext): void => {\n context.apw.changeRequest.onChangeRequestAfterCreate.subscribe(async ({ changeRequest }) => {\n const execute = async () => {\n const { id: contentReviewId, stepId } = extractContentReviewIdAndStep(\n changeRequest.step\n );\n if (!stepId) {\n throw new WebinyError(\"Malformed changeRequest.step value.\", \"MALFORMED_VALUE\", {\n step: changeRequest.step\n });\n }\n\n const settings = await getAppUrl(context);\n if (!settings) {\n return;\n }\n /**\n * We will check if we can create a comment url before we go digging further into the database.\n */\n const changeRequestUrl = createChangeRequestUrl({\n baseUrl: settings.appUrl,\n changeRequestId: changeRequest.id,\n contentReviewId,\n stepId\n });\n if (!changeRequestUrl) {\n return;\n }\n /**\n * Let's see if content review exists.\n */\n const contentReview = await context.apw.contentReview.get(contentReviewId);\n if (!contentReview) {\n throw new WebinyError(\n `There is no contentReview with id \"${contentReviewId}\".`,\n \"CONTENT_REVIEW_NOT_FOUND\",\n {\n contentReviewId\n }\n );\n }\n /**\n * We go and check the workflow.\n */\n const workflow = await context.apw.workflow.get(contentReview.workflowId);\n if (!workflow) {\n throw new WebinyError(\n `There is no workflow with workflowId \"${contentReview.workflowId}\".`,\n \"WORKFLOW_NOT_FOUND\",\n {\n workflowId: contentReview.workflowId\n }\n );\n }\n\n const contentUrl = createContentUrl({\n plugins: context.plugins,\n baseUrl: settings.appUrl,\n contentReview,\n workflow\n });\n if (!contentUrl) {\n return;\n }\n\n const reviewers = await fetchReviewers({\n context,\n workflow,\n exclude: [changeRequest.createdBy.id]\n });\n if (reviewers.length === 0) {\n return;\n }\n\n try {\n await sendChangeRequestNotification({\n context,\n reviewers,\n changeRequest,\n contentReview,\n workflow,\n changeRequestUrl,\n contentUrl\n });\n } catch (ex) {\n throw new WebinyError(\n `Could not send change request notifications.`,\n \"CHANGE_REQUEST_NOTIFICATIONS_NOT_SENT\",\n {\n workflowId: workflow.id,\n changeRequestId: changeRequest.id,\n contentReviewId,\n changeRequestUrl,\n contentUrl,\n error: {\n message: ex.message,\n code: ex.code,\n data: ex.data,\n stack: ex.stack\n }\n }\n );\n }\n };\n\n try {\n context.security.disableAuthorization();\n await execute();\n } catch (ex) {\n throw ex;\n } finally {\n context.security.enableAuthorization();\n }\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["attachChangeRequestAfterCreate","context","apw","changeRequest","onChangeRequestAfterCreate","subscribe","execute","id","contentReviewId","stepId","extractContentReviewIdAndStep","step","WebinyError","settings","getAppUrl","changeRequestUrl","createChangeRequestUrl","baseUrl","appUrl","changeRequestId","contentReview","get","workflow","workflowId","contentUrl","createContentUrl","plugins","reviewers","fetchReviewers","exclude","createdBy","length","sendChangeRequestNotification","ex","error","message","code","data","stack","security","withoutAuthorization"],"sources":["changeRequestAfterCreate.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ApwContext } from \"~/types\";\nimport { extractContentReviewIdAndStep } from \"~/plugins/utils\";\nimport { createContentUrl } from \"./contentUrl\";\nimport { sendChangeRequestNotification } from \"./sendChangeRequestNotification\";\nimport { fetchReviewers } from \"./reviewers\";\nimport { createChangeRequestUrl } from \"./changeRequestUrl\";\nimport { getAppUrl } from \"~/plugins/hooks/notifications/appUrl\";\n\nexport const attachChangeRequestAfterCreate = (context: ApwContext): void => {\n context.apw.changeRequest.onChangeRequestAfterCreate.subscribe(async ({ changeRequest }) => {\n const execute = async () => {\n const { id: contentReviewId, stepId } = extractContentReviewIdAndStep(\n changeRequest.step\n );\n if (!stepId) {\n throw new WebinyError(\"Malformed changeRequest.step value.\", \"MALFORMED_VALUE\", {\n step: changeRequest.step\n });\n }\n\n const settings = await getAppUrl(context);\n if (!settings) {\n return;\n }\n /**\n * We will check if we can create a comment url before we go digging further into the database.\n */\n const changeRequestUrl = createChangeRequestUrl({\n baseUrl: settings.appUrl,\n changeRequestId: changeRequest.id,\n contentReviewId,\n stepId\n });\n if (!changeRequestUrl) {\n return;\n }\n /**\n * Let's see if content review exists.\n */\n const contentReview = await context.apw.contentReview.get(contentReviewId);\n if (!contentReview) {\n throw new WebinyError(\n `There is no contentReview with id \"${contentReviewId}\".`,\n \"CONTENT_REVIEW_NOT_FOUND\",\n {\n contentReviewId\n }\n );\n }\n /**\n * We go and check the workflow.\n */\n const workflow = await context.apw.workflow.get(contentReview.workflowId);\n if (!workflow) {\n throw new WebinyError(\n `There is no workflow with workflowId \"${contentReview.workflowId}\".`,\n \"WORKFLOW_NOT_FOUND\",\n {\n workflowId: contentReview.workflowId\n }\n );\n }\n\n const contentUrl = createContentUrl({\n plugins: context.plugins,\n baseUrl: settings.appUrl,\n contentReview,\n workflow\n });\n if (!contentUrl) {\n return;\n }\n\n const reviewers = await fetchReviewers({\n context,\n workflow,\n exclude: [changeRequest.createdBy.id]\n });\n if (reviewers.length === 0) {\n return;\n }\n\n try {\n await sendChangeRequestNotification({\n context,\n reviewers,\n changeRequest,\n contentReview,\n workflow,\n changeRequestUrl,\n contentUrl\n });\n } catch (ex) {\n throw new WebinyError(\n `Could not send change request notifications.`,\n \"CHANGE_REQUEST_NOTIFICATIONS_NOT_SENT\",\n {\n workflowId: workflow.id,\n changeRequestId: changeRequest.id,\n contentReviewId,\n changeRequestUrl,\n contentUrl,\n error: {\n message: ex.message,\n code: ex.code,\n data: ex.data,\n stack: ex.stack\n }\n }\n );\n }\n };\n\n await context.security.withoutAuthorization(async () => {\n return execute();\n });\n });\n};\n"],"mappings":";;;;;;;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEO,MAAMA,8BAA8B,GAAIC,OAAmB,IAAW;EACzEA,OAAO,CAACC,GAAG,CAACC,aAAa,CAACC,0BAA0B,CAACC,SAAS,CAAC,OAAO;IAAEF;EAAc,CAAC,KAAK;IACxF,MAAMG,OAAO,GAAG,YAAY;MACxB,MAAM;QAAEC,EAAE,EAAEC,eAAe;QAAEC;MAAO,CAAC,GAAG,IAAAC,oCAA6B,EACjEP,aAAa,CAACQ,IAAI,CACrB;MACD,IAAI,CAACF,MAAM,EAAE;QACT,MAAM,IAAIG,cAAW,CAAC,qCAAqC,EAAE,iBAAiB,EAAE;UAC5ED,IAAI,EAAER,aAAa,CAACQ;QACxB,CAAC,CAAC;MACN;MAEA,MAAME,QAAQ,GAAG,MAAM,IAAAC,iBAAS,EAACb,OAAO,CAAC;MACzC,IAAI,CAACY,QAAQ,EAAE;QACX;MACJ;MACA;AACZ;AACA;MACY,MAAME,gBAAgB,GAAG,IAAAC,wCAAsB,EAAC;QAC5CC,OAAO,EAAEJ,QAAQ,CAACK,MAAM;QACxBC,eAAe,EAAEhB,aAAa,CAACI,EAAE;QACjCC,eAAe;QACfC;MACJ,CAAC,CAAC;MACF,IAAI,CAACM,gBAAgB,EAAE;QACnB;MACJ;MACA;AACZ;AACA;MACY,MAAMK,aAAa,GAAG,MAAMnB,OAAO,CAACC,GAAG,CAACkB,aAAa,CAACC,GAAG,CAACb,eAAe,CAAC;MAC1E,IAAI,CAACY,aAAa,EAAE;QAChB,MAAM,IAAIR,cAAW,CAChB,sCAAqCJ,eAAgB,IAAG,EACzD,0BAA0B,EAC1B;UACIA;QACJ,CAAC,CACJ;MACL;MACA;AACZ;AACA;MACY,MAAMc,QAAQ,GAAG,MAAMrB,OAAO,CAACC,GAAG,CAACoB,QAAQ,CAACD,GAAG,CAACD,aAAa,CAACG,UAAU,CAAC;MACzE,IAAI,CAACD,QAAQ,EAAE;QACX,MAAM,IAAIV,cAAW,CAChB,yCAAwCQ,aAAa,CAACG,UAAW,IAAG,EACrE,oBAAoB,EACpB;UACIA,UAAU,EAAEH,aAAa,CAACG;QAC9B,CAAC,CACJ;MACL;MAEA,MAAMC,UAAU,GAAG,IAAAC,4BAAgB,EAAC;QAChCC,OAAO,EAAEzB,OAAO,CAACyB,OAAO;QACxBT,OAAO,EAAEJ,QAAQ,CAACK,MAAM;QACxBE,aAAa;QACbE;MACJ,CAAC,CAAC;MACF,IAAI,CAACE,UAAU,EAAE;QACb;MACJ;MAEA,MAAMG,SAAS,GAAG,MAAM,IAAAC,yBAAc,EAAC;QACnC3B,OAAO;QACPqB,QAAQ;QACRO,OAAO,EAAE,CAAC1B,aAAa,CAAC2B,SAAS,CAACvB,EAAE;MACxC,CAAC,CAAC;MACF,IAAIoB,SAAS,CAACI,MAAM,KAAK,CAAC,EAAE;QACxB;MACJ;MAEA,IAAI;QACA,MAAM,IAAAC,4DAA6B,EAAC;UAChC/B,OAAO;UACP0B,SAAS;UACTxB,aAAa;UACbiB,aAAa;UACbE,QAAQ;UACRP,gBAAgB;UAChBS;QACJ,CAAC,CAAC;MACN,CAAC,CAAC,OAAOS,EAAE,EAAE;QACT,MAAM,IAAIrB,cAAW,CAChB,8CAA6C,EAC9C,uCAAuC,EACvC;UACIW,UAAU,EAAED,QAAQ,CAACf,EAAE;UACvBY,eAAe,EAAEhB,aAAa,CAACI,EAAE;UACjCC,eAAe;UACfO,gBAAgB;UAChBS,UAAU;UACVU,KAAK,EAAE;YACHC,OAAO,EAAEF,EAAE,CAACE,OAAO;YACnBC,IAAI,EAAEH,EAAE,CAACG,IAAI;YACbC,IAAI,EAAEJ,EAAE,CAACI,IAAI;YACbC,KAAK,EAAEL,EAAE,CAACK;UACd;QACJ,CAAC,CACJ;MACL;IACJ,CAAC;IAED,MAAMrC,OAAO,CAACsC,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MACpD,OAAOlC,OAAO,EAAE;IACpB,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAAC"}
@@ -114,14 +114,9 @@ const attachCommentAfterCreate = context => {
114
114
  });
115
115
  }
116
116
  };
117
- try {
118
- context.security.disableAuthorization();
119
- await execute();
120
- } catch (ex) {
121
- throw ex;
122
- } finally {
123
- context.security.enableAuthorization();
124
- }
117
+ await context.security.withoutAuthorization(async () => {
118
+ return execute();
119
+ });
125
120
  });
126
121
  };
127
122
  exports.attachCommentAfterCreate = attachCommentAfterCreate;
@@ -1 +1 @@
1
- {"version":3,"names":["attachCommentAfterCreate","context","apw","comment","onCommentAfterCreate","subscribe","execute","changeRequest","get","WebinyError","id","contentReviewId","stepId","extractContentReviewIdAndStep","step","settings","getAppUrl","commentUrl","createCommentUrl","baseUrl","appUrl","changeRequestId","console","log","contentReview","workflow","workflowId","contentUrl","createContentUrl","plugins","reviewers","fetchReviewers","exclude","createdBy","length","sendCommentNotification","ex","commentId","error","message","code","data","stack","security","disableAuthorization","enableAuthorization"],"sources":["commentAfterCreate.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ApwContext } from \"~/types\";\nimport { extractContentReviewIdAndStep } from \"~/plugins/utils\";\nimport { createContentUrl } from \"./contentUrl\";\nimport { createCommentUrl } from \"./commentUrl\";\nimport { fetchReviewers } from \"./reviewers\";\nimport { sendCommentNotification } from \"./sendCommentNotification\";\nimport { getAppUrl } from \"~/plugins/hooks/notifications/appUrl\";\n\nexport const attachCommentAfterCreate = (context: ApwContext): void => {\n context.apw.comment.onCommentAfterCreate.subscribe(async ({ comment }) => {\n const execute = async () => {\n const changeRequest = await context.apw.changeRequest.get(comment.changeRequest);\n if (!changeRequest) {\n throw new WebinyError(\"Missing change request.\", \"CHANGE_REQUEST_NOT_FOUND\", {\n changeRequest: comment.changeRequest,\n comment: comment.id\n });\n }\n\n const { id: contentReviewId, stepId } = extractContentReviewIdAndStep(\n changeRequest.step\n );\n if (!stepId) {\n throw new WebinyError(\"Malformed changeRequest.step value.\", \"MALFORMED_VALUE\", {\n step: changeRequest.step\n });\n }\n\n const settings = await getAppUrl(context);\n if (!settings) {\n return;\n }\n /**\n * We will check if we can create a comment url before we go digging further into the database.\n */\n const commentUrl = createCommentUrl({\n baseUrl: settings.appUrl,\n changeRequestId: changeRequest.id,\n contentReviewId,\n stepId\n });\n if (!commentUrl) {\n console.log(\"No comment url.\");\n return;\n }\n /**\n * Let's see if content review exists.\n */\n const contentReview = await context.apw.contentReview.get(contentReviewId);\n if (!contentReview) {\n throw new WebinyError(\n `There is no contentReview with id \"${contentReviewId}\".`,\n \"CONTENT_REVIEW_NOT_FOUND\",\n {\n contentReviewId\n }\n );\n }\n /**\n * We go and check the workflow.\n */\n const workflow = await context.apw.workflow.get(contentReview.workflowId);\n if (!workflow) {\n throw new WebinyError(\n `There is no workflow with workflowId \"${contentReview.workflowId}\".`,\n \"WORKFLOW_NOT_FOUND\",\n {\n workflowId: contentReview.workflowId\n }\n );\n }\n\n const contentUrl = createContentUrl({\n plugins: context.plugins,\n baseUrl: settings.appUrl,\n contentReview,\n workflow\n });\n if (!contentUrl) {\n console.log(\"No content url.\");\n return;\n }\n\n const reviewers = await fetchReviewers({\n context,\n workflow,\n exclude: [comment.createdBy.id]\n });\n\n if (reviewers.length === 0) {\n console.log(\"No reviewers to send the e-mail notification to.\");\n return;\n }\n\n try {\n await sendCommentNotification({\n context,\n reviewers,\n changeRequest,\n contentReview,\n workflow,\n commentUrl,\n contentUrl\n });\n } catch (ex) {\n throw new WebinyError(\n `Could not send comment notifications.`,\n \"COMMENT_NOTIFICATIONS_NOT_SENT\",\n {\n commentId: comment.id,\n workflowId: workflow.id,\n changeRequestId: changeRequest.id,\n contentReviewId,\n commentUrl,\n contentUrl,\n error: {\n message: ex.message,\n code: ex.code,\n data: ex.data,\n stack: ex.stack\n }\n }\n );\n }\n };\n\n try {\n context.security.disableAuthorization();\n await execute();\n } catch (ex) {\n throw ex;\n } finally {\n context.security.enableAuthorization();\n }\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["attachCommentAfterCreate","context","apw","comment","onCommentAfterCreate","subscribe","execute","changeRequest","get","WebinyError","id","contentReviewId","stepId","extractContentReviewIdAndStep","step","settings","getAppUrl","commentUrl","createCommentUrl","baseUrl","appUrl","changeRequestId","console","log","contentReview","workflow","workflowId","contentUrl","createContentUrl","plugins","reviewers","fetchReviewers","exclude","createdBy","length","sendCommentNotification","ex","commentId","error","message","code","data","stack","security","withoutAuthorization"],"sources":["commentAfterCreate.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ApwContext } from \"~/types\";\nimport { extractContentReviewIdAndStep } from \"~/plugins/utils\";\nimport { createContentUrl } from \"./contentUrl\";\nimport { createCommentUrl } from \"./commentUrl\";\nimport { fetchReviewers } from \"./reviewers\";\nimport { sendCommentNotification } from \"./sendCommentNotification\";\nimport { getAppUrl } from \"~/plugins/hooks/notifications/appUrl\";\n\nexport const attachCommentAfterCreate = (context: ApwContext): void => {\n context.apw.comment.onCommentAfterCreate.subscribe(async ({ comment }) => {\n const execute = async () => {\n const changeRequest = await context.apw.changeRequest.get(comment.changeRequest);\n if (!changeRequest) {\n throw new WebinyError(\"Missing change request.\", \"CHANGE_REQUEST_NOT_FOUND\", {\n changeRequest: comment.changeRequest,\n comment: comment.id\n });\n }\n\n const { id: contentReviewId, stepId } = extractContentReviewIdAndStep(\n changeRequest.step\n );\n if (!stepId) {\n throw new WebinyError(\"Malformed changeRequest.step value.\", \"MALFORMED_VALUE\", {\n step: changeRequest.step\n });\n }\n\n const settings = await getAppUrl(context);\n if (!settings) {\n return;\n }\n /**\n * We will check if we can create a comment url before we go digging further into the database.\n */\n const commentUrl = createCommentUrl({\n baseUrl: settings.appUrl,\n changeRequestId: changeRequest.id,\n contentReviewId,\n stepId\n });\n if (!commentUrl) {\n console.log(\"No comment url.\");\n return;\n }\n /**\n * Let's see if content review exists.\n */\n const contentReview = await context.apw.contentReview.get(contentReviewId);\n if (!contentReview) {\n throw new WebinyError(\n `There is no contentReview with id \"${contentReviewId}\".`,\n \"CONTENT_REVIEW_NOT_FOUND\",\n {\n contentReviewId\n }\n );\n }\n /**\n * We go and check the workflow.\n */\n const workflow = await context.apw.workflow.get(contentReview.workflowId);\n if (!workflow) {\n throw new WebinyError(\n `There is no workflow with workflowId \"${contentReview.workflowId}\".`,\n \"WORKFLOW_NOT_FOUND\",\n {\n workflowId: contentReview.workflowId\n }\n );\n }\n\n const contentUrl = createContentUrl({\n plugins: context.plugins,\n baseUrl: settings.appUrl,\n contentReview,\n workflow\n });\n if (!contentUrl) {\n console.log(\"No content url.\");\n return;\n }\n\n const reviewers = await fetchReviewers({\n context,\n workflow,\n exclude: [comment.createdBy.id]\n });\n\n if (reviewers.length === 0) {\n console.log(\"No reviewers to send the e-mail notification to.\");\n return;\n }\n\n try {\n await sendCommentNotification({\n context,\n reviewers,\n changeRequest,\n contentReview,\n workflow,\n commentUrl,\n contentUrl\n });\n } catch (ex) {\n throw new WebinyError(\n `Could not send comment notifications.`,\n \"COMMENT_NOTIFICATIONS_NOT_SENT\",\n {\n commentId: comment.id,\n workflowId: workflow.id,\n changeRequestId: changeRequest.id,\n contentReviewId,\n commentUrl,\n contentUrl,\n error: {\n message: ex.message,\n code: ex.code,\n data: ex.data,\n stack: ex.stack\n }\n }\n );\n }\n };\n\n await context.security.withoutAuthorization(async () => {\n return execute();\n });\n });\n};\n"],"mappings":"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"}
@@ -86,14 +86,9 @@ const attachContentReviewAfterCreate = context => {
86
86
  });
87
87
  }
88
88
  };
89
- try {
90
- context.security.disableAuthorization();
91
- await execute();
92
- } catch (ex) {
93
- throw ex;
94
- } finally {
95
- context.security.enableAuthorization();
96
- }
89
+ await context.security.withoutAuthorization(async () => {
90
+ return execute();
91
+ });
97
92
  });
98
93
  };
99
94
  exports.attachContentReviewAfterCreate = attachContentReviewAfterCreate;
@@ -1 +1 @@
1
- {"version":3,"names":["attachContentReviewAfterCreate","context","apw","contentReview","onContentReviewAfterCreate","subscribe","execute","steps","length","step","id","settings","getAppUrl","contentReviewUrl","createContentReviewUrl","baseUrl","appUrl","contentReviewId","stepId","workflow","get","workflowId","WebinyError","contentUrl","createContentUrl","plugins","reviewers","fetchReviewers","exclude","createdBy","sendContentReviewNotification","ex","error","message","code","data","stack","security","disableAuthorization","enableAuthorization"],"sources":["contentReviewAfterCreate.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ApwContext } from \"~/types\";\nimport { getAppUrl } from \"./appUrl\";\nimport { createContentReviewUrl } from \"./contentReviewUrl\";\nimport { createContentUrl } from \"./contentUrl\";\nimport { fetchReviewers } from \"./reviewers\";\nimport { sendContentReviewNotification } from \"./sendContentReviewNotification\";\n\nexport const attachContentReviewAfterCreate = (context: ApwContext): void => {\n context.apw.contentReview.onContentReviewAfterCreate.subscribe(async ({ contentReview }) => {\n const execute = async () => {\n if (contentReview.steps.length === 0) {\n return;\n }\n const [step] = contentReview.steps;\n if (!step?.id) {\n return;\n }\n const settings = await getAppUrl(context);\n if (!settings) {\n return;\n }\n\n const contentReviewUrl = createContentReviewUrl({\n baseUrl: settings.appUrl,\n contentReviewId: contentReview.id,\n stepId: step.id\n });\n if (!contentReviewUrl) {\n return;\n }\n\n /**\n * We go and check the workflow.\n */\n const workflow = await context.apw.workflow.get(contentReview.workflowId);\n if (!workflow) {\n throw new WebinyError(\n `There is no workflow with Id \"${contentReview.workflowId}\".`,\n \"WORKFLOW_NOT_FOUND\",\n {\n workflowId: contentReview.workflowId\n }\n );\n }\n\n const contentUrl = createContentUrl({\n plugins: context.plugins,\n baseUrl: settings.appUrl,\n contentReview,\n workflow\n });\n if (!contentUrl) {\n return;\n }\n\n const reviewers = await fetchReviewers({\n context,\n workflow,\n exclude: [contentReview.createdBy.id]\n });\n if (reviewers.length === 0) {\n return;\n }\n\n try {\n await sendContentReviewNotification({\n context,\n reviewers,\n contentReview,\n workflow,\n contentReviewUrl,\n contentUrl\n });\n } catch (ex) {\n throw new WebinyError(\n `Could not send content review notifications.`,\n \"CONTENT_REVIEW_NOTIFICATIONS_NOT_SENT\",\n {\n workflowId: workflow.id,\n contentReviewId: contentReview.id,\n contentReviewUrl,\n contentUrl,\n error: {\n message: ex.message,\n code: ex.code,\n data: ex.data,\n stack: ex.stack\n }\n }\n );\n }\n };\n\n try {\n context.security.disableAuthorization();\n await execute();\n } catch (ex) {\n throw ex;\n } finally {\n context.security.enableAuthorization();\n }\n });\n};\n"],"mappings":";;;;;;;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEO,MAAMA,8BAA8B,GAAIC,OAAmB,IAAW;EACzEA,OAAO,CAACC,GAAG,CAACC,aAAa,CAACC,0BAA0B,CAACC,SAAS,CAAC,OAAO;IAAEF;EAAc,CAAC,KAAK;IACxF,MAAMG,OAAO,GAAG,YAAY;MACxB,IAAIH,aAAa,CAACI,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE;QAClC;MACJ;MACA,MAAM,CAACC,IAAI,CAAC,GAAGN,aAAa,CAACI,KAAK;MAClC,IAAI,EAACE,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEC,EAAE,GAAE;QACX;MACJ;MACA,MAAMC,QAAQ,GAAG,MAAM,IAAAC,iBAAS,EAACX,OAAO,CAAC;MACzC,IAAI,CAACU,QAAQ,EAAE;QACX;MACJ;MAEA,MAAME,gBAAgB,GAAG,IAAAC,wCAAsB,EAAC;QAC5CC,OAAO,EAAEJ,QAAQ,CAACK,MAAM;QACxBC,eAAe,EAAEd,aAAa,CAACO,EAAE;QACjCQ,MAAM,EAAET,IAAI,CAACC;MACjB,CAAC,CAAC;MACF,IAAI,CAACG,gBAAgB,EAAE;QACnB;MACJ;;MAEA;AACZ;AACA;MACY,MAAMM,QAAQ,GAAG,MAAMlB,OAAO,CAACC,GAAG,CAACiB,QAAQ,CAACC,GAAG,CAACjB,aAAa,CAACkB,UAAU,CAAC;MACzE,IAAI,CAACF,QAAQ,EAAE;QACX,MAAM,IAAIG,cAAW,CAChB,iCAAgCnB,aAAa,CAACkB,UAAW,IAAG,EAC7D,oBAAoB,EACpB;UACIA,UAAU,EAAElB,aAAa,CAACkB;QAC9B,CAAC,CACJ;MACL;MAEA,MAAME,UAAU,GAAG,IAAAC,4BAAgB,EAAC;QAChCC,OAAO,EAAExB,OAAO,CAACwB,OAAO;QACxBV,OAAO,EAAEJ,QAAQ,CAACK,MAAM;QACxBb,aAAa;QACbgB;MACJ,CAAC,CAAC;MACF,IAAI,CAACI,UAAU,EAAE;QACb;MACJ;MAEA,MAAMG,SAAS,GAAG,MAAM,IAAAC,yBAAc,EAAC;QACnC1B,OAAO;QACPkB,QAAQ;QACRS,OAAO,EAAE,CAACzB,aAAa,CAAC0B,SAAS,CAACnB,EAAE;MACxC,CAAC,CAAC;MACF,IAAIgB,SAAS,CAAClB,MAAM,KAAK,CAAC,EAAE;QACxB;MACJ;MAEA,IAAI;QACA,MAAM,IAAAsB,4DAA6B,EAAC;UAChC7B,OAAO;UACPyB,SAAS;UACTvB,aAAa;UACbgB,QAAQ;UACRN,gBAAgB;UAChBU;QACJ,CAAC,CAAC;MACN,CAAC,CAAC,OAAOQ,EAAE,EAAE;QACT,MAAM,IAAIT,cAAW,CAChB,8CAA6C,EAC9C,uCAAuC,EACvC;UACID,UAAU,EAAEF,QAAQ,CAACT,EAAE;UACvBO,eAAe,EAAEd,aAAa,CAACO,EAAE;UACjCG,gBAAgB;UAChBU,UAAU;UACVS,KAAK,EAAE;YACHC,OAAO,EAAEF,EAAE,CAACE,OAAO;YACnBC,IAAI,EAAEH,EAAE,CAACG,IAAI;YACbC,IAAI,EAAEJ,EAAE,CAACI,IAAI;YACbC,KAAK,EAAEL,EAAE,CAACK;UACd;QACJ,CAAC,CACJ;MACL;IACJ,CAAC;IAED,IAAI;MACAnC,OAAO,CAACoC,QAAQ,CAACC,oBAAoB,EAAE;MACvC,MAAMhC,OAAO,EAAE;IACnB,CAAC,CAAC,OAAOyB,EAAE,EAAE;MACT,MAAMA,EAAE;IACZ,CAAC,SAAS;MACN9B,OAAO,CAACoC,QAAQ,CAACE,mBAAmB,EAAE;IAC1C;EACJ,CAAC,CAAC;AACN,CAAC;AAAC"}
1
+ {"version":3,"names":["attachContentReviewAfterCreate","context","apw","contentReview","onContentReviewAfterCreate","subscribe","execute","steps","length","step","id","settings","getAppUrl","contentReviewUrl","createContentReviewUrl","baseUrl","appUrl","contentReviewId","stepId","workflow","get","workflowId","WebinyError","contentUrl","createContentUrl","plugins","reviewers","fetchReviewers","exclude","createdBy","sendContentReviewNotification","ex","error","message","code","data","stack","security","withoutAuthorization"],"sources":["contentReviewAfterCreate.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { ApwContext } from \"~/types\";\nimport { getAppUrl } from \"./appUrl\";\nimport { createContentReviewUrl } from \"./contentReviewUrl\";\nimport { createContentUrl } from \"./contentUrl\";\nimport { fetchReviewers } from \"./reviewers\";\nimport { sendContentReviewNotification } from \"./sendContentReviewNotification\";\n\nexport const attachContentReviewAfterCreate = (context: ApwContext): void => {\n context.apw.contentReview.onContentReviewAfterCreate.subscribe(async ({ contentReview }) => {\n const execute = async () => {\n if (contentReview.steps.length === 0) {\n return;\n }\n const [step] = contentReview.steps;\n if (!step?.id) {\n return;\n }\n const settings = await getAppUrl(context);\n if (!settings) {\n return;\n }\n\n const contentReviewUrl = createContentReviewUrl({\n baseUrl: settings.appUrl,\n contentReviewId: contentReview.id,\n stepId: step.id\n });\n if (!contentReviewUrl) {\n return;\n }\n\n /**\n * We go and check the workflow.\n */\n const workflow = await context.apw.workflow.get(contentReview.workflowId);\n if (!workflow) {\n throw new WebinyError(\n `There is no workflow with Id \"${contentReview.workflowId}\".`,\n \"WORKFLOW_NOT_FOUND\",\n {\n workflowId: contentReview.workflowId\n }\n );\n }\n\n const contentUrl = createContentUrl({\n plugins: context.plugins,\n baseUrl: settings.appUrl,\n contentReview,\n workflow\n });\n if (!contentUrl) {\n return;\n }\n\n const reviewers = await fetchReviewers({\n context,\n workflow,\n exclude: [contentReview.createdBy.id]\n });\n if (reviewers.length === 0) {\n return;\n }\n\n try {\n await sendContentReviewNotification({\n context,\n reviewers,\n contentReview,\n workflow,\n contentReviewUrl,\n contentUrl\n });\n } catch (ex) {\n throw new WebinyError(\n `Could not send content review notifications.`,\n \"CONTENT_REVIEW_NOTIFICATIONS_NOT_SENT\",\n {\n workflowId: workflow.id,\n contentReviewId: contentReview.id,\n contentReviewUrl,\n contentUrl,\n error: {\n message: ex.message,\n code: ex.code,\n data: ex.data,\n stack: ex.stack\n }\n }\n );\n }\n };\n\n await context.security.withoutAuthorization(async () => {\n return execute();\n });\n });\n};\n"],"mappings":";;;;;;;AAAA;AAEA;AACA;AACA;AACA;AACA;AAEO,MAAMA,8BAA8B,GAAIC,OAAmB,IAAW;EACzEA,OAAO,CAACC,GAAG,CAACC,aAAa,CAACC,0BAA0B,CAACC,SAAS,CAAC,OAAO;IAAEF;EAAc,CAAC,KAAK;IACxF,MAAMG,OAAO,GAAG,YAAY;MACxB,IAAIH,aAAa,CAACI,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE;QAClC;MACJ;MACA,MAAM,CAACC,IAAI,CAAC,GAAGN,aAAa,CAACI,KAAK;MAClC,IAAI,EAACE,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEC,EAAE,GAAE;QACX;MACJ;MACA,MAAMC,QAAQ,GAAG,MAAM,IAAAC,iBAAS,EAACX,OAAO,CAAC;MACzC,IAAI,CAACU,QAAQ,EAAE;QACX;MACJ;MAEA,MAAME,gBAAgB,GAAG,IAAAC,wCAAsB,EAAC;QAC5CC,OAAO,EAAEJ,QAAQ,CAACK,MAAM;QACxBC,eAAe,EAAEd,aAAa,CAACO,EAAE;QACjCQ,MAAM,EAAET,IAAI,CAACC;MACjB,CAAC,CAAC;MACF,IAAI,CAACG,gBAAgB,EAAE;QACnB;MACJ;;MAEA;AACZ;AACA;MACY,MAAMM,QAAQ,GAAG,MAAMlB,OAAO,CAACC,GAAG,CAACiB,QAAQ,CAACC,GAAG,CAACjB,aAAa,CAACkB,UAAU,CAAC;MACzE,IAAI,CAACF,QAAQ,EAAE;QACX,MAAM,IAAIG,cAAW,CAChB,iCAAgCnB,aAAa,CAACkB,UAAW,IAAG,EAC7D,oBAAoB,EACpB;UACIA,UAAU,EAAElB,aAAa,CAACkB;QAC9B,CAAC,CACJ;MACL;MAEA,MAAME,UAAU,GAAG,IAAAC,4BAAgB,EAAC;QAChCC,OAAO,EAAExB,OAAO,CAACwB,OAAO;QACxBV,OAAO,EAAEJ,QAAQ,CAACK,MAAM;QACxBb,aAAa;QACbgB;MACJ,CAAC,CAAC;MACF,IAAI,CAACI,UAAU,EAAE;QACb;MACJ;MAEA,MAAMG,SAAS,GAAG,MAAM,IAAAC,yBAAc,EAAC;QACnC1B,OAAO;QACPkB,QAAQ;QACRS,OAAO,EAAE,CAACzB,aAAa,CAAC0B,SAAS,CAACnB,EAAE;MACxC,CAAC,CAAC;MACF,IAAIgB,SAAS,CAAClB,MAAM,KAAK,CAAC,EAAE;QACxB;MACJ;MAEA,IAAI;QACA,MAAM,IAAAsB,4DAA6B,EAAC;UAChC7B,OAAO;UACPyB,SAAS;UACTvB,aAAa;UACbgB,QAAQ;UACRN,gBAAgB;UAChBU;QACJ,CAAC,CAAC;MACN,CAAC,CAAC,OAAOQ,EAAE,EAAE;QACT,MAAM,IAAIT,cAAW,CAChB,8CAA6C,EAC9C,uCAAuC,EACvC;UACID,UAAU,EAAEF,QAAQ,CAACT,EAAE;UACvBO,eAAe,EAAEd,aAAa,CAACO,EAAE;UACjCG,gBAAgB;UAChBU,UAAU;UACVS,KAAK,EAAE;YACHC,OAAO,EAAEF,EAAE,CAACE,OAAO;YACnBC,IAAI,EAAEH,EAAE,CAACG,IAAI;YACbC,IAAI,EAAEJ,EAAE,CAACI,IAAI;YACbC,KAAK,EAAEL,EAAE,CAACK;UACd;QACJ,CAAC,CACJ;MACL;IACJ,CAAC;IAED,MAAMnC,OAAO,CAACoC,QAAQ,CAACC,oBAAoB,CAAC,YAAY;MACpD,OAAOhC,OAAO,EAAE;IACpB,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAAC"}
@@ -25,20 +25,21 @@ const fetchReviewers = async params => {
25
25
  exclude
26
26
  } = params;
27
27
  const idList = getReviewerIdList(workflow);
28
- context.security.disableAuthorization();
29
- const [reviewers] = await context.apw.reviewer.list({
30
- where: {
31
- id_in: idList
32
- },
33
- limit: 10000
34
- });
35
- return reviewers.filter(item => {
36
- if (!item.email) {
37
- return false;
38
- } else if (exclude.includes(item.identityId)) {
39
- return false;
40
- }
41
- return true;
28
+ return context.security.withoutAuthorization(async () => {
29
+ const [reviewers] = await context.apw.reviewer.list({
30
+ where: {
31
+ id_in: idList
32
+ },
33
+ limit: 10000
34
+ });
35
+ return reviewers.filter(item => {
36
+ if (!item.email) {
37
+ return false;
38
+ } else if (exclude.includes(item.identityId)) {
39
+ return false;
40
+ }
41
+ return true;
42
+ });
42
43
  });
43
44
  };
44
45
  exports.fetchReviewers = fetchReviewers;
@@ -1 +1 @@
1
- {"version":3,"names":["getReviewerIdList","steps","reduce","collection","step","reviewer","reviewers","includes","id","push","fetchReviewers","params","context","workflow","exclude","idList","security","disableAuthorization","apw","list","where","id_in","limit","filter","item","email","identityId"],"sources":["reviewers.ts"],"sourcesContent":["import { ApwContext, ApwReviewerWithEmail, ApwWorkflow, ApwWorkflowStep } from \"~/types\";\n\ninterface GetReviewerIdListParams {\n steps: ApwWorkflowStep[];\n}\ninterface GetReviewerIdList {\n (params: GetReviewerIdListParams): string[];\n}\nexport const getReviewerIdList: GetReviewerIdList = ({ steps }) => {\n return steps.reduce<string[]>((collection, step) => {\n for (const reviewer of step.reviewers) {\n if (collection.includes(reviewer.id)) {\n return collection;\n }\n collection.push(reviewer.id);\n }\n\n return collection;\n }, []);\n};\n\ninterface FetchReviewersParams {\n context: ApwContext;\n workflow: ApwWorkflow;\n exclude: string[];\n}\nexport const fetchReviewers = async (\n params: FetchReviewersParams\n): Promise<ApwReviewerWithEmail[]> => {\n const { context, workflow, exclude } = params;\n\n const idList = getReviewerIdList(workflow);\n\n context.security.disableAuthorization();\n\n const [reviewers] = await context.apw.reviewer.list({\n where: {\n id_in: idList\n },\n limit: 10000\n });\n return reviewers.filter(item => {\n if (!item.email) {\n return false;\n } else if (exclude.includes(item.identityId)) {\n return false;\n }\n\n return true;\n }) as ApwReviewerWithEmail[];\n};\n"],"mappings":";;;;;;AAQO,MAAMA,iBAAoC,GAAG,CAAC;EAAEC;AAAM,CAAC,KAAK;EAC/D,OAAOA,KAAK,CAACC,MAAM,CAAW,CAACC,UAAU,EAAEC,IAAI,KAAK;IAChD,KAAK,MAAMC,QAAQ,IAAID,IAAI,CAACE,SAAS,EAAE;MACnC,IAAIH,UAAU,CAACI,QAAQ,CAACF,QAAQ,CAACG,EAAE,CAAC,EAAE;QAClC,OAAOL,UAAU;MACrB;MACAA,UAAU,CAACM,IAAI,CAACJ,QAAQ,CAACG,EAAE,CAAC;IAChC;IAEA,OAAOL,UAAU;EACrB,CAAC,EAAE,EAAE,CAAC;AACV,CAAC;AAAC;AAOK,MAAMO,cAAc,GAAG,MAC1BC,MAA4B,IACM;EAClC,MAAM;IAAEC,OAAO;IAAEC,QAAQ;IAAEC;EAAQ,CAAC,GAAGH,MAAM;EAE7C,MAAMI,MAAM,GAAGf,iBAAiB,CAACa,QAAQ,CAAC;EAE1CD,OAAO,CAACI,QAAQ,CAACC,oBAAoB,EAAE;EAEvC,MAAM,CAACX,SAAS,CAAC,GAAG,MAAMM,OAAO,CAACM,GAAG,CAACb,QAAQ,CAACc,IAAI,CAAC;IAChDC,KAAK,EAAE;MACHC,KAAK,EAAEN;IACX,CAAC;IACDO,KAAK,EAAE;EACX,CAAC,CAAC;EACF,OAAOhB,SAAS,CAACiB,MAAM,CAACC,IAAI,IAAI;IAC5B,IAAI,CAACA,IAAI,CAACC,KAAK,EAAE;MACb,OAAO,KAAK;IAChB,CAAC,MAAM,IAAIX,OAAO,CAACP,QAAQ,CAACiB,IAAI,CAACE,UAAU,CAAC,EAAE;MAC1C,OAAO,KAAK;IAChB;IAEA,OAAO,IAAI;EACf,CAAC,CAAC;AACN,CAAC;AAAC"}
1
+ {"version":3,"names":["getReviewerIdList","steps","reduce","collection","step","reviewer","reviewers","includes","id","push","fetchReviewers","params","context","workflow","exclude","idList","security","withoutAuthorization","apw","list","where","id_in","limit","filter","item","email","identityId"],"sources":["reviewers.ts"],"sourcesContent":["import { ApwContext, ApwReviewerWithEmail, ApwWorkflow, ApwWorkflowStep } from \"~/types\";\n\ninterface GetReviewerIdListParams {\n steps: ApwWorkflowStep[];\n}\n\ninterface GetReviewerIdList {\n (params: GetReviewerIdListParams): string[];\n}\n\nexport const getReviewerIdList: GetReviewerIdList = ({ steps }) => {\n return steps.reduce<string[]>((collection, step) => {\n for (const reviewer of step.reviewers) {\n if (collection.includes(reviewer.id)) {\n return collection;\n }\n collection.push(reviewer.id);\n }\n\n return collection;\n }, []);\n};\n\ninterface FetchReviewersParams {\n context: ApwContext;\n workflow: ApwWorkflow;\n exclude: string[];\n}\n\nexport const fetchReviewers = async (\n params: FetchReviewersParams\n): Promise<ApwReviewerWithEmail[]> => {\n const { context, workflow, exclude } = params;\n\n const idList = getReviewerIdList(workflow);\n\n return context.security.withoutAuthorization(async () => {\n const [reviewers] = await context.apw.reviewer.list({\n where: {\n id_in: idList\n },\n limit: 10000\n });\n return reviewers.filter((item): item is ApwReviewerWithEmail => {\n if (!item.email) {\n return false;\n } else if (exclude.includes(item.identityId)) {\n return false;\n }\n\n return true;\n });\n });\n};\n"],"mappings":";;;;;;AAUO,MAAMA,iBAAoC,GAAG,CAAC;EAAEC;AAAM,CAAC,KAAK;EAC/D,OAAOA,KAAK,CAACC,MAAM,CAAW,CAACC,UAAU,EAAEC,IAAI,KAAK;IAChD,KAAK,MAAMC,QAAQ,IAAID,IAAI,CAACE,SAAS,EAAE;MACnC,IAAIH,UAAU,CAACI,QAAQ,CAACF,QAAQ,CAACG,EAAE,CAAC,EAAE;QAClC,OAAOL,UAAU;MACrB;MACAA,UAAU,CAACM,IAAI,CAACJ,QAAQ,CAACG,EAAE,CAAC;IAChC;IAEA,OAAOL,UAAU;EACrB,CAAC,EAAE,EAAE,CAAC;AACV,CAAC;AAAC;AAQK,MAAMO,cAAc,GAAG,MAC1BC,MAA4B,IACM;EAClC,MAAM;IAAEC,OAAO;IAAEC,QAAQ;IAAEC;EAAQ,CAAC,GAAGH,MAAM;EAE7C,MAAMI,MAAM,GAAGf,iBAAiB,CAACa,QAAQ,CAAC;EAE1C,OAAOD,OAAO,CAACI,QAAQ,CAACC,oBAAoB,CAAC,YAAY;IACrD,MAAM,CAACX,SAAS,CAAC,GAAG,MAAMM,OAAO,CAACM,GAAG,CAACb,QAAQ,CAACc,IAAI,CAAC;MAChDC,KAAK,EAAE;QACHC,KAAK,EAAEN;MACX,CAAC;MACDO,KAAK,EAAE;IACX,CAAC,CAAC;IACF,OAAOhB,SAAS,CAACiB,MAAM,CAAEC,IAAI,IAAmC;MAC5D,IAAI,CAACA,IAAI,CAACC,KAAK,EAAE;QACb,OAAO,KAAK;MAChB,CAAC,MAAM,IAAIX,OAAO,CAACP,QAAQ,CAACiB,IAAI,CAACE,UAAU,CAAC,EAAE;QAC1C,OAAO,KAAK;MAChB;MAEA,OAAO,IAAI;IACf,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC;AAAC"}
@@ -6,15 +6,10 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.createScheduleActionMethods = createScheduleActionMethods;
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
- var _mdbid = _interopRequireDefault(require("mdbid"));
10
9
  var _fields = require("@commodo/fields");
11
10
  var _validation = require("@webiny/validation");
11
+ var _utils = require("@webiny/utils");
12
12
  var _types = require("./types");
13
- /**
14
- * Package mdbid does not have types.
15
- */
16
- // @ts-ignore
17
-
18
13
  /**
19
14
  * Package @commodo/fields does not have types.
20
15
  */
@@ -76,7 +71,7 @@ function createScheduleActionMethods({
76
71
  async create(input) {
77
72
  const createDataModel = new CreateDataModel().populate(input);
78
73
  await createDataModel.validate();
79
- const id = (0, _mdbid.default)();
74
+ const id = (0, _utils.mdbid)();
80
75
  const identity = getIdentity();
81
76
  const data = await createDataModel.toJSON();
82
77
  const scheduleAction = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, getTenantAndLocale()), {}, {
@@ -1 +1 @@
1
- {"version":3,"names":["CreateDataModel","withFields","instance","datetime","string","validation","create","type","ApwContentTypes","PAGE","CMS_ENTRY","action","ApwScheduleActionTypes","PUBLISH","UNPUBLISH","entryId","modelId","value","Error","createScheduleActionMethods","storageOperations","getIdentity","getTenant","getLocale","getTenantAndLocale","tenant","id","locale","code","get","where","list","params","input","createDataModel","populate","validate","mdbid","identity","data","toJSON","scheduleAction","createdOn","Date","toISOString","savedOn","createdBy","displayName","item","update","updateDataModel","original","delete","getCurrentTask","updateCurrentTask","deleteCurrentTask"],"sources":["createScheduleActionMethods.ts"],"sourcesContent":["/**\n * Package mdbid does not have types.\n */\n// @ts-ignore\nimport mdbid from \"mdbid\";\n/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { string, withFields } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\nimport {\n ApwContentTypes,\n ApwScheduleAction,\n ApwScheduleActionCrud,\n ApwScheduleActionData,\n ApwScheduleActionTypes,\n CreateScheduleActionParams\n} from \"~/scheduler/types\";\n\nconst CreateDataModel = withFields((instance: any) => {\n return {\n datetime: string({\n validation: validation.create(`required`)\n }),\n type: string({\n validation: validation.create(\n `required,in:${ApwContentTypes.PAGE}:${ApwContentTypes.CMS_ENTRY}`\n )\n }),\n action: string({\n validation: validation.create(\n `required,in:${ApwScheduleActionTypes.PUBLISH}:${ApwScheduleActionTypes.UNPUBLISH}`\n )\n }),\n entryId: string({\n validation: validation.create(`required`)\n }),\n modelId: string({\n validation: (value: string) => {\n if (instance.type !== ApwContentTypes.CMS_ENTRY) {\n return true;\n } else if (!!value) {\n return true;\n }\n throw new Error(\n `There is no modelId defined when type is \"${ApwContentTypes.CMS_ENTRY}\"`\n );\n }\n })\n };\n})();\n\ninterface GetTenantAndLocaleResult {\n tenant: string;\n locale: string;\n}\n\nexport function createScheduleActionMethods({\n storageOperations,\n getIdentity,\n getTenant,\n getLocale\n}: CreateScheduleActionParams): ApwScheduleActionCrud {\n const getTenantAndLocale = (): GetTenantAndLocaleResult => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n return {\n tenant,\n locale\n };\n };\n return {\n async get(id) {\n return storageOperations.get({\n where: {\n id,\n ...getTenantAndLocale()\n }\n });\n },\n async list(params) {\n return storageOperations.list({\n ...params,\n where: {\n ...params.where,\n ...getTenantAndLocale()\n }\n });\n },\n async create(input) {\n const createDataModel = new CreateDataModel().populate(input);\n\n await createDataModel.validate();\n\n const id: string = mdbid();\n const identity = getIdentity();\n\n const data: ApwScheduleActionData = await createDataModel.toJSON();\n\n const scheduleAction: ApwScheduleAction = {\n ...getTenantAndLocale(),\n data,\n id,\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n type: identity.type,\n displayName: identity.displayName\n }\n };\n\n return await storageOperations.create({\n item: scheduleAction,\n input\n });\n },\n async update(id, data) {\n const updateDataModel = new CreateDataModel().populate(data);\n\n await updateDataModel.validate();\n\n const original = await this.get(id);\n\n if (!original) {\n throw new Error(\"Not found!\");\n }\n\n return await storageOperations.update({ item: original, input: data });\n },\n async delete(id: string) {\n await storageOperations.delete({ id, ...getTenantAndLocale() });\n\n return true;\n },\n async getCurrentTask() {\n return await storageOperations.getCurrentTask({ where: { ...getTenantAndLocale() } });\n },\n async updateCurrentTask(item) {\n return await storageOperations.updateCurrentTask({ item });\n },\n async deleteCurrentTask() {\n return await storageOperations.deleteCurrentTask({ ...getTenantAndLocale() });\n }\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["CreateDataModel","withFields","instance","datetime","string","validation","create","type","ApwContentTypes","PAGE","CMS_ENTRY","action","ApwScheduleActionTypes","PUBLISH","UNPUBLISH","entryId","modelId","value","Error","createScheduleActionMethods","storageOperations","getIdentity","getTenant","getLocale","getTenantAndLocale","tenant","id","locale","code","get","where","list","params","input","createDataModel","populate","validate","mdbid","identity","data","toJSON","scheduleAction","createdOn","Date","toISOString","savedOn","createdBy","displayName","item","update","updateDataModel","original","delete","getCurrentTask","updateCurrentTask","deleteCurrentTask"],"sources":["createScheduleActionMethods.ts"],"sourcesContent":["/**\n * Package @commodo/fields does not have types.\n */\n// @ts-ignore\nimport { string, withFields } from \"@commodo/fields\";\nimport { validation } from \"@webiny/validation\";\nimport { mdbid } from \"@webiny/utils\";\nimport {\n ApwContentTypes,\n ApwScheduleAction,\n ApwScheduleActionCrud,\n ApwScheduleActionData,\n ApwScheduleActionTypes,\n CreateScheduleActionParams\n} from \"~/scheduler/types\";\n\nconst CreateDataModel = withFields((instance: any) => {\n return {\n datetime: string({\n validation: validation.create(`required`)\n }),\n type: string({\n validation: validation.create(\n `required,in:${ApwContentTypes.PAGE}:${ApwContentTypes.CMS_ENTRY}`\n )\n }),\n action: string({\n validation: validation.create(\n `required,in:${ApwScheduleActionTypes.PUBLISH}:${ApwScheduleActionTypes.UNPUBLISH}`\n )\n }),\n entryId: string({\n validation: validation.create(`required`)\n }),\n modelId: string({\n validation: (value: string) => {\n if (instance.type !== ApwContentTypes.CMS_ENTRY) {\n return true;\n } else if (!!value) {\n return true;\n }\n throw new Error(\n `There is no modelId defined when type is \"${ApwContentTypes.CMS_ENTRY}\"`\n );\n }\n })\n };\n})();\n\ninterface GetTenantAndLocaleResult {\n tenant: string;\n locale: string;\n}\n\nexport function createScheduleActionMethods({\n storageOperations,\n getIdentity,\n getTenant,\n getLocale\n}: CreateScheduleActionParams): ApwScheduleActionCrud {\n const getTenantAndLocale = (): GetTenantAndLocaleResult => {\n const tenant = getTenant().id;\n const locale = getLocale().code;\n return {\n tenant,\n locale\n };\n };\n return {\n async get(id) {\n return storageOperations.get({\n where: {\n id,\n ...getTenantAndLocale()\n }\n });\n },\n async list(params) {\n return storageOperations.list({\n ...params,\n where: {\n ...params.where,\n ...getTenantAndLocale()\n }\n });\n },\n async create(input) {\n const createDataModel = new CreateDataModel().populate(input);\n\n await createDataModel.validate();\n\n const id: string = mdbid();\n const identity = getIdentity();\n\n const data: ApwScheduleActionData = await createDataModel.toJSON();\n\n const scheduleAction: ApwScheduleAction = {\n ...getTenantAndLocale(),\n data,\n id,\n createdOn: new Date().toISOString(),\n savedOn: new Date().toISOString(),\n createdBy: {\n id: identity.id,\n type: identity.type,\n displayName: identity.displayName\n }\n };\n\n return await storageOperations.create({\n item: scheduleAction,\n input\n });\n },\n async update(id, data) {\n const updateDataModel = new CreateDataModel().populate(data);\n\n await updateDataModel.validate();\n\n const original = await this.get(id);\n\n if (!original) {\n throw new Error(\"Not found!\");\n }\n\n return await storageOperations.update({ item: original, input: data });\n },\n async delete(id: string) {\n await storageOperations.delete({ id, ...getTenantAndLocale() });\n\n return true;\n },\n async getCurrentTask() {\n return await storageOperations.getCurrentTask({ where: { ...getTenantAndLocale() } });\n },\n async updateCurrentTask(item) {\n return await storageOperations.updateCurrentTask({ item });\n },\n async deleteCurrentTask() {\n return await storageOperations.deleteCurrentTask({ ...getTenantAndLocale() });\n }\n };\n}\n"],"mappings":";;;;;;;;AAIA;AACA;AACA;AACA;AAPA;AACA;AACA;AACA;;AAaA,MAAMA,eAAe,GAAG,IAAAC,kBAAU,EAAEC,QAAa,IAAK;EAClD,OAAO;IACHC,QAAQ,EAAE,IAAAC,cAAM,EAAC;MACbC,UAAU,EAAEA,sBAAU,CAACC,MAAM,CAAE,UAAS;IAC5C,CAAC,CAAC;IACFC,IAAI,EAAE,IAAAH,cAAM,EAAC;MACTC,UAAU,EAAEA,sBAAU,CAACC,MAAM,CACxB,eAAcE,sBAAe,CAACC,IAAK,IAAGD,sBAAe,CAACE,SAAU,EAAC;IAE1E,CAAC,CAAC;IACFC,MAAM,EAAE,IAAAP,cAAM,EAAC;MACXC,UAAU,EAAEA,sBAAU,CAACC,MAAM,CACxB,eAAcM,6BAAsB,CAACC,OAAQ,IAAGD,6BAAsB,CAACE,SAAU,EAAC;IAE3F,CAAC,CAAC;IACFC,OAAO,EAAE,IAAAX,cAAM,EAAC;MACZC,UAAU,EAAEA,sBAAU,CAACC,MAAM,CAAE,UAAS;IAC5C,CAAC,CAAC;IACFU,OAAO,EAAE,IAAAZ,cAAM,EAAC;MACZC,UAAU,EAAGY,KAAa,IAAK;QAC3B,IAAIf,QAAQ,CAACK,IAAI,KAAKC,sBAAe,CAACE,SAAS,EAAE;UAC7C,OAAO,IAAI;QACf,CAAC,MAAM,IAAI,CAAC,CAACO,KAAK,EAAE;UAChB,OAAO,IAAI;QACf;QACA,MAAM,IAAIC,KAAK,CACV,6CAA4CV,sBAAe,CAACE,SAAU,GAAE,CAC5E;MACL;IACJ,CAAC;EACL,CAAC;AACL,CAAC,CAAC,EAAE;AAOG,SAASS,2BAA2B,CAAC;EACxCC,iBAAiB;EACjBC,WAAW;EACXC,SAAS;EACTC;AACwB,CAAC,EAAyB;EAClD,MAAMC,kBAAkB,GAAG,MAAgC;IACvD,MAAMC,MAAM,GAAGH,SAAS,EAAE,CAACI,EAAE;IAC7B,MAAMC,MAAM,GAAGJ,SAAS,EAAE,CAACK,IAAI;IAC/B,OAAO;MACHH,MAAM;MACNE;IACJ,CAAC;EACL,CAAC;EACD,OAAO;IACH,MAAME,GAAG,CAACH,EAAE,EAAE;MACV,OAAON,iBAAiB,CAACS,GAAG,CAAC;QACzBC,KAAK;UACDJ;QAAE,GACCF,kBAAkB,EAAE;MAE/B,CAAC,CAAC;IACN,CAAC;IACD,MAAMO,IAAI,CAACC,MAAM,EAAE;MACf,OAAOZ,iBAAiB,CAACW,IAAI,6DACtBC,MAAM;QACTF,KAAK,8DACEE,MAAM,CAACF,KAAK,GACZN,kBAAkB,EAAE;MAC1B,GACH;IACN,CAAC;IACD,MAAMlB,MAAM,CAAC2B,KAAK,EAAE;MAChB,MAAMC,eAAe,GAAG,IAAIlC,eAAe,EAAE,CAACmC,QAAQ,CAACF,KAAK,CAAC;MAE7D,MAAMC,eAAe,CAACE,QAAQ,EAAE;MAEhC,MAAMV,EAAU,GAAG,IAAAW,YAAK,GAAE;MAC1B,MAAMC,QAAQ,GAAGjB,WAAW,EAAE;MAE9B,MAAMkB,IAA2B,GAAG,MAAML,eAAe,CAACM,MAAM,EAAE;MAElE,MAAMC,cAAiC,+DAChCjB,kBAAkB,EAAE;QACvBe,IAAI;QACJb,EAAE;QACFgB,SAAS,EAAE,IAAIC,IAAI,EAAE,CAACC,WAAW,EAAE;QACnCC,OAAO,EAAE,IAAIF,IAAI,EAAE,CAACC,WAAW,EAAE;QACjCE,SAAS,EAAE;UACPpB,EAAE,EAAEY,QAAQ,CAACZ,EAAE;UACfnB,IAAI,EAAE+B,QAAQ,CAAC/B,IAAI;UACnBwC,WAAW,EAAET,QAAQ,CAACS;QAC1B;MAAC,EACJ;MAED,OAAO,MAAM3B,iBAAiB,CAACd,MAAM,CAAC;QAClC0C,IAAI,EAAEP,cAAc;QACpBR;MACJ,CAAC,CAAC;IACN,CAAC;IACD,MAAMgB,MAAM,CAACvB,EAAE,EAAEa,IAAI,EAAE;MACnB,MAAMW,eAAe,GAAG,IAAIlD,eAAe,EAAE,CAACmC,QAAQ,CAACI,IAAI,CAAC;MAE5D,MAAMW,eAAe,CAACd,QAAQ,EAAE;MAEhC,MAAMe,QAAQ,GAAG,MAAM,IAAI,CAACtB,GAAG,CAACH,EAAE,CAAC;MAEnC,IAAI,CAACyB,QAAQ,EAAE;QACX,MAAM,IAAIjC,KAAK,CAAC,YAAY,CAAC;MACjC;MAEA,OAAO,MAAME,iBAAiB,CAAC6B,MAAM,CAAC;QAAED,IAAI,EAAEG,QAAQ;QAAElB,KAAK,EAAEM;MAAK,CAAC,CAAC;IAC1E,CAAC;IACD,MAAMa,MAAM,CAAC1B,EAAU,EAAE;MACrB,MAAMN,iBAAiB,CAACgC,MAAM;QAAG1B;MAAE,GAAKF,kBAAkB,EAAE,EAAG;MAE/D,OAAO,IAAI;IACf,CAAC;IACD,MAAM6B,cAAc,GAAG;MACnB,OAAO,MAAMjC,iBAAiB,CAACiC,cAAc,CAAC;QAAEvB,KAAK,kCAAON,kBAAkB,EAAE;MAAG,CAAC,CAAC;IACzF,CAAC;IACD,MAAM8B,iBAAiB,CAACN,IAAI,EAAE;MAC1B,OAAO,MAAM5B,iBAAiB,CAACkC,iBAAiB,CAAC;QAAEN;MAAK,CAAC,CAAC;IAC9D,CAAC;IACD,MAAMO,iBAAiB,GAAG;MACtB,OAAO,MAAMnC,iBAAiB,CAACmC,iBAAiB,iCAAM/B,kBAAkB,EAAE,EAAG;IACjF;EACJ,CAAC;AACL"}