@webiny/api-headless-cms 6.4.9 → 6.4.10-beta.1

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.
@@ -6,6 +6,7 @@ import { createGraphQLInputField } from "./utils/createGraphQLInputField.js";
6
6
  import { GetModelUseCase } from "../../../contentModel/GetModel/index.js";
7
7
  import { GetPublishedEntriesByIdsUseCase } from "../../../contentEntry/GetPublishedEntriesByIds/index.js";
8
8
  import { GetLatestEntriesByIdsUseCase } from "../../../contentEntry/GetLatestEntriesByIds/index.js";
9
+ import { Logger } from "@webiny/api-core/exports/api/logger.js";
9
10
  const createUnionTypeName = (model, field)=>`${model.singularApiName}_${createTypeName(field.fieldId)}`;
10
11
  const createListFilters = (fieldId)=>`
11
12
  ${fieldId}: RefFieldWhereInput
@@ -78,6 +79,7 @@ class ReadApi {
78
79
  const getModel = container.resolve(GetModelUseCase);
79
80
  const getPublishedByIds = container.resolve(GetPublishedEntriesByIdsUseCase);
80
81
  const getLatestByIds = container.resolve(GetLatestEntriesByIdsUseCase);
82
+ const logger = container.resolve(Logger);
81
83
  const initialValue = getValue(parent);
82
84
  if (!initialValue) return null;
83
85
  if (false === args.populate) return initialValue;
@@ -94,14 +96,18 @@ class ReadApi {
94
96
  const getters = Object.keys(entriesByModel).map(async (modelId)=>{
95
97
  const idList = entriesByModel[modelId];
96
98
  const modelResult = await getModel.execute(modelId);
99
+ if (modelResult.isFail()) {
100
+ logger.error(modelResult.error);
101
+ return [];
102
+ }
97
103
  const model = modelResult.value;
98
- let entries;
104
+ let entries = [];
99
105
  if (cms.READ) {
100
106
  const getPublishedResult = await getPublishedByIds.execute(model, idList);
101
- entries = getPublishedResult.value;
107
+ if (getPublishedResult.isOk()) entries = getPublishedResult.value;
102
108
  } else {
103
- const latestByIsResult = await getLatestByIds.execute(model, idList);
104
- entries = latestByIsResult.value;
109
+ const latestByIdsResult = await getLatestByIds.execute(model, idList);
110
+ if (latestByIdsResult.isOk()) entries = latestByIdsResult.value;
105
111
  }
106
112
  return appendTypename(entries, modelIdToTypeName.get(modelId));
107
113
  });
@@ -110,18 +116,22 @@ class ReadApi {
110
116
  }
111
117
  const value = initialValue;
112
118
  const modelResult = await getModel.execute(value.modelId);
119
+ if (modelResult.isFail()) {
120
+ logger.error(modelResult.error);
121
+ return null;
122
+ }
113
123
  const model = modelResult.value;
114
- let revisions;
124
+ let revisions = [];
115
125
  if (cms.READ) {
116
126
  const publishedByIdsResult = await getPublishedByIds.execute(model, [
117
127
  value.entryId
118
128
  ]);
119
- revisions = publishedByIdsResult.value;
129
+ if (publishedByIdsResult.isOk()) revisions = publishedByIdsResult.value;
120
130
  } else {
121
131
  const latestByIdsResult = await getLatestByIds.execute(model, [
122
132
  value.entryId
123
133
  ]);
124
- revisions = latestByIdsResult.value;
134
+ if (latestByIdsResult.isOk()) revisions = latestByIdsResult.value;
125
135
  }
126
136
  if (!revisions || 0 === revisions.length) return null;
127
137
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"features/graphql/fields/base/RefToGraphQL.js","sources":["../../../../../src/features/graphql/fields/base/RefToGraphQL.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsModelFieldToGraphQL } from \"../abstractions/CmsModelFieldToGraphQL.js\";\nimport type {\n CmsContext,\n CmsEntry,\n CmsModel,\n CmsModelField,\n CmsModelFieldType,\n CmsModelFieldDefinition\n} from \"~/types/index.js\";\nimport type { GraphQLSchemaDefinition } from \"@webiny/handler-graphql/types.js\";\nimport { createTypeName } from \"~/utils/createTypeName.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { createGraphQLInputField } from \"./utils/createGraphQLInputField.js\";\nimport { GetModelUseCase } from \"~/features/contentModel/GetModel/index.js\";\nimport { GetPublishedEntriesByIdsUseCase } from \"~/features/contentEntry/GetPublishedEntriesByIds/index.js\";\nimport { GetLatestEntriesByIdsUseCase } from \"~/features/contentEntry/GetLatestEntriesByIds/index.js\";\n\ninterface RefFieldValue {\n /**\n * `id` is optional for backwards compatibility with records created before this property was introduced.\n */\n id?: string;\n entryId: string;\n modelId: string;\n}\n\nconst createUnionTypeName = (model: CmsModel, field: CmsModelField) => {\n return `${model.singularApiName}_${createTypeName(field.fieldId)}`;\n};\n\nconst createListFilters = (fieldId: string): string => {\n return `\n ${fieldId}: RefFieldWhereInput\n `;\n};\n\nconst createFilteringTypeDef = () => {\n return `\n input RefFieldWhereInput {\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 modelId: String\n modelId_not: String\n modelId_in: [String!]\n modelId_not_in: [String!]\n }\n `;\n};\n\nconst appendTypename = (entries: CmsEntry[], typename: string): CmsEntry[] => {\n return entries.map(item => {\n return {\n ...item,\n __typename: typename\n };\n });\n};\n\nconst getFieldModels = (field: CmsModelField): Pick<CmsModel, \"modelId\">[] => {\n if (!field.settings || Array.isArray(field.settings.models) === false) {\n return [];\n }\n return field.settings.models as Pick<CmsModel, \"modelId\">[];\n};\n\nconst modelIdToTypeName = new Map<string, string>();\n\ninterface GetModelParams {\n models: CmsModel[];\n modelId: string;\n}\n\nconst getModel = (params: GetModelParams): CmsModel => {\n const { models, modelId } = params;\n const model = models.find(item => item.modelId === modelId);\n if (model) {\n return model;\n }\n throw new WebinyError(\n `Could not find model with ID \"${modelId}\" in the list of models.`,\n \"MODEL_NOT_FOUND\",\n { modelId }\n );\n};\n\nconst getModelSingularApiName = (params: GetModelParams): string => {\n return getModel(params).singularApiName;\n};\n\nclass ReadApi implements CmsModelFieldToGraphQL.ReadApi {\n public createTypeField({\n model,\n field,\n models\n }: CmsModelFieldToGraphQL.TypeFieldParams): CmsModelFieldDefinition {\n const fieldModels = field.settings?.models || [];\n const gqlType =\n fieldModels.length > 1\n ? createUnionTypeName(model, field)\n : getModelSingularApiName({ models, modelId: fieldModels[0].modelId });\n const typeDefs =\n fieldModels.length > 1\n ? `union ${gqlType} = ${getFieldModels(field)\n .map(({ modelId }) => getModelSingularApiName({ models, modelId }))\n .join(\" | \")}`\n : \"\";\n\n return {\n fields:\n field.fieldId +\n `(populate: Boolean = true): ${field.list ? `[${gqlType}!]` : gqlType}`,\n typeDefs\n };\n }\n\n public createListFilters({ field }: CmsModelFieldToGraphQL.ListFiltersParams): string {\n return createListFilters(field.fieldId);\n }\n\n public createResolver({\n field,\n models\n }: CmsModelFieldToGraphQL.ResolverParams): CmsModelFieldToGraphQL.Resolver {\n const fieldModels = field.settings?.models || [];\n for (const item of fieldModels) {\n modelIdToTypeName.set(\n item.modelId,\n getModelSingularApiName({ models, modelId: item.modelId })\n );\n }\n\n const getValue = (parent: any): RefFieldValue | RefFieldValue[] => {\n if (parent.values) {\n return parent.values[field.fieldId];\n }\n return parent[field.fieldId];\n };\n\n /* @ts-expect-error Mixed return types for createResolver. */\n return async (parent: CmsEntry, args: any, context: CmsContext) => {\n const { cms, container } = context;\n\n const getModel = container.resolve(GetModelUseCase);\n const getPublishedByIds = container.resolve(GetPublishedEntriesByIdsUseCase);\n const getLatestByIds = container.resolve(GetLatestEntriesByIdsUseCase);\n\n const initialValue = getValue(parent);\n\n if (!initialValue) {\n return null;\n }\n if (args.populate === false) {\n return initialValue;\n }\n\n if (field.list) {\n const referenceFieldValues = initialValue as RefFieldValue[];\n if (\n Array.isArray(referenceFieldValues) === false ||\n referenceFieldValues.length === 0\n ) {\n return [];\n }\n\n const entriesByModel = referenceFieldValues.reduce(\n (collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.entryId) === true) {\n return collection;\n }\n collection[ref.modelId].push(ref.entryId);\n return collection;\n },\n {} as Record<string, string[]>\n );\n\n const getters = Object.keys(entriesByModel).map(async modelId => {\n const idList = entriesByModel[modelId];\n const modelResult = await getModel.execute(modelId);\n const model = modelResult.value;\n\n let entries: CmsEntry[];\n if (cms.READ) {\n const getPublishedResult = await getPublishedByIds.execute(model, idList);\n entries = getPublishedResult.value;\n } else {\n const latestByIsResult = await getLatestByIds.execute(model, idList);\n entries = latestByIsResult.value;\n }\n return appendTypename(entries, modelIdToTypeName.get(modelId)!);\n });\n\n const references = await Promise.all(getters).then((results: CmsEntry[][]) => {\n return results.reduce((result, item) => {\n return result.concat(item);\n }, []);\n });\n\n return referenceFieldValues\n .map(v => {\n return references.find(ref => ref.entryId === v.entryId);\n })\n .filter(Boolean);\n }\n\n const value = initialValue as RefFieldValue;\n const modelResult = await getModel.execute(value.modelId);\n const model = modelResult.value;\n\n let revisions: CmsEntry[];\n if (cms.READ) {\n const publishedByIdsResult = await getPublishedByIds.execute(model, [\n value.entryId\n ]);\n revisions = publishedByIdsResult.value;\n } else {\n const latestByIdsResult = await getLatestByIds.execute(model, [value.entryId]);\n revisions = latestByIdsResult.value;\n }\n\n if (!revisions || revisions.length === 0) {\n return null;\n }\n return {\n ...revisions[0],\n __typename: modelIdToTypeName.get(value.modelId)\n };\n };\n }\n\n public createSchema(): GraphQLSchemaDefinition<CmsContext> {\n return {\n typeDefs: createFilteringTypeDef(),\n resolvers: {}\n };\n }\n}\n\nclass ManageApi implements CmsModelFieldToGraphQL.ManageApi {\n public createTypeField({ field }: CmsModelFieldToGraphQL.TypeFieldParams): string {\n if (field.list) {\n return `${field.fieldId}: [RefField!]`;\n }\n return `${field.fieldId}: RefField`;\n }\n\n public createInputField({ field }: CmsModelFieldToGraphQL.TypeFieldParams): string {\n return createGraphQLInputField(field, \"RefFieldInput\");\n }\n\n public createListFilters({ field }: CmsModelFieldToGraphQL.ListFiltersParams): string {\n return createListFilters(field.fieldId);\n }\n\n public createSchema(): GraphQLSchemaDefinition<CmsContext> {\n return {\n typeDefs: /* GraphQL */ `\n type RefField {\n modelId: String!\n entryId: ID!\n id: ID!\n }\n\n input RefFieldInput {\n modelId: String!\n id: RevisionId!\n }\n\n ${createFilteringTypeDef()}\n `,\n resolvers: {\n RefField: {\n entryId: (parent: RefFieldValue) => {\n const { id } = parseIdentifier(parent.entryId || parent.id);\n return id;\n },\n id: (parent: RefFieldValue) => {\n return parent.id || parent.entryId;\n }\n }\n }\n };\n }\n}\n\nclass RefToGraphQL implements CmsModelFieldToGraphQL.Interface {\n public readonly read = new ReadApi();\n public readonly manage = new ManageApi();\n\n public readonly fieldType: CmsModelFieldType = \"ref\";\n public readonly isSearchable: boolean = true;\n public readonly isSortable: boolean = false;\n public readonly isFullTextSearchable: boolean = false;\n\n public getReadApi(): CmsModelFieldToGraphQL.ReadApi {\n return this.read;\n }\n\n public getManageApi(): CmsModelFieldToGraphQL.ManageApi {\n return this.manage;\n }\n}\n\nexport const RefFieldToGraphQL = CmsModelFieldToGraphQL.createImplementation({\n implementation: RefToGraphQL,\n dependencies: []\n});\n"],"names":["createUnionTypeName","model","field","createTypeName","createListFilters","fieldId","createFilteringTypeDef","appendTypename","entries","typename","item","getFieldModels","Array","modelIdToTypeName","Map","getModel","params","models","modelId","WebinyError","getModelSingularApiName","ReadApi","fieldModels","gqlType","typeDefs","getValue","parent","args","context","cms","container","GetModelUseCase","getPublishedByIds","GetPublishedEntriesByIdsUseCase","getLatestByIds","GetLatestEntriesByIdsUseCase","initialValue","referenceFieldValues","entriesByModel","collection","ref","getters","Object","idList","modelResult","getPublishedResult","latestByIsResult","references","Promise","results","result","v","Boolean","value","revisions","publishedByIdsResult","latestByIdsResult","ManageApi","createGraphQLInputField","id","parseIdentifier","RefToGraphQL","RefFieldToGraphQL","CmsModelFieldToGraphQL"],"mappings":";;;;;;;;AA2BA,MAAMA,sBAAsB,CAACC,OAAiBC,QACnC,GAAGD,MAAM,eAAe,CAAC,CAAC,EAAEE,eAAeD,MAAM,OAAO,GAAG;AAGtE,MAAME,oBAAoB,CAACC,UAChB,CAAC;QACJ,EAAEA,QAAQ;IACd,CAAC;AAGL,MAAMC,yBAAyB,IACpB,CAAC;;;;;;;;;;;;;;;IAeR,CAAC;AAGL,MAAMC,iBAAiB,CAACC,SAAqBC,WAClCD,QAAQ,GAAG,CAACE,CAAAA,OACR;YACH,GAAGA,IAAI;YACP,YAAYD;QAChB;AAIR,MAAME,iBAAiB,CAACT;IACpB,IAAI,CAACA,MAAM,QAAQ,IAAIU,AAAyC,UAAzCA,MAAM,OAAO,CAACV,MAAM,QAAQ,CAAC,MAAM,GACtD,OAAO,EAAE;IAEb,OAAOA,MAAM,QAAQ,CAAC,MAAM;AAChC;AAEA,MAAMW,oBAAoB,IAAIC;AAO9B,MAAMC,wBAAW,CAACC;IACd,MAAM,EAAEC,MAAM,EAAEC,OAAO,EAAE,GAAGF;IAC5B,MAAMf,QAAQgB,OAAO,IAAI,CAACP,CAAAA,OAAQA,KAAK,OAAO,KAAKQ;IACnD,IAAIjB,OACA,OAAOA;IAEX,MAAM,IAAIkB,MACN,CAAC,8BAA8B,EAAED,QAAQ,wBAAwB,CAAC,EAClE,mBACA;QAAEA;IAAQ;AAElB;AAEA,MAAME,0BAA0B,CAACJ,SACtBD,sBAASC,QAAQ,eAAe;AAG3C,MAAMK;IACK,gBAAgB,EACnBpB,KAAK,EACLC,KAAK,EACLe,MAAM,EAC+B,EAA2B;QAChE,MAAMK,cAAcpB,MAAM,QAAQ,EAAE,UAAU,EAAE;QAChD,MAAMqB,UACFD,YAAY,MAAM,GAAG,IACftB,oBAAoBC,OAAOC,SAC3BkB,wBAAwB;YAAEH;YAAQ,SAASK,WAAW,CAAC,EAAE,CAAC,OAAO;QAAC;QAC5E,MAAME,WACFF,YAAY,MAAM,GAAG,IACf,CAAC,MAAM,EAAEC,QAAQ,GAAG,EAAEZ,eAAeT,OAChC,GAAG,CAAC,CAAC,EAAEgB,OAAO,EAAE,GAAKE,wBAAwB;gBAAEH;gBAAQC;YAAQ,IAC/D,IAAI,CAAC,QAAQ,GAClB;QAEV,OAAO;YACH,QACIhB,MAAM,OAAO,GACb,CAAC,4BAA4B,EAAEA,MAAM,IAAI,GAAG,CAAC,CAAC,EAAEqB,QAAQ,EAAE,CAAC,GAAGA,SAAS;YAC3EC;QACJ;IACJ;IAEO,kBAAkB,EAAEtB,KAAK,EAA4C,EAAU;QAClF,OAAOE,kBAAkBF,MAAM,OAAO;IAC1C;IAEO,eAAe,EAClBA,KAAK,EACLe,MAAM,EAC8B,EAAmC;QACvE,MAAMK,cAAcpB,MAAM,QAAQ,EAAE,UAAU,EAAE;QAChD,KAAK,MAAMQ,QAAQY,YACfT,kBAAkB,GAAG,CACjBH,KAAK,OAAO,EACZU,wBAAwB;YAAEH;YAAQ,SAASP,KAAK,OAAO;QAAC;QAIhE,MAAMe,WAAW,CAACC;YACd,IAAIA,OAAO,MAAM,EACb,OAAOA,OAAO,MAAM,CAACxB,MAAM,OAAO,CAAC;YAEvC,OAAOwB,MAAM,CAACxB,MAAM,OAAO,CAAC;QAChC;QAGA,OAAO,OAAOwB,QAAkBC,MAAWC;YACvC,MAAM,EAAEC,GAAG,EAAEC,SAAS,EAAE,GAAGF;YAE3B,MAAMb,WAAWe,UAAU,OAAO,CAACC;YACnC,MAAMC,oBAAoBF,UAAU,OAAO,CAACG;YAC5C,MAAMC,iBAAiBJ,UAAU,OAAO,CAACK;YAEzC,MAAMC,eAAeX,SAASC;YAE9B,IAAI,CAACU,cACD,OAAO;YAEX,IAAIT,AAAkB,UAAlBA,KAAK,QAAQ,EACb,OAAOS;YAGX,IAAIlC,MAAM,IAAI,EAAE;gBACZ,MAAMmC,uBAAuBD;gBAC7B,IACIxB,AAAwC,UAAxCA,MAAM,OAAO,CAACyB,yBACdA,AAAgC,MAAhCA,qBAAqB,MAAM,EAE3B,OAAO,EAAE;gBAGb,MAAMC,iBAAiBD,qBAAqB,MAAM,CAC9C,CAACE,YAAYC;oBACT,IAAKD,UAAU,CAACC,IAAI,OAAO,CAAC,EAErB;wBAAA,IAAID,AAAkD,SAAlDA,UAAU,CAACC,IAAI,OAAO,CAAC,CAAC,QAAQ,CAACA,IAAI,OAAO,GACnD,OAAOD;oBACX,OAHIA,UAAU,CAACC,IAAI,OAAO,CAAC,GAAG,EAAE;oBAIhCD,UAAU,CAACC,IAAI,OAAO,CAAC,CAAC,IAAI,CAACA,IAAI,OAAO;oBACxC,OAAOD;gBACX,GACA,CAAC;gBAGL,MAAME,UAAUC,OAAO,IAAI,CAACJ,gBAAgB,GAAG,CAAC,OAAMpB;oBAClD,MAAMyB,SAASL,cAAc,CAACpB,QAAQ;oBACtC,MAAM0B,cAAc,MAAM7B,SAAS,OAAO,CAACG;oBAC3C,MAAMjB,QAAQ2C,YAAY,KAAK;oBAE/B,IAAIpC;oBACJ,IAAIqB,IAAI,IAAI,EAAE;wBACV,MAAMgB,qBAAqB,MAAMb,kBAAkB,OAAO,CAAC/B,OAAO0C;wBAClEnC,UAAUqC,mBAAmB,KAAK;oBACtC,OAAO;wBACH,MAAMC,mBAAmB,MAAMZ,eAAe,OAAO,CAACjC,OAAO0C;wBAC7DnC,UAAUsC,iBAAiB,KAAK;oBACpC;oBACA,OAAOvC,eAAeC,SAASK,kBAAkB,GAAG,CAACK;gBACzD;gBAEA,MAAM6B,aAAa,MAAMC,QAAQ,GAAG,CAACP,SAAS,IAAI,CAAC,CAACQ,UACzCA,QAAQ,MAAM,CAAC,CAACC,QAAQxC,OACpBwC,OAAO,MAAM,CAACxC,OACtB,EAAE;gBAGT,OAAO2B,qBACF,GAAG,CAACc,CAAAA,IACMJ,WAAW,IAAI,CAACP,CAAAA,MAAOA,IAAI,OAAO,KAAKW,EAAE,OAAO,GAE1D,MAAM,CAACC;YAChB;YAEA,MAAMC,QAAQjB;YACd,MAAMQ,cAAc,MAAM7B,SAAS,OAAO,CAACsC,MAAM,OAAO;YACxD,MAAMpD,QAAQ2C,YAAY,KAAK;YAE/B,IAAIU;YACJ,IAAIzB,IAAI,IAAI,EAAE;gBACV,MAAM0B,uBAAuB,MAAMvB,kBAAkB,OAAO,CAAC/B,OAAO;oBAChEoD,MAAM,OAAO;iBAChB;gBACDC,YAAYC,qBAAqB,KAAK;YAC1C,OAAO;gBACH,MAAMC,oBAAoB,MAAMtB,eAAe,OAAO,CAACjC,OAAO;oBAACoD,MAAM,OAAO;iBAAC;gBAC7EC,YAAYE,kBAAkB,KAAK;YACvC;YAEA,IAAI,CAACF,aAAaA,AAAqB,MAArBA,UAAU,MAAM,EAC9B,OAAO;YAEX,OAAO;gBACH,GAAGA,SAAS,CAAC,EAAE;gBACf,YAAYzC,kBAAkB,GAAG,CAACwC,MAAM,OAAO;YACnD;QACJ;IACJ;IAEO,eAAoD;QACvD,OAAO;YACH,UAAU/C;YACV,WAAW,CAAC;QAChB;IACJ;AACJ;AAEA,MAAMmD;IACK,gBAAgB,EAAEvD,KAAK,EAA0C,EAAU;QAC9E,IAAIA,MAAM,IAAI,EACV,OAAO,GAAGA,MAAM,OAAO,CAAC,aAAa,CAAC;QAE1C,OAAO,GAAGA,MAAM,OAAO,CAAC,UAAU,CAAC;IACvC;IAEO,iBAAiB,EAAEA,KAAK,EAA0C,EAAU;QAC/E,OAAOwD,wBAAwBxD,OAAO;IAC1C;IAEO,kBAAkB,EAAEA,KAAK,EAA4C,EAAU;QAClF,OAAOE,kBAAkBF,MAAM,OAAO;IAC1C;IAEO,eAAoD;QACvD,OAAO;YACH,UAAwB,CAAC;;;;;;;;;;;;gBAYrB,EAAEI,yBAAyB;YAC/B,CAAC;YACD,WAAW;gBACP,UAAU;oBACN,SAAS,CAACoB;wBACN,MAAM,EAAEiC,EAAE,EAAE,GAAGC,gBAAgBlC,OAAO,OAAO,IAAIA,OAAO,EAAE;wBAC1D,OAAOiC;oBACX;oBACA,IAAI,CAACjC,SACMA,OAAO,EAAE,IAAIA,OAAO,OAAO;gBAE1C;YACJ;QACJ;IACJ;AACJ;AAEA,MAAMmC;IASK,aAA6C;QAChD,OAAO,IAAI,CAAC,IAAI;IACpB;IAEO,eAAiD;QACpD,OAAO,IAAI,CAAC,MAAM;IACtB;;aAdgB,IAAI,GAAG,IAAIxC;aACX,MAAM,GAAG,IAAIoC;aAEb,SAAS,GAAsB;aAC/B,YAAY,GAAY;aACxB,UAAU,GAAY;aACtB,oBAAoB,GAAY;;AASpD;AAEO,MAAMK,oBAAoBC,uBAAuB,oBAAoB,CAAC;IACzE,gBAAgBF;IAChB,cAAc,EAAE;AACpB"}
1
+ {"version":3,"file":"features/graphql/fields/base/RefToGraphQL.js","sources":["../../../../../src/features/graphql/fields/base/RefToGraphQL.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport { CmsModelFieldToGraphQL } from \"../abstractions/CmsModelFieldToGraphQL.js\";\nimport type {\n CmsContext,\n CmsEntry,\n CmsModel,\n CmsModelField,\n CmsModelFieldType,\n CmsModelFieldDefinition\n} from \"~/types/index.js\";\nimport type { GraphQLSchemaDefinition } from \"@webiny/handler-graphql/types.js\";\nimport { createTypeName } from \"~/utils/createTypeName.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { createGraphQLInputField } from \"./utils/createGraphQLInputField.js\";\nimport { GetModelUseCase } from \"~/features/contentModel/GetModel/index.js\";\nimport { GetPublishedEntriesByIdsUseCase } from \"~/features/contentEntry/GetPublishedEntriesByIds/index.js\";\nimport { GetLatestEntriesByIdsUseCase } from \"~/features/contentEntry/GetLatestEntriesByIds/index.js\";\nimport { Logger } from \"@webiny/api-core/exports/api/logger.js\";\n\ninterface RefFieldValue {\n /**\n * `id` is optional for backwards compatibility with records created before this property was introduced.\n */\n id?: string;\n entryId: string;\n modelId: string;\n}\n\nconst createUnionTypeName = (model: CmsModel, field: CmsModelField) => {\n return `${model.singularApiName}_${createTypeName(field.fieldId)}`;\n};\n\nconst createListFilters = (fieldId: string): string => {\n return `\n ${fieldId}: RefFieldWhereInput\n `;\n};\n\nconst createFilteringTypeDef = () => {\n return `\n input RefFieldWhereInput {\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 modelId: String\n modelId_not: String\n modelId_in: [String!]\n modelId_not_in: [String!]\n }\n `;\n};\n\nconst appendTypename = (entries: CmsEntry[], typename: string): CmsEntry[] => {\n return entries.map(item => {\n return {\n ...item,\n __typename: typename\n };\n });\n};\n\nconst getFieldModels = (field: CmsModelField): Pick<CmsModel, \"modelId\">[] => {\n if (!field.settings || Array.isArray(field.settings.models) === false) {\n return [];\n }\n return field.settings.models as Pick<CmsModel, \"modelId\">[];\n};\n\nconst modelIdToTypeName = new Map<string, string>();\n\ninterface GetModelParams {\n models: CmsModel[];\n modelId: string;\n}\n\nconst getModel = (params: GetModelParams): CmsModel => {\n const { models, modelId } = params;\n const model = models.find(item => item.modelId === modelId);\n if (model) {\n return model;\n }\n throw new WebinyError(\n `Could not find model with ID \"${modelId}\" in the list of models.`,\n \"MODEL_NOT_FOUND\",\n { modelId }\n );\n};\n\nconst getModelSingularApiName = (params: GetModelParams): string => {\n return getModel(params).singularApiName;\n};\n\nclass ReadApi implements CmsModelFieldToGraphQL.ReadApi {\n public createTypeField({\n model,\n field,\n models\n }: CmsModelFieldToGraphQL.TypeFieldParams): CmsModelFieldDefinition {\n const fieldModels = field.settings?.models || [];\n const gqlType =\n fieldModels.length > 1\n ? createUnionTypeName(model, field)\n : getModelSingularApiName({ models, modelId: fieldModels[0].modelId });\n const typeDefs =\n fieldModels.length > 1\n ? `union ${gqlType} = ${getFieldModels(field)\n .map(({ modelId }) => getModelSingularApiName({ models, modelId }))\n .join(\" | \")}`\n : \"\";\n\n return {\n fields:\n field.fieldId +\n `(populate: Boolean = true): ${field.list ? `[${gqlType}!]` : gqlType}`,\n typeDefs\n };\n }\n\n public createListFilters({ field }: CmsModelFieldToGraphQL.ListFiltersParams): string {\n return createListFilters(field.fieldId);\n }\n\n public createResolver({\n field,\n models\n }: CmsModelFieldToGraphQL.ResolverParams): CmsModelFieldToGraphQL.Resolver {\n const fieldModels = field.settings?.models || [];\n for (const item of fieldModels) {\n modelIdToTypeName.set(\n item.modelId,\n getModelSingularApiName({ models, modelId: item.modelId })\n );\n }\n\n const getValue = (parent: any): RefFieldValue | RefFieldValue[] => {\n if (parent.values) {\n return parent.values[field.fieldId];\n }\n return parent[field.fieldId];\n };\n\n /* @ts-expect-error Mixed return types for createResolver. */\n return async (parent: CmsEntry, args: any, context: CmsContext) => {\n const { cms, container } = context;\n\n const getModel = container.resolve(GetModelUseCase);\n const getPublishedByIds = container.resolve(GetPublishedEntriesByIdsUseCase);\n const getLatestByIds = container.resolve(GetLatestEntriesByIdsUseCase);\n const logger = container.resolve(Logger);\n\n const initialValue = getValue(parent);\n\n if (!initialValue) {\n return null;\n }\n if (args.populate === false) {\n return initialValue;\n }\n\n if (field.list) {\n const referenceFieldValues = initialValue as RefFieldValue[];\n if (\n Array.isArray(referenceFieldValues) === false ||\n referenceFieldValues.length === 0\n ) {\n return [];\n }\n\n const entriesByModel = referenceFieldValues.reduce<Record<string, string[]>>(\n (collection, ref) => {\n if (!collection[ref.modelId]) {\n collection[ref.modelId] = [];\n } else if (collection[ref.modelId].includes(ref.entryId) === true) {\n return collection;\n }\n collection[ref.modelId].push(ref.entryId);\n return collection;\n },\n {}\n );\n\n const getters = Object.keys(entriesByModel).map(async modelId => {\n const idList = entriesByModel[modelId];\n const modelResult = await getModel.execute(modelId);\n if (modelResult.isFail()) {\n logger.error(modelResult.error);\n return [];\n }\n const model = modelResult.value;\n\n let entries: CmsEntry[] = [];\n if (cms.READ) {\n const getPublishedResult = await getPublishedByIds.execute(model, idList);\n if (getPublishedResult.isOk()) {\n entries = getPublishedResult.value;\n }\n } else {\n const latestByIdsResult = await getLatestByIds.execute(model, idList);\n if (latestByIdsResult.isOk()) {\n entries = latestByIdsResult.value;\n }\n }\n return appendTypename(entries, modelIdToTypeName.get(modelId)!);\n });\n\n const references = await Promise.all(getters).then((results: CmsEntry[][]) => {\n return results.reduce((result, item) => {\n return result.concat(item);\n }, []);\n });\n\n return referenceFieldValues\n .map(v => {\n return references.find(ref => ref.entryId === v.entryId);\n })\n .filter(Boolean);\n }\n\n const value = initialValue as RefFieldValue;\n const modelResult = await getModel.execute(value.modelId);\n if (modelResult.isFail()) {\n logger.error(modelResult.error);\n return null;\n }\n const model = modelResult.value;\n\n let revisions: CmsEntry[] = [];\n if (cms.READ) {\n const publishedByIdsResult = await getPublishedByIds.execute(model, [\n value.entryId\n ]);\n if (publishedByIdsResult.isOk()) {\n revisions = publishedByIdsResult.value;\n }\n } else {\n const latestByIdsResult = await getLatestByIds.execute(model, [value.entryId]);\n if (latestByIdsResult.isOk()) {\n revisions = latestByIdsResult.value;\n }\n }\n\n if (!revisions || revisions.length === 0) {\n return null;\n }\n return {\n ...revisions[0],\n __typename: modelIdToTypeName.get(value.modelId)\n };\n };\n }\n\n public createSchema(): GraphQLSchemaDefinition<CmsContext> {\n return {\n typeDefs: createFilteringTypeDef(),\n resolvers: {}\n };\n }\n}\n\nclass ManageApi implements CmsModelFieldToGraphQL.ManageApi {\n public createTypeField({ field }: CmsModelFieldToGraphQL.TypeFieldParams): string {\n if (field.list) {\n return `${field.fieldId}: [RefField!]`;\n }\n return `${field.fieldId}: RefField`;\n }\n\n public createInputField({ field }: CmsModelFieldToGraphQL.TypeFieldParams): string {\n return createGraphQLInputField(field, \"RefFieldInput\");\n }\n\n public createListFilters({ field }: CmsModelFieldToGraphQL.ListFiltersParams): string {\n return createListFilters(field.fieldId);\n }\n\n public createSchema(): GraphQLSchemaDefinition<CmsContext> {\n return {\n typeDefs: /* GraphQL */ `\n type RefField {\n modelId: String!\n entryId: ID!\n id: ID!\n }\n\n input RefFieldInput {\n modelId: String!\n id: RevisionId!\n }\n\n ${createFilteringTypeDef()}\n `,\n resolvers: {\n RefField: {\n entryId: (parent: RefFieldValue) => {\n const { id } = parseIdentifier(parent.entryId || parent.id);\n return id;\n },\n id: (parent: RefFieldValue) => {\n return parent.id || parent.entryId;\n }\n }\n }\n };\n }\n}\n\nclass RefToGraphQL implements CmsModelFieldToGraphQL.Interface {\n public readonly read = new ReadApi();\n public readonly manage = new ManageApi();\n\n public readonly fieldType: CmsModelFieldType = \"ref\";\n public readonly isSearchable: boolean = true;\n public readonly isSortable: boolean = false;\n public readonly isFullTextSearchable: boolean = false;\n\n public getReadApi(): CmsModelFieldToGraphQL.ReadApi {\n return this.read;\n }\n\n public getManageApi(): CmsModelFieldToGraphQL.ManageApi {\n return this.manage;\n }\n}\n\nexport const RefFieldToGraphQL = CmsModelFieldToGraphQL.createImplementation({\n implementation: RefToGraphQL,\n dependencies: []\n});\n"],"names":["createUnionTypeName","model","field","createTypeName","createListFilters","fieldId","createFilteringTypeDef","appendTypename","entries","typename","item","getFieldModels","Array","modelIdToTypeName","Map","getModel","params","models","modelId","WebinyError","getModelSingularApiName","ReadApi","fieldModels","gqlType","typeDefs","getValue","parent","args","context","cms","container","GetModelUseCase","getPublishedByIds","GetPublishedEntriesByIdsUseCase","getLatestByIds","GetLatestEntriesByIdsUseCase","logger","Logger","initialValue","referenceFieldValues","entriesByModel","collection","ref","getters","Object","idList","modelResult","getPublishedResult","latestByIdsResult","references","Promise","results","result","v","Boolean","value","revisions","publishedByIdsResult","ManageApi","createGraphQLInputField","id","parseIdentifier","RefToGraphQL","RefFieldToGraphQL","CmsModelFieldToGraphQL"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-headless-cms",
3
- "version": "6.4.9",
3
+ "version": "6.4.10-beta.1",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -25,19 +25,19 @@
25
25
  "@babel/code-frame": "8.0.0",
26
26
  "@graphql-tools/merge": "9.2.0",
27
27
  "@graphql-tools/schema": "10.0.36",
28
- "@webiny/api": "6.4.9",
29
- "@webiny/api-core": "6.4.9",
28
+ "@webiny/api": "6.4.10-beta.1",
29
+ "@webiny/api-core": "6.4.10-beta.1",
30
30
  "@webiny/di": "1.0.2",
31
- "@webiny/error": "6.4.9",
32
- "@webiny/feature": "6.4.9",
33
- "@webiny/handler": "6.4.9",
34
- "@webiny/handler-aws": "6.4.9",
35
- "@webiny/handler-db": "6.4.9",
36
- "@webiny/handler-graphql": "6.4.9",
37
- "@webiny/plugins": "6.4.9",
38
- "@webiny/project": "6.4.9",
39
- "@webiny/utils": "6.4.9",
40
- "@webiny/validation": "6.4.9",
31
+ "@webiny/error": "6.4.10-beta.1",
32
+ "@webiny/feature": "6.4.10-beta.1",
33
+ "@webiny/handler": "6.4.10-beta.1",
34
+ "@webiny/handler-aws": "6.4.10-beta.1",
35
+ "@webiny/handler-db": "6.4.10-beta.1",
36
+ "@webiny/handler-graphql": "6.4.10-beta.1",
37
+ "@webiny/plugins": "6.4.10-beta.1",
38
+ "@webiny/project": "6.4.10-beta.1",
39
+ "@webiny/utils": "6.4.10-beta.1",
40
+ "@webiny/validation": "6.4.10-beta.1",
41
41
  "dot-prop-immutable": "2.1.1",
42
42
  "graphql": "16.14.2",
43
43
  "graphql-tag": "2.12.7",
@@ -51,13 +51,13 @@
51
51
  "devDependencies": {
52
52
  "@types/babel__code-frame": "7.27.0",
53
53
  "@types/pluralize": "0.0.33",
54
- "@webiny/aws-sdk": "6.4.9",
55
- "@webiny/build-tools": "6.4.9",
56
- "@webiny/db-dynamodb": "6.4.9",
57
- "@webiny/handler-db": "6.4.9",
58
- "@webiny/project-utils": "6.4.9",
59
- "@webiny/sdk": "6.4.9",
60
- "@webiny/wcp": "6.4.9",
54
+ "@webiny/aws-sdk": "6.4.10-beta.1",
55
+ "@webiny/build-tools": "6.4.10-beta.1",
56
+ "@webiny/db-dynamodb": "6.4.10-beta.1",
57
+ "@webiny/handler-db": "6.4.10-beta.1",
58
+ "@webiny/project-utils": "6.4.10-beta.1",
59
+ "@webiny/sdk": "6.4.10-beta.1",
60
+ "@webiny/wcp": "6.4.10-beta.1",
61
61
  "apollo-graphql": "0.9.7",
62
62
  "graphql": "16.14.2",
63
63
  "oxfmt": "0.58.0",