@webiny/api-headless-cms 0.0.0-unstable.c59b9cc5b9 → 0.0.0-unstable.c7dec08bb0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/constants.d.ts +1 -0
- package/constants.js +8 -0
- package/constants.js.map +1 -0
- package/context.js +37 -5
- package/context.js.map +1 -1
- package/crud/contentEntry.crud.d.ts +4 -0
- package/crud/contentEntry.crud.js +155 -55
- package/crud/contentEntry.crud.js.map +1 -1
- package/crud/contentModel/validateModelFields.js +1 -1
- package/crud/contentModel/validateModelFields.js.map +1 -1
- package/crud/contentModel/validation.d.ts +76 -76
- package/crud/contentModel.crud.d.ts +2 -0
- package/crud/contentModel.crud.js +22 -12
- package/crud/contentModel.crud.js.map +1 -1
- package/crud/contentModelGroup/validation.d.ts +4 -4
- package/crud/contentModelGroup.crud.d.ts +2 -0
- package/crud/contentModelGroup.crud.js +41 -20
- package/crud/contentModelGroup.crud.js.map +1 -1
- package/crud/settings.crud.d.ts +2 -0
- package/crud/settings.crud.js +2 -6
- package/crud/settings.crud.js.map +1 -1
- package/graphql/getSchema.js +1 -1
- package/graphql/getSchema.js.map +1 -1
- package/graphql/index.d.ts +1 -1
- package/graphql/schema/baseSchema.js +16 -0
- package/graphql/schema/baseSchema.js.map +1 -1
- package/graphql/schema/contentEntries.js +6 -1
- package/graphql/schema/contentEntries.js.map +1 -1
- package/graphql/schema/createManageResolvers.d.ts +1 -1
- package/graphql/schema/createManageResolvers.js +10 -0
- package/graphql/schema/createManageResolvers.js.map +1 -1
- package/graphql/schema/createManageSDL.js +19 -4
- package/graphql/schema/createManageSDL.js.map +1 -1
- package/graphql/schema/createReadSDL.js +1 -0
- package/graphql/schema/createReadSDL.js.map +1 -1
- package/graphql/schema/resolvers/manage/resolveMove.d.ts +8 -0
- package/graphql/schema/resolvers/manage/resolveMove.js +30 -0
- package/graphql/schema/resolvers/manage/resolveMove.js.map +1 -0
- package/graphql/system.d.ts +2 -5
- package/graphql/system.js +1 -11
- package/graphql/system.js.map +1 -1
- package/graphqlFields/number.js +1 -0
- package/graphqlFields/number.js.map +1 -1
- package/graphqlFields/object.js +2 -2
- package/graphqlFields/object.js.map +1 -1
- package/graphqlFields/text.js +2 -0
- package/graphqlFields/text.js.map +1 -1
- package/index.d.ts +1 -1
- package/package.json +19 -23
- package/types.d.ts +38 -5
- package/types.js.map +1 -1
- package/utils/createTypeFromFields.js +1 -1
- package/utils/createTypeFromFields.js.map +1 -1
- package/utils/permissions/EntriesPermissions.d.ts +4 -0
- package/utils/permissions/EntriesPermissions.js +9 -0
- package/utils/permissions/EntriesPermissions.js.map +1 -0
- package/utils/permissions/ModelGroupsPermissions.d.ts +11 -0
- package/utils/permissions/ModelGroupsPermissions.js +48 -0
- package/utils/permissions/ModelGroupsPermissions.js.map +1 -0
- package/utils/permissions/ModelsPermissions.d.ts +20 -0
- package/utils/permissions/ModelsPermissions.js +91 -0
- package/utils/permissions/ModelsPermissions.js.map +1 -0
- package/utils/permissions/SettingsPermissions.d.ts +4 -0
- package/utils/permissions/SettingsPermissions.js +9 -0
- package/utils/permissions/SettingsPermissions.js.map +1 -0
- package/utils/renderListFilterFields.d.ts +1 -0
- package/utils/renderListFilterFields.js +10 -4
- package/utils/renderListFilterFields.js.map +1 -1
- package/utils/renderSortEnum.d.ts +1 -1
- package/utils/renderSortEnum.js +3 -0
- package/utils/renderSortEnum.js.map +1 -1
- package/utils/access.d.ts +0 -8
- package/utils/access.js +0 -76
- package/utils/access.js.map +0 -1
- package/utils/ownership.d.ts +0 -8
- package/utils/ownership.js +0 -33
- package/utils/ownership.js.map +0 -1
- package/utils/permissions.d.ts +0 -7
- package/utils/permissions.js +0 -91
- package/utils/permissions.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
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","models","security","withoutAuthorization","cms","listModels","filter","isPrivate","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 const models = await context.security.withoutAuthorization(async () => {\n return (await context.cms.listModels()).filter((model): model is CmsModel => {\n return model.isPrivate !== true;\n });\n });\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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"}
|
|
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","models","security","withoutAuthorization","cms","listModels","filter","isPrivate","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","Boolean","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 const models = await context.security.withoutAuthorization(async () => {\n return (await context.cms.listModels()).filter((model): model is CmsModel => {\n return model.isPrivate !== true;\n });\n });\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 (Boolean(lockedField.multipleValues) !== Boolean(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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"}
|
|
@@ -24,26 +24,26 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
|
|
|
24
24
|
label: zod.ZodString;
|
|
25
25
|
selected: zod.ZodDefault<zod.ZodOptional<zod.ZodBoolean>>;
|
|
26
26
|
}, "strip", zod.ZodTypeAny, {
|
|
27
|
-
label: string;
|
|
28
27
|
value: string;
|
|
28
|
+
label: string;
|
|
29
29
|
selected: boolean;
|
|
30
30
|
}, {
|
|
31
31
|
selected?: boolean | undefined;
|
|
32
|
-
label: string;
|
|
33
32
|
value: string;
|
|
33
|
+
label: string;
|
|
34
34
|
}>, "many">>;
|
|
35
35
|
}, "strip", zod.ZodTypeAny, {
|
|
36
36
|
values: {
|
|
37
|
-
label: string;
|
|
38
37
|
value: string;
|
|
38
|
+
label: string;
|
|
39
39
|
selected: boolean;
|
|
40
40
|
}[];
|
|
41
41
|
enabled: boolean;
|
|
42
42
|
}, {
|
|
43
43
|
values?: {
|
|
44
44
|
selected?: boolean | undefined;
|
|
45
|
-
label: string;
|
|
46
45
|
value: string;
|
|
46
|
+
label: string;
|
|
47
47
|
}[] | undefined;
|
|
48
48
|
enabled: boolean;
|
|
49
49
|
}>>>;
|
|
@@ -60,19 +60,19 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
|
|
|
60
60
|
settings: zod.ZodDefault<zod.ZodEffects<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>>, {}, {} | null | undefined>>;
|
|
61
61
|
}, "strip", zod.ZodTypeAny, {
|
|
62
62
|
name: string;
|
|
63
|
-
settings: {};
|
|
64
63
|
message: string;
|
|
64
|
+
settings: {};
|
|
65
65
|
}, {
|
|
66
|
-
settings?: {} | null | undefined;
|
|
67
66
|
message?: string | undefined;
|
|
67
|
+
settings?: {} | null | undefined;
|
|
68
68
|
name: string;
|
|
69
69
|
}>, "many">>>>>, {
|
|
70
70
|
name: string;
|
|
71
|
-
settings: {};
|
|
72
71
|
message: string;
|
|
72
|
+
settings: {};
|
|
73
73
|
}[], {
|
|
74
|
-
settings?: {} | null | undefined;
|
|
75
74
|
message?: string | undefined;
|
|
75
|
+
settings?: {} | null | undefined;
|
|
76
76
|
name: string;
|
|
77
77
|
}[] | null | undefined>;
|
|
78
78
|
listValidation: zod.ZodEffects<zod.ZodDefault<zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
|
|
@@ -81,27 +81,27 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
|
|
|
81
81
|
settings: zod.ZodDefault<zod.ZodEffects<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>>, {}, {} | null | undefined>>;
|
|
82
82
|
}, "strip", zod.ZodTypeAny, {
|
|
83
83
|
name: string;
|
|
84
|
-
settings: {};
|
|
85
84
|
message: string;
|
|
85
|
+
settings: {};
|
|
86
86
|
}, {
|
|
87
|
-
settings?: {} | null | undefined;
|
|
88
87
|
message?: string | undefined;
|
|
88
|
+
settings?: {} | null | undefined;
|
|
89
89
|
name: string;
|
|
90
90
|
}>, "many">>>>>, {
|
|
91
91
|
name: string;
|
|
92
|
-
settings: {};
|
|
93
92
|
message: string;
|
|
93
|
+
settings: {};
|
|
94
94
|
}[], {
|
|
95
|
-
settings?: {} | null | undefined;
|
|
96
95
|
message?: string | undefined;
|
|
96
|
+
settings?: {} | null | undefined;
|
|
97
97
|
name: string;
|
|
98
98
|
}[] | null | undefined>;
|
|
99
99
|
settings: zod.ZodDefault<zod.ZodEffects<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>>, {}, {} | null | undefined>>;
|
|
100
100
|
}, "strip", zod.ZodTypeAny, {
|
|
101
101
|
predefinedValues?: {
|
|
102
102
|
values: {
|
|
103
|
-
label: string;
|
|
104
103
|
value: string;
|
|
104
|
+
label: string;
|
|
105
105
|
selected: boolean;
|
|
106
106
|
}[];
|
|
107
107
|
enabled: boolean;
|
|
@@ -109,8 +109,9 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
|
|
|
109
109
|
renderer?: {
|
|
110
110
|
name: string;
|
|
111
111
|
} | undefined;
|
|
112
|
-
id: string;
|
|
113
112
|
type: string;
|
|
113
|
+
id: string;
|
|
114
|
+
settings: {};
|
|
114
115
|
storageId: string;
|
|
115
116
|
fieldId: string;
|
|
116
117
|
label: string;
|
|
@@ -118,26 +119,26 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
|
|
|
118
119
|
placeholderText: string | null;
|
|
119
120
|
validation: {
|
|
120
121
|
name: string;
|
|
121
|
-
settings: {};
|
|
122
122
|
message: string;
|
|
123
|
+
settings: {};
|
|
123
124
|
}[];
|
|
124
125
|
listValidation: {
|
|
125
126
|
name: string;
|
|
126
|
-
settings: {};
|
|
127
127
|
message: string;
|
|
128
|
+
settings: {};
|
|
128
129
|
}[];
|
|
129
130
|
multipleValues: boolean;
|
|
130
131
|
tags: string[];
|
|
131
|
-
settings: {};
|
|
132
132
|
}, {
|
|
133
|
+
settings?: {} | null | undefined;
|
|
133
134
|
storageId?: string | undefined;
|
|
134
135
|
helpText?: string | null | undefined;
|
|
135
136
|
placeholderText?: string | null | undefined;
|
|
136
137
|
predefinedValues?: {
|
|
137
138
|
values?: {
|
|
138
139
|
selected?: boolean | undefined;
|
|
139
|
-
label: string;
|
|
140
140
|
value: string;
|
|
141
|
+
label: string;
|
|
141
142
|
}[] | undefined;
|
|
142
143
|
enabled: boolean;
|
|
143
144
|
} | undefined;
|
|
@@ -145,20 +146,19 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
|
|
|
145
146
|
name: string;
|
|
146
147
|
} | undefined;
|
|
147
148
|
validation?: {
|
|
148
|
-
settings?: {} | null | undefined;
|
|
149
149
|
message?: string | undefined;
|
|
150
|
+
settings?: {} | null | undefined;
|
|
150
151
|
name: string;
|
|
151
152
|
}[] | null | undefined;
|
|
152
153
|
listValidation?: {
|
|
153
|
-
settings?: {} | null | undefined;
|
|
154
154
|
message?: string | undefined;
|
|
155
|
+
settings?: {} | null | undefined;
|
|
155
156
|
name: string;
|
|
156
157
|
}[] | null | undefined;
|
|
157
158
|
multipleValues?: boolean | null | undefined;
|
|
158
159
|
tags?: string[] | undefined;
|
|
159
|
-
settings?: {} | null | undefined;
|
|
160
|
-
id: string;
|
|
161
160
|
type: string;
|
|
161
|
+
id: string;
|
|
162
162
|
fieldId: string;
|
|
163
163
|
label: string;
|
|
164
164
|
}>, "many">>;
|
|
@@ -177,12 +177,13 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
|
|
|
177
177
|
descriptionFieldId?: string | null | undefined;
|
|
178
178
|
imageFieldId?: string | null | undefined;
|
|
179
179
|
defaultFields?: boolean | null | undefined;
|
|
180
|
+
group: string;
|
|
180
181
|
name: string;
|
|
181
182
|
fields: {
|
|
182
183
|
predefinedValues?: {
|
|
183
184
|
values: {
|
|
184
|
-
label: string;
|
|
185
185
|
value: string;
|
|
186
|
+
label: string;
|
|
186
187
|
selected: boolean;
|
|
187
188
|
}[];
|
|
188
189
|
enabled: boolean;
|
|
@@ -190,8 +191,9 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
|
|
|
190
191
|
renderer?: {
|
|
191
192
|
name: string;
|
|
192
193
|
} | undefined;
|
|
193
|
-
id: string;
|
|
194
194
|
type: string;
|
|
195
|
+
id: string;
|
|
196
|
+
settings: {};
|
|
195
197
|
storageId: string;
|
|
196
198
|
fieldId: string;
|
|
197
199
|
label: string;
|
|
@@ -199,35 +201,32 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
|
|
|
199
201
|
placeholderText: string | null;
|
|
200
202
|
validation: {
|
|
201
203
|
name: string;
|
|
202
|
-
settings: {};
|
|
203
204
|
message: string;
|
|
205
|
+
settings: {};
|
|
204
206
|
}[];
|
|
205
207
|
listValidation: {
|
|
206
208
|
name: string;
|
|
207
|
-
settings: {};
|
|
208
209
|
message: string;
|
|
210
|
+
settings: {};
|
|
209
211
|
}[];
|
|
210
212
|
multipleValues: boolean;
|
|
211
213
|
tags: string[];
|
|
212
|
-
settings: {};
|
|
213
214
|
}[];
|
|
214
215
|
layout: string[][];
|
|
215
216
|
singularApiName: string;
|
|
216
217
|
pluralApiName: string;
|
|
217
|
-
group: string;
|
|
218
218
|
}, {
|
|
219
219
|
description?: string | null | undefined;
|
|
220
|
-
icon?: string | null | undefined;
|
|
221
|
-
tags?: string[] | undefined;
|
|
222
220
|
fields?: {
|
|
221
|
+
settings?: {} | null | undefined;
|
|
223
222
|
storageId?: string | undefined;
|
|
224
223
|
helpText?: string | null | undefined;
|
|
225
224
|
placeholderText?: string | null | undefined;
|
|
226
225
|
predefinedValues?: {
|
|
227
226
|
values?: {
|
|
228
227
|
selected?: boolean | undefined;
|
|
229
|
-
label: string;
|
|
230
228
|
value: string;
|
|
229
|
+
label: string;
|
|
231
230
|
}[] | undefined;
|
|
232
231
|
enabled: boolean;
|
|
233
232
|
} | undefined;
|
|
@@ -235,33 +234,34 @@ export declare const createModelCreateValidation: () => zod.ZodObject<{
|
|
|
235
234
|
name: string;
|
|
236
235
|
} | undefined;
|
|
237
236
|
validation?: {
|
|
238
|
-
settings?: {} | null | undefined;
|
|
239
237
|
message?: string | undefined;
|
|
238
|
+
settings?: {} | null | undefined;
|
|
240
239
|
name: string;
|
|
241
240
|
}[] | null | undefined;
|
|
242
241
|
listValidation?: {
|
|
243
|
-
settings?: {} | null | undefined;
|
|
244
242
|
message?: string | undefined;
|
|
243
|
+
settings?: {} | null | undefined;
|
|
245
244
|
name: string;
|
|
246
245
|
}[] | null | undefined;
|
|
247
246
|
multipleValues?: boolean | null | undefined;
|
|
248
247
|
tags?: string[] | undefined;
|
|
249
|
-
settings?: {} | null | undefined;
|
|
250
|
-
id: string;
|
|
251
248
|
type: string;
|
|
249
|
+
id: string;
|
|
252
250
|
fieldId: string;
|
|
253
251
|
label: string;
|
|
254
252
|
}[] | undefined;
|
|
253
|
+
icon?: string | null | undefined;
|
|
254
|
+
tags?: string[] | undefined;
|
|
255
255
|
layout?: string[][] | undefined;
|
|
256
256
|
modelId?: string | undefined;
|
|
257
257
|
titleFieldId?: string | null | undefined;
|
|
258
258
|
descriptionFieldId?: string | null | undefined;
|
|
259
259
|
imageFieldId?: string | null | undefined;
|
|
260
260
|
defaultFields?: boolean | null | undefined;
|
|
261
|
+
group: string;
|
|
261
262
|
name: string;
|
|
262
263
|
singularApiName: string;
|
|
263
264
|
pluralApiName: string;
|
|
264
|
-
group: string;
|
|
265
265
|
}>;
|
|
266
266
|
export declare const createModelCreateFromValidation: () => zod.ZodObject<{
|
|
267
267
|
name: zod.ZodString;
|
|
@@ -273,23 +273,23 @@ export declare const createModelCreateFromValidation: () => zod.ZodObject<{
|
|
|
273
273
|
icon: zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>;
|
|
274
274
|
locale: zod.ZodOptional<zod.ZodString>;
|
|
275
275
|
}, "strip", zod.ZodTypeAny, {
|
|
276
|
-
locale?: string | undefined;
|
|
277
276
|
description?: string | null | undefined;
|
|
277
|
+
locale?: string | undefined;
|
|
278
278
|
icon?: string | null | undefined;
|
|
279
279
|
modelId?: string | undefined;
|
|
280
|
+
group: string;
|
|
280
281
|
name: string;
|
|
281
282
|
singularApiName: string;
|
|
282
283
|
pluralApiName: string;
|
|
283
|
-
group: string;
|
|
284
284
|
}, {
|
|
285
|
-
locale?: string | undefined;
|
|
286
285
|
description?: string | null | undefined;
|
|
286
|
+
locale?: string | undefined;
|
|
287
287
|
icon?: string | null | undefined;
|
|
288
288
|
modelId?: string | undefined;
|
|
289
|
+
group: string;
|
|
289
290
|
name: string;
|
|
290
291
|
singularApiName: string;
|
|
291
292
|
pluralApiName: string;
|
|
292
|
-
group: string;
|
|
293
293
|
}>;
|
|
294
294
|
export declare const createModelUpdateValidation: () => zod.ZodObject<{
|
|
295
295
|
name: zod.ZodOptional<zod.ZodString>;
|
|
@@ -315,26 +315,26 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
|
|
|
315
315
|
label: zod.ZodString;
|
|
316
316
|
selected: zod.ZodDefault<zod.ZodOptional<zod.ZodBoolean>>;
|
|
317
317
|
}, "strip", zod.ZodTypeAny, {
|
|
318
|
-
label: string;
|
|
319
318
|
value: string;
|
|
319
|
+
label: string;
|
|
320
320
|
selected: boolean;
|
|
321
321
|
}, {
|
|
322
322
|
selected?: boolean | undefined;
|
|
323
|
-
label: string;
|
|
324
323
|
value: string;
|
|
324
|
+
label: string;
|
|
325
325
|
}>, "many">>;
|
|
326
326
|
}, "strip", zod.ZodTypeAny, {
|
|
327
327
|
values: {
|
|
328
|
-
label: string;
|
|
329
328
|
value: string;
|
|
329
|
+
label: string;
|
|
330
330
|
selected: boolean;
|
|
331
331
|
}[];
|
|
332
332
|
enabled: boolean;
|
|
333
333
|
}, {
|
|
334
334
|
values?: {
|
|
335
335
|
selected?: boolean | undefined;
|
|
336
|
-
label: string;
|
|
337
336
|
value: string;
|
|
337
|
+
label: string;
|
|
338
338
|
}[] | undefined;
|
|
339
339
|
enabled: boolean;
|
|
340
340
|
}>>>;
|
|
@@ -351,19 +351,19 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
|
|
|
351
351
|
settings: zod.ZodDefault<zod.ZodEffects<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>>, {}, {} | null | undefined>>;
|
|
352
352
|
}, "strip", zod.ZodTypeAny, {
|
|
353
353
|
name: string;
|
|
354
|
-
settings: {};
|
|
355
354
|
message: string;
|
|
355
|
+
settings: {};
|
|
356
356
|
}, {
|
|
357
|
-
settings?: {} | null | undefined;
|
|
358
357
|
message?: string | undefined;
|
|
358
|
+
settings?: {} | null | undefined;
|
|
359
359
|
name: string;
|
|
360
360
|
}>, "many">>>>>, {
|
|
361
361
|
name: string;
|
|
362
|
-
settings: {};
|
|
363
362
|
message: string;
|
|
363
|
+
settings: {};
|
|
364
364
|
}[], {
|
|
365
|
-
settings?: {} | null | undefined;
|
|
366
365
|
message?: string | undefined;
|
|
366
|
+
settings?: {} | null | undefined;
|
|
367
367
|
name: string;
|
|
368
368
|
}[] | null | undefined>;
|
|
369
369
|
listValidation: zod.ZodEffects<zod.ZodDefault<zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodArray<zod.ZodObject<{
|
|
@@ -372,27 +372,27 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
|
|
|
372
372
|
settings: zod.ZodDefault<zod.ZodEffects<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>>, {}, {} | null | undefined>>;
|
|
373
373
|
}, "strip", zod.ZodTypeAny, {
|
|
374
374
|
name: string;
|
|
375
|
-
settings: {};
|
|
376
375
|
message: string;
|
|
376
|
+
settings: {};
|
|
377
377
|
}, {
|
|
378
|
-
settings?: {} | null | undefined;
|
|
379
378
|
message?: string | undefined;
|
|
379
|
+
settings?: {} | null | undefined;
|
|
380
380
|
name: string;
|
|
381
381
|
}>, "many">>>>>, {
|
|
382
382
|
name: string;
|
|
383
|
-
settings: {};
|
|
384
383
|
message: string;
|
|
384
|
+
settings: {};
|
|
385
385
|
}[], {
|
|
386
|
-
settings?: {} | null | undefined;
|
|
387
386
|
message?: string | undefined;
|
|
387
|
+
settings?: {} | null | undefined;
|
|
388
388
|
name: string;
|
|
389
389
|
}[] | null | undefined>;
|
|
390
390
|
settings: zod.ZodDefault<zod.ZodEffects<zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodObject<{}, "passthrough", zod.ZodTypeAny, {}, {}>>>>, {}, {} | null | undefined>>;
|
|
391
391
|
}, "strip", zod.ZodTypeAny, {
|
|
392
392
|
predefinedValues?: {
|
|
393
393
|
values: {
|
|
394
|
-
label: string;
|
|
395
394
|
value: string;
|
|
395
|
+
label: string;
|
|
396
396
|
selected: boolean;
|
|
397
397
|
}[];
|
|
398
398
|
enabled: boolean;
|
|
@@ -400,8 +400,9 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
|
|
|
400
400
|
renderer?: {
|
|
401
401
|
name: string;
|
|
402
402
|
} | undefined;
|
|
403
|
-
id: string;
|
|
404
403
|
type: string;
|
|
404
|
+
id: string;
|
|
405
|
+
settings: {};
|
|
405
406
|
storageId: string;
|
|
406
407
|
fieldId: string;
|
|
407
408
|
label: string;
|
|
@@ -409,26 +410,26 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
|
|
|
409
410
|
placeholderText: string | null;
|
|
410
411
|
validation: {
|
|
411
412
|
name: string;
|
|
412
|
-
settings: {};
|
|
413
413
|
message: string;
|
|
414
|
+
settings: {};
|
|
414
415
|
}[];
|
|
415
416
|
listValidation: {
|
|
416
417
|
name: string;
|
|
417
|
-
settings: {};
|
|
418
418
|
message: string;
|
|
419
|
+
settings: {};
|
|
419
420
|
}[];
|
|
420
421
|
multipleValues: boolean;
|
|
421
422
|
tags: string[];
|
|
422
|
-
settings: {};
|
|
423
423
|
}, {
|
|
424
|
+
settings?: {} | null | undefined;
|
|
424
425
|
storageId?: string | undefined;
|
|
425
426
|
helpText?: string | null | undefined;
|
|
426
427
|
placeholderText?: string | null | undefined;
|
|
427
428
|
predefinedValues?: {
|
|
428
429
|
values?: {
|
|
429
430
|
selected?: boolean | undefined;
|
|
430
|
-
label: string;
|
|
431
431
|
value: string;
|
|
432
|
+
label: string;
|
|
432
433
|
}[] | undefined;
|
|
433
434
|
enabled: boolean;
|
|
434
435
|
} | undefined;
|
|
@@ -436,20 +437,19 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
|
|
|
436
437
|
name: string;
|
|
437
438
|
} | undefined;
|
|
438
439
|
validation?: {
|
|
439
|
-
settings?: {} | null | undefined;
|
|
440
440
|
message?: string | undefined;
|
|
441
|
+
settings?: {} | null | undefined;
|
|
441
442
|
name: string;
|
|
442
443
|
}[] | null | undefined;
|
|
443
444
|
listValidation?: {
|
|
444
|
-
settings?: {} | null | undefined;
|
|
445
445
|
message?: string | undefined;
|
|
446
|
+
settings?: {} | null | undefined;
|
|
446
447
|
name: string;
|
|
447
448
|
}[] | null | undefined;
|
|
448
449
|
multipleValues?: boolean | null | undefined;
|
|
449
450
|
tags?: string[] | undefined;
|
|
450
|
-
settings?: {} | null | undefined;
|
|
451
|
-
id: string;
|
|
452
451
|
type: string;
|
|
452
|
+
id: string;
|
|
453
453
|
fieldId: string;
|
|
454
454
|
label: string;
|
|
455
455
|
}>, "many">;
|
|
@@ -459,21 +459,21 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
|
|
|
459
459
|
imageFieldId: zod.ZodNullable<zod.ZodOptional<zod.ZodOptional<zod.ZodString>>>;
|
|
460
460
|
tags: zod.ZodOptional<zod.ZodArray<zod.ZodString, "many">>;
|
|
461
461
|
}, "strip", zod.ZodTypeAny, {
|
|
462
|
-
name?: string | undefined;
|
|
463
462
|
description?: string | null | undefined;
|
|
463
|
+
group?: string | undefined;
|
|
464
|
+
name?: string | undefined;
|
|
464
465
|
icon?: string | null | undefined;
|
|
465
466
|
tags?: string[] | undefined;
|
|
466
467
|
singularApiName?: string | undefined;
|
|
467
468
|
pluralApiName?: string | undefined;
|
|
468
|
-
group?: string | undefined;
|
|
469
469
|
titleFieldId?: string | null | undefined;
|
|
470
470
|
descriptionFieldId?: string | null | undefined;
|
|
471
471
|
imageFieldId?: string | null | undefined;
|
|
472
472
|
fields: {
|
|
473
473
|
predefinedValues?: {
|
|
474
474
|
values: {
|
|
475
|
-
label: string;
|
|
476
475
|
value: string;
|
|
476
|
+
label: string;
|
|
477
477
|
selected: boolean;
|
|
478
478
|
}[];
|
|
479
479
|
enabled: boolean;
|
|
@@ -481,8 +481,9 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
|
|
|
481
481
|
renderer?: {
|
|
482
482
|
name: string;
|
|
483
483
|
} | undefined;
|
|
484
|
-
id: string;
|
|
485
484
|
type: string;
|
|
485
|
+
id: string;
|
|
486
|
+
settings: {};
|
|
486
487
|
storageId: string;
|
|
487
488
|
fieldId: string;
|
|
488
489
|
label: string;
|
|
@@ -490,39 +491,39 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
|
|
|
490
491
|
placeholderText: string | null;
|
|
491
492
|
validation: {
|
|
492
493
|
name: string;
|
|
493
|
-
settings: {};
|
|
494
494
|
message: string;
|
|
495
|
+
settings: {};
|
|
495
496
|
}[];
|
|
496
497
|
listValidation: {
|
|
497
498
|
name: string;
|
|
498
|
-
settings: {};
|
|
499
499
|
message: string;
|
|
500
|
+
settings: {};
|
|
500
501
|
}[];
|
|
501
502
|
multipleValues: boolean;
|
|
502
503
|
tags: string[];
|
|
503
|
-
settings: {};
|
|
504
504
|
}[];
|
|
505
505
|
layout: string[][];
|
|
506
506
|
}, {
|
|
507
|
-
name?: string | undefined;
|
|
508
507
|
description?: string | null | undefined;
|
|
508
|
+
group?: string | undefined;
|
|
509
|
+
name?: string | undefined;
|
|
509
510
|
icon?: string | null | undefined;
|
|
510
511
|
tags?: string[] | undefined;
|
|
511
512
|
singularApiName?: string | undefined;
|
|
512
513
|
pluralApiName?: string | undefined;
|
|
513
|
-
group?: string | undefined;
|
|
514
514
|
titleFieldId?: string | null | undefined;
|
|
515
515
|
descriptionFieldId?: string | null | undefined;
|
|
516
516
|
imageFieldId?: string | null | undefined;
|
|
517
517
|
fields: {
|
|
518
|
+
settings?: {} | null | undefined;
|
|
518
519
|
storageId?: string | undefined;
|
|
519
520
|
helpText?: string | null | undefined;
|
|
520
521
|
placeholderText?: string | null | undefined;
|
|
521
522
|
predefinedValues?: {
|
|
522
523
|
values?: {
|
|
523
524
|
selected?: boolean | undefined;
|
|
524
|
-
label: string;
|
|
525
525
|
value: string;
|
|
526
|
+
label: string;
|
|
526
527
|
}[] | undefined;
|
|
527
528
|
enabled: boolean;
|
|
528
529
|
} | undefined;
|
|
@@ -530,20 +531,19 @@ export declare const createModelUpdateValidation: () => zod.ZodObject<{
|
|
|
530
531
|
name: string;
|
|
531
532
|
} | undefined;
|
|
532
533
|
validation?: {
|
|
533
|
-
settings?: {} | null | undefined;
|
|
534
534
|
message?: string | undefined;
|
|
535
|
+
settings?: {} | null | undefined;
|
|
535
536
|
name: string;
|
|
536
537
|
}[] | null | undefined;
|
|
537
538
|
listValidation?: {
|
|
538
|
-
settings?: {} | null | undefined;
|
|
539
539
|
message?: string | undefined;
|
|
540
|
+
settings?: {} | null | undefined;
|
|
540
541
|
name: string;
|
|
541
542
|
}[] | null | undefined;
|
|
542
543
|
multipleValues?: boolean | null | undefined;
|
|
543
544
|
tags?: string[] | undefined;
|
|
544
|
-
settings?: {} | null | undefined;
|
|
545
|
-
id: string;
|
|
546
545
|
type: string;
|
|
546
|
+
id: string;
|
|
547
547
|
fieldId: string;
|
|
548
548
|
label: string;
|
|
549
549
|
}[];
|
|
@@ -2,10 +2,12 @@ import { CmsContext, CmsModelContext, HeadlessCmsStorageOperations } from "../ty
|
|
|
2
2
|
import { Tenant } from "@webiny/api-tenancy/types";
|
|
3
3
|
import { I18NLocale } from "@webiny/api-i18n/types";
|
|
4
4
|
import { SecurityIdentity } from "@webiny/api-security/types";
|
|
5
|
+
import { ModelsPermissions } from "../utils/permissions/ModelsPermissions";
|
|
5
6
|
export interface CreateModelsCrudParams {
|
|
6
7
|
getTenant: () => Tenant;
|
|
7
8
|
getLocale: () => I18NLocale;
|
|
8
9
|
storageOperations: HeadlessCmsStorageOperations;
|
|
10
|
+
modelsPermissions: ModelsPermissions;
|
|
9
11
|
context: CmsContext;
|
|
10
12
|
getIdentity: () => SecurityIdentity;
|
|
11
13
|
}
|