@webiny/api-apw 5.40.4 → 5.40.5-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-apw",
3
- "version": "5.40.4",
3
+ "version": "5.40.5-beta.0",
4
4
  "keywords": [
5
5
  "apw:base"
6
6
  ],
@@ -16,27 +16,27 @@
16
16
  "dependencies": {
17
17
  "@babel/runtime": "7.24.1",
18
18
  "@commodo/fields": "1.1.2-beta.20",
19
- "@webiny/api": "5.40.4",
20
- "@webiny/api-admin-settings": "5.40.4",
21
- "@webiny/api-headless-cms": "5.40.4",
22
- "@webiny/api-i18n": "5.40.4",
23
- "@webiny/api-mailer": "5.40.4",
24
- "@webiny/api-page-builder": "5.40.4",
25
- "@webiny/api-security": "5.40.4",
26
- "@webiny/api-tenancy": "5.40.4",
27
- "@webiny/api-wcp": "5.40.4",
28
- "@webiny/aws-sdk": "5.40.4",
29
- "@webiny/db-dynamodb": "5.40.4",
30
- "@webiny/error": "5.40.4",
31
- "@webiny/handler": "5.40.4",
32
- "@webiny/handler-client": "5.40.4",
33
- "@webiny/handler-db": "5.40.4",
34
- "@webiny/handler-graphql": "5.40.4",
35
- "@webiny/handler-logs": "5.40.4",
36
- "@webiny/plugins": "5.40.4",
37
- "@webiny/pubsub": "5.40.4",
38
- "@webiny/utils": "5.40.4",
39
- "@webiny/validation": "5.40.4",
19
+ "@webiny/api": "5.40.5-beta.0",
20
+ "@webiny/api-admin-settings": "5.40.5-beta.0",
21
+ "@webiny/api-headless-cms": "5.40.5-beta.0",
22
+ "@webiny/api-i18n": "5.40.5-beta.0",
23
+ "@webiny/api-mailer": "5.40.5-beta.0",
24
+ "@webiny/api-page-builder": "5.40.5-beta.0",
25
+ "@webiny/api-security": "5.40.5-beta.0",
26
+ "@webiny/api-tenancy": "5.40.5-beta.0",
27
+ "@webiny/api-wcp": "5.40.5-beta.0",
28
+ "@webiny/aws-sdk": "5.40.5-beta.0",
29
+ "@webiny/db-dynamodb": "5.40.5-beta.0",
30
+ "@webiny/error": "5.40.5-beta.0",
31
+ "@webiny/handler": "5.40.5-beta.0",
32
+ "@webiny/handler-client": "5.40.5-beta.0",
33
+ "@webiny/handler-db": "5.40.5-beta.0",
34
+ "@webiny/handler-graphql": "5.40.5-beta.0",
35
+ "@webiny/handler-logs": "5.40.5-beta.0",
36
+ "@webiny/plugins": "5.40.5-beta.0",
37
+ "@webiny/pubsub": "5.40.5-beta.0",
38
+ "@webiny/utils": "5.40.5-beta.0",
39
+ "@webiny/validation": "5.40.5-beta.0",
40
40
  "dayjs": "1.11.7",
41
41
  "lodash": "4.17.21"
42
42
  },
@@ -44,10 +44,10 @@
44
44
  "@babel/cli": "7.24.1",
45
45
  "@babel/core": "7.24.3",
46
46
  "@babel/preset-env": "7.24.3",
47
- "@webiny/cli": "5.40.4",
48
- "@webiny/handler-aws": "5.40.4",
49
- "@webiny/project-utils": "5.40.4",
50
- "@webiny/wcp": "5.40.4",
47
+ "@webiny/cli": "5.40.5-beta.0",
48
+ "@webiny/handler-aws": "5.40.5-beta.0",
49
+ "@webiny/project-utils": "5.40.5-beta.0",
50
+ "@webiny/wcp": "5.40.5-beta.0",
51
51
  "get-yarn-workspaces": "1.0.2",
52
52
  "graphql": "15.8.0",
53
53
  "jest": "29.7.0",
@@ -65,5 +65,5 @@
65
65
  "build": "yarn webiny run build",
66
66
  "watch": "yarn webiny run watch"
67
67
  },
68
- "gitHead": "1be8d8c3ebb404e7582ee9b426d8ec870afb5b99"
68
+ "gitHead": "f67778732392ed88f28da869ddacbf08a98cdec6"
69
69
  }
@@ -101,8 +101,7 @@ const isWorkflowApplicable = (entry, workflow) => {
101
101
  const assignWorkflowToEntry = async params => {
102
102
  const {
103
103
  apw,
104
- entry,
105
- model
104
+ entry
106
105
  } = params;
107
106
  /**
108
107
  * Lookup and assign "workflowId".
@@ -116,7 +115,6 @@ const assignWorkflowToEntry = async params => {
116
115
  app: _types.ApwWorkflowApplications.CMS
117
116
  }
118
117
  });
119
- console.log(`Found ${entries.length} workflow(s) for model ${model.modelId}.`);
120
118
 
121
119
  /*
122
120
  * Re-order them based on workflow scope and pre-defined rule i.e.
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_types","_utils","_changeRequest","_comment","_contentReview","_reviewer","_workflow","fetchModel","cms","id","settings","WebinyError","modelId","model","getModel","exports","getEntryTitle","entry","titleFieldId","values","getLatestEntryRevision","params","entryId","item","getLatestEntriesByIds","updateEntryMeta","meta","updateEntry","isWorkflowApplicable","workflow","application","app","ApwWorkflowApplications","CMS","scopeType","scope","type","WorkflowScopeTypes","DEFAULT","CUSTOM","models","data","Array","isArray","includes","entries","some","value","assignWorkflowToEntry","apw","list","where","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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","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_types","_utils","_changeRequest","_comment","_contentReview","_reviewer","_workflow","fetchModel","cms","id","settings","WebinyError","modelId","model","getModel","exports","getEntryTitle","entry","titleFieldId","values","getLatestEntryRevision","params","entryId","item","getLatestEntriesByIds","updateEntryMeta","meta","updateEntry","isWorkflowApplicable","workflow","application","app","ApwWorkflowApplications","CMS","scopeType","scope","type","WorkflowScopeTypes","DEFAULT","CUSTOM","models","data","Array","isArray","includes","entries","some","value","assignWorkflowToEntry","apw","list","where","sortedWorkflows","sort","workflowByPrecedenceDesc","workflowByCreatedOnDesc","console","log","workflowId","contentReviewId","ex","code","hasEntries","isApwDisabledOnModel","isPrivate","CHANGE_REQUEST_MODEL_ID","COMMENT_MODEL_ID","CONTENT_REVIEW_MODEL_ID","REVIEWER_MODEL_ID","WORKFLOW_MODEL_ID"],"sources":["utils.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsEntry, CmsModel, HeadlessCms } from \"@webiny/api-headless-cms/types\";\nimport {\n AdvancedPublishingWorkflow,\n ApwWorkflow,\n ApwWorkflowApplications,\n WorkflowScopeTypes\n} from \"~/types\";\nimport { workflowByCreatedOnDesc, workflowByPrecedenceDesc } from \"~/plugins/utils\";\nimport { CHANGE_REQUEST_MODEL_ID } from \"~/storageOperations/models/changeRequest.model\";\nimport { COMMENT_MODEL_ID } from \"~/storageOperations/models/comment.model\";\nimport { CONTENT_REVIEW_MODEL_ID } from \"~/storageOperations/models/contentReview.model\";\nimport { REVIEWER_MODEL_ID } from \"~/storageOperations/models/reviewer.model\";\nimport { WORKFLOW_MODEL_ID } from \"~/storageOperations/models/workflow.model\";\n\nexport const fetchModel = async (\n cms: HeadlessCms,\n id: string,\n settings?: { modelId?: string } | null\n): Promise<CmsModel> => {\n if (!settings) {\n throw new WebinyError(\"Missing settings.\", \"SETTINGS_ERROR\", {\n id\n });\n }\n const modelId = settings.modelId;\n if (!modelId) {\n throw new WebinyError(\"Missing modelId in settings.\", \"MODEL_ID_ERROR\", {\n id,\n settings\n });\n }\n const model = await cms.getModel(modelId);\n if (model) {\n return model;\n }\n throw new WebinyError(\"There is no requested model in the system.\", \"MODEL_NOT_EXISTS\", {\n id,\n settings\n });\n};\n\nexport const getEntryTitle = (model: CmsModel, entry: CmsEntry): string => {\n const titleFieldId = model.titleFieldId;\n if (!titleFieldId || !entry.values[titleFieldId]) {\n return entry.id;\n }\n return entry.values[titleFieldId];\n};\n\ninterface GetLatestEntryRevisionParams {\n cms: HeadlessCms;\n model: CmsModel;\n entryId: string;\n}\n\nexport const getLatestEntryRevision = async (\n params: GetLatestEntryRevisionParams\n): Promise<CmsEntry> => {\n const { cms, model, entryId } = params;\n const [item] = await cms.getLatestEntriesByIds(model, [entryId]);\n\n if (!item) {\n throw new WebinyError(\"There is no entry with given ID.\", \"ENTRY_NOT_FOUND\", {\n entryId,\n model: model.modelId\n });\n }\n return item;\n};\n\ninterface UpdateEntryMetaParams {\n meta: Record<string, any>;\n entryId: string;\n cms: HeadlessCms;\n model: CmsModel;\n}\n\nexport const updateEntryMeta = async (params: UpdateEntryMetaParams): Promise<void> => {\n const { entryId, cms, model, meta } = params;\n\n const entry = await getLatestEntryRevision({\n cms,\n model,\n entryId\n });\n\n await cms.updateEntry(model, entry.id, {}, meta);\n};\n\nconst isWorkflowApplicable = (entry: CmsEntry, workflow: ApwWorkflow): boolean => {\n const application = workflow.app;\n if (application !== ApwWorkflowApplications.CMS) {\n return false;\n }\n\n const scopeType = workflow.scope.type;\n\n if (scopeType === WorkflowScopeTypes.DEFAULT) {\n return true;\n } else if (scopeType === WorkflowScopeTypes.CUSTOM) {\n const models = workflow.scope.data?.models;\n\n if (Array.isArray(models) && models.includes(entry.modelId)) {\n return true;\n }\n\n const entries = workflow.scope.data?.entries || [];\n if (Array.isArray(entries) && entries.some(value => value.id === entry.entryId)) {\n return true;\n }\n return false;\n }\n throw new WebinyError(`Unknown scope type \"${scopeType}\".`, \"UNKNOWN_SCOPE_TYPE\", {\n workflow\n });\n};\n\ninterface AssignWorkflowToEntryParams {\n apw: AdvancedPublishingWorkflow;\n entry: CmsEntry;\n model: CmsModel;\n}\n\nexport const assignWorkflowToEntry = async (params: AssignWorkflowToEntryParams): Promise<void> => {\n const { apw, entry } = params;\n /**\n * Lookup and assign \"workflowId\".\n */\n try {\n /*\n * List all workflows for app cms\n */\n const [entries] = await apw.workflow.list({\n where: {\n app: ApwWorkflowApplications.CMS\n }\n });\n\n /*\n * Re-order them based on workflow scope and pre-defined rule i.e.\n * \"specific\" entry -> entry for a \"category\" -> \"default\".\n * There can be more than one workflow with same \"scope\" and \"app\".\n * Therefore, we are also sorting the workflows by `createdOn` to get the latest workflow.\n */\n const sortedWorkflows = entries\n .sort(workflowByPrecedenceDesc)\n .sort(workflowByCreatedOnDesc);\n\n /**\n * Assign the first applicable workflow to the page and exit.\n */\n for (const workflow of sortedWorkflows) {\n if (isWorkflowApplicable(entry, workflow) === false) {\n console.log(`Not applying workflow ${workflow.id} to entry ${entry.id}.`);\n continue;\n }\n entry.meta = {\n ...(entry.meta || {}),\n apw: {\n workflowId: workflow.id,\n contentReviewId: null\n }\n };\n return;\n }\n } catch (ex) {\n throw new WebinyError(\n `Failed to assign workflow to CMS entry \"${entry.id}\".`,\n ex.code,\n ex.data\n );\n }\n};\n\nexport const hasEntries = (workflow: ApwWorkflow): boolean => {\n const { app, scope } = workflow;\n return (\n app === ApwWorkflowApplications.CMS &&\n scope.type === WorkflowScopeTypes.CUSTOM &&\n scope.data &&\n Array.isArray(scope.data.entries)\n );\n};\n\nexport const isApwDisabledOnModel = (model: Pick<CmsModel, \"modelId\" | \"isPrivate\">): boolean => {\n /**\n * We should not run APW on private models as well.\n */\n if (model.isPrivate) {\n return true;\n }\n return [\n CHANGE_REQUEST_MODEL_ID,\n COMMENT_MODEL_ID,\n CONTENT_REVIEW_MODEL_ID,\n REVIEWER_MODEL_ID,\n WORKFLOW_MODEL_ID\n ].includes(model.modelId);\n};\n"],"mappings":"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","ignoreList":[]}