@webiny/api-headless-cms 0.0.0-unstable.d65ec29d44 → 0.0.0-unstable.df6d94b531

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 (115) hide show
  1. package/crud/contentEntry/markLockedFields.d.ts +1 -1
  2. package/crud/contentEntry/markLockedFields.js +3 -0
  3. package/crud/contentEntry/markLockedFields.js.map +1 -1
  4. package/crud/contentEntry.crud.d.ts +2 -1
  5. package/crud/contentEntry.crud.js +29 -23
  6. package/crud/contentEntry.crud.js.map +1 -1
  7. package/crud/contentModel/beforeCreate.js +4 -0
  8. package/crud/contentModel/beforeCreate.js.map +1 -1
  9. package/crud/contentModel/beforeUpdate.js +4 -0
  10. package/crud/contentModel/beforeUpdate.js.map +1 -1
  11. package/crud/contentModel/compatibility/modelApiName.d.ts +3 -0
  12. package/crud/contentModel/compatibility/modelApiName.js +24 -0
  13. package/crud/contentModel/compatibility/modelApiName.js.map +1 -0
  14. package/crud/contentModel/defaultFields.d.ts +5 -0
  15. package/crud/contentModel/defaultFields.js +58 -0
  16. package/crud/contentModel/defaultFields.js.map +1 -0
  17. package/crud/contentModel/fields/descriptionField.d.ts +2 -0
  18. package/crud/contentModel/fields/descriptionField.js +42 -0
  19. package/crud/contentModel/fields/descriptionField.js.map +1 -0
  20. package/crud/contentModel/fields/imageField.d.ts +2 -0
  21. package/crud/contentModel/fields/imageField.js +46 -0
  22. package/crud/contentModel/fields/imageField.js.map +1 -0
  23. package/crud/contentModel/fields/titleField.d.ts +2 -0
  24. package/crud/contentModel/fields/titleField.js +58 -0
  25. package/crud/contentModel/fields/titleField.js.map +1 -0
  26. package/crud/contentModel/systemFields.js.map +1 -1
  27. package/crud/contentModel/validateModel.d.ts +1 -0
  28. package/crud/contentModel/validateModel.js.map +1 -1
  29. package/crud/contentModel/validateModelFields.d.ts +2 -1
  30. package/crud/contentModel/validateModelFields.js +17 -55
  31. package/crud/contentModel/validateModelFields.js.map +1 -1
  32. package/crud/contentModel/validation.d.ts +92 -50
  33. package/crud/contentModel/validation.js +59 -11
  34. package/crud/contentModel/validation.js.map +1 -1
  35. package/crud/contentModel.crud.js +40 -18
  36. package/crud/contentModel.crud.js.map +1 -1
  37. package/crud/system.crud.js +0 -60
  38. package/crud/system.crud.js.map +1 -1
  39. package/graphql/createExecutableSchema.d.ts +2 -3
  40. package/graphql/createExecutableSchema.js.map +1 -1
  41. package/graphql/graphQLHandlerFactory.js +13 -8
  42. package/graphql/graphQLHandlerFactory.js.map +1 -1
  43. package/graphql/schema/baseContentSchema.js +1 -7
  44. package/graphql/schema/baseContentSchema.js.map +1 -1
  45. package/graphql/schema/contentEntries.js +90 -53
  46. package/graphql/schema/contentEntries.js.map +1 -1
  47. package/graphql/schema/contentModelGroups.js +1 -1
  48. package/graphql/schema/contentModelGroups.js.map +1 -1
  49. package/graphql/schema/contentModels.js +20 -1
  50. package/graphql/schema/contentModels.js.map +1 -1
  51. package/graphql/schema/createManageResolvers.d.ts +1 -1
  52. package/graphql/schema/createManageResolvers.js +33 -17
  53. package/graphql/schema/createManageResolvers.js.map +1 -1
  54. package/graphql/schema/createManageSDL.d.ts +1 -0
  55. package/graphql/schema/createManageSDL.js +55 -49
  56. package/graphql/schema/createManageSDL.js.map +1 -1
  57. package/graphql/schema/createPreviewResolvers.js +3 -7
  58. package/graphql/schema/createPreviewResolvers.js.map +1 -1
  59. package/graphql/schema/createReadResolvers.js +4 -8
  60. package/graphql/schema/createReadResolvers.js.map +1 -1
  61. package/graphql/schema/createReadSDL.d.ts +1 -0
  62. package/graphql/schema/createReadSDL.js +24 -22
  63. package/graphql/schema/createReadSDL.js.map +1 -1
  64. package/graphql/schema/resolvers/commonFieldResolvers.d.ts +3 -2
  65. package/graphql/schema/resolvers/commonFieldResolvers.js +2 -1
  66. package/graphql/schema/resolvers/commonFieldResolvers.js.map +1 -1
  67. package/graphql/schema/schemaPlugins.js +12 -12
  68. package/graphql/schema/schemaPlugins.js.map +1 -1
  69. package/graphql/system.js +0 -16
  70. package/graphql/system.js.map +1 -1
  71. package/graphqlFields/dynamicZone/dynamicZoneField.js +12 -4
  72. package/graphqlFields/dynamicZone/dynamicZoneField.js.map +1 -1
  73. package/graphqlFields/object.js +21 -2
  74. package/graphqlFields/object.js.map +1 -1
  75. package/graphqlFields/ref.js +42 -14
  76. package/graphqlFields/ref.js.map +1 -1
  77. package/index.d.ts +3 -1
  78. package/index.js +22 -3
  79. package/index.js.map +1 -1
  80. package/package.json +22 -23
  81. package/plugins/CmsModelPlugin.d.ts +11 -1
  82. package/plugins/CmsModelPlugin.js +13 -2
  83. package/plugins/CmsModelPlugin.js.map +1 -1
  84. package/types.d.ts +75 -21
  85. package/types.js +1 -1
  86. package/types.js.map +1 -1
  87. package/upgrades/5.33.0/index.js +26 -3
  88. package/upgrades/5.33.0/index.js.map +1 -1
  89. package/upgrades/index.js +3 -0
  90. package/upgrades/index.js.map +1 -1
  91. package/utils/converters/valueKeyStorageConverter.d.ts +1 -1
  92. package/utils/converters/valueKeyStorageConverter.js +2 -1
  93. package/utils/converters/valueKeyStorageConverter.js.map +1 -1
  94. package/utils/createTypeFromFields.d.ts +1 -0
  95. package/utils/createTypeFromFields.js +7 -4
  96. package/utils/createTypeFromFields.js.map +1 -1
  97. package/utils/getEntryDescription.d.ts +2 -0
  98. package/utils/getEntryDescription.js +17 -0
  99. package/utils/getEntryDescription.js.map +1 -0
  100. package/utils/getEntryImage.d.ts +2 -0
  101. package/utils/getEntryImage.js +17 -0
  102. package/utils/getEntryImage.js.map +1 -0
  103. package/utils/incrementEntryIdVersion.d.ts +5 -0
  104. package/utils/incrementEntryIdVersion.js +29 -0
  105. package/utils/incrementEntryIdVersion.js.map +1 -0
  106. package/utils/ownership.d.ts +3 -3
  107. package/utils/ownership.js.map +1 -1
  108. package/utils/pluralizedTypeName.js +6 -0
  109. package/utils/pluralizedTypeName.js.map +1 -1
  110. package/utils/renderFields.d.ts +2 -1
  111. package/utils/renderFields.js +8 -1
  112. package/utils/renderFields.js.map +1 -1
  113. package/utils/renderInputFields.d.ts +2 -1
  114. package/utils/renderInputFields.js +4 -0
  115. package/utils/renderInputFields.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["defaultTitleFieldId","allowedTitleFieldTypes","getContentModelTitleFieldId","fields","titleFieldId","length","titleField","find","field","getBaseFieldType","multipleValues","fieldId","target","f","WebinyError","includes","type","join","storageId","extractInvalidField","model","err","sdl","source","body","line","lineNumber","locations","sdlLines","split","sdlLine","gqlType","i","match","invalidField","undefined","Array","isArray","fieldRegex","RegExp","matched","message","data","modelId","code","createValidateChildFields","plugins","originalFields","validateFields","lockedFields","params","idList","fieldIdList","storageIdList","baseType","plugin","fieldType","Error","id","push","originalField","isLocked","some","lockedField","createFieldStorageId","label","validateChildFields","validate","createGraphQLSchema","context","security","disableAuthorization","models","cms","listModels","enableAuthorization","modelPlugins","buildSchemaPlugins","concat","byType","GraphQLSchemaPlugin","reduce","collection","name","generateAlphaNumericId","createExecutableSchema","Object","values","extractErrorObject","error","output","key","validateModelFields","original","fieldTypePlugins","sorterPlugins","CmsGraphQLSchemaSorterPlugin","schema","createManageSDL","acc","pl","gql","cmsLockedFieldPlugins","existingField","item","reason","lockedFieldType","existingFieldType","lockedFieldsByType","filter","checkLockedField"],"sources":["validateModelFields.ts"],"sourcesContent":["import {\n CmsContext,\n CmsModel,\n CmsModelField,\n CmsModelFieldToGraphQLPlugin,\n CmsModelFieldToGraphQLPluginValidateChildFieldsValidate,\n CmsModelLockedFieldPlugin,\n LockedField\n} from \"~/types\";\nimport WebinyError from \"@webiny/error\";\nimport { createManageSDL } from \"~/graphql/schema/createManageSDL\";\nimport gql from \"graphql-tag\";\nimport { createFieldStorageId } from \"./createFieldStorageId\";\nimport { GraphQLError } from \"graphql\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\nimport { CmsGraphQLSchemaSorterPlugin } from \"~/plugins\";\nimport { buildSchemaPlugins } from \"~/graphql/buildSchemaPlugins\";\nimport { createExecutableSchema } from \"~/graphql/createExecutableSchema\";\nimport { GraphQLSchemaPlugin } from \"@webiny/handler-graphql\";\nimport { generateAlphaNumericId } from \"@webiny/utils\";\n\nconst defaultTitleFieldId = \"id\";\n\nconst allowedTitleFieldTypes = [\"text\", \"number\"];\n\nconst getContentModelTitleFieldId = (fields: CmsModelField[], titleFieldId?: string): string => {\n /**\n * If there are no fields defined, we will return the default field\n */\n if (fields.length === 0) {\n return defaultTitleFieldId;\n }\n /**\n * if there is no title field defined either in input data or existing content model data\n * we will take first text field that has no multiple values enabled\n * or if initial titleFieldId is the default one also try to find first available text field\n */\n if (!titleFieldId || titleFieldId === defaultTitleFieldId) {\n const titleField = fields.find(field => {\n return getBaseFieldType(field) === \"text\" && !field.multipleValues;\n });\n return titleField?.fieldId || defaultTitleFieldId;\n }\n /**\n * check existing titleFieldId for existence in the model\n * for correct type\n * and that it is not multiple values field\n */\n const target = fields.find(f => f.fieldId === titleFieldId);\n if (!target) {\n throw new WebinyError(\n `Field selected for the title field does not exist in the model.`,\n \"VALIDATION_ERROR\",\n {\n fieldId: titleFieldId,\n fields\n }\n );\n }\n\n if (allowedTitleFieldTypes.includes(target.type) === false) {\n throw new WebinyError(\n `Only ${allowedTitleFieldTypes.join(\n \", \"\n )} and id fields can be used as an entry title.`,\n \"ENTRY_TITLE_FIELD_TYPE\",\n {\n storageId: target.storageId,\n fieldId: target.fieldId,\n type: target.type\n }\n );\n }\n\n if (target.multipleValues) {\n throw new WebinyError(\n `Fields that accept multiple values cannot be used as the entry title.`,\n \"ENTRY_TITLE_FIELD_TYPE\",\n {\n storageId: target.storageId,\n fieldId: target.fieldId,\n type: target.type\n }\n );\n }\n\n return target.fieldId;\n};\n\nconst extractInvalidField = (model: CmsModel, err: GraphQLError) => {\n const sdl = err.source?.body || \"\";\n\n /**\n * Find the invalid type\n */\n const { line: lineNumber } = err.locations\n ? err.locations[0]\n : {\n line: 0\n };\n const sdlLines = sdl.split(\"\\n\");\n let sdlLine;\n let gqlType;\n for (let i = lineNumber; i > 0; i--) {\n if (sdlLine && sdlLine.includes(\"type \")) {\n gqlType = sdlLine.match(/type\\s+(.*?)\\s+{/);\n break;\n }\n\n sdlLine = sdlLines[i];\n }\n\n let invalidField: string | undefined = undefined;\n if (Array.isArray(gqlType)) {\n const fieldRegex = new RegExp(`([^\\\\s+].*?):\\\\s+\\\\[?${gqlType[1]}!?\\\\]?`);\n\n const matched = sdl.match(fieldRegex);\n if (matched) {\n invalidField = matched[1];\n }\n }\n\n let message = `See more details in the browser console.`;\n if (invalidField) {\n message = `Please review the definition of \"${invalidField}\" field.`;\n }\n\n return {\n data: {\n modelId: model.modelId,\n sdl,\n invalidField\n },\n code: \"INVALID_MODEL_DEFINITION\",\n message: [`Model \"${model.modelId}\" was not saved!`, message].join(\"\\n\")\n };\n};\n\nconst createValidateChildFields = (\n plugins: CmsModelFieldToGraphQLPlugin[]\n): CmsModelFieldToGraphQLPluginValidateChildFieldsValidate => {\n return ({ fields, originalFields }) => {\n if (fields.length === 0 && originalFields.length === 0) {\n return;\n }\n validateFields({\n fields,\n originalFields,\n plugins,\n lockedFields: []\n });\n };\n};\n\ninterface ValidateFieldsParams {\n plugins: CmsModelFieldToGraphQLPlugin[];\n fields: CmsModelField[];\n originalFields: CmsModelField[];\n lockedFields: LockedField[];\n}\nconst validateFields = (params: ValidateFieldsParams) => {\n const { plugins, fields, originalFields, lockedFields } = params;\n\n const idList: string[] = [];\n const fieldIdList: string[] = [];\n const storageIdList: string[] = [];\n\n for (const field of fields) {\n const baseType = getBaseFieldType(field);\n const plugin = plugins.find(plugin => plugin.fieldType === baseType);\n\n if (!plugin) {\n throw new Error(\n `Cannot update content model because of the unknown \"${baseType}\" field.`\n );\n }\n /**\n * Check the field's id against existing ones.\n * There cannot be two fields with the same id.\n */\n if (idList.includes(field.id)) {\n throw new WebinyError(\n `Cannot update content model because field \"${\n field.storageId || field.fieldId\n }\" has id \"${field.id}\", which is already used.`\n );\n }\n idList.push(field.id);\n\n const originalField = originalFields.find(f => f.id === field.id);\n /**\n * Field MUST have an fieldId defined.\n */\n if (!field.fieldId) {\n throw new WebinyError(`Field does not have an \"fieldId\" defined.`, \"MISSING_FIELD_ID\", {\n field\n });\n }\n /**\n * If storageId does not match a certain pattern, add that pattern, but only if field is not locked (used) already.\n * This is to avoid errors in the already installed systems.\n *\n * Why are we using the @?\n *\n * It is not part of special characters for the query syntax in the Lucene.\n *\n * Relevant links:\n * https://lucene.apache.org/core/3_4_0/queryparsersyntax.html\n * https://discuss.elastic.co/t/special-characters-in-field-names/10658/3\n * https://discuss.elastic.co/t/illegal-characters-in-elasticsearch-field-names/17196/2\n */\n const isLocked = lockedFields.some(lockedField => {\n return lockedField.fieldId === field.storageId || lockedField.fieldId === field.fieldId;\n });\n if (!field.storageId) {\n /**\n * In case field is locked, we must set the storageId to the fieldId value.\n * This should not happen, because we upgrade all the fields in 5.33.0, but let's have a check just in case of some upgrade miss.\n */\n //\n if (isLocked) {\n field.storageId = field.fieldId;\n }\n /**\n * When having original field, just set the storageId to value from the originalField\n */\n //\n else if (originalField) {\n field.storageId = originalField.storageId;\n }\n /**\n * The last case is when no original field and not locked - so this is a completely new field.\n */\n //\n else {\n field.storageId = createFieldStorageId(field);\n }\n }\n /**\n * Check the field's fieldId against existing ones.\n * There cannot be two fields with the same fieldId - outside world identifier.\n */\n if (fieldIdList.includes(field.fieldId)) {\n throw new WebinyError(\n `Cannot update content model because field \"${field.storageId}\" has fieldId \"${field.fieldId}\", which is already used.`\n );\n }\n fieldIdList.push(field.fieldId);\n /**\n * Check the field's storageId against the existing ones.\n * There cannot be two fields with the same storageId.\n */\n if (storageIdList.includes(field.storageId)) {\n throw new WebinyError(\n `Cannot update content model because field \"${field.label}\" has storageId \"${field.storageId}\", which is already used.`\n );\n }\n storageIdList.push(field.storageId);\n /**\n * There might be some plugins which allow child fields.\n * We use this method to validate them as well.\n */\n if (!plugin.validateChildFields) {\n continue;\n }\n const validateChildFields = createValidateChildFields(plugins);\n plugin.validateChildFields({\n field,\n originalField,\n validate: validateChildFields\n });\n }\n};\ninterface CreateGraphQLSchemaParams {\n context: CmsContext;\n model: CmsModel;\n}\nconst createGraphQLSchema = async (params: CreateGraphQLSchemaParams): Promise<any> => {\n const { context, model } = params;\n\n context.security.disableAuthorization();\n const models = await context.cms.listModels();\n context.security.enableAuthorization();\n\n const modelPlugins = await buildSchemaPlugins({\n context,\n models: models.concat([model])\n });\n\n const plugins = context.plugins\n .byType<GraphQLSchemaPlugin<CmsContext>>(GraphQLSchemaPlugin.type)\n .reduce<Record<string, GraphQLSchemaPlugin<CmsContext>>>((collection, plugin) => {\n const name = plugin.name || `${plugin.type}-${generateAlphaNumericId(16)}`;\n collection[name] = plugin;\n return collection;\n }, {});\n for (const plugin of modelPlugins) {\n const name = plugin.name || `${plugin.type}-${generateAlphaNumericId(16)}`;\n plugins[name] = plugin;\n }\n\n return createExecutableSchema({\n plugins: Object.values(plugins)\n });\n};\n\nconst extractErrorObject = (error: any) => {\n return [\"message\", \"code\", \"data\", \"stack\"].reduce<Record<string, any>>((output, key) => {\n if (!error[key]) {\n return output;\n }\n output[key] = error[key];\n return output;\n }, {});\n};\n\ninterface ValidateModelFieldsParams {\n model: CmsModel;\n original?: CmsModel;\n context: CmsContext;\n}\nexport const validateModelFields = async (params: ValidateModelFieldsParams): Promise<void> => {\n const { model, original, context } = params;\n const { titleFieldId } = model;\n const { plugins } = context;\n\n /**\n * There should be fields/locked fields in either model or data to be updated.\n */\n const { fields = [], lockedFields = [] } = model;\n\n /**\n * Let's inspect the fields of the received content model. We prevent saving of a content model if it\n * contains a field for which a \"cms-model-field-to-graphql\" plugin does not exist on the backend.\n */\n const fieldTypePlugins = plugins.byType<CmsModelFieldToGraphQLPlugin>(\n \"cms-model-field-to-graphql\"\n );\n\n validateFields({\n fields,\n originalFields: original?.fields || [],\n lockedFields,\n plugins: fieldTypePlugins\n });\n\n if (fields.length) {\n const sorterPlugins = plugins.byType<CmsGraphQLSchemaSorterPlugin>(\n CmsGraphQLSchemaSorterPlugin.type\n );\n /**\n * Make sure that this model can be safely converted to a GraphQL SDL\n */\n const schema = createManageSDL({\n model,\n fieldTypePlugins: fieldTypePlugins.reduce(\n (acc, pl) => ({ ...acc, [pl.fieldType]: pl }),\n {}\n ),\n sorterPlugins\n });\n\n try {\n gql(schema);\n } catch (err) {\n throw new WebinyError(extractInvalidField(model, err));\n }\n /**\n *\n */\n try {\n await createGraphQLSchema({\n context,\n model\n });\n } catch (err) {\n throw new WebinyError({\n message:\n \"Cannot generate GraphQL schema when testing with the given model. Please check the response for more details.\",\n code: \"GRAPHQL_SCHEMA_ERROR\",\n data: {\n modelId: model.modelId,\n error: extractErrorObject(err)\n }\n });\n }\n }\n\n model.titleFieldId = getContentModelTitleFieldId(fields, titleFieldId);\n\n const cmsLockedFieldPlugins =\n plugins.byType<CmsModelLockedFieldPlugin>(\"cms-model-locked-field\");\n\n /**\n * We must not allow removal or changes in fields that are already in use in content entries.\n * Locked fields still have fieldId (should be storageId) because of the old existing locked fields in the models.\n */\n for (const lockedField of lockedFields) {\n const existingField = fields.find(item => item.storageId === lockedField.fieldId);\n\n /**\n * Starting with 5.33.0 fields can be deleted.\n * Our UI gives a warning upon locked field deletion, but if user is managing fields through API directly - we cannot do anything.\n */\n if (!existingField) {\n continue;\n }\n\n if (lockedField.multipleValues !== existingField.multipleValues) {\n throw new WebinyError(\n `Cannot change \"multipleValues\" for the \"${lockedField.fieldId}\" field because it's already in use in created content.`,\n \"ENTRY_FIELD_USED\",\n {\n reason: `\"multipleValues\" changed`,\n field: existingField\n }\n );\n }\n\n const fieldType = getBaseFieldType(existingField);\n if (lockedField.type !== fieldType) {\n throw new WebinyError(\n `Cannot change field type for the \"${lockedField.fieldId}\" field because it's already in use in created content.`,\n \"ENTRY_FIELD_USED\",\n {\n reason: `\"type\" changed`,\n lockedFieldType: lockedField.type,\n existingFieldType: fieldType\n }\n );\n }\n\n /**\n * Check `lockedField` invariant for specific field\n */\n const lockedFieldsByType = cmsLockedFieldPlugins.filter(\n pl => pl.fieldType === getBaseFieldType(lockedField)\n );\n for (const plugin of lockedFieldsByType) {\n if (typeof plugin.checkLockedField !== \"function\") {\n continue;\n }\n plugin.checkLockedField({\n lockedField,\n field: existingField\n });\n }\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["extractInvalidField","model","err","sdl","source","body","line","lineNumber","locations","sdlLines","split","sdlLine","gqlType","i","includes","match","invalidField","undefined","Array","isArray","fieldRegex","RegExp","matched","message","data","modelId","code","join","createValidateChildFields","plugins","fields","originalFields","length","validateFields","lockedFields","params","idList","fieldIdList","storageIdList","field","baseType","getBaseFieldType","plugin","find","fieldType","Error","id","WebinyError","storageId","fieldId","push","originalField","f","isLocked","some","lockedField","createFieldStorageId","label","validateChildFields","validate","createGraphQLSchema","context","security","disableAuthorization","models","cms","listModels","filter","isPrivate","enableAuthorization","modelPlugins","buildSchemaPlugins","concat","byType","CmsGraphQLSchemaPlugin","type","reduce","collection","name","generateAlphaNumericId","createExecutableSchema","Object","values","extractErrorObject","error","output","key","validateModelFields","original","titleFieldId","descriptionFieldId","imageFieldId","fieldTypePlugins","sorterPlugins","CmsGraphQLSchemaSorterPlugin","schema","createManageSDL","acc","pl","gql","getContentModelTitleFieldId","getContentModelDescriptionFieldId","getContentModelImageFieldId","cmsLockedFieldPlugins","existingField","item","multipleValues","reason","lockedFieldType","existingFieldType","lockedFieldsByType","checkLockedField"],"sources":["validateModelFields.ts"],"sourcesContent":["import gql from \"graphql-tag\";\nimport WebinyError from \"@webiny/error\";\nimport {\n CmsModel,\n CmsContext,\n CmsModelField,\n CmsModelFieldToGraphQLPlugin,\n CmsModelFieldToGraphQLPluginValidateChildFieldsValidate,\n CmsModelLockedFieldPlugin,\n LockedField\n} from \"~/types\";\nimport { createManageSDL } from \"~/graphql/schema/createManageSDL\";\nimport { createFieldStorageId } from \"./createFieldStorageId\";\nimport { GraphQLError } from \"graphql\";\nimport { getBaseFieldType } from \"~/utils/getBaseFieldType\";\nimport { getContentModelTitleFieldId } from \"./fields/titleField\";\nimport { getContentModelDescriptionFieldId } from \"./fields/descriptionField\";\nimport { getContentModelImageFieldId } from \"./fields/imageField\";\nimport { CmsGraphQLSchemaPlugin, CmsGraphQLSchemaSorterPlugin } from \"~/plugins\";\nimport { buildSchemaPlugins } from \"~/graphql/buildSchemaPlugins\";\nimport { createExecutableSchema } from \"~/graphql/createExecutableSchema\";\nimport { generateAlphaNumericId } from \"@webiny/utils\";\n\nconst extractInvalidField = (model: CmsModel, err: GraphQLError) => {\n const sdl = err.source?.body || \"\";\n\n /**\n * Find the invalid type\n */\n const { line: lineNumber } = err.locations\n ? err.locations[0]\n : {\n line: 0\n };\n const sdlLines = sdl.split(\"\\n\");\n let sdlLine;\n let gqlType;\n for (let i = lineNumber; i > 0; i--) {\n if (sdlLine && sdlLine.includes(\"type \")) {\n gqlType = sdlLine.match(/type\\s+(.*?)\\s+{/);\n break;\n }\n\n sdlLine = sdlLines[i];\n }\n\n let invalidField: string | undefined = undefined;\n if (Array.isArray(gqlType)) {\n const fieldRegex = new RegExp(`([^\\\\s+].*?):\\\\s+\\\\[?${gqlType[1]}!?\\\\]?`);\n\n const matched = sdl.match(fieldRegex);\n if (matched) {\n invalidField = matched[1];\n }\n }\n\n let message = `See more details in the browser console.`;\n if (invalidField) {\n message = `Please review the definition of \"${invalidField}\" field.`;\n }\n\n return {\n data: {\n modelId: model.modelId,\n sdl,\n invalidField\n },\n code: \"INVALID_MODEL_DEFINITION\",\n message: [`Model \"${model.modelId}\" was not saved!`, message].join(\"\\n\")\n };\n};\n\nconst createValidateChildFields = (\n plugins: CmsModelFieldToGraphQLPlugin[]\n): CmsModelFieldToGraphQLPluginValidateChildFieldsValidate => {\n return ({ fields, originalFields }) => {\n if (fields.length === 0 && originalFields.length === 0) {\n return;\n }\n validateFields({\n fields,\n originalFields,\n plugins,\n lockedFields: []\n });\n };\n};\n\ninterface ValidateFieldsParams {\n plugins: CmsModelFieldToGraphQLPlugin[];\n fields: CmsModelField[];\n originalFields: CmsModelField[];\n lockedFields: LockedField[];\n}\n\nconst validateFields = (params: ValidateFieldsParams) => {\n const { plugins, fields, originalFields, lockedFields } = params;\n\n const idList: string[] = [];\n const fieldIdList: string[] = [];\n const storageIdList: string[] = [];\n\n for (const field of fields) {\n const baseType = getBaseFieldType(field);\n const plugin = plugins.find(plugin => plugin.fieldType === baseType);\n\n if (!plugin) {\n throw new Error(\n `Cannot update content model because of the unknown \"${baseType}\" field.`\n );\n }\n /**\n * Check the field's id against existing ones.\n * There cannot be two fields with the same id.\n */\n if (idList.includes(field.id)) {\n throw new WebinyError(\n `Cannot update content model because field \"${\n field.storageId || field.fieldId\n }\" has id \"${field.id}\", which is already used.`\n );\n }\n idList.push(field.id);\n\n const originalField = originalFields.find(f => f.id === field.id);\n /**\n * Field MUST have an fieldId defined.\n */\n if (!field.fieldId) {\n throw new WebinyError(`Field does not have an \"fieldId\" defined.`, \"MISSING_FIELD_ID\", {\n field\n });\n }\n /**\n * If storageId does not match a certain pattern, add that pattern, but only if field is not locked (used) already.\n * This is to avoid errors in the already installed systems.\n *\n * Why are we using the @?\n *\n * It is not part of special characters for the query syntax in the Lucene.\n *\n * Relevant links:\n * https://lucene.apache.org/core/3_4_0/queryparsersyntax.html\n * https://discuss.elastic.co/t/special-characters-in-field-names/10658/3\n * https://discuss.elastic.co/t/illegal-characters-in-elasticsearch-field-names/17196/2\n */\n const isLocked = lockedFields.some(lockedField => {\n return lockedField.fieldId === field.storageId || lockedField.fieldId === field.fieldId;\n });\n if (!field.storageId) {\n /**\n * In case field is locked, we must set the storageId to the fieldId value.\n * This should not happen, because we upgrade all the fields in 5.33.0, but let's have a check just in case of some upgrade miss.\n */\n //\n if (isLocked) {\n field.storageId = field.fieldId;\n }\n /**\n * When having original field, just set the storageId to value from the originalField\n */\n //\n else if (originalField) {\n field.storageId = originalField.storageId;\n }\n /**\n * The last case is when no original field and not locked - so this is a completely new field.\n */\n //\n else {\n field.storageId = createFieldStorageId(field);\n }\n }\n /**\n * Check the field's fieldId against existing ones.\n * There cannot be two fields with the same fieldId - outside world identifier.\n */\n if (fieldIdList.includes(field.fieldId)) {\n throw new WebinyError(\n `Cannot update content model because field \"${field.storageId}\" has fieldId \"${field.fieldId}\", which is already used.`\n );\n }\n fieldIdList.push(field.fieldId);\n /**\n * Check the field's storageId against the existing ones.\n * There cannot be two fields with the same storageId.\n */\n if (storageIdList.includes(field.storageId)) {\n throw new WebinyError(\n `Cannot update content model because field \"${field.label}\" has storageId \"${field.storageId}\", which is already used.`\n );\n }\n storageIdList.push(field.storageId);\n /**\n * There might be some plugins which allow child fields.\n * We use this method to validate them as well.\n */\n if (!plugin.validateChildFields) {\n continue;\n }\n const validateChildFields = createValidateChildFields(plugins);\n plugin.validateChildFields({\n field,\n originalField,\n validate: validateChildFields\n });\n }\n};\n\ninterface CreateGraphQLSchemaParams {\n context: CmsContext;\n model: CmsModel;\n}\n\nconst createGraphQLSchema = async (params: CreateGraphQLSchemaParams): Promise<any> => {\n const { context, model } = params;\n\n context.security.disableAuthorization();\n const models = (await context.cms.listModels()).filter((model): model is CmsModel => {\n return !model.isPrivate;\n });\n context.security.enableAuthorization();\n\n const modelPlugins = await buildSchemaPlugins({\n context,\n models: models.concat([model])\n });\n\n const plugins = context.plugins\n .byType<CmsGraphQLSchemaPlugin>(CmsGraphQLSchemaPlugin.type)\n .reduce<Record<string, CmsGraphQLSchemaPlugin>>((collection, plugin) => {\n const name =\n plugin.name || `${CmsGraphQLSchemaPlugin.type}-${generateAlphaNumericId(16)}`;\n collection[name] = plugin;\n return collection;\n }, {});\n for (const plugin of modelPlugins) {\n const name = plugin.name || `${plugin.type}-${generateAlphaNumericId(16)}`;\n plugins[name] = plugin;\n }\n\n return createExecutableSchema({\n plugins: Object.values(plugins)\n });\n};\n\nconst extractErrorObject = (error: any) => {\n return [\"message\", \"code\", \"data\", \"stack\"].reduce<Record<string, any>>((output, key) => {\n if (!error[key]) {\n return output;\n }\n output[key] = error[key];\n return output;\n }, {});\n};\n\ninterface ValidateModelFieldsParams {\n models: CmsModel[];\n model: CmsModel;\n original?: CmsModel;\n context: CmsContext;\n}\n\nexport const validateModelFields = async (params: ValidateModelFieldsParams): Promise<void> => {\n const { models, model, original, context } = params;\n const { titleFieldId, descriptionFieldId, imageFieldId } = model;\n const { plugins } = context;\n\n /**\n * There should be fields/locked fields in either model or data to be updated.\n */\n const { fields = [], lockedFields = [] } = model;\n\n /**\n * Let's inspect the fields of the received content model. We prevent saving of a content model if it\n * contains a field for which a \"cms-model-field-to-graphql\" plugin does not exist on the backend.\n */\n const fieldTypePlugins = plugins.byType<CmsModelFieldToGraphQLPlugin>(\n \"cms-model-field-to-graphql\"\n );\n\n validateFields({\n fields,\n originalFields: original?.fields || [],\n lockedFields,\n plugins: fieldTypePlugins\n });\n\n if (fields.length) {\n const sorterPlugins = plugins.byType<CmsGraphQLSchemaSorterPlugin>(\n CmsGraphQLSchemaSorterPlugin.type\n );\n /**\n * Make sure that this model can be safely converted to a GraphQL SDL\n */\n const schema = createManageSDL({\n models,\n model,\n fieldTypePlugins: fieldTypePlugins.reduce(\n (acc, pl) => ({ ...acc, [pl.fieldType]: pl }),\n {}\n ),\n sorterPlugins\n });\n\n try {\n gql(schema);\n } catch (err) {\n throw new WebinyError(extractInvalidField(model, err));\n }\n /**\n *\n */\n try {\n await createGraphQLSchema({\n context,\n model\n });\n } catch (err) {\n throw new WebinyError({\n message:\n \"Cannot generate GraphQL schema when testing with the given model. Please check the response for more details.\",\n code: \"GRAPHQL_SCHEMA_ERROR\",\n data: {\n modelId: model.modelId,\n error: extractErrorObject(err)\n }\n });\n }\n }\n\n model.titleFieldId = getContentModelTitleFieldId(fields, titleFieldId);\n model.descriptionFieldId = getContentModelDescriptionFieldId(fields, descriptionFieldId);\n model.imageFieldId = getContentModelImageFieldId(fields, imageFieldId);\n\n const cmsLockedFieldPlugins =\n plugins.byType<CmsModelLockedFieldPlugin>(\"cms-model-locked-field\");\n\n /**\n * We must not allow removal or changes in fields that are already in use in content entries.\n * Locked fields still have fieldId (should be storageId) because of the old existing locked fields in the models.\n */\n for (const lockedField of lockedFields) {\n const existingField = fields.find(item => item.storageId === lockedField.fieldId);\n\n /**\n * Starting with 5.33.0 fields can be deleted.\n * Our UI gives a warning upon locked field deletion, but if user is managing fields through API directly - we cannot do anything.\n */\n if (!existingField) {\n continue;\n }\n\n if (lockedField.multipleValues !== existingField.multipleValues) {\n throw new WebinyError(\n `Cannot change \"multipleValues\" for the \"${lockedField.fieldId}\" field because it's already in use in created content.`,\n \"ENTRY_FIELD_USED\",\n {\n reason: `\"multipleValues\" changed`,\n field: existingField\n }\n );\n }\n\n const fieldType = getBaseFieldType(existingField);\n if (lockedField.type !== fieldType) {\n throw new WebinyError(\n `Cannot change field type for the \"${lockedField.fieldId}\" field because it's already in use in created content.`,\n \"ENTRY_FIELD_USED\",\n {\n reason: `\"type\" changed`,\n lockedFieldType: lockedField.type,\n existingFieldType: fieldType\n }\n );\n }\n\n /**\n * Check `lockedField` invariant for specific field\n */\n const lockedFieldsByType = cmsLockedFieldPlugins.filter(\n pl => pl.fieldType === getBaseFieldType(lockedField)\n );\n for (const plugin of lockedFieldsByType) {\n if (typeof plugin.checkLockedField !== \"function\") {\n continue;\n }\n plugin.checkLockedField({\n lockedField,\n field: existingField\n });\n }\n }\n};\n"],"mappings":"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"}
@@ -2,8 +2,11 @@ import zod from "zod";
2
2
  export declare const createModelCreateValidation: () => zod.ZodObject<{
3
3
  name: zod.ZodString;
4
4
  modelId: zod.ZodOptional<zod.ZodString>;
5
+ singularApiName: zod.ZodEffects<zod.ZodString, string, string>;
6
+ pluralApiName: zod.ZodEffects<zod.ZodString, string, string>;
5
7
  description: zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>;
6
8
  group: zod.ZodString;
9
+ icon: zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>;
7
10
  fields: zod.ZodDefault<zod.ZodArray<zod.ZodObject<{
8
11
  id: zod.ZodString;
9
12
  storageId: zod.ZodEffects<zod.ZodOptional<zod.ZodString>, string, string | undefined>;
@@ -13,7 +16,7 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
13
16
  placeholderText: zod.ZodDefault<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>>;
14
17
  type: zod.ZodString;
15
18
  tags: zod.ZodDefault<zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>>;
16
- multipleValues: zod.ZodDefault<zod.ZodOptional<zod.ZodBoolean>>;
19
+ multipleValues: zod.ZodDefault<zod.ZodEffects<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodBoolean>>>, boolean, boolean | null | undefined>>;
17
20
  predefinedValues: zod.ZodOptional<zod.ZodDefault<zod.ZodObject<{
18
21
  enabled: zod.ZodBoolean;
19
22
  values: zod.ZodDefault<zod.ZodArray<zod.ZodObject<{
@@ -53,31 +56,31 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
53
56
  }>>;
54
57
  validation: zod.ZodDefault<zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
55
58
  name: zod.ZodString;
56
- message: zod.ZodString;
57
- settings: zod.ZodDefault<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>;
59
+ message: zod.ZodDefault<zod.ZodOptional<zod.ZodString>>;
60
+ settings: zod.ZodDefault<zod.ZodEffects<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>>, {}, {} | null | undefined>>;
58
61
  }, "strip", zod.ZodTypeAny, {
59
62
  name: string;
60
63
  settings: {};
61
64
  message: string;
62
65
  }, {
63
- settings?: {} | undefined;
66
+ settings?: {} | null | undefined;
67
+ message?: string | undefined;
64
68
  name: string;
65
- message: string;
66
69
  }>, "many">>>;
67
70
  listValidation: zod.ZodDefault<zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
68
71
  name: zod.ZodString;
69
- message: zod.ZodString;
70
- settings: zod.ZodDefault<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>;
72
+ message: zod.ZodDefault<zod.ZodOptional<zod.ZodString>>;
73
+ settings: zod.ZodDefault<zod.ZodEffects<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>>, {}, {} | null | undefined>>;
71
74
  }, "strip", zod.ZodTypeAny, {
72
75
  name: string;
73
76
  settings: {};
74
77
  message: string;
75
78
  }, {
76
- settings?: {} | undefined;
79
+ settings?: {} | null | undefined;
80
+ message?: string | undefined;
77
81
  name: string;
78
- message: string;
79
82
  }>, "many">>>;
80
- settings: zod.ZodDefault<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>;
83
+ settings: zod.ZodDefault<zod.ZodEffects<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>>, {}, {} | null | undefined>>;
81
84
  }, "strip", zod.ZodTypeAny, {
82
85
  predefinedValues?: {
83
86
  values: {
@@ -126,18 +129,18 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
126
129
  name: string;
127
130
  } | undefined;
128
131
  validation?: {
129
- settings?: {} | undefined;
132
+ settings?: {} | null | undefined;
133
+ message?: string | undefined;
130
134
  name: string;
131
- message: string;
132
135
  }[] | undefined;
133
136
  listValidation?: {
134
- settings?: {} | undefined;
137
+ settings?: {} | null | undefined;
138
+ message?: string | undefined;
135
139
  name: string;
136
- message: string;
137
140
  }[] | undefined;
138
- multipleValues?: boolean | undefined;
141
+ multipleValues?: boolean | null | undefined;
139
142
  tags?: string[] | undefined;
140
- settings?: {} | undefined;
143
+ settings?: {} | null | undefined;
141
144
  id: string;
142
145
  type: string;
143
146
  fieldId: string;
@@ -145,12 +148,19 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
145
148
  }>, "many">>;
146
149
  layout: zod.ZodDefault<zod.ZodArray<zod.ZodArray<zod.ZodString, "many">, "many">>;
147
150
  tags: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
148
- titleFieldId: zod.ZodOptional<zod.ZodString>;
151
+ titleFieldId: zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>;
152
+ descriptionFieldId: zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>;
153
+ imageFieldId: zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>;
154
+ defaultFields: zod.ZodNullable<zod.ZodOptional<zod.ZodBoolean>>;
149
155
  }, "strip", zod.ZodTypeAny, {
150
156
  description?: string | null | undefined;
157
+ icon?: string | null | undefined;
151
158
  tags?: string[] | undefined;
152
159
  modelId?: string | undefined;
153
- titleFieldId?: string | undefined;
160
+ titleFieldId?: string | null | undefined;
161
+ descriptionFieldId?: string | null | undefined;
162
+ imageFieldId?: string | null | undefined;
163
+ defaultFields?: boolean | null | undefined;
154
164
  name: string;
155
165
  fields: {
156
166
  predefinedValues?: {
@@ -186,9 +196,12 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
186
196
  settings: {};
187
197
  }[];
188
198
  layout: string[][];
199
+ singularApiName: string;
200
+ pluralApiName: string;
189
201
  group: string;
190
202
  }, {
191
203
  description?: string | null | undefined;
204
+ icon?: string | null | undefined;
192
205
  tags?: string[] | undefined;
193
206
  fields?: {
194
207
  storageId?: string | undefined;
@@ -206,18 +219,18 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
206
219
  name: string;
207
220
  } | undefined;
208
221
  validation?: {
209
- settings?: {} | undefined;
222
+ settings?: {} | null | undefined;
223
+ message?: string | undefined;
210
224
  name: string;
211
- message: string;
212
225
  }[] | undefined;
213
226
  listValidation?: {
214
- settings?: {} | undefined;
227
+ settings?: {} | null | undefined;
228
+ message?: string | undefined;
215
229
  name: string;
216
- message: string;
217
230
  }[] | undefined;
218
- multipleValues?: boolean | undefined;
231
+ multipleValues?: boolean | null | undefined;
219
232
  tags?: string[] | undefined;
220
- settings?: {} | undefined;
233
+ settings?: {} | null | undefined;
221
234
  id: string;
222
235
  type: string;
223
236
  fieldId: string;
@@ -225,33 +238,50 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
225
238
  }[] | undefined;
226
239
  layout?: string[][] | undefined;
227
240
  modelId?: string | undefined;
228
- titleFieldId?: string | undefined;
241
+ titleFieldId?: string | null | undefined;
242
+ descriptionFieldId?: string | null | undefined;
243
+ imageFieldId?: string | null | undefined;
244
+ defaultFields?: boolean | null | undefined;
229
245
  name: string;
246
+ singularApiName: string;
247
+ pluralApiName: string;
230
248
  group: string;
231
249
  }>;
232
250
  export declare const createModelCreateFromValidation: () => zod.ZodObject<{
233
251
  name: zod.ZodString;
234
252
  modelId: zod.ZodOptional<zod.ZodString>;
253
+ singularApiName: zod.ZodEffects<zod.ZodString, string, string>;
254
+ pluralApiName: zod.ZodEffects<zod.ZodString, string, string>;
235
255
  description: zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>;
236
256
  group: zod.ZodString;
257
+ icon: zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>;
237
258
  locale: zod.ZodOptional<zod.ZodString>;
238
259
  }, "strip", zod.ZodTypeAny, {
239
260
  locale?: string | undefined;
240
261
  description?: string | null | undefined;
262
+ icon?: string | null | undefined;
241
263
  modelId?: string | undefined;
242
264
  name: string;
265
+ singularApiName: string;
266
+ pluralApiName: string;
243
267
  group: string;
244
268
  }, {
245
269
  locale?: string | undefined;
246
270
  description?: string | null | undefined;
271
+ icon?: string | null | undefined;
247
272
  modelId?: string | undefined;
248
273
  name: string;
274
+ singularApiName: string;
275
+ pluralApiName: string;
249
276
  group: string;
250
277
  }>;
251
278
  export declare const createModelUpdateValidation: () => zod.ZodObject<{
252
279
  name: zod.ZodOptional<zod.ZodString>;
280
+ singularApiName: zod.ZodEffects<zod.ZodOptional<zod.ZodString>, string | undefined, string | undefined>;
281
+ pluralApiName: zod.ZodEffects<zod.ZodOptional<zod.ZodString>, string | undefined, string | undefined>;
253
282
  description: zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>;
254
283
  group: zod.ZodOptional<zod.ZodString>;
284
+ icon: zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>;
255
285
  fields: zod.ZodArray<zod.ZodObject<{
256
286
  id: zod.ZodString;
257
287
  storageId: zod.ZodEffects<zod.ZodOptional<zod.ZodString>, string, string | undefined>;
@@ -261,7 +291,7 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
261
291
  placeholderText: zod.ZodDefault<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>>;
262
292
  type: zod.ZodString;
263
293
  tags: zod.ZodDefault<zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>>;
264
- multipleValues: zod.ZodDefault<zod.ZodOptional<zod.ZodBoolean>>;
294
+ multipleValues: zod.ZodDefault<zod.ZodEffects<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodBoolean>>>, boolean, boolean | null | undefined>>;
265
295
  predefinedValues: zod.ZodOptional<zod.ZodDefault<zod.ZodObject<{
266
296
  enabled: zod.ZodBoolean;
267
297
  values: zod.ZodDefault<zod.ZodArray<zod.ZodObject<{
@@ -301,31 +331,31 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
301
331
  }>>;
302
332
  validation: zod.ZodDefault<zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
303
333
  name: zod.ZodString;
304
- message: zod.ZodString;
305
- settings: zod.ZodDefault<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>;
334
+ message: zod.ZodDefault<zod.ZodOptional<zod.ZodString>>;
335
+ settings: zod.ZodDefault<zod.ZodEffects<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>>, {}, {} | null | undefined>>;
306
336
  }, "strip", zod.ZodTypeAny, {
307
337
  name: string;
308
338
  settings: {};
309
339
  message: string;
310
340
  }, {
311
- settings?: {} | undefined;
341
+ settings?: {} | null | undefined;
342
+ message?: string | undefined;
312
343
  name: string;
313
- message: string;
314
344
  }>, "many">>>;
315
345
  listValidation: zod.ZodDefault<zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
316
346
  name: zod.ZodString;
317
- message: zod.ZodString;
318
- settings: zod.ZodDefault<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>;
347
+ message: zod.ZodDefault<zod.ZodOptional<zod.ZodString>>;
348
+ settings: zod.ZodDefault<zod.ZodEffects<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>>, {}, {} | null | undefined>>;
319
349
  }, "strip", zod.ZodTypeAny, {
320
350
  name: string;
321
351
  settings: {};
322
352
  message: string;
323
353
  }, {
324
- settings?: {} | undefined;
354
+ settings?: {} | null | undefined;
355
+ message?: string | undefined;
325
356
  name: string;
326
- message: string;
327
357
  }>, "many">>>;
328
- settings: zod.ZodDefault<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>;
358
+ settings: zod.ZodDefault<zod.ZodEffects<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>>, {}, {} | null | undefined>>;
329
359
  }, "strip", zod.ZodTypeAny, {
330
360
  predefinedValues?: {
331
361
  values: {
@@ -374,32 +404,39 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
374
404
  name: string;
375
405
  } | undefined;
376
406
  validation?: {
377
- settings?: {} | undefined;
407
+ settings?: {} | null | undefined;
408
+ message?: string | undefined;
378
409
  name: string;
379
- message: string;
380
410
  }[] | undefined;
381
411
  listValidation?: {
382
- settings?: {} | undefined;
412
+ settings?: {} | null | undefined;
413
+ message?: string | undefined;
383
414
  name: string;
384
- message: string;
385
415
  }[] | undefined;
386
- multipleValues?: boolean | undefined;
416
+ multipleValues?: boolean | null | undefined;
387
417
  tags?: string[] | undefined;
388
- settings?: {} | undefined;
418
+ settings?: {} | null | undefined;
389
419
  id: string;
390
420
  type: string;
391
421
  fieldId: string;
392
422
  label: string;
393
423
  }>, "many">;
394
424
  layout: zod.ZodArray<zod.ZodArray<zod.ZodString, "many">, "many">;
395
- titleFieldId: zod.ZodOptional<zod.ZodString>;
425
+ titleFieldId: zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>;
426
+ descriptionFieldId: zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>;
427
+ imageFieldId: zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>;
396
428
  tags: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
397
429
  }, "strip", zod.ZodTypeAny, {
398
430
  name?: string | undefined;
399
431
  description?: string | null | undefined;
432
+ icon?: string | null | undefined;
400
433
  tags?: string[] | undefined;
434
+ singularApiName?: string | undefined;
435
+ pluralApiName?: string | undefined;
401
436
  group?: string | undefined;
402
- titleFieldId?: string | undefined;
437
+ titleFieldId?: string | null | undefined;
438
+ descriptionFieldId?: string | null | undefined;
439
+ imageFieldId?: string | null | undefined;
403
440
  fields: {
404
441
  predefinedValues?: {
405
442
  values: {
@@ -437,9 +474,14 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
437
474
  }, {
438
475
  name?: string | undefined;
439
476
  description?: string | null | undefined;
477
+ icon?: string | null | undefined;
440
478
  tags?: string[] | undefined;
479
+ singularApiName?: string | undefined;
480
+ pluralApiName?: string | undefined;
441
481
  group?: string | undefined;
442
- titleFieldId?: string | undefined;
482
+ titleFieldId?: string | null | undefined;
483
+ descriptionFieldId?: string | null | undefined;
484
+ imageFieldId?: string | null | undefined;
443
485
  fields: {
444
486
  storageId?: string | undefined;
445
487
  helpText?: string | null | undefined;
@@ -456,18 +498,18 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
456
498
  name: string;
457
499
  } | undefined;
458
500
  validation?: {
459
- settings?: {} | undefined;
501
+ settings?: {} | null | undefined;
502
+ message?: string | undefined;
460
503
  name: string;
461
- message: string;
462
504
  }[] | undefined;
463
505
  listValidation?: {
464
- settings?: {} | undefined;
506
+ settings?: {} | null | undefined;
507
+ message?: string | undefined;
465
508
  name: string;
466
- message: string;
467
509
  }[] | undefined;
468
- multipleValues?: boolean | undefined;
510
+ multipleValues?: boolean | null | undefined;
469
511
  tags?: string[] | undefined;
470
- settings?: {} | undefined;
512
+ settings?: {} | null | undefined;
471
513
  id: string;
472
514
  type: string;
473
515
  fieldId: string;
@@ -6,10 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.createModelUpdateValidation = exports.createModelCreateValidation = exports.createModelCreateFromValidation = void 0;
8
8
  var _zod = _interopRequireDefault(require("zod"));
9
+ var _upperFirst = _interopRequireDefault(require("lodash/upperFirst"));
10
+ var _camelCase = _interopRequireDefault(require("lodash/camelCase"));
9
11
  const fieldSystemFields = ["id", "fieldId", "storageId", "label", "helpText", "placeholderText", "type", "multipleValues", "predefinedValues", "renderer", "validation", "listValidation", "settings"];
10
12
  const str = _zod.default.string().trim();
11
13
  const shortString = str.max(255);
12
14
  const optionalShortString = shortString.optional();
15
+ const optionalNullishShortString = optionalShortString.nullish();
13
16
  const fieldSchema = _zod.default.object({
14
17
  id: shortString,
15
18
  storageId: _zod.default.string().optional().transform(() => {
@@ -33,7 +36,9 @@ const fieldSchema = _zod.default.object({
33
36
  placeholderText: optionalShortString.optional().nullable().default(null),
34
37
  type: shortString,
35
38
  tags: _zod.default.array(shortString).optional().default([]),
36
- multipleValues: _zod.default.boolean().optional().default(false),
39
+ multipleValues: _zod.default.boolean().optional().nullish().transform(value => {
40
+ return !!value;
41
+ }).default(false),
37
42
  predefinedValues: _zod.default.object({
38
43
  enabled: _zod.default.boolean(),
39
44
  values: _zod.default.array(_zod.default.object({
@@ -50,26 +55,51 @@ const fieldSchema = _zod.default.object({
50
55
  }).optional(),
51
56
  validation: _zod.default.array(_zod.default.object({
52
57
  name: shortString,
53
- message: shortString,
54
- settings: _zod.default.object({}).passthrough().optional().default({})
58
+ message: optionalShortString.default("Value is required."),
59
+ settings: _zod.default.object({}).passthrough().optional().nullish().transform(value => {
60
+ return value || {};
61
+ }).default({})
55
62
  })).optional().default([]),
56
63
  listValidation: _zod.default.array(_zod.default.object({
57
64
  name: shortString,
58
- message: shortString,
59
- settings: _zod.default.object({}).passthrough().optional().default({})
65
+ message: optionalShortString.default("Value is required."),
66
+ settings: _zod.default.object({}).passthrough().optional().nullish().transform(value => {
67
+ return value || {};
68
+ }).default({})
60
69
  })).optional().default([]),
61
- settings: _zod.default.object({}).passthrough().optional().default({})
70
+ settings: _zod.default.object({}).passthrough().optional().nullish().transform(value => {
71
+ return value || {};
72
+ }).default({})
62
73
  });
74
+ const refinementValidation = value => {
75
+ return value === (0, _upperFirst.default)((0, _camelCase.default)(value));
76
+ };
77
+ const refinementSingularValidationMessage = value => {
78
+ return {
79
+ message: `The Singular API Name value "${value || "undefined"}" is not valid. It must in Upper First + Camel Cased form. For example: "ArticleCategory" or "CarMake".`
80
+ };
81
+ };
82
+ const refinementPluralValidationMessage = value => {
83
+ return {
84
+ message: `The Plural API Name value "${value || "undefined"}" is not valid. It must in Upper First + Camel Cased form. For example: "ArticleCategories" or "CarMakes".`
85
+ };
86
+ };
63
87
  const createModelCreateValidation = () => {
64
88
  return _zod.default.object({
65
89
  name: shortString,
66
90
  modelId: optionalShortString,
67
- description: optionalShortString.nullish(),
91
+ singularApiName: shortString.refine(refinementValidation, refinementSingularValidationMessage),
92
+ pluralApiName: shortString.refine(refinementValidation, refinementPluralValidationMessage),
93
+ description: optionalNullishShortString,
68
94
  group: shortString,
95
+ icon: optionalNullishShortString,
69
96
  fields: _zod.default.array(fieldSchema).default([]),
70
97
  layout: _zod.default.array(_zod.default.array(shortString)).default([]),
71
98
  tags: _zod.default.array(shortString).optional(),
72
- titleFieldId: optionalShortString
99
+ titleFieldId: optionalShortString.nullish(),
100
+ descriptionFieldId: optionalShortString.nullish(),
101
+ imageFieldId: optionalShortString.nullish(),
102
+ defaultFields: _zod.default.boolean().nullish()
73
103
  });
74
104
  };
75
105
  exports.createModelCreateValidation = createModelCreateValidation;
@@ -77,8 +107,11 @@ const createModelCreateFromValidation = () => {
77
107
  return _zod.default.object({
78
108
  name: shortString,
79
109
  modelId: optionalShortString,
80
- description: optionalShortString.nullish(),
110
+ singularApiName: shortString.refine(refinementValidation, refinementSingularValidationMessage),
111
+ pluralApiName: shortString.refine(refinementValidation, refinementPluralValidationMessage),
112
+ description: optionalNullishShortString,
81
113
  group: shortString,
114
+ icon: optionalNullishShortString,
82
115
  locale: optionalShortString
83
116
  });
84
117
  };
@@ -86,11 +119,26 @@ exports.createModelCreateFromValidation = createModelCreateFromValidation;
86
119
  const createModelUpdateValidation = () => {
87
120
  return _zod.default.object({
88
121
  name: optionalShortString,
89
- description: optionalShortString.nullish(),
122
+ singularApiName: optionalShortString.refine(value => {
123
+ if (!value) {
124
+ return true;
125
+ }
126
+ return refinementValidation(value);
127
+ }, refinementSingularValidationMessage),
128
+ pluralApiName: optionalShortString.refine(value => {
129
+ if (!value) {
130
+ return true;
131
+ }
132
+ return refinementValidation(value);
133
+ }, refinementPluralValidationMessage),
134
+ description: optionalNullishShortString,
90
135
  group: optionalShortString,
136
+ icon: optionalNullishShortString,
91
137
  fields: _zod.default.array(fieldSchema),
92
138
  layout: _zod.default.array(_zod.default.array(shortString)),
93
- titleFieldId: optionalShortString,
139
+ titleFieldId: optionalShortString.nullish(),
140
+ descriptionFieldId: optionalShortString.nullish(),
141
+ imageFieldId: optionalShortString.nullish(),
94
142
  tags: _zod.default.array(shortString).optional()
95
143
  });
96
144
  };
@@ -1 +1 @@
1
- {"version":3,"names":["fieldSystemFields","str","zod","string","trim","shortString","max","optionalShortString","optional","fieldSchema","object","id","storageId","transform","fieldId","regex","message","superRefine","value","ctx","includes","addIssue","code","ZodIssueCode","custom","path","label","helpText","nullish","default","placeholderText","nullable","type","tags","array","multipleValues","boolean","predefinedValues","enabled","values","selected","renderer","name","validation","settings","passthrough","listValidation","createModelCreateValidation","modelId","description","group","fields","layout","titleFieldId","createModelCreateFromValidation","locale","createModelUpdateValidation"],"sources":["validation.ts"],"sourcesContent":["import zod from \"zod\";\n\nconst fieldSystemFields: string[] = [\n \"id\",\n \"fieldId\",\n \"storageId\",\n \"label\",\n \"helpText\",\n \"placeholderText\",\n \"type\",\n \"multipleValues\",\n \"predefinedValues\",\n \"renderer\",\n \"validation\",\n \"listValidation\",\n \"settings\"\n];\n\nconst str = zod.string().trim();\nconst shortString = str.max(255);\nconst optionalShortString = shortString.optional();\n\nconst fieldSchema = zod.object({\n id: shortString,\n storageId: zod\n .string()\n .optional()\n .transform(() => {\n return \"\";\n }),\n fieldId: shortString\n .max(100)\n .regex(/^!?[a-zA-Z]/, {\n message: `Provided value is not valid - must not start with a number.`\n })\n .regex(/^(^[a-zA-Z0-9]+)$/, {\n message: `Provided value is not valid - must be alphanumeric string.`\n })\n .superRefine((value, ctx) => {\n if (fieldSystemFields.includes(value)) {\n return ctx.addIssue({\n code: zod.ZodIssueCode.custom,\n message: `Provided ${value} is not valid - \"${value}\" is an auto-generated field.`,\n path: [\"fieldId\"]\n });\n }\n }),\n label: shortString,\n helpText: optionalShortString.optional().nullish().default(null),\n placeholderText: optionalShortString.optional().nullable().default(null),\n type: shortString,\n tags: zod.array(shortString).optional().default([]),\n multipleValues: zod.boolean().optional().default(false),\n predefinedValues: zod\n .object({\n enabled: zod.boolean(),\n values: zod\n .array(\n zod.object({\n value: shortString,\n label: shortString,\n selected: zod.boolean().optional().default(false)\n })\n )\n .default([])\n })\n .default({\n enabled: false,\n values: []\n })\n .optional(),\n renderer: zod\n .object({\n name: shortString\n })\n .optional(),\n validation: zod\n .array(\n zod.object({\n name: shortString,\n message: shortString,\n settings: zod.object({}).passthrough().optional().default({})\n })\n )\n .optional()\n .default([]),\n listValidation: zod\n .array(\n zod.object({\n name: shortString,\n message: shortString,\n settings: zod.object({}).passthrough().optional().default({})\n })\n )\n .optional()\n .default([]),\n settings: zod.object({}).passthrough().optional().default({})\n});\n\nexport const createModelCreateValidation = () => {\n return zod.object({\n name: shortString,\n modelId: optionalShortString,\n description: optionalShortString.nullish(),\n group: shortString,\n fields: zod.array(fieldSchema).default([]),\n layout: zod.array(zod.array(shortString)).default([]),\n tags: zod.array(shortString).optional(),\n titleFieldId: optionalShortString\n });\n};\n\nexport const createModelCreateFromValidation = () => {\n return zod.object({\n name: shortString,\n modelId: optionalShortString,\n description: optionalShortString.nullish(),\n group: shortString,\n locale: optionalShortString\n });\n};\n\nexport const createModelUpdateValidation = () => {\n return zod.object({\n name: optionalShortString,\n description: optionalShortString.nullish(),\n group: optionalShortString,\n fields: zod.array(fieldSchema),\n layout: zod.array(zod.array(shortString)),\n titleFieldId: optionalShortString,\n tags: zod.array(shortString).optional()\n });\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["fieldSystemFields","str","zod","string","trim","shortString","max","optionalShortString","optional","optionalNullishShortString","nullish","fieldSchema","object","id","storageId","transform","fieldId","regex","message","superRefine","value","ctx","includes","addIssue","code","ZodIssueCode","custom","path","label","helpText","default","placeholderText","nullable","type","tags","array","multipleValues","boolean","predefinedValues","enabled","values","selected","renderer","name","validation","settings","passthrough","listValidation","refinementValidation","upperFirst","camelCase","refinementSingularValidationMessage","refinementPluralValidationMessage","createModelCreateValidation","modelId","singularApiName","refine","pluralApiName","description","group","icon","fields","layout","titleFieldId","descriptionFieldId","imageFieldId","defaultFields","createModelCreateFromValidation","locale","createModelUpdateValidation"],"sources":["validation.ts"],"sourcesContent":["import zod from \"zod\";\nimport upperFirst from \"lodash/upperFirst\";\nimport camelCase from \"lodash/camelCase\";\n\nconst fieldSystemFields: string[] = [\n \"id\",\n \"fieldId\",\n \"storageId\",\n \"label\",\n \"helpText\",\n \"placeholderText\",\n \"type\",\n \"multipleValues\",\n \"predefinedValues\",\n \"renderer\",\n \"validation\",\n \"listValidation\",\n \"settings\"\n];\n\nconst str = zod.string().trim();\nconst shortString = str.max(255);\nconst optionalShortString = shortString.optional();\nconst optionalNullishShortString = optionalShortString.nullish();\n\nconst fieldSchema = zod.object({\n id: shortString,\n storageId: zod\n .string()\n .optional()\n .transform(() => {\n return \"\";\n }),\n fieldId: shortString\n .max(100)\n .regex(/^!?[a-zA-Z]/, {\n message: `Provided value is not valid - must not start with a number.`\n })\n .regex(/^(^[a-zA-Z0-9]+)$/, {\n message: `Provided value is not valid - must be alphanumeric string.`\n })\n .superRefine((value, ctx) => {\n if (fieldSystemFields.includes(value)) {\n return ctx.addIssue({\n code: zod.ZodIssueCode.custom,\n message: `Provided ${value} is not valid - \"${value}\" is an auto-generated field.`,\n path: [\"fieldId\"]\n });\n }\n }),\n label: shortString,\n helpText: optionalShortString.optional().nullish().default(null),\n placeholderText: optionalShortString.optional().nullable().default(null),\n type: shortString,\n tags: zod.array(shortString).optional().default([]),\n multipleValues: zod\n .boolean()\n .optional()\n .nullish()\n .transform(value => {\n return !!value;\n })\n .default(false),\n predefinedValues: zod\n .object({\n enabled: zod.boolean(),\n values: zod\n .array(\n zod.object({\n value: shortString,\n label: shortString,\n selected: zod.boolean().optional().default(false)\n })\n )\n .default([])\n })\n .default({\n enabled: false,\n values: []\n })\n .optional(),\n renderer: zod\n .object({\n name: shortString\n })\n .optional(),\n validation: zod\n .array(\n zod.object({\n name: shortString,\n message: optionalShortString.default(\"Value is required.\"),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n })\n )\n .optional()\n .default([]),\n listValidation: zod\n .array(\n zod.object({\n name: shortString,\n message: optionalShortString.default(\"Value is required.\"),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n })\n )\n .optional()\n .default([]),\n settings: zod\n .object({})\n .passthrough()\n .optional()\n .nullish()\n .transform(value => {\n return value || {};\n })\n .default({})\n});\n\nconst refinementValidation = (value: string): boolean => {\n return value === upperFirst(camelCase(value));\n};\nconst refinementSingularValidationMessage = (value?: string) => {\n return {\n message: `The Singular API Name value \"${\n value || \"undefined\"\n }\" is not valid. It must in Upper First + Camel Cased form. For example: \"ArticleCategory\" or \"CarMake\".`\n };\n};\nconst refinementPluralValidationMessage = (value?: string) => {\n return {\n message: `The Plural API Name value \"${\n value || \"undefined\"\n }\" is not valid. It must in Upper First + Camel Cased form. For example: \"ArticleCategories\" or \"CarMakes\".`\n };\n};\n\nexport const createModelCreateValidation = () => {\n return zod.object({\n name: shortString,\n modelId: optionalShortString,\n singularApiName: shortString.refine(\n refinementValidation,\n refinementSingularValidationMessage\n ),\n pluralApiName: shortString.refine(refinementValidation, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: shortString,\n icon: optionalNullishShortString,\n fields: zod.array(fieldSchema).default([]),\n layout: zod.array(zod.array(shortString)).default([]),\n tags: zod.array(shortString).optional(),\n titleFieldId: optionalShortString.nullish(),\n descriptionFieldId: optionalShortString.nullish(),\n imageFieldId: optionalShortString.nullish(),\n defaultFields: zod.boolean().nullish()\n });\n};\n\nexport const createModelCreateFromValidation = () => {\n return zod.object({\n name: shortString,\n modelId: optionalShortString,\n singularApiName: shortString.refine(\n refinementValidation,\n refinementSingularValidationMessage\n ),\n pluralApiName: shortString.refine(refinementValidation, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: shortString,\n icon: optionalNullishShortString,\n locale: optionalShortString\n });\n};\n\nexport const createModelUpdateValidation = () => {\n return zod.object({\n name: optionalShortString,\n singularApiName: optionalShortString.refine(value => {\n if (!value) {\n return true;\n }\n return refinementValidation(value);\n }, refinementSingularValidationMessage),\n pluralApiName: optionalShortString.refine(value => {\n if (!value) {\n return true;\n }\n return refinementValidation(value);\n }, refinementPluralValidationMessage),\n description: optionalNullishShortString,\n group: optionalShortString,\n icon: optionalNullishShortString,\n fields: zod.array(fieldSchema),\n layout: zod.array(zod.array(shortString)),\n titleFieldId: optionalShortString.nullish(),\n descriptionFieldId: optionalShortString.nullish(),\n imageFieldId: optionalShortString.nullish(),\n tags: zod.array(shortString).optional()\n });\n};\n"],"mappings":"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"}