@webiny/api-apw 5.39.0-beta.1 → 5.39.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ApwChangeRequestNotification.js +1 -5
- package/ApwChangeRequestNotification.js.map +1 -1
- package/ApwCommentNotification.js +1 -5
- package/ApwCommentNotification.js.map +1 -1
- package/ApwContentReviewNotification.js +1 -5
- package/ApwContentReviewNotification.js.map +1 -1
- package/ApwContentUrlPlugin.js +1 -5
- package/ApwContentUrlPlugin.js.map +1 -1
- package/ContentApwSettingsPlugin.js +3 -4
- package/ContentApwSettingsPlugin.js.map +1 -1
- package/crud/createContentReviewMethods.js +37 -28
- package/crud/createContentReviewMethods.js.map +1 -1
- package/crud/index.js +3 -4
- package/crud/index.js.map +1 -1
- package/crud/utils.js +4 -5
- package/crud/utils.js.map +1 -1
- package/index.d.ts +1 -1
- package/package.json +27 -27
- package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js +2 -4
- package/plugins/cms/CmsEntryApwSettingsGetterPlugin.js.map +1 -1
- package/plugins/cms/apwEntryPlugins.js +6 -5
- package/plugins/cms/apwEntryPlugins.js.map +1 -1
- package/plugins/cms/linkContentReviewToEntry.js +1 -2
- package/plugins/cms/linkContentReviewToEntry.js.map +1 -1
- package/plugins/cms/linkWorkflowToEntry.js +6 -9
- package/plugins/cms/linkWorkflowToEntry.js.map +1 -1
- package/plugins/cms/triggerContentReview.js +2 -3
- package/plugins/cms/triggerContentReview.js.map +1 -1
- package/plugins/cms/updateContentReviewStatus.js +10 -10
- package/plugins/cms/updateContentReviewStatus.js.map +1 -1
- package/plugins/cms/utils.d.ts +1 -1
- package/plugins/cms/utils.js +5 -6
- package/plugins/cms/utils.js.map +1 -1
- package/plugins/graphql/changeRequest.gql.js +13 -11
- package/plugins/graphql/changeRequest.gql.js.map +1 -1
- package/plugins/graphql/comment.gql.js +38 -34
- package/plugins/graphql/comment.gql.js.map +1 -1
- package/plugins/graphql/contentReview.gql.js +20 -12
- package/plugins/graphql/contentReview.gql.js.map +1 -1
- package/plugins/graphql/reviewer.gql.js +12 -11
- package/plugins/graphql/reviewer.gql.js.map +1 -1
- package/plugins/graphql/utils.d.ts +2 -0
- package/plugins/graphql/utils.js +12 -0
- package/plugins/graphql/utils.js.map +1 -0
- package/plugins/graphql/workflow.gql.js +12 -11
- package/plugins/graphql/workflow.gql.js.map +1 -1
- package/plugins/hooks/createReviewerFromIdentity.js +1 -1
- package/plugins/hooks/createReviewerFromIdentity.js.map +1 -1
- package/plugins/hooks/initializeContentReviewSteps.js +3 -3
- package/plugins/hooks/initializeContentReviewSteps.js.map +1 -1
- package/plugins/hooks/listContentReviews.js +1 -1
- package/plugins/hooks/listContentReviews.js.map +1 -1
- package/plugins/hooks/notifications/contentReviewAfterCreate.js +1 -1
- package/plugins/hooks/notifications/contentReviewAfterCreate.js.map +1 -1
- package/plugins/hooks/updatePendingChangeRequests.js +5 -5
- package/plugins/hooks/updatePendingChangeRequests.js.map +1 -1
- package/plugins/hooks/updateTotalComments.js +19 -14
- package/plugins/hooks/updateTotalComments.js.map +1 -1
- package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js +2 -4
- package/plugins/pageBuilder/PageApwSettingsGetterPlugin.js.map +1 -1
- package/plugins/pageBuilder/linkContentReviewToPage.js +13 -11
- package/plugins/pageBuilder/linkContentReviewToPage.js.map +1 -1
- package/plugins/pageBuilder/updateContentReviewStatus.js +8 -5
- package/plugins/pageBuilder/updateContentReviewStatus.js.map +1 -1
- package/plugins/pageBuilder/utils.d.ts +2 -2
- package/plugins/pageBuilder/utils.js.map +1 -1
- package/plugins/utils.d.ts +1 -1
- package/plugins/utils.js +3 -2
- package/plugins/utils.js.map +1 -1
- package/scheduler/createScheduleActionMethods.js +39 -22
- package/scheduler/createScheduleActionMethods.js.map +1 -1
- package/scheduler/handlers/executeAction/index.d.ts +1 -1
- package/scheduler/handlers/executeAction/index.js +2 -3
- package/scheduler/handlers/executeAction/index.js.map +1 -1
- package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js +3 -4
- package/scheduler/handlers/executeAction/plugins/ApplicationGraphQL.js.map +1 -1
- package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js +3 -6
- package/scheduler/handlers/executeAction/plugins/HeadlessCMSGraphQL.js.map +1 -1
- package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js +1 -6
- package/scheduler/handlers/executeAction/plugins/PageBuilderGraphQL.js.map +1 -1
- package/scheduler/handlers/scheduleAction/index.d.ts +1 -1
- package/scheduler/handlers/scheduleAction/index.js +9 -8
- package/scheduler/handlers/scheduleAction/index.js.map +1 -1
- package/scheduler/handlers/scheduleAction/scheduleAction.utils.js +14 -13
- package/scheduler/handlers/scheduleAction/scheduleAction.utils.js.map +1 -1
- package/scheduler/handlers/utils.d.ts +2 -3
- package/scheduler/handlers/utils.js +3 -6
- package/scheduler/handlers/utils.js.map +1 -1
- package/scheduler/types.d.ts +8 -5
- package/scheduler/types.js.map +1 -1
- package/storageOperations/changeRequestStorageOperations.js +15 -11
- package/storageOperations/changeRequestStorageOperations.js.map +1 -1
- package/storageOperations/commentStorageOperations.js +12 -10
- package/storageOperations/commentStorageOperations.js.map +1 -1
- package/storageOperations/contentReviewStorageOperations.d.ts +1 -1
- package/storageOperations/contentReviewStorageOperations.js +15 -11
- package/storageOperations/contentReviewStorageOperations.js.map +1 -1
- package/storageOperations/index.d.ts +1 -7
- package/storageOperations/index.js +8 -15
- package/storageOperations/index.js.map +1 -1
- package/storageOperations/models/changeRequest.model.d.ts +1 -2
- package/storageOperations/models/changeRequest.model.js +4 -6
- package/storageOperations/models/changeRequest.model.js.map +1 -1
- package/storageOperations/models/comment.model.d.ts +1 -2
- package/storageOperations/models/comment.model.js +4 -6
- package/storageOperations/models/comment.model.js.map +1 -1
- package/storageOperations/models/contentReview.model.d.ts +1 -2
- package/storageOperations/models/contentReview.model.js +9 -9
- package/storageOperations/models/contentReview.model.js.map +1 -1
- package/storageOperations/models/index.js +3 -23
- package/storageOperations/models/index.js.map +1 -1
- package/storageOperations/models/reviewer.model.d.ts +1 -2
- package/storageOperations/models/reviewer.model.js +5 -7
- package/storageOperations/models/reviewer.model.js.map +1 -1
- package/storageOperations/models/workflow.model.d.ts +1 -2
- package/storageOperations/models/workflow.model.js +12 -12
- package/storageOperations/models/workflow.model.js.map +1 -1
- package/storageOperations/reviewerStorageOperations.d.ts +1 -1
- package/storageOperations/reviewerStorageOperations.js +15 -11
- package/storageOperations/reviewerStorageOperations.js.map +1 -1
- package/storageOperations/workflowStorageOperations.js +20 -14
- package/storageOperations/workflowStorageOperations.js.map +1 -1
- package/types.d.ts +15 -14
- package/types.js.map +1 -1
- package/utils/fieldResolver.js +4 -6
- package/utils/fieldResolver.js.map +1 -1
- package/utils/pickEntryFieldValues.d.ts +3 -0
- package/utils/pickEntryFieldValues.js +31 -0
- package/utils/pickEntryFieldValues.js.map +1 -0
- package/utils/resolve.d.ts +1 -1
- package/storageOperations/models/contentModelPluginFactory.d.ts +0 -8
- package/storageOperations/models/contentModelPluginFactory.js +0 -22
- package/storageOperations/models/contentModelPluginFactory.js.map +0 -1
package/plugins/cms/utils.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_error","_interopRequireDefault","require","_types","_utils","_changeRequest","_comment","_contentReview","_reviewer","_workflow","fetchModel","cms","id","settings","WebinyError","modelId","model","getModel","exports","getEntryTitle","entry","titleFieldId","values","getLatestEntryRevision","params","entryId","item","getLatestEntriesByIds","updateEntryMeta","meta","updateEntry","isWorkflowApplicable","workflow","application","app","ApwWorkflowApplications","CMS","scopeType","scope","type","WorkflowScopeTypes","DEFAULT","CUSTOM","_workflow$scope$data","_workflow$scope$data2","models","data","Array","isArray","includes","entries","some","value","assignWorkflowToEntry","apw","list","where","console","log","length","sortedWorkflows","sort","workflowByPrecedenceDesc","workflowByCreatedOnDesc","_objectSpread2","default","workflowId","contentReviewId","ex","code","hasEntries","isApwDisabledOnModel","isPrivate","CHANGE_REQUEST_MODEL_ID","COMMENT_MODEL_ID","CONTENT_REVIEW_MODEL_ID","REVIEWER_MODEL_ID","WORKFLOW_MODEL_ID"],"sources":["utils.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsEntry, CmsModel, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport {\n AdvancedPublishingWorkflow,\n ApwWorkflow,\n ApwWorkflowApplications,\n WorkflowScopeTypes\n} from \"~/types\";\nimport { workflowByCreatedOnDesc, workflowByPrecedenceDesc } from \"~/plugins/utils\";\nimport { CHANGE_REQUEST_MODEL_ID } from \"~/storageOperations/models/changeRequest.model\";\nimport { COMMENT_MODEL_ID } from \"~/storageOperations/models/comment.model\";\nimport { CONTENT_REVIEW_MODEL_ID } from \"~/storageOperations/models/contentReview.model\";\nimport { REVIEWER_MODEL_ID } from \"~/storageOperations/models/reviewer.model\";\nimport { WORKFLOW_MODEL_ID } from \"~/storageOperations/models/workflow.model\";\n\nexport const fetchModel = async (\n cms: HeadlessCms,\n id: string,\n settings?: { modelId?: string } | null\n): Promise<CmsModel> => {\n if (!settings) {\n throw new WebinyError(\"Missing settings.\", \"SETTINGS_ERROR\", {\n id\n });\n }\n const modelId = settings.modelId;\n if (!modelId) {\n throw new WebinyError(\"Missing modelId in settings.\", \"MODEL_ID_ERROR\", {\n id,\n settings\n });\n }\n const model = await cms.getModel(modelId);\n if (model) {\n return model;\n }\n throw new WebinyError(\"There is no requested model in the system.\", \"MODEL_NOT_EXISTS\", {\n id,\n settings\n });\n};\n\nexport const getEntryTitle = (model: CmsModel, entry: CmsEntry): string => {\n const titleFieldId = model.titleFieldId;\n if (!titleFieldId || !entry.values[titleFieldId]) {\n return entry.id;\n }\n return entry.values[titleFieldId];\n};\n\ninterface GetLatestEntryRevisionParams {\n cms: HeadlessCms;\n model: CmsModel;\n entryId: string;\n}\nexport const getLatestEntryRevision = async (\n params: GetLatestEntryRevisionParams\n): Promise<CmsEntry> => {\n const { cms, model, entryId } = params;\n const [item] = await cms.getLatestEntriesByIds(model, [entryId]);\n\n if (!item) {\n throw new WebinyError(\"There is no entry with given ID.\", \"ENTRY_NOT_FOUND\", {\n entryId,\n model: model.modelId\n });\n }\n return item;\n};\n\ninterface UpdateEntryMetaParams {\n meta: Record<string, any>;\n entryId: string;\n cms: HeadlessCms;\n model: CmsModel;\n}\nexport const updateEntryMeta = async (params: UpdateEntryMetaParams): Promise<void> => {\n const { entryId, cms, model, meta } = params;\n\n const entry = await getLatestEntryRevision({\n cms,\n model,\n entryId\n });\n\n await cms.updateEntry(model, entry.id, {}, meta);\n};\n\nconst isWorkflowApplicable = (entry: CmsEntry, workflow: ApwWorkflow): boolean => {\n const application = workflow.app;\n if (application !== ApwWorkflowApplications.CMS) {\n return false;\n }\n\n const scopeType = workflow.scope.type;\n\n if (scopeType === WorkflowScopeTypes.DEFAULT) {\n return true;\n } else if (scopeType === WorkflowScopeTypes.CUSTOM) {\n const models = workflow.scope.data?.models;\n\n if (Array.isArray(models) && models.includes(entry.modelId)) {\n return true;\n }\n\n const entries = workflow.scope.data?.entries || [];\n if (Array.isArray(entries) && entries.some(value => value.id === entry.entryId)) {\n return true;\n }\n return false;\n }\n throw new WebinyError(`Unknown scope type \"${scopeType}\".`, \"UNKNOWN_SCOPE_TYPE\", {\n workflow\n });\n};\n\ninterface AssignWorkflowToEntryParams {\n apw: AdvancedPublishingWorkflow;\n entry: CmsEntry;\n model: CmsModel;\n}\nexport const assignWorkflowToEntry = async (params: AssignWorkflowToEntryParams): Promise<void> => {\n const { apw, entry, model } = params;\n /**\n * Lookup and assign \"workflowId\".\n */\n try {\n /*\n * List all workflows for app cms\n */\n const [entries] = await apw.workflow.list({\n where: {\n app: ApwWorkflowApplications.CMS\n }\n });\n\n console.log(`Found ${entries.length} workflow(s) for model ${model.modelId}.`);\n\n /*\n * Re-order them based on workflow scope and pre-defined rule i.e.\n * \"specific\" entry -> entry for a \"category\" -> \"default\".\n * There can be more than one workflow with same \"scope\" and \"app\".\n * Therefore, we are also sorting the workflows by `createdOn` to get the latest workflow.\n */\n const sortedWorkflows = entries\n .sort(workflowByPrecedenceDesc)\n .sort(workflowByCreatedOnDesc);\n\n /**\n * Assign the first applicable workflow to the page and exit.\n */\n for (const workflow of sortedWorkflows) {\n if (isWorkflowApplicable(entry, workflow) === false) {\n console.log(`Not applying workflow ${workflow.id} to entry ${entry.id}.`);\n continue;\n }\n entry.meta = {\n ...(entry.meta || {}),\n apw: {\n workflowId: workflow.id,\n contentReviewId: null\n }\n };\n return;\n }\n } catch (ex) {\n throw new WebinyError(\n `Failed to assign workflow to CMS entry \"${entry.id}\".`,\n ex.code,\n ex.data\n );\n }\n};\n\nexport const hasEntries = (workflow: ApwWorkflow): Boolean => {\n const { app, scope } = workflow;\n return (\n app === ApwWorkflowApplications.CMS &&\n scope.type === WorkflowScopeTypes.CUSTOM &&\n scope.data &&\n Array.isArray(scope.data.entries)\n );\n};\n\nexport const isApwDisabledOnModel = (model: Pick<CmsModel, \"modelId\" | \"isPrivate\">): boolean => {\n /**\n * We should not run APW on private models as well.\n */\n if (model.isPrivate) {\n return true;\n }\n return [\n CHANGE_REQUEST_MODEL_ID,\n COMMENT_MODEL_ID,\n CONTENT_REVIEW_MODEL_ID,\n REVIEWER_MODEL_ID,\n WORKFLOW_MODEL_ID\n ].includes(model.modelId);\n};\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_error","_interopRequireDefault","require","_types","_utils","_changeRequest","_comment","_contentReview","_reviewer","_workflow","fetchModel","cms","id","settings","WebinyError","modelId","model","getModel","exports","getEntryTitle","entry","titleFieldId","values","getLatestEntryRevision","params","entryId","item","getLatestEntriesByIds","updateEntryMeta","meta","updateEntry","isWorkflowApplicable","workflow","application","app","ApwWorkflowApplications","CMS","scopeType","scope","type","WorkflowScopeTypes","DEFAULT","CUSTOM","models","data","Array","isArray","includes","entries","some","value","assignWorkflowToEntry","apw","list","where","console","log","length","sortedWorkflows","sort","workflowByPrecedenceDesc","workflowByCreatedOnDesc","workflowId","contentReviewId","ex","code","hasEntries","isApwDisabledOnModel","isPrivate","CHANGE_REQUEST_MODEL_ID","COMMENT_MODEL_ID","CONTENT_REVIEW_MODEL_ID","REVIEWER_MODEL_ID","WORKFLOW_MODEL_ID"],"sources":["utils.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsEntry, CmsModel, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport {\n AdvancedPublishingWorkflow,\n ApwWorkflow,\n ApwWorkflowApplications,\n WorkflowScopeTypes\n} from \"~/types\";\nimport { workflowByCreatedOnDesc, workflowByPrecedenceDesc } from \"~/plugins/utils\";\nimport { CHANGE_REQUEST_MODEL_ID } from \"~/storageOperations/models/changeRequest.model\";\nimport { COMMENT_MODEL_ID } from \"~/storageOperations/models/comment.model\";\nimport { CONTENT_REVIEW_MODEL_ID } from \"~/storageOperations/models/contentReview.model\";\nimport { REVIEWER_MODEL_ID } from \"~/storageOperations/models/reviewer.model\";\nimport { WORKFLOW_MODEL_ID } from \"~/storageOperations/models/workflow.model\";\n\nexport const fetchModel = async (\n cms: HeadlessCms,\n id: string,\n settings?: { modelId?: string } | null\n): Promise<CmsModel> => {\n if (!settings) {\n throw new WebinyError(\"Missing settings.\", \"SETTINGS_ERROR\", {\n id\n });\n }\n const modelId = settings.modelId;\n if (!modelId) {\n throw new WebinyError(\"Missing modelId in settings.\", \"MODEL_ID_ERROR\", {\n id,\n settings\n });\n }\n const model = await cms.getModel(modelId);\n if (model) {\n return model;\n }\n throw new WebinyError(\"There is no requested model in the system.\", \"MODEL_NOT_EXISTS\", {\n id,\n settings\n });\n};\n\nexport const getEntryTitle = (model: CmsModel, entry: CmsEntry): string => {\n const titleFieldId = model.titleFieldId;\n if (!titleFieldId || !entry.values[titleFieldId]) {\n return entry.id;\n }\n return entry.values[titleFieldId];\n};\n\ninterface GetLatestEntryRevisionParams {\n cms: HeadlessCms;\n model: CmsModel;\n entryId: string;\n}\nexport const getLatestEntryRevision = async (\n params: GetLatestEntryRevisionParams\n): Promise<CmsEntry> => {\n const { cms, model, entryId } = params;\n const [item] = await cms.getLatestEntriesByIds(model, [entryId]);\n\n if (!item) {\n throw new WebinyError(\"There is no entry with given ID.\", \"ENTRY_NOT_FOUND\", {\n entryId,\n model: model.modelId\n });\n }\n return item;\n};\n\ninterface UpdateEntryMetaParams {\n meta: Record<string, any>;\n entryId: string;\n cms: HeadlessCms;\n model: CmsModel;\n}\nexport const updateEntryMeta = async (params: UpdateEntryMetaParams): Promise<void> => {\n const { entryId, cms, model, meta } = params;\n\n const entry = await getLatestEntryRevision({\n cms,\n model,\n entryId\n });\n\n await cms.updateEntry(model, entry.id, {}, meta);\n};\n\nconst isWorkflowApplicable = (entry: CmsEntry, workflow: ApwWorkflow): boolean => {\n const application = workflow.app;\n if (application !== ApwWorkflowApplications.CMS) {\n return false;\n }\n\n const scopeType = workflow.scope.type;\n\n if (scopeType === WorkflowScopeTypes.DEFAULT) {\n return true;\n } else if (scopeType === WorkflowScopeTypes.CUSTOM) {\n const models = workflow.scope.data?.models;\n\n if (Array.isArray(models) && models.includes(entry.modelId)) {\n return true;\n }\n\n const entries = workflow.scope.data?.entries || [];\n if (Array.isArray(entries) && entries.some(value => value.id === entry.entryId)) {\n return true;\n }\n return false;\n }\n throw new WebinyError(`Unknown scope type \"${scopeType}\".`, \"UNKNOWN_SCOPE_TYPE\", {\n workflow\n });\n};\n\ninterface AssignWorkflowToEntryParams {\n apw: AdvancedPublishingWorkflow;\n entry: CmsEntry;\n model: CmsModel;\n}\nexport const assignWorkflowToEntry = async (params: AssignWorkflowToEntryParams): Promise<void> => {\n const { apw, entry, model } = params;\n /**\n * Lookup and assign \"workflowId\".\n */\n try {\n /*\n * List all workflows for app cms\n */\n const [entries] = await apw.workflow.list({\n where: {\n app: ApwWorkflowApplications.CMS\n }\n });\n\n console.log(`Found ${entries.length} workflow(s) for model ${model.modelId}.`);\n\n /*\n * Re-order them based on workflow scope and pre-defined rule i.e.\n * \"specific\" entry -> entry for a \"category\" -> \"default\".\n * There can be more than one workflow with same \"scope\" and \"app\".\n * Therefore, we are also sorting the workflows by `createdOn` to get the latest workflow.\n */\n const sortedWorkflows = entries\n .sort(workflowByPrecedenceDesc)\n .sort(workflowByCreatedOnDesc);\n\n /**\n * Assign the first applicable workflow to the page and exit.\n */\n for (const workflow of sortedWorkflows) {\n if (isWorkflowApplicable(entry, workflow) === false) {\n console.log(`Not applying workflow ${workflow.id} to entry ${entry.id}.`);\n continue;\n }\n entry.meta = {\n ...(entry.meta || {}),\n apw: {\n workflowId: workflow.id,\n contentReviewId: null\n }\n };\n return;\n }\n } catch (ex) {\n throw new WebinyError(\n `Failed to assign workflow to CMS entry \"${entry.id}\".`,\n ex.code,\n ex.data\n );\n }\n};\n\nexport const hasEntries = (workflow: ApwWorkflow): boolean => {\n const { app, scope } = workflow;\n return (\n app === ApwWorkflowApplications.CMS &&\n scope.type === WorkflowScopeTypes.CUSTOM &&\n scope.data &&\n Array.isArray(scope.data.entries)\n );\n};\n\nexport const isApwDisabledOnModel = (model: Pick<CmsModel, \"modelId\" | \"isPrivate\">): boolean => {\n /**\n * We should not run APW on private models as well.\n */\n if (model.isPrivate) {\n return true;\n }\n return [\n CHANGE_REQUEST_MODEL_ID,\n COMMENT_MODEL_ID,\n CONTENT_REVIEW_MODEL_ID,\n REVIEWER_MODEL_ID,\n WORKFLOW_MODEL_ID\n ].includes(model.modelId);\n};\n"],"mappings":"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"}
|
@@ -8,14 +8,16 @@ exports.default = void 0;
|
|
8
8
|
var _plugins = require("@webiny/handler-graphql/plugins");
|
9
9
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
10
10
|
var _resolve = _interopRequireDefault(require("../../utils/resolve"));
|
11
|
+
var _utils = require("./utils");
|
11
12
|
const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
12
|
-
|
13
|
+
// Had to remove /* GraphQL */ because prettier would not format the code correctly.
|
14
|
+
typeDefs: `
|
13
15
|
type ApwChangeRequestListItem {
|
14
16
|
# System generated fields
|
15
17
|
id: ID
|
16
|
-
|
17
|
-
|
18
|
-
|
18
|
+
|
19
|
+
${_utils.onByFields}
|
20
|
+
|
19
21
|
# ChangeRequest specific fields
|
20
22
|
step: String!
|
21
23
|
title: String!
|
@@ -33,9 +35,9 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
33
35
|
type ApwChangeRequest {
|
34
36
|
# System generated fields
|
35
37
|
id: ID
|
36
|
-
|
37
|
-
|
38
|
-
|
38
|
+
|
39
|
+
${_utils.onByFields}
|
40
|
+
|
39
41
|
# ChangeRequest specific fields
|
40
42
|
step: String!
|
41
43
|
title: String!
|
@@ -57,12 +59,12 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
57
59
|
enum ApwListChangeRequestSort {
|
58
60
|
id_ASC
|
59
61
|
id_DESC
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
createdOn_DESC
|
62
|
+
|
63
|
+
${_utils.dateTimeFieldsSorters}
|
64
|
+
|
64
65
|
publishedOn_ASC
|
65
66
|
publishedOn_DESC
|
67
|
+
|
66
68
|
title_ASC
|
67
69
|
title_DESC
|
68
70
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_plugins","require","_handlerGraphql","_resolve","_interopRequireDefault","workflowSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwQuery","getChangeRequest","_","args","context","resolve","apw","changeRequest","get","id","listChangeRequests","entries","meta","list","ListResponse","e","ErrorResponse","ApwMutation","createChangeRequest","create","data","updateChangeRequest","update","deleteChangeRequest","delete","_default","exports","default"],"sources":["changeRequest.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { ApwChangeRequestListParams, ApwContext } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n
|
1
|
+
{"version":3,"names":["_plugins","require","_handlerGraphql","_resolve","_interopRequireDefault","_utils","workflowSchema","GraphQLSchemaPlugin","typeDefs","onByFields","dateTimeFieldsSorters","resolvers","ApwQuery","getChangeRequest","_","args","context","resolve","apw","changeRequest","get","id","listChangeRequests","entries","meta","list","ListResponse","e","ErrorResponse","ApwMutation","createChangeRequest","create","data","updateChangeRequest","update","deleteChangeRequest","delete","_default","exports","default"],"sources":["changeRequest.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { ApwChangeRequestListParams, ApwContext } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\nimport { onByFields, dateTimeFieldsSorters } from \"./utils\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n // Had to remove /* GraphQL */ because prettier would not format the code correctly.\n typeDefs: `\n type ApwChangeRequestListItem {\n # System generated fields\n id: ID\n \n ${onByFields}\n \n # ChangeRequest specific fields\n step: String!\n title: String!\n body: JSON!\n resolved: Boolean\n media: JSON\n }\n\n type ApwListChangeRequestsResponse {\n data: [ApwChangeRequestListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwChangeRequest {\n # System generated fields\n id: ID\n \n ${onByFields}\n \n # ChangeRequest specific fields\n step: String!\n title: String!\n body: JSON!\n resolved: Boolean\n media: JSON\n }\n\n type ApwChangeRequestResponse {\n data: ApwChangeRequest\n error: ApwError\n }\n\n type ApwDeleteChangeRequestResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwListChangeRequestSort {\n id_ASC\n id_DESC\n \n ${dateTimeFieldsSorters}\n \n publishedOn_ASC\n publishedOn_DESC\n \n title_ASC\n title_DESC\n }\n\n input ApwCreateChangeRequestInput {\n step: String!\n title: String!\n body: JSON!\n resolved: Boolean\n media: JSON\n }\n\n input ApwUpdateChangeRequestInput {\n title: String\n body: JSON\n resolved: Boolean\n media: JSON\n }\n\n input ApwListChangeRequestWhereInput {\n id: ID\n step: String\n }\n\n input ApwListChangeRequestSearchInput {\n query: String\n }\n\n extend type ApwQuery {\n getChangeRequest(id: ID!): ApwChangeRequestResponse\n\n listChangeRequests(\n where: ApwListChangeRequestWhereInput\n limit: Int\n after: String\n sort: [ApwListChangeRequestSort!]\n search: ApwListChangeRequestSearchInput\n ): ApwListChangeRequestsResponse\n }\n\n extend type ApwMutation {\n createChangeRequest(data: ApwCreateChangeRequestInput!): ApwChangeRequestResponse\n\n updateChangeRequest(\n id: ID!\n data: ApwUpdateChangeRequestInput!\n ): ApwChangeRequestResponse\n\n deleteChangeRequest(id: ID!): ApwDeleteChangeRequestResponse\n }\n `,\n resolvers: {\n ApwQuery: {\n getChangeRequest: async (_, args: any, context) => {\n return resolve(() => context.apw.changeRequest.get(args.id));\n },\n listChangeRequests: async (_, args: any, context) => {\n try {\n /**\n * We know that args is ApwChangeRequestListParams.\n */\n const [entries, meta] = await context.apw.changeRequest.list(\n args as unknown as ApwChangeRequestListParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n ApwMutation: {\n createChangeRequest: async (_, args: any, context) => {\n return resolve(() => context.apw.changeRequest.create(args.data));\n },\n updateChangeRequest: async (_, args: any, context) => {\n return resolve(() => context.apw.changeRequest.update(args.id, args.data));\n },\n deleteChangeRequest: async (_, args: any, context) => {\n return resolve(() => context.apw.changeRequest.delete(args.id));\n }\n }\n }\n});\n\nexport default workflowSchema;\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAEA,MAAMK,cAAc,GAAG,IAAIC,4BAAmB,CAAa;EACvD;EACAC,QAAQ,EAAG;AACf;AACA;AACA;AACA;AACA,cAAcC,iBAAW;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcA,iBAAW;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcC,4BAAsB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,gBAAgB,EAAE,MAAAA,CAAOC,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAC/C,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,aAAa,CAACC,GAAG,CAACL,IAAI,CAACM,EAAE,CAAC,CAAC;MAChE,CAAC;MACDC,kBAAkB,EAAE,MAAAA,CAAOR,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QACjD,IAAI;UACA;AACpB;AACA;UACoB,MAAM,CAACO,OAAO,EAAEC,IAAI,CAAC,GAAG,MAAMR,OAAO,CAACE,GAAG,CAACC,aAAa,CAACM,IAAI,CACxDV,IACJ,CAAC;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,CAAC;IACDE,WAAW,EAAE;MACTC,mBAAmB,EAAE,MAAAA,CAAOhB,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAClD,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,aAAa,CAACY,MAAM,CAAChB,IAAI,CAACiB,IAAI,CAAC,CAAC;MACrE,CAAC;MACDC,mBAAmB,EAAE,MAAAA,CAAOnB,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAClD,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,aAAa,CAACe,MAAM,CAACnB,IAAI,CAACM,EAAE,EAAEN,IAAI,CAACiB,IAAI,CAAC,CAAC;MAC9E,CAAC;MACDG,mBAAmB,EAAE,MAAAA,CAAOrB,CAAC,EAAEC,IAAS,EAAEC,OAAO,KAAK;QAClD,OAAO,IAAAC,gBAAO,EAAC,MAAMD,OAAO,CAACE,GAAG,CAACC,aAAa,CAACiB,MAAM,CAACrB,IAAI,CAACM,EAAE,CAAC,CAAC;MACnE;IACJ;EACJ;AACJ,CAAC,CAAC;AAAC,IAAAgB,QAAA,GAEY/B,cAAc;AAAAgC,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
@@ -8,14 +8,37 @@ exports.default = void 0;
|
|
8
8
|
var _plugins = require("@webiny/handler-graphql/plugins");
|
9
9
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
10
10
|
var _resolve = _interopRequireDefault(require("../../utils/resolve"));
|
11
|
+
var _utils = require("./utils");
|
11
12
|
const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
12
|
-
|
13
|
+
// Had to remove /* GraphQL */ because prettier would not format the code correctly.
|
14
|
+
typeDefs: () => {
|
15
|
+
const metaFieldsBaseNames = ["created", "modified", "saved"];
|
16
|
+
const dateTimeWhereFields = metaFieldsBaseNames.map(name => {
|
17
|
+
return `
|
18
|
+
${name}On: DateTime
|
19
|
+
${name}On_gt: DateTime
|
20
|
+
${name}On_gte: DateTime
|
21
|
+
${name}On_lt: DateTime
|
22
|
+
${name}On_lte: DateTime
|
23
|
+
${name}On_between: [DateTime!]
|
24
|
+
${name}On_not_between: [DateTime!]
|
25
|
+
`;
|
26
|
+
}).join("\n");
|
27
|
+
const identityWhereFields = metaFieldsBaseNames.map(name => {
|
28
|
+
return `
|
29
|
+
${name}By: ID
|
30
|
+
${name}By_not: ID
|
31
|
+
${name}By_in: [ID!]
|
32
|
+
${name}By_not_in: [ID!]
|
33
|
+
`;
|
34
|
+
}).join("\n");
|
35
|
+
return [`
|
13
36
|
type ApwCommentListItem {
|
14
37
|
# System generated fields
|
15
38
|
id: ID
|
16
|
-
|
17
|
-
|
18
|
-
|
39
|
+
|
40
|
+
${_utils.onByFields}
|
41
|
+
|
19
42
|
# Comment specific fields
|
20
43
|
body: JSON
|
21
44
|
changeRequest: ID
|
@@ -32,9 +55,9 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
32
55
|
type ApwComment {
|
33
56
|
# System generated fields
|
34
57
|
id: ID
|
35
|
-
|
36
|
-
|
37
|
-
|
58
|
+
|
59
|
+
${_utils.onByFields}
|
60
|
+
|
38
61
|
# Comment specific fields
|
39
62
|
body: JSON
|
40
63
|
changeRequest: ID
|
@@ -54,10 +77,8 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
54
77
|
enum ApwListCommentsSort {
|
55
78
|
id_ASC
|
56
79
|
id_DESC
|
57
|
-
|
58
|
-
|
59
|
-
createdOn_ASC
|
60
|
-
createdOn_DESC
|
80
|
+
|
81
|
+
${_utils.dateTimeFieldsSorters}
|
61
82
|
}
|
62
83
|
|
63
84
|
input ApwCreateCommentInput {
|
@@ -75,28 +96,10 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
75
96
|
id_not: ID
|
76
97
|
id_in: [ID!]
|
77
98
|
id_not_in: [ID!]
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
createdOn_lte: DateTime
|
83
|
-
createdOn_between: [DateTime!]
|
84
|
-
createdOn_not_between: [DateTime!]
|
85
|
-
savedOn: DateTime
|
86
|
-
savedOn_gt: DateTime
|
87
|
-
savedOn_gte: DateTime
|
88
|
-
savedOn_lt: DateTime
|
89
|
-
savedOn_lte: DateTime
|
90
|
-
savedOn_between: [DateTime!]
|
91
|
-
savedOn_not_between: [DateTime!]
|
92
|
-
createdBy: String
|
93
|
-
createdBy_not: String
|
94
|
-
createdBy_in: [String!]
|
95
|
-
createdBy_not_in: [String!]
|
96
|
-
ownedBy: String
|
97
|
-
ownedBy_not: String
|
98
|
-
ownedBy_in: [String!]
|
99
|
-
ownedBy_not_in: [String!]
|
99
|
+
|
100
|
+
${dateTimeWhereFields}
|
101
|
+
${identityWhereFields}
|
102
|
+
|
100
103
|
changeRequest: ApwRefFieldWhereInput
|
101
104
|
}
|
102
105
|
|
@@ -118,7 +121,8 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
118
121
|
|
119
122
|
deleteComment(id: ID!): ApwDeleteCommentResponse
|
120
123
|
}
|
121
|
-
|
124
|
+
`];
|
125
|
+
},
|
122
126
|
resolvers: {
|
123
127
|
ApwQuery: {
|
124
128
|
getComment: async (_, args, context) => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_plugins","require","_handlerGraphql","_resolve","_interopRequireDefault","workflowSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwQuery","getComment","_","args","context","resolve","apw","comment","get","id","listComments","entries","meta","list","ListResponse","e","ErrorResponse","ApwMutation","createComment","create","data","updateComment","update","deleteComment","delete","_default","exports","default"],"sources":["comment.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { ApwContext, ApwCommentListParams } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n
|
1
|
+
{"version":3,"names":["_plugins","require","_handlerGraphql","_resolve","_interopRequireDefault","_utils","workflowSchema","GraphQLSchemaPlugin","typeDefs","metaFieldsBaseNames","dateTimeWhereFields","map","name","join","identityWhereFields","onByFields","dateTimeFieldsSorters","resolvers","ApwQuery","getComment","_","args","context","resolve","apw","comment","get","id","listComments","entries","meta","list","ListResponse","e","ErrorResponse","ApwMutation","createComment","create","data","updateComment","update","deleteComment","delete","_default","exports","default"],"sources":["comment.gql.ts"],"sourcesContent":["import { GraphQLSchemaPlugin } from \"@webiny/handler-graphql/plugins\";\nimport { ErrorResponse, ListResponse } from \"@webiny/handler-graphql\";\nimport { ApwContext, ApwCommentListParams } from \"~/types\";\nimport resolve from \"~/utils/resolve\";\nimport { onByFields, dateTimeFieldsSorters } from \"./utils\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n // Had to remove /* GraphQL */ because prettier would not format the code correctly.\n typeDefs: () => {\n const metaFieldsBaseNames = [\"created\", \"modified\", \"saved\"];\n\n const dateTimeWhereFields = metaFieldsBaseNames\n .map(name => {\n return `\n ${name}On: DateTime\n ${name}On_gt: DateTime\n ${name}On_gte: DateTime\n ${name}On_lt: DateTime\n ${name}On_lte: DateTime\n ${name}On_between: [DateTime!]\n ${name}On_not_between: [DateTime!]\n `;\n })\n .join(\"\\n\");\n\n const identityWhereFields = metaFieldsBaseNames\n .map(name => {\n return `\n ${name}By: ID\n ${name}By_not: ID\n ${name}By_in: [ID!]\n ${name}By_not_in: [ID!]\n `;\n })\n .join(\"\\n\");\n\n return [\n `\n type ApwCommentListItem {\n # System generated fields\n id: ID\n \n ${onByFields}\n \n # Comment specific fields\n body: JSON\n changeRequest: ID\n # TODO: Remove ApwRefField\n media: JSON\n }\n\n type ApwListCommentsResponse {\n data: [ApwCommentListItem]\n error: ApwError\n meta: ApwMeta\n }\n\n type ApwComment {\n # System generated fields\n id: ID\n \n ${onByFields}\n \n # Comment specific fields\n body: JSON\n changeRequest: ID\n media: JSON\n }\n\n type ApwCommentResponse {\n data: ApwComment\n error: ApwError\n }\n\n type ApwDeleteCommentResponse {\n data: Boolean\n error: ApwError\n }\n\n enum ApwListCommentsSort {\n id_ASC\n id_DESC\n \n ${dateTimeFieldsSorters}\n }\n\n input ApwCreateCommentInput {\n body: JSON!\n changeRequest: ID!\n media: JSON\n }\n\n input ApwUpdateCommentInput {\n body: JSON!\n }\n\n input ApwListCommentsWhereInput {\n id: ID\n id_not: ID\n id_in: [ID!]\n id_not_in: [ID!]\n \n ${dateTimeWhereFields}\n ${identityWhereFields}\n \n changeRequest: ApwRefFieldWhereInput\n }\n\n extend type ApwQuery {\n getComment(id: ID!): ApwCommentResponse\n\n listComments(\n where: ApwListCommentsWhereInput\n limit: Int\n after: String\n sort: [ApwListCommentsSort!]\n ): ApwListCommentsResponse\n }\n\n extend type ApwMutation {\n createComment(data: ApwCreateCommentInput!): ApwCommentResponse\n\n updateComment(id: ID!, data: ApwUpdateCommentInput!): ApwCommentResponse\n\n deleteComment(id: ID!): ApwDeleteCommentResponse\n }\n `\n ];\n },\n resolvers: {\n ApwQuery: {\n getComment: async (_, args: any, context) => {\n return resolve(() => context.apw.comment.get(args.id));\n },\n listComments: async (_, args: any, context) => {\n try {\n /**\n * We know that args is ApwCommentListParams.\n */\n const [entries, meta] = await context.apw.comment.list(\n args as unknown as ApwCommentListParams\n );\n return new ListResponse(entries, meta);\n } catch (e) {\n return new ErrorResponse(e);\n }\n }\n },\n ApwMutation: {\n createComment: async (_, args: any, context) => {\n return resolve(() => context.apw.comment.create(args.data));\n },\n updateComment: async (_, args: any, context) => {\n return resolve(() => context.apw.comment.update(args.id, args.data));\n },\n deleteComment: async (_, args: any, context) => {\n return resolve(() => context.apw.comment.delete(args.id));\n }\n }\n }\n});\n\nexport default workflowSchema;\n"],"mappings":"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"}
|
@@ -9,14 +9,16 @@ var _plugins = require("@webiny/handler-graphql/plugins");
|
|
9
9
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
10
10
|
var _types = require("../../types");
|
11
11
|
var _resolve = _interopRequireDefault(require("../../utils/resolve"));
|
12
|
+
var _utils = require("./utils");
|
12
13
|
const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
|
13
|
-
|
14
|
+
// Had to remove /* GraphQL */ because prettier would not format the code correctly.
|
15
|
+
typeDefs: `
|
14
16
|
type ApwContentReviewListItem {
|
15
17
|
# System generated fields
|
16
18
|
id: ID
|
17
|
-
|
18
|
-
|
19
|
-
|
19
|
+
|
20
|
+
${_utils.onByFields}
|
21
|
+
|
20
22
|
# ContentReview specific fields
|
21
23
|
title: String
|
22
24
|
steps: [ApwContentReviewStep]
|
@@ -78,9 +80,9 @@ const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
|
|
78
80
|
type ApwContentReview {
|
79
81
|
# System generated fields
|
80
82
|
id: ID
|
81
|
-
|
82
|
-
|
83
|
-
|
83
|
+
|
84
|
+
${_utils.onByFields}
|
85
|
+
|
84
86
|
# ContentReview specific fields
|
85
87
|
title: String
|
86
88
|
steps: [ApwContentReviewStep]
|
@@ -102,10 +104,9 @@ const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
|
|
102
104
|
enum ApwListContentReviewsSort {
|
103
105
|
id_ASC
|
104
106
|
id_DESC
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
createdOn_DESC
|
107
|
+
|
108
|
+
${_utils.dateTimeFieldsSorters}
|
109
|
+
|
109
110
|
title_ASC
|
110
111
|
title_DESC
|
111
112
|
}
|
@@ -258,7 +259,14 @@ const contentReviewSchema = new _plugins.GraphQLSchemaPlugin({
|
|
258
259
|
if (!content) {
|
259
260
|
return null;
|
260
261
|
}
|
261
|
-
|
262
|
+
|
263
|
+
// In case a page was returned, let's read the `publishedOn` field.
|
264
|
+
if ("publishedOn" in content) {
|
265
|
+
return content.publishedOn;
|
266
|
+
}
|
267
|
+
|
268
|
+
// In case a CMS entry was returned, let's read the entry-level `lastPublishedOn` field.
|
269
|
+
return content.lastPublishedOn;
|
262
270
|
},
|
263
271
|
publishedBy: async (parent, _, context) => {
|
264
272
|
const id = parent.publishedBy;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_plugins","require","_handlerGraphql","_types","_resolve","_interopRequireDefault","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","_default","exports","default"],"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,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAOA,IAAAG,QAAA,GAAAC,sBAAA,CAAAJ,OAAA;AAEA,MAAMK,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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"}
|
1
|
+
{"version":3,"names":["_plugins","require","_handlerGraphql","_types","_resolve","_interopRequireDefault","_utils","contentReviewSchema","GraphQLSchemaPlugin","typeDefs","onByFields","dateTimeFieldsSorters","resolvers","ApwContentReviewContent","version","parent","_","context","getContent","apw","getContentGetter","type","content","id","settings","publishedOn","lastPublishedOn","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","_default","exports","default"],"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\";\nimport { onByFields, dateTimeFieldsSorters } from \"./utils\";\n\nconst contentReviewSchema = new GraphQLSchemaPlugin<ApwContext>({\n // Had to remove /* GraphQL */ because prettier would not format the code correctly.\n typeDefs: `\n type ApwContentReviewListItem {\n # System generated fields\n id: ID\n \n ${onByFields}\n \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 \n ${onByFields}\n \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\n ${dateTimeFieldsSorters}\n \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\n // In case a page was returned, let's read the `publishedOn` field.\n if (\"publishedOn\" in content) {\n return content.publishedOn;\n }\n\n // In case a CMS entry was returned, let's read the entry-level `lastPublishedOn` field.\n return content.lastPublishedOn;\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,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAOA,IAAAG,QAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,MAAA,GAAAL,OAAA;AAEA,MAAMM,mBAAmB,GAAG,IAAIC,4BAAmB,CAAa;EAC5D;EACAC,QAAQ,EAAG;AACf;AACA;AACA;AACA;AACA,cAAcC,iBAAW;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcA,iBAAW;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcC,4BAAsB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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"}
|
@@ -8,14 +8,16 @@ exports.default = void 0;
|
|
8
8
|
var _plugins = require("@webiny/handler-graphql/plugins");
|
9
9
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
10
10
|
var _resolve = _interopRequireDefault(require("../../utils/resolve"));
|
11
|
+
var _utils = require("./utils");
|
11
12
|
const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
12
|
-
|
13
|
+
// Had to remove /* GraphQL */ because prettier would not format the code correctly.
|
14
|
+
typeDefs: `
|
13
15
|
type ApwReviewerListItem {
|
14
16
|
# System generated fields
|
15
17
|
id: ID
|
16
|
-
|
17
|
-
|
18
|
-
|
18
|
+
|
19
|
+
${_utils.onByFields}
|
20
|
+
|
19
21
|
# Reviewer specific fields
|
20
22
|
identityId: ID
|
21
23
|
displayName: String
|
@@ -32,9 +34,9 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
32
34
|
type ApwReviewer {
|
33
35
|
# System generated fields
|
34
36
|
id: ID
|
35
|
-
|
36
|
-
|
37
|
-
|
37
|
+
|
38
|
+
${_utils.onByFields}
|
39
|
+
|
38
40
|
# Reviewer specific fields
|
39
41
|
identityId: ID
|
40
42
|
displayName: String
|
@@ -55,10 +57,9 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
55
57
|
enum ApwListReviewersSort {
|
56
58
|
id_ASC
|
57
59
|
id_DESC
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
createdOn_DESC
|
60
|
+
|
61
|
+
${_utils.dateTimeFieldsSorters}
|
62
|
+
|
62
63
|
publishedOn_ASC
|
63
64
|
publishedOn_DESC
|
64
65
|
title_ASC
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_plugins","require","_handlerGraphql","_resolve","_interopRequireDefault","workflowSchema","GraphQLSchemaPlugin","typeDefs","resolvers","ApwQuery","getReviewer","_","args","context","resolve","apw","reviewer","get","id","listReviewers","entries","meta","list","ListResponse","e","ErrorResponse","_default","exports","default"],"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
|
1
|
+
{"version":3,"names":["_plugins","require","_handlerGraphql","_resolve","_interopRequireDefault","_utils","workflowSchema","GraphQLSchemaPlugin","typeDefs","onByFields","dateTimeFieldsSorters","resolvers","ApwQuery","getReviewer","_","args","context","resolve","apw","reviewer","get","id","listReviewers","entries","meta","list","ListResponse","e","ErrorResponse","_default","exports","default"],"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\";\nimport { onByFields, dateTimeFieldsSorters } from \"./utils\";\n\nconst workflowSchema = new GraphQLSchemaPlugin<ApwContext>({\n // Had to remove /* GraphQL */ because prettier would not format the code correctly.\n typeDefs: `\n type ApwReviewerListItem {\n # System generated fields\n id: ID\n \n ${onByFields}\n \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 \n ${onByFields}\n \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\n ${dateTimeFieldsSorters}\n \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,IAAAA,QAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,MAAA,GAAAJ,OAAA;AAEA,MAAMK,cAAc,GAAG,IAAIC,4BAAmB,CAAa;EACvD;EACAC,QAAQ,EAAG;AACf;AACA;AACA;AACA;AACA,cAAcC,iBAAW;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcA,iBAAW;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAcC,4BAAsB;AACpC;AACA;AACA;AACA;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,MAAAA,CAAOC,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,MAAAA,CAAOR,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,IACJ,CAAC;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,IAAAE,QAAA,GAEYvB,cAAc;AAAAwB,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.onByFields = exports.dateTimeFieldsSorters = void 0;
|
7
|
+
const onByFields = ["createdOn: DateTime!", "modifiedOn: DateTime", "savedOn: DateTime!", "createdBy: ApwIdentity!", "modifiedBy: ApwIdentity", "savedBy: ApwIdentity!"].join("\n");
|
8
|
+
exports.onByFields = onByFields;
|
9
|
+
const dateTimeFieldsSorters = ["createdOn_ASC", "createdOn_DESC", "modifiedOn_ASC", "modifiedOn_DESC", "savedOn_ASC", "savedOn_DESC"].join("\n");
|
10
|
+
exports.dateTimeFieldsSorters = dateTimeFieldsSorters;
|
11
|
+
|
12
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["onByFields","join","exports","dateTimeFieldsSorters"],"sources":["utils.ts"],"sourcesContent":["export const onByFields = [\n \"createdOn: DateTime!\",\n \"modifiedOn: DateTime\",\n \"savedOn: DateTime!\",\n \"createdBy: ApwIdentity!\",\n \"modifiedBy: ApwIdentity\",\n \"savedBy: ApwIdentity!\"\n].join(\"\\n\");\n\nexport const dateTimeFieldsSorters = [\n \"createdOn_ASC\",\n \"createdOn_DESC\",\n \"modifiedOn_ASC\",\n \"modifiedOn_DESC\",\n \"savedOn_ASC\",\n \"savedOn_DESC\"\n].join(\"\\n\");\n"],"mappings":";;;;;;AAAO,MAAMA,UAAU,GAAG,CACtB,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,CAC1B,CAACC,IAAI,CAAC,IAAI,CAAC;AAACC,OAAA,CAAAF,UAAA,GAAAA,UAAA;AAEN,MAAMG,qBAAqB,GAAG,CACjC,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,cAAc,CACjB,CAACF,IAAI,CAAC,IAAI,CAAC;AAACC,OAAA,CAAAC,qBAAA,GAAAA,qBAAA"}
|
@@ -8,14 +8,16 @@ exports.default = void 0;
|
|
8
8
|
var _plugins = require("@webiny/handler-graphql/plugins");
|
9
9
|
var _handlerGraphql = require("@webiny/handler-graphql");
|
10
10
|
var _resolve = _interopRequireDefault(require("../../utils/resolve"));
|
11
|
+
var _utils = require("./utils");
|
11
12
|
const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
12
|
-
|
13
|
+
// Had to remove /* GraphQL */ because prettier would not format the code correctly.
|
14
|
+
typeDefs: `
|
13
15
|
type ApwWorkflowListItem {
|
14
16
|
# System generated fields
|
15
17
|
id: ID
|
16
|
-
|
17
|
-
|
18
|
-
|
18
|
+
|
19
|
+
${_utils.onByFields}
|
20
|
+
|
19
21
|
# Workflow specific fields
|
20
22
|
app: ApwWorkflowApplication
|
21
23
|
title: String
|
@@ -44,9 +46,9 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
44
46
|
type ApwWorkflow {
|
45
47
|
# System generated fields
|
46
48
|
id: ID
|
47
|
-
|
48
|
-
|
49
|
-
|
49
|
+
|
50
|
+
${_utils.onByFields}
|
51
|
+
|
50
52
|
# Workflow specific fields
|
51
53
|
app: ApwWorkflowApplication
|
52
54
|
title: String
|
@@ -79,12 +81,11 @@ const workflowSchema = new _plugins.GraphQLSchemaPlugin({
|
|
79
81
|
enum ApwListWorkflowsSort {
|
80
82
|
id_ASC
|
81
83
|
id_DESC
|
82
|
-
|
83
|
-
|
84
|
-
createdOn_ASC
|
85
|
-
createdOn_DESC
|
84
|
+
|
85
|
+
${_utils.dateTimeFieldsSorters}
|
86
86
|
publishedOn_ASC
|
87
87
|
publishedOn_DESC
|
88
|
+
|
88
89
|
title_ASC
|
89
90
|
title_DESC
|
90
91
|
}
|