vue-vuelidate-jsonschema
Version:
Create validation definitions for vuelidate based on json schema
1 lines • 19 kB
JavaScript
{"filter":false,"title":"scaffold.js","tooltip":"/src/scaffold.js","ace":{"folds":[],"scrolltop":1374,"scrollleft":0,"selection":{"start":{"row":93,"column":5},"end":{"row":93,"column":5},"isBackwards":false},"options":{"guessTabSize":true,"useWrapMode":false,"wrapToView":true},"firstLineState":{"row":213,"mode":"ace/mode/javascript"}},"hash":"7686045b2b6b2bf38efbe7d423d787c97a42e0bd","undoManager":{"mark":100,"position":100,"stack":[[{"start":{"row":0,"column":0},"end":{"row":111,"column":0},"action":"remove","lines":["var reduce = require('lodash/reduce')","var merge = require('lodash/merge')","var set = require('lodash/set')","var get = require('lodash/get')","var isPlainObject = require('lodash/isPlainObject')","var isFunction = require('lodash/isFunction')","","var defaultValues = {"," integer: 0,"," number: 0,"," string: '',"," boolean: false,"," object: function() {"," return {} // make sure we don't share object reference, create new copy each time"," },"," array: function() {"," return [] // make sure we don't share object reference, create new copy each time"," },"," 'null': null","}","","function getDefaultValue(schema, isRequired, ignoreDefaultProp) {"," if (ignoreDefaultProp) {"," return undefined"," } else if (schema.hasOwnProperty('default')) {"," return schema.default"," } else if (!isRequired) {"," return undefined"," } else {"," var defaultValue = defaultValues[schema.type]"," return isFunction(defaultValue)"," ? defaultValue()"," : defaultValue"," }","}","","function setProperties(base, schema, ignoreDefaultProp, shallow) {"," if (!base) return"," var additionalScaffoldingSchemas = ['allOf']"," var additionalShallow = ['anyOf', 'oneOf', 'not']"," // set all properties based on default values etc in allOf",""," additionalScaffoldingSchemas.forEach(function(prop) {"," if (Array.isArray(schema[prop])) {"," schema[prop].forEach(function(subSchema) {"," setProperties(base, subSchema)"," })"," }"," })",""," additionalShallow.forEach(function(prop) {"," if (Array.isArray(schema[prop])) {"," schema[prop].forEach(function(subSchema) {"," setProperties(base, subSchema, true, true)"," })"," } else if (isPlainObject(schema[prop])) {"," setProperties(base, schema[prop], true, true)"," }"," })",""," // then add properties from base object, taking precedence"," if (isPlainObject(schema.properties)) {"," Object.keys(schema.properties).forEach(function(key) {"," var innerSchema = schema.properties[key]"," var isRequired = Array.isArray(schema.required) && schema.required.indexOf(key) !== -1",""," var existing = base[key]"," if (isPlainObject(existing)) {"," base[key] = merge(existing, getDefaultValue(innerSchema, isRequired, ignoreDefaultProp))"," } else {"," base[key] = getDefaultValue(innerSchema, isRequired, ignoreDefaultProp)"," }"," if (!shallow && innerSchema.type === 'object' && innerSchema.properties) {"," setProperties(base[key], innerSchema, ignoreDefaultProp)"," }"," })"," }","}","","function createDataProperties(schemas, shallow) {"," return reduce(schemas, function(all, schemaConfig) {"," if (shallow) {"," set(all, schemaConfig.mountPoint, undefined)"," return all"," }",""," if (schemaConfig.mountPoint !== '.') {"," // scaffold structure",""," var mountPoint = get(all, schemaConfig.mountPoint)"," var defValue = schemaConfig.schema.hasOwnProperty('type') ? getDefaultValue(schemaConfig.schema, true) : {}",""," if (isPlainObject(mountPoint)) {"," mountPoint = merge(mountPoint, defValue)"," } else {"," mountPoint = defValue"," }",""," set(all, schemaConfig.mountPoint, mountPoint)"," if (isPlainObject(mountPoint)) {"," setProperties(get(all, schemaConfig.mountPoint), schemaConfig.schema)"," }"," } else {"," setProperties(all, schemaConfig.schema)"," }",""," return all"," }, {})","}","","module.exports = createDataProperties",""],"id":2},{"start":{"row":0,"column":0},"end":{"row":116,"column":0},"action":"insert","lines":["var reduce = require('lodash/reduce')","var merge = require('lodash/merge')","var set = require('lodash/set')","var get = require('lodash/get')","var isPlainObject = require('lodash/isPlainObject')","var isFunction = require('lodash/isFunction')","","var defaultValues = {"," integer: 0,"," number: 0,"," string: '',"," boolean: false,"," object: function() {"," return {} // make sure we don't share object reference, create new copy each time"," },"," array: function() {"," return [] // make sure we don't share object reference, create new copy each time"," },"," 'null': null","}","","function getDefaultValue(schema, isRequired, ignoreDefaultProp) {"," if (ignoreDefaultProp) {"," return undefined"," } else if (schema.hasOwnProperty('default')) {"," return schema.default"," } else if (schema.hasOwnProperty('const')) {"," return schema.const"," } else if (!isRequired) {"," return undefined"," } else {"," var defaultValue = defaultValues[schema.type]"," return isFunction(defaultValue)"," ? defaultValue()"," : defaultValue"," }","}","","function setProperties(base, schema, ignoreDefaultProp, shallow) {"," if (schema.default !== undefined) {"," return Object.assign(base, schema.default)"," }"," if (!base) return"," var additionalScaffoldingSchemas = ['allOf']"," var additionalShallow = ['anyOf', 'oneOf', 'not']"," // set all properties based on default values etc in allOf",""," additionalScaffoldingSchemas.forEach(function(prop) {"," if (Array.isArray(schema[prop])) {"," schema[prop].forEach(function(subSchema) {"," setProperties(base, subSchema)"," })"," }"," })",""," additionalShallow.forEach(function(prop) {"," if (Array.isArray(schema[prop])) {"," schema[prop].forEach(function(subSchema) {"," setProperties(base, subSchema, true, true)"," })"," } else if (isPlainObject(schema[prop])) {"," setProperties(base, schema[prop], true, true)"," }"," })",""," // then add properties from base object, taking precedence"," if (isPlainObject(schema.properties)) {"," Object.keys(schema.properties).forEach(function(key) {"," var innerSchema = schema.properties[key]"," var isRequired = Array.isArray(schema.required) && schema.required.indexOf(key) !== -1",""," var existing = base[key]"," if (isPlainObject(existing)) {"," base[key] = merge(existing, getDefaultValue(innerSchema, isRequired, ignoreDefaultProp))"," } else {"," base[key] = getDefaultValue(innerSchema, isRequired, ignoreDefaultProp)"," }"," if (!shallow && innerSchema.type === 'object' && innerSchema.properties) {"," setProperties(base[key], innerSchema, ignoreDefaultProp)"," }"," })"," }","}","","function createDataProperties(schemas, shallow) {"," return reduce(schemas, function(all, schemaConfig) {"," if (shallow) {"," set(all, schemaConfig.mountPoint, undefined)"," return all"," }",""," if (schemaConfig.mountPoint !== '.') {"," // scaffold structure",""," var mountPoint = get(all, schemaConfig.mountPoint)"," var defValue = schemaConfig.schema.hasOwnProperty('type') ? getDefaultValue(schemaConfig.schema, true) : {}",""," if (isPlainObject(mountPoint)) {"," mountPoint = merge(mountPoint, defValue)"," } else {"," mountPoint = defValue"," }",""," set(all, schemaConfig.mountPoint, mountPoint)"," if (isPlainObject(mountPoint)) {"," setProperties(get(all, schemaConfig.mountPoint), schemaConfig.schema)"," }"," } else {"," setProperties(all, schemaConfig.schema)"," }",""," return all"," }, schemas.every(s => s.type === 'array') ? [] : {})","}","","module.exports = createDataProperties",""]}],[{"start":{"row":112,"column":5},"end":{"row":112,"column":53},"action":"remove","lines":["schemas.every(s => s.type === 'array') ? [] : {}"],"id":3}],[{"start":{"row":84,"column":49},"end":{"row":85,"column":0},"action":"insert","lines":["",""],"id":4},{"start":{"row":85,"column":0},"end":{"row":85,"column":2},"action":"insert","lines":[" "]}],[{"start":{"row":85,"column":2},"end":{"row":86,"column":0},"action":"insert","lines":["",""],"id":5},{"start":{"row":86,"column":0},"end":{"row":86,"column":2},"action":"insert","lines":[" "]}],[{"start":{"row":85,"column":2},"end":{"row":85,"column":3},"action":"insert","lines":["v"],"id":6}],[{"start":{"row":85,"column":3},"end":{"row":85,"column":4},"action":"insert","lines":["a"],"id":7}],[{"start":{"row":85,"column":4},"end":{"row":85,"column":5},"action":"insert","lines":["r"],"id":8}],[{"start":{"row":85,"column":5},"end":{"row":85,"column":6},"action":"insert","lines":[" "],"id":9}],[{"start":{"row":85,"column":6},"end":{"row":85,"column":7},"action":"insert","lines":["a"],"id":10}],[{"start":{"row":85,"column":7},"end":{"row":85,"column":8},"action":"insert","lines":["l"],"id":11}],[{"start":{"row":85,"column":8},"end":{"row":85,"column":9},"action":"insert","lines":["l"],"id":12}],[{"start":{"row":85,"column":9},"end":{"row":85,"column":10},"action":"insert","lines":["I"],"id":13}],[{"start":{"row":85,"column":10},"end":{"row":85,"column":11},"action":"insert","lines":["s"],"id":14}],[{"start":{"row":85,"column":10},"end":{"row":85,"column":11},"action":"remove","lines":["s"],"id":15}],[{"start":{"row":85,"column":9},"end":{"row":85,"column":10},"action":"remove","lines":["I"],"id":16}],[{"start":{"row":85,"column":9},"end":{"row":85,"column":10},"action":"insert","lines":["a"],"id":17}],[{"start":{"row":85,"column":9},"end":{"row":85,"column":10},"action":"remove","lines":["a"],"id":18}],[{"start":{"row":85,"column":9},"end":{"row":85,"column":10},"action":"insert","lines":["A"],"id":19}],[{"start":{"row":85,"column":10},"end":{"row":85,"column":11},"action":"insert","lines":["r"],"id":20}],[{"start":{"row":85,"column":11},"end":{"row":85,"column":12},"action":"insert","lines":["e"],"id":21}],[{"start":{"row":85,"column":12},"end":{"row":85,"column":13},"action":"insert","lines":["A"],"id":22}],[{"start":{"row":85,"column":13},"end":{"row":85,"column":14},"action":"insert","lines":["r"],"id":23}],[{"start":{"row":85,"column":14},"end":{"row":85,"column":15},"action":"insert","lines":["r"],"id":24}],[{"start":{"row":85,"column":15},"end":{"row":85,"column":16},"action":"insert","lines":["a"],"id":25}],[{"start":{"row":85,"column":16},"end":{"row":85,"column":17},"action":"insert","lines":["y"],"id":26}],[{"start":{"row":85,"column":17},"end":{"row":85,"column":18},"action":"insert","lines":[" "],"id":27}],[{"start":{"row":85,"column":18},"end":{"row":85,"column":19},"action":"insert","lines":["="],"id":28}],[{"start":{"row":85,"column":19},"end":{"row":85,"column":20},"action":"insert","lines":[" "],"id":29}],[{"start":{"row":85,"column":20},"end":{"row":85,"column":68},"action":"insert","lines":["schemas.every(s => s.type === 'array') ? [] : {}"],"id":30}],[{"start":{"row":85,"column":34},"end":{"row":85,"column":57},"action":"remove","lines":["s => s.type === 'array'"],"id":31}],[{"start":{"row":85,"column":34},"end":{"row":85,"column":35},"action":"insert","lines":["f"],"id":32}],[{"start":{"row":85,"column":34},"end":{"row":85,"column":35},"action":"remove","lines":["f"],"id":33},{"start":{"row":85,"column":34},"end":{"row":85,"column":39},"action":"insert","lines":["false"]}],[{"start":{"row":85,"column":34},"end":{"row":85,"column":39},"action":"remove","lines":["false"],"id":34}],[{"start":{"row":85,"column":34},"end":{"row":85,"column":35},"action":"insert","lines":["f"],"id":35}],[{"start":{"row":85,"column":34},"end":{"row":85,"column":35},"action":"remove","lines":["f"],"id":36},{"start":{"row":85,"column":34},"end":{"row":87,"column":3},"action":"insert","lines":["function functionName() {"," "," }"]}],[{"start":{"row":85,"column":43},"end":{"row":85,"column":55},"action":"remove","lines":["functionName"],"id":37}],[{"start":{"row":85,"column":44},"end":{"row":85,"column":45},"action":"insert","lines":["s"],"id":38}],[{"start":{"row":85,"column":45},"end":{"row":85,"column":46},"action":"insert","lines":["c"],"id":39}],[{"start":{"row":85,"column":46},"end":{"row":85,"column":47},"action":"insert","lines":["h"],"id":40}],[{"start":{"row":85,"column":47},"end":{"row":85,"column":48},"action":"insert","lines":["e"],"id":41}],[{"start":{"row":85,"column":48},"end":{"row":85,"column":49},"action":"insert","lines":["m"],"id":42}],[{"start":{"row":85,"column":49},"end":{"row":85,"column":50},"action":"insert","lines":["a"],"id":43}],[{"start":{"row":86,"column":4},"end":{"row":86,"column":5},"action":"insert","lines":["r"],"id":44}],[{"start":{"row":86,"column":5},"end":{"row":86,"column":6},"action":"insert","lines":["e"],"id":45}],[{"start":{"row":86,"column":6},"end":{"row":86,"column":7},"action":"insert","lines":["t"],"id":46}],[{"start":{"row":86,"column":7},"end":{"row":86,"column":8},"action":"insert","lines":["u"],"id":47}],[{"start":{"row":86,"column":8},"end":{"row":86,"column":9},"action":"insert","lines":["r"],"id":48}],[{"start":{"row":86,"column":9},"end":{"row":86,"column":10},"action":"insert","lines":["n"],"id":49}],[{"start":{"row":86,"column":10},"end":{"row":86,"column":11},"action":"insert","lines":[" "],"id":50}],[{"start":{"row":86,"column":10},"end":{"row":86,"column":11},"action":"remove","lines":[" "],"id":51}],[{"start":{"row":86,"column":4},"end":{"row":86,"column":10},"action":"remove","lines":["return"],"id":52}],[{"start":{"row":86,"column":4},"end":{"row":86,"column":27},"action":"insert","lines":["s => s.type === 'array'"],"id":53}],[{"start":{"row":86,"column":4},"end":{"row":86,"column":5},"action":"remove","lines":["s"],"id":54}],[{"start":{"row":86,"column":4},"end":{"row":86,"column":5},"action":"remove","lines":[" "],"id":55}],[{"start":{"row":86,"column":4},"end":{"row":86,"column":5},"action":"remove","lines":["="],"id":56}],[{"start":{"row":86,"column":4},"end":{"row":86,"column":5},"action":"remove","lines":[">"],"id":57}],[{"start":{"row":86,"column":4},"end":{"row":86,"column":5},"action":"remove","lines":[" "],"id":58}],[{"start":{"row":86,"column":4},"end":{"row":86,"column":5},"action":"insert","lines":["r"],"id":59}],[{"start":{"row":86,"column":5},"end":{"row":86,"column":6},"action":"insert","lines":["e"],"id":60}],[{"start":{"row":86,"column":6},"end":{"row":86,"column":7},"action":"insert","lines":["t"],"id":61}],[{"start":{"row":86,"column":7},"end":{"row":86,"column":8},"action":"insert","lines":["u"],"id":62}],[{"start":{"row":86,"column":8},"end":{"row":86,"column":9},"action":"insert","lines":["r"],"id":63}],[{"start":{"row":86,"column":9},"end":{"row":86,"column":10},"action":"insert","lines":["n"],"id":64}],[{"start":{"row":86,"column":10},"end":{"row":86,"column":11},"action":"insert","lines":[" "],"id":65}],[{"start":{"row":86,"column":11},"end":{"row":86,"column":12},"action":"remove","lines":["s"],"id":66}],[{"start":{"row":86,"column":11},"end":{"row":86,"column":12},"action":"insert","lines":["s"],"id":67}],[{"start":{"row":86,"column":12},"end":{"row":86,"column":13},"action":"insert","lines":["c"],"id":68}],[{"start":{"row":86,"column":13},"end":{"row":86,"column":14},"action":"insert","lines":["h"],"id":69}],[{"start":{"row":86,"column":14},"end":{"row":86,"column":15},"action":"insert","lines":["e"],"id":70}],[{"start":{"row":86,"column":15},"end":{"row":86,"column":16},"action":"insert","lines":["m"],"id":71}],[{"start":{"row":86,"column":16},"end":{"row":86,"column":17},"action":"insert","lines":["a"],"id":72}],[{"start":{"row":87,"column":12},"end":{"row":87,"column":14},"action":"remove","lines":["{}"],"id":73}],[{"start":{"row":87,"column":11},"end":{"row":87,"column":12},"action":"remove","lines":[" "],"id":74}],[{"start":{"row":87,"column":7},"end":{"row":87,"column":11},"action":"remove","lines":["[] :"],"id":75}],[{"start":{"row":87,"column":6},"end":{"row":87,"column":7},"action":"remove","lines":[" "],"id":76}],[{"start":{"row":87,"column":5},"end":{"row":87,"column":6},"action":"remove","lines":["?"],"id":77}],[{"start":{"row":87,"column":4},"end":{"row":87,"column":5},"action":"remove","lines":[" "],"id":78}],[{"start":{"row":116,"column":4},"end":{"row":116,"column":5},"action":"insert","lines":[" "],"id":79}],[{"start":{"row":116,"column":5},"end":{"row":116,"column":6},"action":"insert","lines":["a"],"id":80}],[{"start":{"row":116,"column":6},"end":{"row":116,"column":7},"action":"insert","lines":["l"],"id":81}],[{"start":{"row":116,"column":7},"end":{"row":116,"column":8},"action":"insert","lines":["l"],"id":82}],[{"start":{"row":116,"column":8},"end":{"row":116,"column":9},"action":"insert","lines":["a"],"id":83}],[{"start":{"row":116,"column":5},"end":{"row":116,"column":9},"action":"remove","lines":["alla"],"id":84}],[{"start":{"row":116,"column":5},"end":{"row":116,"column":6},"action":"insert","lines":["a"],"id":85}],[{"start":{"row":116,"column":6},"end":{"row":116,"column":7},"action":"insert","lines":["l"],"id":86}],[{"start":{"row":116,"column":7},"end":{"row":116,"column":8},"action":"insert","lines":["l"],"id":87}],[{"start":{"row":116,"column":8},"end":{"row":116,"column":9},"action":"insert","lines":["a"],"id":88}],[{"start":{"row":116,"column":8},"end":{"row":116,"column":9},"action":"remove","lines":["a"],"id":89}],[{"start":{"row":116,"column":8},"end":{"row":116,"column":9},"action":"insert","lines":["A"],"id":90}],[{"start":{"row":116,"column":5},"end":{"row":116,"column":9},"action":"remove","lines":["allA"],"id":91},{"start":{"row":116,"column":5},"end":{"row":116,"column":16},"action":"insert","lines":["allAreArray"]}],[{"start":{"row":116,"column":16},"end":{"row":116,"column":17},"action":"insert","lines":[" "],"id":92}],[{"start":{"row":116,"column":17},"end":{"row":116,"column":18},"action":"insert","lines":["?"],"id":93}],[{"start":{"row":116,"column":18},"end":{"row":116,"column":19},"action":"insert","lines":[" "],"id":94}],[{"start":{"row":116,"column":19},"end":{"row":116,"column":21},"action":"insert","lines":["[]"],"id":95}],[{"start":{"row":116,"column":21},"end":{"row":116,"column":22},"action":"insert","lines":[":"],"id":96}],[{"start":{"row":116,"column":22},"end":{"row":116,"column":23},"action":"insert","lines":[" "],"id":97}],[{"start":{"row":116,"column":23},"end":{"row":116,"column":24},"action":"insert","lines":["{"],"id":98}],[{"start":{"row":116,"column":24},"end":{"row":116,"column":25},"action":"insert","lines":["}"],"id":99}],[{"start":{"row":116,"column":21},"end":{"row":116,"column":22},"action":"insert","lines":[" "],"id":100}],[{"start":{"row":116,"column":26},"end":{"row":116,"column":27},"action":"remove","lines":[" "],"id":101}],[{"start":{"row":88,"column":0},"end":{"row":88,"column":2},"action":"remove","lines":[" "],"id":102}]]},"timestamp":1508768290344}