budibase/packages/common/lib/schema/fields.js.map

1 line
6.7 KiB
Plaintext

{"version":3,"sources":["../../src/schema/fields.js"],"names":["fieldErrors","AddFieldValidationFailed","allowedTypes","all","getNewField","type","id","name","typeOptions","label","getInitialValue","getUndefinedValue","fieldRules","allFields","f","t","typeOptionsRules","field","def","optName","optionDefinitions","keys","o","isValid","requirementDescription","validateField","everySingleField","validateAllFields","recordNode","fields","flatten","addField","recordTemplate","validationMessages","length","errors","m","error","BadRequestError","join","push"],"mappings":"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","sourcesContent":["import { some, map, filter, keys, includes, countBy, flatten } from \"lodash/fp\"\r\nimport {\r\n isSomething,\r\n $,\r\n isNonEmptyString,\r\n isNothingOrEmpty,\r\n isNothing,\r\n} from \"../common\"\r\nimport { all, getDefaultOptions } from \"./types/index.js\"\r\nimport { applyRuleSet, makerule } from \"../common/validationCommon\"\r\nimport { BadRequestError } from \"../common/errors\"\r\nimport { generate } from \"shortid\"\r\n\r\nexport const fieldErrors = {\r\n AddFieldValidationFailed: \"Add field validation: \",\r\n}\r\n\r\nexport const allowedTypes = () => keys(all)\r\n\r\nexport const getNewField = type => ({\r\n id: generate(),\r\n name: \"\", // how field is referenced internally\r\n type,\r\n typeOptions: getDefaultOptions(type),\r\n label: \"\", // how field is displayed\r\n getInitialValue: \"default\", // function that gets value when initially created\r\n getUndefinedValue: \"default\", // function that gets value when field undefined on record\r\n})\r\n\r\nconst fieldRules = allFields => [\r\n makerule(\"name\", \"field name is not set\", f => isNonEmptyString(f.name)),\r\n makerule(\"type\", \"field type is not set\", f => isNonEmptyString(f.type)),\r\n makerule(\"label\", \"field label is not set\", f => isNonEmptyString(f.label)),\r\n makerule(\"getInitialValue\", \"getInitialValue function is not set\", f =>\r\n isNonEmptyString(f.getInitialValue)\r\n ),\r\n makerule(\"getUndefinedValue\", \"getUndefinedValue function is not set\", f =>\r\n isNonEmptyString(f.getUndefinedValue)\r\n ),\r\n makerule(\r\n \"name\",\r\n \"field name is duplicated\",\r\n f => isNothingOrEmpty(f.name) || countBy(\"name\")(allFields)[f.name] === 1\r\n ),\r\n makerule(\r\n \"type\",\r\n \"type is unknown\",\r\n f => isNothingOrEmpty(f.type) || some(t => f.type === t)(allowedTypes())\r\n ),\r\n]\r\n\r\nconst typeOptionsRules = field => {\r\n const type = all[field.type]\r\n if (isNothing(type)) return []\r\n\r\n const def = optName => type.optionDefinitions[optName]\r\n\r\n return $(field.typeOptions, [\r\n keys,\r\n filter(o => isSomething(def(o)) && isSomething(def(o).isValid)),\r\n map(o =>\r\n makerule(`typeOptions.${o}`, `${def(o).requirementDescription}`, field =>\r\n def(o).isValid(field.typeOptions[o])\r\n )\r\n ),\r\n ])\r\n}\r\n\r\nexport const validateField = allFields => field => {\r\n const everySingleField = includes(field)(allFields)\r\n ? allFields\r\n : [...allFields, field]\r\n return applyRuleSet([\r\n ...fieldRules(everySingleField),\r\n ...typeOptionsRules(field),\r\n ])(field)\r\n}\r\n\r\nexport const validateAllFields = recordNode =>\r\n $(recordNode.fields, [map(validateField(recordNode.fields)), flatten])\r\n\r\nexport const addField = (recordTemplate, field) => {\r\n if (isNothingOrEmpty(field.label)) {\r\n field.label = field.name\r\n }\r\n const validationMessages = validateField([...recordTemplate.fields, field])(\r\n field\r\n )\r\n if (validationMessages.length > 0) {\r\n const errors = map(m => m.error)(validationMessages)\r\n throw new BadRequestError(\r\n `${fieldErrors.AddFieldValidationFailed} ${errors.join(\", \")}`\r\n )\r\n }\r\n recordTemplate.fields.push(field)\r\n}\r\n"],"file":"fields.js"}