@webiny/api-headless-cms 5.40.0-beta.5 → 5.40.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.
Files changed (43) hide show
  1. package/constants.d.ts +4 -3
  2. package/constants.js +14 -8
  3. package/constants.js.map +1 -1
  4. package/crud/contentEntry/referenceFieldsMapping.js +1 -1
  5. package/crud/contentEntry/referenceFieldsMapping.js.map +1 -1
  6. package/crud/contentModel/validateStorageId.js +1 -11
  7. package/crud/contentModel/validateStorageId.js.map +1 -1
  8. package/crud/contentModel/validation.d.ts +21 -21
  9. package/crud/contentModel/validation.js +1 -1
  10. package/crud/contentModel/validation.js.map +1 -1
  11. package/graphql/getSchema/generateCacheId.d.ts +10 -0
  12. package/graphql/getSchema/generateCacheId.js +17 -0
  13. package/graphql/getSchema/generateCacheId.js.map +1 -0
  14. package/graphql/getSchema/generateCacheKey.d.ts +10 -0
  15. package/graphql/getSchema/generateCacheKey.js +34 -0
  16. package/graphql/getSchema/generateCacheKey.js.map +1 -0
  17. package/graphql/getSchema.js +4 -43
  18. package/graphql/getSchema.js.map +1 -1
  19. package/graphql/scalars/RevisionId.d.ts +2 -0
  20. package/graphql/scalars/RevisionId.js +26 -0
  21. package/graphql/scalars/RevisionId.js.map +1 -0
  22. package/graphql/scalars/RevisionIdScalarPlugin.d.ts +2 -0
  23. package/graphql/scalars/RevisionIdScalarPlugin.js +18 -0
  24. package/graphql/scalars/RevisionIdScalarPlugin.js.map +1 -0
  25. package/graphql/schema/contentEntries.js +1 -2
  26. package/graphql/schema/contentEntries.js.map +1 -1
  27. package/graphql/schema/contentModels.js +11 -0
  28. package/graphql/schema/contentModels.js.map +1 -1
  29. package/graphql/schema/createManageResolvers.js +1 -1
  30. package/graphql/schema/createManageResolvers.js.map +1 -1
  31. package/graphql/schema/createManageSDL.js +4 -2
  32. package/graphql/schema/createManageSDL.js.map +1 -1
  33. package/graphql/schema/createReadSDL.js +6 -4
  34. package/graphql/schema/createReadSDL.js.map +1 -1
  35. package/graphqlFields/ref.js +1 -1
  36. package/graphqlFields/ref.js.map +1 -1
  37. package/index.js +2 -1
  38. package/index.js.map +1 -1
  39. package/package.json +21 -19
  40. package/types/modelField.d.ts +4 -0
  41. package/types/modelField.js.map +1 -1
  42. package/types/types.d.ts +14 -1
  43. package/types/types.js.map +1 -1
@@ -47,10 +47,9 @@ const createReadSDL = ({
47
47
  singularApiName: singularName,
48
48
  pluralApiName: pluralName
49
49
  } = model;
50
- const onByMetaFields = _constants.ENTRY_META_FIELDS.map(field => {
51
- const isNullable = (0, _constants.isNullableEntryMetaField)(field) ? "" : "!";
50
+ const onByMetaGqlFields = _constants.ENTRY_META_FIELDS.map(field => {
52
51
  const fieldType = (0, _constants.isDateTimeEntryMetaField)(field) ? "DateTime" : "CmsIdentity";
53
- return `${field}: ${fieldType}${isNullable}`;
52
+ return `${field}: ${fieldType}`;
54
53
  }).join("\n");
55
54
  return `
56
55
  """${model.description || singularName}"""
@@ -59,7 +58,10 @@ const createReadSDL = ({
59
58
  entryId: String!
60
59
  ${hasModelIdField ? "" : "modelId: String!"}
61
60
 
62
- ${onByMetaFields}
61
+ ${onByMetaGqlFields}
62
+
63
+ publishedOn: DateTime @deprecated(reason: "Field was removed with the 5.39.0 release. Use 'firstPublishedOn' or 'lastPublishedOn' field.")
64
+ ownedBy: CmsIdentity @deprecated(reason: "Field was removed with the 5.39.0 release. Use 'createdBy' field.")
63
65
 
64
66
  ${fieldsRender.map(f => f.fields).join("\n")}
65
67
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_renderListFilterFields","require","_renderSortEnum","_renderFields","_renderGetFilterFields","_constants","createReadSDL","models","model","fieldTypePlugins","sorterPlugins","type","fieldsRender","renderFields","fields","length","listFilterFieldsRender","renderListFilterFields","sortEnumRender","renderSortEnum","getFilterFieldsRender","renderGetFilterFields","hasModelIdField","some","f","fieldId","singularApiName","singularName","pluralApiName","pluralName","onByMetaFields","ENTRY_META_FIELDS","map","field","isNullable","isNullableEntryMetaField","fieldType","isDateTimeEntryMetaField","join","description","typeDefs","filter","Boolean","exports"],"sources":["createReadSDL.ts"],"sourcesContent":["import { CmsModel, CmsFieldTypePlugins, ApiEndpoint } from \"~/types\";\nimport { renderListFilterFields } from \"~/utils/renderListFilterFields\";\nimport { renderSortEnum } from \"~/utils/renderSortEnum\";\nimport { renderFields } from \"~/utils/renderFields\";\nimport { renderGetFilterFields } from \"~/utils/renderGetFilterFields\";\nimport { CmsGraphQLSchemaSorterPlugin } from \"~/plugins\";\nimport { ENTRY_META_FIELDS, isDateTimeEntryMetaField, isNullableEntryMetaField } from \"~/constants\";\n\ninterface CreateReadSDLParams {\n models: CmsModel[];\n model: CmsModel;\n fieldTypePlugins: CmsFieldTypePlugins;\n sorterPlugins: CmsGraphQLSchemaSorterPlugin[];\n}\n\ninterface CreateReadSDL {\n (params: CreateReadSDLParams): string;\n}\n\nexport const createReadSDL: CreateReadSDL = ({\n models,\n model,\n fieldTypePlugins,\n sorterPlugins\n}): string => {\n const type: ApiEndpoint = \"read\";\n\n const fieldsRender = renderFields({\n models,\n model,\n fields: model.fields,\n type,\n fieldTypePlugins\n });\n\n if (fieldsRender.length === 0) {\n return \"\";\n }\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type,\n fieldTypePlugins\n });\n const sortEnumRender = renderSortEnum({\n model,\n fields: model.fields,\n fieldTypePlugins,\n sorterPlugins\n });\n const getFilterFieldsRender = renderGetFilterFields({\n fields: model.fields,\n fieldTypePlugins\n });\n\n const hasModelIdField = model.fields.some(f => f.fieldId === \"modelId\");\n\n const { singularApiName: singularName, pluralApiName: pluralName } = model;\n\n const onByMetaFields = ENTRY_META_FIELDS.map(field => {\n const isNullable = isNullableEntryMetaField(field) ? \"\" : \"!\";\n const fieldType = isDateTimeEntryMetaField(field) ? \"DateTime\" : \"CmsIdentity\";\n\n return `${field}: ${fieldType}${isNullable}`;\n }).join(\"\\n\");\n\n return `\n \"\"\"${model.description || singularName}\"\"\"\n type ${singularName} {\n id: ID!\n entryId: String!\n ${hasModelIdField ? \"\" : \"modelId: String!\"}\n \n ${onByMetaFields} \n \n ${fieldsRender.map(f => f.fields).join(\"\\n\")}\n }\n \n ${fieldsRender\n .map(f => f.typeDefs)\n .filter(Boolean)\n .join(\"\\n\")}\n \n input ${singularName}GetWhereInput {\n ${getFilterFieldsRender}\n }\n \n \n input ${singularName}ListWhereInput {\n ${listFilterFieldsRender}\n AND: [${singularName}ListWhereInput!]\n OR: [${singularName}ListWhereInput!]\n }\n \n \n enum ${singularName}ListSorter {\n ${sortEnumRender}\n }\n \n type ${singularName}Response {\n data: ${singularName}\n error: CmsError\n }\n \n type ${singularName}ListResponse {\n data: [${singularName}]\n meta: CmsListMeta\n error: CmsError\n }\n \n extend type Query {\n get${singularName}(where: ${singularName}GetWhereInput!): ${singularName}Response\n\n list${pluralName}(\n where: ${singularName}ListWhereInput\n sort: [${singularName}ListSorter]\n limit: Int\n after: String\n search: String\n ): ${singularName}ListResponse\n }\n `;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_renderListFilterFields","require","_renderSortEnum","_renderFields","_renderGetFilterFields","_constants","createReadSDL","models","model","fieldTypePlugins","sorterPlugins","type","fieldsRender","renderFields","fields","length","listFilterFieldsRender","renderListFilterFields","sortEnumRender","renderSortEnum","getFilterFieldsRender","renderGetFilterFields","hasModelIdField","some","f","fieldId","singularApiName","singularName","pluralApiName","pluralName","onByMetaGqlFields","ENTRY_META_FIELDS","map","field","fieldType","isDateTimeEntryMetaField","join","description","typeDefs","filter","Boolean","exports"],"sources":["createReadSDL.ts"],"sourcesContent":["import { CmsModel, CmsFieldTypePlugins, ApiEndpoint } from \"~/types\";\nimport { renderListFilterFields } from \"~/utils/renderListFilterFields\";\nimport { renderSortEnum } from \"~/utils/renderSortEnum\";\nimport { renderFields } from \"~/utils/renderFields\";\nimport { renderGetFilterFields } from \"~/utils/renderGetFilterFields\";\nimport { CmsGraphQLSchemaSorterPlugin } from \"~/plugins\";\nimport { ENTRY_META_FIELDS, isDateTimeEntryMetaField } from \"~/constants\";\n\ninterface CreateReadSDLParams {\n models: CmsModel[];\n model: CmsModel;\n fieldTypePlugins: CmsFieldTypePlugins;\n sorterPlugins: CmsGraphQLSchemaSorterPlugin[];\n}\n\ninterface CreateReadSDL {\n (params: CreateReadSDLParams): string;\n}\n\nexport const createReadSDL: CreateReadSDL = ({\n models,\n model,\n fieldTypePlugins,\n sorterPlugins\n}): string => {\n const type: ApiEndpoint = \"read\";\n\n const fieldsRender = renderFields({\n models,\n model,\n fields: model.fields,\n type,\n fieldTypePlugins\n });\n\n if (fieldsRender.length === 0) {\n return \"\";\n }\n const listFilterFieldsRender = renderListFilterFields({\n model,\n fields: model.fields,\n type,\n fieldTypePlugins\n });\n const sortEnumRender = renderSortEnum({\n model,\n fields: model.fields,\n fieldTypePlugins,\n sorterPlugins\n });\n const getFilterFieldsRender = renderGetFilterFields({\n fields: model.fields,\n fieldTypePlugins\n });\n\n const hasModelIdField = model.fields.some(f => f.fieldId === \"modelId\");\n\n const { singularApiName: singularName, pluralApiName: pluralName } = model;\n\n const onByMetaGqlFields = ENTRY_META_FIELDS.map(field => {\n const fieldType = isDateTimeEntryMetaField(field) ? \"DateTime\" : \"CmsIdentity\";\n\n return `${field}: ${fieldType}`;\n }).join(\"\\n\");\n\n return `\n \"\"\"${model.description || singularName}\"\"\"\n type ${singularName} {\n id: ID!\n entryId: String!\n ${hasModelIdField ? \"\" : \"modelId: String!\"}\n \n ${onByMetaGqlFields} \n \n publishedOn: DateTime @deprecated(reason: \"Field was removed with the 5.39.0 release. Use 'firstPublishedOn' or 'lastPublishedOn' field.\")\n ownedBy: CmsIdentity @deprecated(reason: \"Field was removed with the 5.39.0 release. Use 'createdBy' field.\")\n \n ${fieldsRender.map(f => f.fields).join(\"\\n\")}\n }\n \n ${fieldsRender\n .map(f => f.typeDefs)\n .filter(Boolean)\n .join(\"\\n\")}\n \n input ${singularName}GetWhereInput {\n ${getFilterFieldsRender}\n }\n \n \n input ${singularName}ListWhereInput {\n ${listFilterFieldsRender}\n AND: [${singularName}ListWhereInput!]\n OR: [${singularName}ListWhereInput!]\n }\n \n \n enum ${singularName}ListSorter {\n ${sortEnumRender}\n }\n \n type ${singularName}Response {\n data: ${singularName}\n error: CmsError\n }\n \n type ${singularName}ListResponse {\n data: [${singularName}]\n meta: CmsListMeta\n error: CmsError\n }\n \n extend type Query {\n get${singularName}(where: ${singularName}GetWhereInput!): ${singularName}Response\n\n list${pluralName}(\n where: ${singularName}ListWhereInput\n sort: [${singularName}ListSorter]\n limit: Int\n after: String\n search: String\n ): ${singularName}ListResponse\n }\n `;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -225,7 +225,7 @@ const createRefField = () => {
225
225
 
226
226
  input RefFieldInput {
227
227
  modelId: String!
228
- id: ID!
228
+ id: RevisionId!
229
229
  }
230
230
 
231
231
  ${createFilteringTypeDef()}
@@ -1 +1 @@
1
- {"version":3,"names":["_error","_interopRequireDefault","require","_createTypeName","_utils","_helpers","createUnionTypeName","model","field","singularApiName","createTypeName","fieldId","createListFilters","createFilteringTypeDef","appendTypename","entries","typename","map","item","__typename","getFieldModels","settings","Array","isArray","models","modelIdToTypeName","Map","getModel","params","modelId","find","WebinyError","getModelSingularApiName","createRefField","name","type","fieldType","isSortable","isSearchable","read","createTypeField","fieldModels","gqlType","length","typeDefs","join","fields","multipleValues","createResolver","set","parent","args","context","cms","initialValue","populate","referenceFieldValues","entriesByModel","reduce","collection","ref","includes","entryId","push","getters","Object","keys","idList","getEntryManager","READ","getPublishedByIds","getLatestByIds","get","references","Promise","all","then","results","result","concat","v","filter","Boolean","value","revisions","createSchema","resolvers","manage","RefField","id","parseIdentifier","createInputField","createGraphQLInputField","exports"],"sources":["ref.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsEntry,\n CmsModel,\n CmsModelField,\n CmsModelFieldToGraphQLPlugin\n} from \"~/types\";\nimport { createTypeName } from \"~/utils/createTypeName\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { createGraphQLInputField } from \"./helpers\";\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\ninterface CreateListFilterParams {\n field: CmsModelField;\n}\n\nconst createListFilters = ({ field }: CreateListFilterParams) => {\n return `\n ${field.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 }\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/**\n * We cast settings.models as object to have modelId because internally we know that it is so.\n * Internal stuff so we are sure that settings.models contains what we require.\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();\n\ninterface GetModelParams {\n models: CmsModel[];\n modelId: string;\n}\n\nconst getModel = (params: GetModelParams): CmsModel => {\n const { models, modelId } = params;\n\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 {\n modelId\n }\n );\n};\n\nconst getModelSingularApiName = (params: GetModelParams): string => {\n const model = getModel(params);\n\n return model.singularApiName;\n};\n\nexport const createRefField = (): CmsModelFieldToGraphQLPlugin => {\n return {\n name: \"cms-model-field-to-graphql-ref\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"ref\",\n isSortable: false,\n isSearchable: true,\n read: {\n createTypeField({ model, field, models }) {\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 }) =>\n getModelSingularApiName({\n models,\n modelId\n })\n )\n .join(\" | \")}`\n : \"\";\n\n return {\n fields:\n field.fieldId +\n `(populate: Boolean = true): ${\n field.multipleValues ? `[${gqlType}!]` : gqlType\n }`,\n typeDefs\n };\n },\n /**\n * TS is complaining about mixed types for createResolver.\n * TODO @ts-refactor @pavel Maybe we should have a single createResolver method?\n */\n // @ts-expect-error\n createResolver({ field, models }) {\n // Create a map of model types and corresponding modelIds so resolvers don't need to perform the lookup.\n const fieldModels = field.settings?.models || [];\n for (const item of fieldModels) {\n modelIdToTypeName.set(\n item.modelId,\n getModelSingularApiName({\n models,\n modelId: item.modelId\n })\n );\n }\n\n return async (parent, args, context: CmsContext) => {\n const { cms } = context;\n\n // Get field value for this entry\n const initialValue = parent[field.fieldId] as RefFieldValue | RefFieldValue[];\n\n if (!initialValue) {\n return null;\n }\n if (args.populate === false) {\n return initialValue;\n }\n\n if (field.multipleValues) {\n /**\n * We cast because value really can be array and single value.\n * At this point, we are 99% sure that it is an array (+ we check for it)\n */\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((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\n collection[ref.modelId].push(ref.entryId);\n\n return collection;\n }, {} as Record<string, string[]>);\n\n const getters = Object.keys(entriesByModel).map(async modelId => {\n const idList = entriesByModel[modelId];\n // Get model manager, to get access to CRUD methods\n const model = await cms.getEntryManager(modelId);\n\n let entries: CmsEntry[];\n // `read` API works with `published` data\n if (cms.READ) {\n entries = await model.getPublishedByIds(idList);\n }\n // `preview` and `manage` with `latest` data\n else {\n entries = await model.getLatestByIds(idList);\n }\n return appendTypename(entries, modelIdToTypeName.get(modelId));\n });\n\n const references = await Promise.all(getters).then(\n (results: CmsEntry[][]) => {\n return results.reduce((result, item) => {\n return result.concat(item);\n }, []);\n }\n );\n /**\n * We need to return the referenced entries in the same order they are in the ref field.\n * Maybe implement user defined sorting in the future?\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\n // Get model manager, to get access to CRUD methods\n const model = await cms.getEntryManager(value.modelId);\n\n let revisions: CmsEntry[];\n // `read` API works with `published` data\n if (cms.READ) {\n revisions = await model.getPublishedByIds([value.entryId]);\n }\n // `preview` API works with `latest` data\n else {\n revisions = await model.getLatestByIds([value.entryId]);\n }\n\n /**\n * If there are no revisions we must return null.\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 createSchema() {\n return {\n typeDefs: createFilteringTypeDef(),\n resolvers: {}\n };\n },\n createListFilters\n },\n manage: {\n createSchema() {\n /**\n * `entryId` in `RefFieldInput` is deprecated, but we cannot mark it as such in GraphQL.\n * `entryId` is extracted at runtime from the `id` which contains both the `entryId` and revision number.\n * See: `packages/api-headless-cms/src/crud/contentEntry/referenceFieldsMapping.ts`\n */\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: ID!\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 createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [RefField!]`;\n }\n return `${field.fieldId}: RefField`;\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"RefFieldInput\");\n },\n createListFilters\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_error","_interopRequireDefault","require","_createTypeName","_utils","_helpers","createUnionTypeName","model","field","singularApiName","createTypeName","fieldId","createListFilters","createFilteringTypeDef","appendTypename","entries","typename","map","item","__typename","getFieldModels","settings","Array","isArray","models","modelIdToTypeName","Map","getModel","params","modelId","find","WebinyError","getModelSingularApiName","createRefField","name","type","fieldType","isSortable","isSearchable","read","createTypeField","fieldModels","gqlType","length","typeDefs","join","fields","multipleValues","createResolver","set","parent","args","context","cms","initialValue","populate","referenceFieldValues","entriesByModel","reduce","collection","ref","includes","entryId","push","getters","Object","keys","idList","getEntryManager","READ","getPublishedByIds","getLatestByIds","get","references","Promise","all","then","results","result","concat","v","filter","Boolean","value","revisions","createSchema","resolvers","manage","RefField","id","parseIdentifier","createInputField","createGraphQLInputField","exports"],"sources":["ref.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport {\n CmsContext,\n CmsEntry,\n CmsModel,\n CmsModelField,\n CmsModelFieldToGraphQLPlugin\n} from \"~/types\";\nimport { createTypeName } from \"~/utils/createTypeName\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { createGraphQLInputField } from \"./helpers\";\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\ninterface CreateListFilterParams {\n field: CmsModelField;\n}\n\nconst createListFilters = ({ field }: CreateListFilterParams) => {\n return `\n ${field.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 }\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/**\n * We cast settings.models as object to have modelId because internally we know that it is so.\n * Internal stuff so we are sure that settings.models contains what we require.\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();\n\ninterface GetModelParams {\n models: CmsModel[];\n modelId: string;\n}\n\nconst getModel = (params: GetModelParams): CmsModel => {\n const { models, modelId } = params;\n\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 {\n modelId\n }\n );\n};\n\nconst getModelSingularApiName = (params: GetModelParams): string => {\n const model = getModel(params);\n\n return model.singularApiName;\n};\n\nexport const createRefField = (): CmsModelFieldToGraphQLPlugin => {\n return {\n name: \"cms-model-field-to-graphql-ref\",\n type: \"cms-model-field-to-graphql\",\n fieldType: \"ref\",\n isSortable: false,\n isSearchable: true,\n read: {\n createTypeField({ model, field, models }) {\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 }) =>\n getModelSingularApiName({\n models,\n modelId\n })\n )\n .join(\" | \")}`\n : \"\";\n\n return {\n fields:\n field.fieldId +\n `(populate: Boolean = true): ${\n field.multipleValues ? `[${gqlType}!]` : gqlType\n }`,\n typeDefs\n };\n },\n /**\n * TS is complaining about mixed types for createResolver.\n * TODO @ts-refactor @pavel Maybe we should have a single createResolver method?\n */\n // @ts-expect-error\n createResolver({ field, models }) {\n // Create a map of model types and corresponding modelIds so resolvers don't need to perform the lookup.\n const fieldModels = field.settings?.models || [];\n for (const item of fieldModels) {\n modelIdToTypeName.set(\n item.modelId,\n getModelSingularApiName({\n models,\n modelId: item.modelId\n })\n );\n }\n\n return async (parent, args, context: CmsContext) => {\n const { cms } = context;\n\n // Get field value for this entry\n const initialValue = parent[field.fieldId] as RefFieldValue | RefFieldValue[];\n\n if (!initialValue) {\n return null;\n }\n if (args.populate === false) {\n return initialValue;\n }\n\n if (field.multipleValues) {\n /**\n * We cast because value really can be array and single value.\n * At this point, we are 99% sure that it is an array (+ we check for it)\n */\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((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\n collection[ref.modelId].push(ref.entryId);\n\n return collection;\n }, {} as Record<string, string[]>);\n\n const getters = Object.keys(entriesByModel).map(async modelId => {\n const idList = entriesByModel[modelId];\n // Get model manager, to get access to CRUD methods\n const model = await cms.getEntryManager(modelId);\n\n let entries: CmsEntry[];\n // `read` API works with `published` data\n if (cms.READ) {\n entries = await model.getPublishedByIds(idList);\n }\n // `preview` and `manage` with `latest` data\n else {\n entries = await model.getLatestByIds(idList);\n }\n return appendTypename(entries, modelIdToTypeName.get(modelId));\n });\n\n const references = await Promise.all(getters).then(\n (results: CmsEntry[][]) => {\n return results.reduce((result, item) => {\n return result.concat(item);\n }, []);\n }\n );\n /**\n * We need to return the referenced entries in the same order they are in the ref field.\n * Maybe implement user defined sorting in the future?\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\n // Get model manager, to get access to CRUD methods\n const model = await cms.getEntryManager(value.modelId);\n\n let revisions: CmsEntry[];\n // `read` API works with `published` data\n if (cms.READ) {\n revisions = await model.getPublishedByIds([value.entryId]);\n }\n // `preview` API works with `latest` data\n else {\n revisions = await model.getLatestByIds([value.entryId]);\n }\n\n /**\n * If there are no revisions we must return null.\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 createSchema() {\n return {\n typeDefs: createFilteringTypeDef(),\n resolvers: {}\n };\n },\n createListFilters\n },\n manage: {\n createSchema() {\n /**\n * `entryId` in `RefFieldInput` is deprecated, but we cannot mark it as such in GraphQL.\n * `entryId` is extracted at runtime from the `id` which contains both the `entryId` and revision number.\n * See: `packages/api-headless-cms/src/crud/contentEntry/referenceFieldsMapping.ts`\n */\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 createTypeField({ field }) {\n if (field.multipleValues) {\n return `${field.fieldId}: [RefField!]`;\n }\n return `${field.fieldId}: RefField`;\n },\n createInputField({ field }) {\n return createGraphQLInputField(field, \"RefFieldInput\");\n },\n createListFilters\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}
package/index.js CHANGED
@@ -52,6 +52,7 @@ var _fieldConverters = require("./fieldConverters");
52
52
  var _export = require("./export");
53
53
  var _storage = require("./storage");
54
54
  var _createLexicalHTMLRenderer = require("./htmlRenderer/createLexicalHTMLRenderer");
55
+ var _RevisionIdScalarPlugin = require("./graphql/scalars/RevisionIdScalarPlugin");
55
56
  var _isHeadlessCmsReady = require("./utils/isHeadlessCmsReady");
56
57
  Object.keys(_isHeadlessCmsReady).forEach(function (key) {
57
58
  if (key === "default" || key === "__esModule") return;
@@ -125,7 +126,7 @@ Object.keys(_handleRequest).forEach(function (key) {
125
126
  });
126
127
  });
127
128
  const createHeadlessCmsGraphQL = (params = {}) => {
128
- return [
129
+ return [(0, _RevisionIdScalarPlugin.createRevisionIdScalarPlugin)(),
129
130
  /**
130
131
  * PathParameter plugins are used to determine the type of the cms endpoint
131
132
  */
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_graphql","require","_modelManager","_graphqlFields","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_validators","_dynamicZoneStorage","_parameters","_context","_entryStorage","_fieldConverters","_export","_storage","_createLexicalHTMLRenderer","_isHeadlessCmsReady","_createModelField","_plugins","_incrementEntryIdVersion","_RichTextRenderer","_handleRequest","createHeadlessCmsGraphQL","params","createPathParameterPlugin","createHeaderParameterPlugin","createContextParameterPlugin","baseCreateGraphQL","createExportGraphQL","createLexicalHTMLRenderer","createHeadlessCmsContext","createContextPlugin","createDefaultModelManager","createGraphQLFields","createFieldConverters","createValidators","createStorageTransform","createDynamicZoneStorageTransform"],"sources":["index.ts"],"sourcesContent":["import { createGraphQL as baseCreateGraphQL, CreateGraphQLParams } from \"~/graphql\";\nimport { createDefaultModelManager } from \"~/modelManager\";\nimport { createGraphQLFields } from \"~/graphqlFields\";\nimport { createValidators } from \"~/validators\";\nimport { createDynamicZoneStorageTransform } from \"~/graphqlFields/dynamicZone/dynamicZoneStorage\";\nimport {\n createContextParameterPlugin,\n createHeaderParameterPlugin,\n createPathParameterPlugin\n} from \"~/parameters\";\nimport { createContextPlugin, CrudParams } from \"~/context\";\nimport {\n entryFieldFromStorageTransform,\n entryFromStorageTransform,\n entryToStorageTransform\n} from \"./utils/entryStorage\";\nimport { createFieldConverters } from \"~/fieldConverters\";\nimport { createExportGraphQL } from \"~/export\";\nimport { createStorageTransform } from \"~/storage\";\nimport { createLexicalHTMLRenderer } from \"./htmlRenderer/createLexicalHTMLRenderer\";\n\nexport * from \"./utils/isHeadlessCmsReady\";\nexport * from \"./utils/createModelField\";\n\nexport type CreateHeadlessCmsGraphQLParams = CreateGraphQLParams;\nexport const createHeadlessCmsGraphQL = (params: CreateHeadlessCmsGraphQLParams = {}) => {\n return [\n /**\n * PathParameter plugins are used to determine the type of the cms endpoint\n */\n createPathParameterPlugin(),\n createHeaderParameterPlugin(),\n createContextParameterPlugin(),\n /**\n * At this point we can create, or not create, CMS GraphQL Schema.\n */\n ...baseCreateGraphQL(params),\n createExportGraphQL(),\n createLexicalHTMLRenderer()\n ];\n};\n\nexport type ContentContextParams = CrudParams;\nexport const createHeadlessCmsContext = (params: ContentContextParams) => {\n return [\n /**\n * Context for all Lambdas - everything is loaded now.\n */\n createContextPlugin(params),\n createDefaultModelManager(),\n createGraphQLFields(),\n createFieldConverters(),\n createValidators(),\n ...createStorageTransform(),\n createDynamicZoneStorageTransform()\n ];\n};\nexport * from \"~/graphqlFields\";\nexport * from \"~/plugins\";\nexport * from \"~/utils/incrementEntryIdVersion\";\nexport * from \"~/utils/RichTextRenderer\";\nexport * from \"./graphql/handleRequest\";\nexport { entryToStorageTransform, entryFieldFromStorageTransform, entryFromStorageTransform };\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_graphql","require","_modelManager","_graphqlFields","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_validators","_dynamicZoneStorage","_parameters","_context","_entryStorage","_fieldConverters","_export","_storage","_createLexicalHTMLRenderer","_RevisionIdScalarPlugin","_isHeadlessCmsReady","_createModelField","_plugins","_incrementEntryIdVersion","_RichTextRenderer","_handleRequest","createHeadlessCmsGraphQL","params","createRevisionIdScalarPlugin","createPathParameterPlugin","createHeaderParameterPlugin","createContextParameterPlugin","baseCreateGraphQL","createExportGraphQL","createLexicalHTMLRenderer","createHeadlessCmsContext","createContextPlugin","createDefaultModelManager","createGraphQLFields","createFieldConverters","createValidators","createStorageTransform","createDynamicZoneStorageTransform"],"sources":["index.ts"],"sourcesContent":["import { createGraphQL as baseCreateGraphQL, CreateGraphQLParams } from \"~/graphql\";\nimport { createDefaultModelManager } from \"~/modelManager\";\nimport { createGraphQLFields } from \"~/graphqlFields\";\nimport { createValidators } from \"~/validators\";\nimport { createDynamicZoneStorageTransform } from \"~/graphqlFields/dynamicZone/dynamicZoneStorage\";\nimport {\n createContextParameterPlugin,\n createHeaderParameterPlugin,\n createPathParameterPlugin\n} from \"~/parameters\";\nimport { createContextPlugin, CrudParams } from \"~/context\";\nimport {\n entryFieldFromStorageTransform,\n entryFromStorageTransform,\n entryToStorageTransform\n} from \"./utils/entryStorage\";\nimport { createFieldConverters } from \"~/fieldConverters\";\nimport { createExportGraphQL } from \"~/export\";\nimport { createStorageTransform } from \"~/storage\";\nimport { createLexicalHTMLRenderer } from \"./htmlRenderer/createLexicalHTMLRenderer\";\nimport { createRevisionIdScalarPlugin } from \"~/graphql/scalars/RevisionIdScalarPlugin\";\n\nexport * from \"./utils/isHeadlessCmsReady\";\nexport * from \"./utils/createModelField\";\n\nexport type CreateHeadlessCmsGraphQLParams = CreateGraphQLParams;\nexport const createHeadlessCmsGraphQL = (params: CreateHeadlessCmsGraphQLParams = {}) => {\n return [\n createRevisionIdScalarPlugin(),\n /**\n * PathParameter plugins are used to determine the type of the cms endpoint\n */\n createPathParameterPlugin(),\n createHeaderParameterPlugin(),\n createContextParameterPlugin(),\n /**\n * At this point we can create, or not create, CMS GraphQL Schema.\n */\n ...baseCreateGraphQL(params),\n createExportGraphQL(),\n createLexicalHTMLRenderer()\n ];\n};\n\nexport type ContentContextParams = CrudParams;\nexport const createHeadlessCmsContext = (params: ContentContextParams) => {\n return [\n /**\n * Context for all Lambdas - everything is loaded now.\n */\n createContextPlugin(params),\n createDefaultModelManager(),\n createGraphQLFields(),\n createFieldConverters(),\n createValidators(),\n ...createStorageTransform(),\n createDynamicZoneStorageTransform()\n ];\n};\nexport * from \"~/graphqlFields\";\nexport * from \"~/plugins\";\nexport * from \"~/utils/incrementEntryIdVersion\";\nexport * from \"~/utils/RichTextRenderer\";\nexport * from \"./graphql/handleRequest\";\nexport { entryToStorageTransform, entryFieldFromStorageTransform, entryFromStorageTransform };\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/api-headless-cms",
3
- "version": "5.40.0-beta.5",
3
+ "version": "5.40.0",
4
4
  "main": "index.js",
5
5
  "keywords": [
6
6
  "cms:base"
@@ -20,22 +20,23 @@
20
20
  "dependencies": {
21
21
  "@babel/runtime": "7.24.1",
22
22
  "@graphql-tools/schema": "7.1.5",
23
- "@webiny/api": "5.40.0-beta.5",
24
- "@webiny/api-i18n": "5.40.0-beta.5",
25
- "@webiny/api-security": "5.40.0-beta.5",
26
- "@webiny/api-tenancy": "5.40.0-beta.5",
27
- "@webiny/error": "5.40.0-beta.5",
28
- "@webiny/handler": "5.40.0-beta.5",
29
- "@webiny/handler-aws": "5.40.0-beta.5",
30
- "@webiny/handler-db": "5.40.0-beta.5",
31
- "@webiny/handler-graphql": "5.40.0-beta.5",
32
- "@webiny/lexical-converter": "5.40.0-beta.5",
33
- "@webiny/plugins": "5.40.0-beta.5",
34
- "@webiny/pubsub": "5.40.0-beta.5",
35
- "@webiny/utils": "5.40.0-beta.5",
36
- "@webiny/validation": "5.40.0-beta.5",
23
+ "@webiny/api": "5.40.0",
24
+ "@webiny/api-i18n": "5.40.0",
25
+ "@webiny/api-security": "5.40.0",
26
+ "@webiny/api-tenancy": "5.40.0",
27
+ "@webiny/error": "5.40.0",
28
+ "@webiny/handler": "5.40.0",
29
+ "@webiny/handler-aws": "5.40.0",
30
+ "@webiny/handler-db": "5.40.0",
31
+ "@webiny/handler-graphql": "5.40.0",
32
+ "@webiny/lexical-converter": "5.40.0",
33
+ "@webiny/plugins": "5.40.0",
34
+ "@webiny/pubsub": "5.40.0",
35
+ "@webiny/utils": "5.40.0",
36
+ "@webiny/validation": "5.40.0",
37
37
  "code-frame": "5.0.0",
38
38
  "dot-prop": "6.0.1",
39
+ "graphql": "15.8.0",
39
40
  "graphql-tag": "2.12.6",
40
41
  "jsdom": "24.0.0",
41
42
  "lodash": "4.17.21",
@@ -50,9 +51,10 @@
50
51
  "@babel/cli": "7.24.1",
51
52
  "@babel/core": "7.24.3",
52
53
  "@babel/preset-env": "7.24.3",
53
- "@webiny/api-wcp": "5.40.0-beta.5",
54
- "@webiny/cli": "5.40.0-beta.5",
55
- "@webiny/project-utils": "5.40.0-beta.5",
54
+ "@webiny/api-wcp": "5.40.0",
55
+ "@webiny/aws-sdk": "5.40.0",
56
+ "@webiny/cli": "5.40.0",
57
+ "@webiny/project-utils": "5.40.0",
56
58
  "apollo-graphql": "0.9.7",
57
59
  "get-yarn-workspaces": "1.0.2",
58
60
  "graphql": "15.8.0",
@@ -72,5 +74,5 @@
72
74
  "build": "yarn webiny run build",
73
75
  "watch": "yarn webiny run watch"
74
76
  },
75
- "gitHead": "04482b686c63fdadebd4c6c1db7595af1140cfc7"
77
+ "gitHead": "e6ce53a387a9b1ab39aa8d15e4ed9be2359f17aa"
76
78
  }
@@ -236,6 +236,10 @@ interface CmsModelFieldRenderer {
236
236
  * Can be blank to let automatically determine the renderer.
237
237
  */
238
238
  name: string;
239
+ /**
240
+ * Renderer settings allow you to configure field renderer on a field level.
241
+ */
242
+ settings?: Record<string, any>;
239
243
  }
240
244
  /**
241
245
  * A definition for content model field settings.
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["modelField.ts"],"sourcesContent":["import { CmsModel } from \"./model\";\n\nexport type CmsModelFieldType =\n | \"boolean\"\n | \"datetime\"\n | \"file\"\n | \"long-text\"\n | \"number\"\n | \"json\"\n | \"object\"\n | \"ref\"\n | \"rich-text\"\n | \"text\"\n | \"dynamicZone\"\n | string;\n\n/**\n * A definition for content model field. This type exists on the app side as well.\n *\n * @category ModelField\n * @category Database model\n */\nexport interface CmsModelField {\n /**\n * A generated unique ID for the model field.\n * MUST be absolute unique throughout the models.\n * Must be in form of a-zA-Z0-9.\n *\n * We generate a unique id value when you're building a model via UI,\n * but when user is creating a model via a plugin it is up to them to be careful about this.\n */\n id: string;\n /**\n * A type of the field.\n * We are defining our built-in fields, so people know which are available by the default.\n */\n type: CmsModelFieldType;\n /**\n * A unique storage ID for storing actual values.\n * Must in form of a-zA-Z0-9@a-zA-Z0-9\n *\n * This is an auto-generated value: uses `id` and `type`\n *\n * This is used as path for the entry value.\n */\n storageId: `${string}@${string}` | string;\n /**\n * Field identifier for the model field that will be available to the outside world.\n * `storageId` is used as path (or column) to store the data.\n *\n * Must in form of a-zA-Z0-9.\n *\n * This value MUST be unique in the CmsModel.\n */\n fieldId: string;\n /**\n * A label for the field\n */\n label: string;\n /**\n * Text below the field to clarify what is it meant to be in the field value\n */\n helpText?: string | null;\n /**\n * Text to be displayed in the field\n */\n placeholderText?: string | null;\n /**\n * Are predefined values enabled? And list of them\n */\n predefinedValues?: CmsModelFieldPredefinedValues;\n /**\n * Field renderer. Blank if determined automatically.\n */\n renderer?: CmsModelFieldRenderer | null;\n /**\n * List of validations for the field\n *\n * @default []\n */\n validation?: CmsModelFieldValidation[];\n /**\n * List of validations for the list of values, when a field is set to accept a list of values.\n * These validations will be applied to the entire list, and `validation` (see above) will be applied\n * to each individual value in the list.\n *\n * @default []\n */\n listValidation?: CmsModelFieldValidation[];\n /**\n * Is this a multiple values field?\n *\n */\n multipleValues?: boolean;\n /**\n * Fields can be tagged to give them contextual meaning.\n */\n tags?: string[];\n /**\n * Any user defined settings.\n *\n * @default {}\n */\n settings?: CmsModelFieldSettings;\n}\n\n/**\n * A definition for content model field received from the user.\n *\n * Input type for `CmsModelField`.\n * @see CmsModelField\n *\n * @category GraphQL params\n * @category ModelField\n */\nexport interface CmsModelFieldInput {\n /**\n * Generated ID.\n */\n id: string;\n /**\n * Type of the field. A plugin for the field must be defined.\n * @see CmsModelFieldToGraphQLPlugin\n */\n type: string;\n /**\n * Field outside world identifier for the field. Must be unique in the model.\n */\n fieldId: string;\n /**\n * Label for the field.\n */\n label: string;\n /**\n * Text to display below the field to help user what to write in the field.\n */\n helpText?: string | null;\n /**\n * Text to display in the field.\n */\n placeholderText?: string | null;\n /**\n * Fields can be tagged to give them contextual meaning.\n */\n tags?: string[];\n /**\n * Are multiple values allowed?\n */\n multipleValues?: boolean;\n /**\n * Predefined values options for the field. Check the reference for more information.\n */\n predefinedValues?: CmsModelFieldPredefinedValues;\n /**\n * Renderer options for the field. Check the reference for more information.\n */\n renderer?: CmsModelFieldRenderer | null;\n /**\n * List of validations for the field.\n */\n validation?: CmsModelFieldValidation[];\n /**\n * @see CmsModelField.listValidation\n */\n listValidation?: CmsModelFieldValidation[];\n /**\n * User defined settings.\n */\n settings?: Record<string, any>;\n}\n\n/**\n * A GraphQL `params.data` parameter received when updating content model.\n *\n * @category GraphQL params\n * @category CmsModel\n */\nexport interface CmsModelUpdateInput {\n /**\n * A new content model name.\n */\n name?: string;\n /**\n * A new singular name of the content model to be used in the API.\n */\n singularApiName?: string;\n /**\n * A new plural name of the content model to be used in the API.\n */\n pluralApiName?: string;\n /**\n * A group we want to move the model to.\n */\n group?: string;\n /**\n * A new description of the content model.\n */\n description?: string | null;\n /**\n * A list of content model fields to define the entry values.\n */\n fields: CmsModelFieldInput[];\n /**\n * Admin UI field layout\n *\n * ```ts\n * layout: [\n * [field1id, field2id],\n * [field3id]\n * ]\n * ```\n */\n layout: string[][];\n /**\n * Fields fieldId which are picked to represent the CMS entry.\n */\n titleFieldId?: string | null;\n descriptionFieldId?: string | null;\n imageFieldId?: string | null;\n}\n\n/**\n * Locked field in the content model\n *\n * @see CmsModel.lockedFields\n *\n * @category ModelField\n */\nexport interface LockedField {\n /**\n * Locked field storage ID - one used to store values.\n * We cannot change this due to old systems.\n */\n fieldId: string;\n /**\n * Is the field multiple values field?\n */\n multipleValues: boolean;\n /**\n * Field type.\n */\n type: string;\n\n [key: string]: any;\n}\n\n/**\n * Object containing content model field renderer options.\n *\n * @category CmsModelField\n */\ninterface CmsModelFieldRenderer {\n /**\n * Name of the field renderer. Must have one in field renderer plugins.\n * Can be blank to let automatically determine the renderer.\n */\n name: string;\n}\n\n/**\n * A definition for content model field settings.\n *\n * @category ModelField\n * @category Database model\n */\nexport interface CmsModelFieldSettings {\n /**\n * Predefined values (text, number)\n * The default value for the field in case it is not predefined values field.\n */\n defaultValue?: string | number | null | undefined;\n /**\n * Object field has child fields.\n */\n fields?: CmsModelField[];\n /**\n * Is the file field images only one?\n */\n imagesOnly?: boolean;\n /**\n * Object field has child fields - so it needs to have a layout.\n */\n layout?: string[][];\n /**\n * Ref field.\n */\n models?: Pick<CmsModel, \"modelId\">[];\n /**\n * Date field.\n */\n type?: string;\n /**\n * Disable full text search explicitly on this field.\n */\n disableFullTextSearch?: boolean;\n\n /**\n * There are a lot of other settings that are possible to add, so we keep the type opened.\n */\n [key: string]: any;\n}\n\n/**\n * Definition for content model field validator.\n *\n * @category ModelField\n * @category FieldValidation\n */\nexport interface CmsModelFieldValidation {\n name: string;\n message: string;\n settings?: {\n value?: string | number;\n values?: string[];\n preset?: string;\n [key: string]: any;\n };\n}\n\n/**\n * Object containing content model field predefined options and values.\n *\n * @category CmsModelField\n */\nexport interface CmsModelFieldPredefinedValues {\n /**\n * Are predefined field values enabled?\n */\n enabled: boolean;\n /**\n * Predefined values array.\n */\n values: CmsModelFieldPredefinedValuesValue[];\n}\n\ninterface CmsModelFieldPredefinedValuesValue {\n value: string;\n label: string;\n /**\n * Default selected predefined value.\n */\n selected?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["modelField.ts"],"sourcesContent":["import { CmsModel } from \"./model\";\n\nexport type CmsModelFieldType =\n | \"boolean\"\n | \"datetime\"\n | \"file\"\n | \"long-text\"\n | \"number\"\n | \"json\"\n | \"object\"\n | \"ref\"\n | \"rich-text\"\n | \"text\"\n | \"dynamicZone\"\n | string;\n\n/**\n * A definition for content model field. This type exists on the app side as well.\n *\n * @category ModelField\n * @category Database model\n */\nexport interface CmsModelField {\n /**\n * A generated unique ID for the model field.\n * MUST be absolute unique throughout the models.\n * Must be in form of a-zA-Z0-9.\n *\n * We generate a unique id value when you're building a model via UI,\n * but when user is creating a model via a plugin it is up to them to be careful about this.\n */\n id: string;\n /**\n * A type of the field.\n * We are defining our built-in fields, so people know which are available by the default.\n */\n type: CmsModelFieldType;\n /**\n * A unique storage ID for storing actual values.\n * Must in form of a-zA-Z0-9@a-zA-Z0-9\n *\n * This is an auto-generated value: uses `id` and `type`\n *\n * This is used as path for the entry value.\n */\n storageId: `${string}@${string}` | string;\n /**\n * Field identifier for the model field that will be available to the outside world.\n * `storageId` is used as path (or column) to store the data.\n *\n * Must in form of a-zA-Z0-9.\n *\n * This value MUST be unique in the CmsModel.\n */\n fieldId: string;\n /**\n * A label for the field\n */\n label: string;\n /**\n * Text below the field to clarify what is it meant to be in the field value\n */\n helpText?: string | null;\n /**\n * Text to be displayed in the field\n */\n placeholderText?: string | null;\n /**\n * Are predefined values enabled? And list of them\n */\n predefinedValues?: CmsModelFieldPredefinedValues;\n /**\n * Field renderer. Blank if determined automatically.\n */\n renderer?: CmsModelFieldRenderer | null;\n /**\n * List of validations for the field\n *\n * @default []\n */\n validation?: CmsModelFieldValidation[];\n /**\n * List of validations for the list of values, when a field is set to accept a list of values.\n * These validations will be applied to the entire list, and `validation` (see above) will be applied\n * to each individual value in the list.\n *\n * @default []\n */\n listValidation?: CmsModelFieldValidation[];\n /**\n * Is this a multiple values field?\n *\n */\n multipleValues?: boolean;\n /**\n * Fields can be tagged to give them contextual meaning.\n */\n tags?: string[];\n /**\n * Any user defined settings.\n *\n * @default {}\n */\n settings?: CmsModelFieldSettings;\n}\n\n/**\n * A definition for content model field received from the user.\n *\n * Input type for `CmsModelField`.\n * @see CmsModelField\n *\n * @category GraphQL params\n * @category ModelField\n */\nexport interface CmsModelFieldInput {\n /**\n * Generated ID.\n */\n id: string;\n /**\n * Type of the field. A plugin for the field must be defined.\n * @see CmsModelFieldToGraphQLPlugin\n */\n type: string;\n /**\n * Field outside world identifier for the field. Must be unique in the model.\n */\n fieldId: string;\n /**\n * Label for the field.\n */\n label: string;\n /**\n * Text to display below the field to help user what to write in the field.\n */\n helpText?: string | null;\n /**\n * Text to display in the field.\n */\n placeholderText?: string | null;\n /**\n * Fields can be tagged to give them contextual meaning.\n */\n tags?: string[];\n /**\n * Are multiple values allowed?\n */\n multipleValues?: boolean;\n /**\n * Predefined values options for the field. Check the reference for more information.\n */\n predefinedValues?: CmsModelFieldPredefinedValues;\n /**\n * Renderer options for the field. Check the reference for more information.\n */\n renderer?: CmsModelFieldRenderer | null;\n /**\n * List of validations for the field.\n */\n validation?: CmsModelFieldValidation[];\n /**\n * @see CmsModelField.listValidation\n */\n listValidation?: CmsModelFieldValidation[];\n /**\n * User defined settings.\n */\n settings?: Record<string, any>;\n}\n\n/**\n * A GraphQL `params.data` parameter received when updating content model.\n *\n * @category GraphQL params\n * @category CmsModel\n */\nexport interface CmsModelUpdateInput {\n /**\n * A new content model name.\n */\n name?: string;\n /**\n * A new singular name of the content model to be used in the API.\n */\n singularApiName?: string;\n /**\n * A new plural name of the content model to be used in the API.\n */\n pluralApiName?: string;\n /**\n * A group we want to move the model to.\n */\n group?: string;\n /**\n * A new description of the content model.\n */\n description?: string | null;\n /**\n * A list of content model fields to define the entry values.\n */\n fields: CmsModelFieldInput[];\n /**\n * Admin UI field layout\n *\n * ```ts\n * layout: [\n * [field1id, field2id],\n * [field3id]\n * ]\n * ```\n */\n layout: string[][];\n /**\n * Fields fieldId which are picked to represent the CMS entry.\n */\n titleFieldId?: string | null;\n descriptionFieldId?: string | null;\n imageFieldId?: string | null;\n}\n\n/**\n * Locked field in the content model\n *\n * @see CmsModel.lockedFields\n *\n * @category ModelField\n */\nexport interface LockedField {\n /**\n * Locked field storage ID - one used to store values.\n * We cannot change this due to old systems.\n */\n fieldId: string;\n /**\n * Is the field multiple values field?\n */\n multipleValues: boolean;\n /**\n * Field type.\n */\n type: string;\n\n [key: string]: any;\n}\n\n/**\n * Object containing content model field renderer options.\n *\n * @category CmsModelField\n */\ninterface CmsModelFieldRenderer {\n /**\n * Name of the field renderer. Must have one in field renderer plugins.\n * Can be blank to let automatically determine the renderer.\n */\n name: string;\n /**\n * Renderer settings allow you to configure field renderer on a field level.\n */\n settings?: Record<string, any>;\n}\n\n/**\n * A definition for content model field settings.\n *\n * @category ModelField\n * @category Database model\n */\nexport interface CmsModelFieldSettings {\n /**\n * Predefined values (text, number)\n * The default value for the field in case it is not predefined values field.\n */\n defaultValue?: string | number | null | undefined;\n /**\n * Object field has child fields.\n */\n fields?: CmsModelField[];\n /**\n * Is the file field images only one?\n */\n imagesOnly?: boolean;\n /**\n * Object field has child fields - so it needs to have a layout.\n */\n layout?: string[][];\n /**\n * Ref field.\n */\n models?: Pick<CmsModel, \"modelId\">[];\n /**\n * Date field.\n */\n type?: string;\n /**\n * Disable full text search explicitly on this field.\n */\n disableFullTextSearch?: boolean;\n\n /**\n * There are a lot of other settings that are possible to add, so we keep the type opened.\n */\n [key: string]: any;\n}\n\n/**\n * Definition for content model field validator.\n *\n * @category ModelField\n * @category FieldValidation\n */\nexport interface CmsModelFieldValidation {\n name: string;\n message: string;\n settings?: {\n value?: string | number;\n values?: string[];\n preset?: string;\n [key: string]: any;\n };\n}\n\n/**\n * Object containing content model field predefined options and values.\n *\n * @category CmsModelField\n */\nexport interface CmsModelFieldPredefinedValues {\n /**\n * Are predefined field values enabled?\n */\n enabled: boolean;\n /**\n * Predefined values array.\n */\n values: CmsModelFieldPredefinedValuesValue[];\n}\n\ninterface CmsModelFieldPredefinedValuesValue {\n value: string;\n label: string;\n /**\n * Default selected predefined value.\n */\n selected?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
package/types/types.d.ts CHANGED
@@ -532,6 +532,17 @@ export interface CmsEntry<T = CmsEntryValues> {
532
532
  * Identity that last published the entry.
533
533
  */
534
534
  lastPublishedBy: CmsIdentity | null;
535
+ /**
536
+ * Deprecated fields. 👇
537
+ */
538
+ /**
539
+ * @deprecated Will be removed with the 5.41.0 release. Use `createdBy` field instead.
540
+ */
541
+ ownedBy?: CmsIdentity | null;
542
+ /**
543
+ * @deprecated Will be removed with the 5.41.0 release. Use `firstPublishedOn` or `lastPublishedOn` field instead.
544
+ */
545
+ publishedOn?: string | null;
535
546
  /**
536
547
  * Model ID of the definition for the entry.
537
548
  * @see CmsModel
@@ -728,8 +739,10 @@ export interface CmsModelUpdateDirectParams {
728
739
  export interface CmsModelContext {
729
740
  /**
730
741
  * Get a single content model.
742
+ *
743
+ * @throws NotFoundError
731
744
  */
732
- getModel(modelId: string): Promise<CmsModel | null>;
745
+ getModel: (modelId: string) => Promise<CmsModel>;
733
746
  /**
734
747
  * Get model to AST converter.
735
748
  */