diff --git a/adapter/0.1.35.json b/adapter/0.1.35.json new file mode 100644 index 0000000..b664ffe --- /dev/null +++ b/adapter/0.1.35.json @@ -0,0 +1,83 @@ +/** + * Copyright © 2016-2019 by IntegrIT S.A. dba Hackolade. All rights reserved. + * + * The copyright to the computer software herein is the property of IntegrIT S.A. + * The software may be used and/or copied only with the written permission of + * IntegrIT S.A. or in accordance with the terms and conditions stipulated in + * the agreement/contract under which the software has been supplied. + * + * { + * "add": { + * "entity": [], + * "container": [], + * "model": [], + * "view": [], + * "field": { + * "": [] + * } + * }, + * "delete": { + * "entity": [], + * "container": [], + * "model": [], + * "view": [], + * "field": { + * "": [] + * } + * }, + * "modify": { + * "entity": [ + * { + * "from": { }, + * "to": { } + * } + * ], + * "container": [], + * "model": [], + * "view": [], + * "field": [] + * }, + * } + */ +{ + "add": { + }, + "modify": { + "field": [ + { + "from": { + "type": "string", + "avro.java.string": "String" + }, + "to": { + "metaProps": [{ + "metaKey": "avro.java.string", + "metaValueString": "String" + }] + } + } + ], + "multipleTypes": [ + { + "from": { + "type": "string", + "avro.java.string": "String" + }, + "to": { + "metaProps": [{ + "metaKey": "avro.java.string", + "metaValueString": "String" + }] + } + } + ] + }, + "delete": { + "field": [ + "avro.java.string" + ], + "multipleTypes": [ + "avro.java.string" + ] + } +} diff --git a/forward_engineering/api.js b/forward_engineering/api.js index ab6361b..9b7ed02 100644 --- a/forward_engineering/api.js +++ b/forward_engineering/api.js @@ -6,7 +6,7 @@ const _ = require('lodash'); const validationHelper = require('./validationHelper'); const mapJsonSchema = require('../reverse_engineering/helpers/mapJsonSchema'); -const ADDITIONAL_PROPS = ['doc', 'order', 'aliases', 'avro.java.string', 'symbols', 'namespace', 'size', 'durationSize', 'default', 'precision', 'scale']; +const ADDITIONAL_PROPS = ['doc', 'order', 'aliases', 'symbols', 'namespace', 'size', 'durationSize', 'default', 'precision', 'scale']; const ADDITIONAL_CHOICE_META_PROPS = ADDITIONAL_PROPS.concat('index'); const PRIMITIVE_FIELD_ATTRIBUTES = ['order', 'logicalType', 'precision', 'scale', 'aliases']; const DEFAULT_TYPE = 'string'; @@ -194,6 +194,8 @@ const handleRecursiveSchema = (schema, avroSchema, parentSchema = {}, udt) => { handleRequired(parentSchema, avroSchema, schema); + addMetaPropertiesToType(avroSchema, schema); + return; }; @@ -315,13 +317,18 @@ const handleChoice = (schema, choice, udt) => { multipleField.type = [multipleField.type]; } + let newField = {}; + + handleRecursiveSchema(field, newField, {}, udt); + if (isComplexType(filedType)) { - let newField = {}; - handleRecursiveSchema(field, newField, {}, udt); newField.name = newField.name || field.name || fieldName; newField.type.name = newField.type.name || field.name || fieldName; newField.type = reorderName(newField.type); multipleField.type.push(newField); + } else if (Object(newField.type) === newField.type) { + newField.name = newField.name || field.name || fieldName; + multipleField.type = multipleField.type.concat([newField]); } else if (Array.isArray(filedType)) { multipleField.type = multipleField.type.concat(filedType); } else { @@ -621,10 +628,10 @@ const handleItems = (schema, avroSchema, udt) => { schemaItem.type = schemaItem.type || getTypeFromReference(schemaItem); handleRecursiveSchema(schemaItem, avroSchema.items, avroSchema, udt); + } - if (avroSchema.items.type && typeof avroSchema.items.type === 'object') { - avroSchema.items = avroSchema.items.type; - } + if (avroSchema.items.type && typeof avroSchema.items.type === 'object') { + avroSchema.items = Object.assign({}, avroSchema.items, avroSchema.items.type); } if (schemaItemName) { @@ -646,10 +653,6 @@ const handleDefault = (schema, avroSchema) => { }; const handleOtherProps = (schema, prop, avroSchema) => { - if (!ADDITIONAL_PROPS.includes(prop)) { - return; - } - const allowedProperties = getAllowedPropertyNames(schema.type, schema); if (!allowedProperties.includes(prop)) { return; @@ -785,8 +788,21 @@ const getAllowedPropertyNames = (type, data) => { if (!fieldLevelConfig.structure[type]) { return []; } + const isAllowed = (property) => { + if (typeof property === 'string') { + return ADDITIONAL_PROPS.includes(property) + } else if (Object(property) === property) { + return ADDITIONAL_PROPS.includes(property.propertyKeyword) || property.isTargetProperty; + } else { + return false; + } + }; return fieldLevelConfig.structure[type].filter(property => { + if (!isAllowed(property)) { + return false; + } + if (typeof property !== 'object') { return true; } @@ -916,3 +932,53 @@ const mapAvroSchema = (avroSchema, iteratee) => { return avroSchema; }; + +const getMetaProperties = (metaProperties) => { + const metaValueKeyMap = { + 'avro.java.string': 'metaValueString', + 'java-element': 'metaValueElement', + 'java-element-class': 'metaValueElementClass', + 'java-class': 'metaValueClass', + 'java-key-class': 'metaValueKeyClass' + }; + + return metaProperties.reduce((props, property) => { + const metaValueKey = _.get(metaValueKeyMap, property.metaKey, 'metaValue'); + + return Object.assign(props, { [property.metaKey]: property[metaValueKey] }); + }, {}); +}; + +const getTypeWithMeta = (type, meta) => { + if (typeof type !== 'string') { + return Object.assign({}, type, meta); + } else { + return Object.assign({ type }, meta); + } +}; + +const getMultipleTypeWithMeta = (types, meta) => { + return types.map(type => { + if (type === 'null') { + return type; + } + + return getTypeWithMeta(type, meta); + }); +}; + +const addMetaPropertiesToType = (avroSchema, jsonSchema) => { + if (!Array.isArray(jsonSchema.metaProps) || !jsonSchema.metaProps.length) { + return avroSchema; + } + + const meta = getMetaProperties(jsonSchema.metaProps); + + if (Array.isArray(avroSchema.type)) { + avroSchema.type = getMultipleTypeWithMeta(avroSchema.type, meta); + } else { + avroSchema.type = getTypeWithMeta(avroSchema.type, meta); + } + + return avroSchema; +}; diff --git a/package.json b/package.json index e0db8ec..7e51a6a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Avro", - "version": "0.1.34", - "versionDate": "2019-12-04", + "version": "0.1.35", + "versionDate": "2019-12-19", "author": "hackolade", "engines": { "hackolade": "3.3.2", diff --git a/properties_pane/field_level/fieldLevelConfig.json b/properties_pane/field_level/fieldLevelConfig.json index 8249437..89af23e 100644 --- a/properties_pane/field_level/fieldLevelConfig.json +++ b/properties_pane/field_level/fieldLevelConfig.json @@ -185,13 +185,88 @@ making sure that you maintain a proper JSON format. "valueType": "array" }, { - "propertyName": "avro.java.string", - "propertyKeyword": "avro.java.string", - "shouldValidate": false, - "propertyType": "select", - "options": [ - "", - "String" + "propertyName": "Meta properties", + "propertyType": "group", + "propertyKeyword": "metaProps", + "structure": [ + { + "propertyName": "Key", + "propertyKeyword": "metaKey", + "propertyType": "select", + "options": [ + "avro.java.string", + "java-element", + "java-element-class", + "java-class", + "java-key-class" + ] + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValue", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueString", + "propertyType": "select", + "options": [ + "String", + "java.lang.Integer", + "java.math.BigInteger", + "java.lang.Float", + "java.math.BigDecimal" + ], + "dependency": { + "key": "metaKey", + "value": "avro.java.string" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElement", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElementClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueKeyClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-key-class" + } + } ] }, "pattern", @@ -266,6 +341,74 @@ making sure that you maintain a proper JSON format. "multi": true, "valueType": "array" }, + { + "propertyName": "Meta properties", + "propertyType": "group", + "propertyKeyword": "metaProps", + "structure": [ + { + "propertyName": "Key", + "propertyKeyword": "metaKey", + "propertyType": "select", + "options": [ + "java-element", + "java-element-class", + "java-class", + "java-key-class" + ] + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValue", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElement", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElementClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueKeyClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-key-class" + } + } + ] + }, "dependencies", "sample", "comments" @@ -394,6 +537,74 @@ making sure that you maintain a proper JSON format. "multi": true, "valueType": "array" }, + { + "propertyName": "Meta properties", + "propertyType": "group", + "propertyKeyword": "metaProps", + "structure": [ + { + "propertyName": "Key", + "propertyKeyword": "metaKey", + "propertyType": "select", + "options": [ + "java-element", + "java-element-class", + "java-class", + "java-key-class" + ] + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValue", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElement", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElementClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueKeyClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-key-class" + } + } + ] + }, "dependencies", "primaryKey", "foreignCollection", @@ -474,6 +685,74 @@ making sure that you maintain a proper JSON format. "multi": true, "valueType": "array" }, + { + "propertyName": "Meta properties", + "propertyType": "group", + "propertyKeyword": "metaProps", + "structure": [ + { + "propertyName": "Key", + "propertyKeyword": "metaKey", + "propertyType": "select", + "options": [ + "java-element", + "java-element-class", + "java-class", + "java-key-class" + ] + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValue", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElement", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElementClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueKeyClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-key-class" + } + } + ] + }, "dependencies", "sample", "comments" @@ -574,6 +853,74 @@ making sure that you maintain a proper JSON format. "multi": true, "valueType": "array" }, + { + "propertyName": "Meta properties", + "propertyType": "group", + "propertyKeyword": "metaProps", + "structure": [ + { + "propertyName": "Key", + "propertyKeyword": "metaKey", + "propertyType": "select", + "options": [ + "java-element", + "java-element-class", + "java-class", + "java-key-class" + ] + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValue", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElement", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElementClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueKeyClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-key-class" + } + } + ] + }, "dependencies", "minProperties", "maxProperties", @@ -608,6 +955,74 @@ making sure that you maintain a proper JSON format. "multi": true, "valueType": "array" }, + { + "propertyName": "Meta properties", + "propertyType": "group", + "propertyKeyword": "metaProps", + "structure": [ + { + "propertyName": "Key", + "propertyKeyword": "metaKey", + "propertyType": "select", + "options": [ + "java-element", + "java-element-class", + "java-class", + "java-key-class" + ] + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValue", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElement", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElementClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueKeyClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-key-class" + } + } + ] + }, "dependencies", "minItems", "maxItems", @@ -656,6 +1071,74 @@ making sure that you maintain a proper JSON format. "multi": true, "valueType": "array" }, + { + "propertyName": "Meta properties", + "propertyType": "group", + "propertyKeyword": "metaProps", + "structure": [ + { + "propertyName": "Key", + "propertyKeyword": "metaKey", + "propertyType": "select", + "options": [ + "java-element", + "java-element-class", + "java-class", + "java-key-class" + ] + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValue", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElement", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElementClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueKeyClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-key-class" + } + } + ] + }, "dependencies", "minProperties", "maxProperties", @@ -746,6 +1229,74 @@ making sure that you maintain a proper JSON format. "regex": "^[A-Za-z_][A-Za-z0-9_]*$" } }, + { + "propertyName": "Meta properties", + "propertyType": "group", + "propertyKeyword": "metaProps", + "structure": [ + { + "propertyName": "Key", + "propertyKeyword": "metaKey", + "propertyType": "select", + "options": [ + "java-element", + "java-element-class", + "java-class", + "java-key-class" + ] + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValue", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElement", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElementClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueKeyClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-key-class" + } + } + ] + }, "dependencies", { "propertyName": "Pattern", @@ -862,6 +1413,74 @@ making sure that you maintain a proper JSON format. "value": "duration" } }, + { + "propertyName": "Meta properties", + "propertyType": "group", + "propertyKeyword": "metaProps", + "structure": [ + { + "propertyName": "Key", + "propertyKeyword": "metaKey", + "propertyType": "select", + "options": [ + "java-element", + "java-element-class", + "java-class", + "java-key-class" + ] + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValue", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElement", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueElementClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-element-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-class" + } + }, + { + "propertyName": "Value", + "propertyKeyword": "metaValueKeyClass", + "propertyTooltip": "", + "propertyType": "text", + "dependency": { + "key": "metaKey", + "value": "java-key-class" + } + } + ] + }, "dependencies", "sample", "comments" diff --git a/reverse_engineering/api.js b/reverse_engineering/api.js index f0a467a..99fae95 100644 --- a/reverse_engineering/api.js +++ b/reverse_engineering/api.js @@ -9,7 +9,7 @@ const jsonSchemaAdapter = require('./helpers/adaptJsonSchema'); const DEFAULT_FIELD_NAME = 'New_field'; let stateExtension = null; -const ADDITIONAL_PROPS = ['avro.java.string', 'logicalType', 'scale', 'precision', 'name', 'arrayItemName', 'doc', 'order', 'aliases', 'symbols', 'namespace', 'size', 'default', 'pattern', 'choice']; +const ADDITIONAL_PROPS = ['logicalType', 'scale', 'precision', 'name', 'arrayItemName', 'doc', 'order', 'aliases', 'symbols', 'namespace', 'size', 'default', 'pattern', 'choice']; const DATA_TYPES = [ 'string', 'bytes', @@ -25,6 +25,13 @@ const DATA_TYPES = [ 'double', 'map' ]; +const META_PROPERTIES = [ + 'avro.java.string', + 'java-element', + 'java-element-class', + 'java-class', + 'java-key-class' +]; const COMPLEX_TYPES = ['map', 'array', 'record']; @@ -257,18 +264,38 @@ const isComplexType = (type) => { } if (typeof type === 'string') { return true; + } else if (Object(type.type) === type.type) { + return isComplexType(type.type); } return COMPLEX_TYPES.includes(type.type); }; +const getTypeProperties = (type) => { + return Object.keys(type).reduce((schema, property) => { + if (['fields', 'items', 'type'].includes(property)) { + schema[property] = type[property]; + } else { + handleOtherProps(type, property, schema); + } + + + return schema; + }, {}); +}; + const getType = (schema, field, type) => { if (Object(type) === type) { if (type.name) { schema.typeName = type.name; } - return Object.assign({}, schema, type, getType(schema, field, type.type)); + return Object.assign( + {}, + schema, + getTypeProperties(type), + getType(schema, field, type.type) + ); } switch(type) { @@ -382,7 +409,35 @@ const handleItems = (data, prop, schema, definitions) => { } }; +const isMetaProperty = (propertyName) => { + return META_PROPERTIES.includes(propertyName); +}; + +const addMetaProperty = (schema, metaKey, metaValue) => { + if (!Array.isArray(schema.metaProps)) { + schema.metaProps = []; + } + + const metaValueKeyMap = { + 'avro.java.string': 'metaValueString', + 'java-element': 'metaValueElement', + 'java-element-class': 'metaValueElementClass', + 'java-class': 'metaValueClass', + 'java-key-class': 'metaValueKeyClass' + }; + + const metaValueKey = _.get(metaValueKeyMap, metaKey, 'metaValue'); + + schema.metaProps.push({ + metaKey, [metaValueKey]: metaValue + }); +}; + const handleOtherProps = (data, prop, schema) => { + if (isMetaProperty(prop)) { + addMetaProperty(schema, prop, data[prop]); + } + if (!ADDITIONAL_PROPS.includes(prop)) { return; } diff --git a/types/array.json b/types/array.json index c1bdd6a..99354f4 100644 --- a/types/array.json +++ b/types/array.json @@ -17,6 +17,7 @@ "additionalItems": true, "minItems": "", "maxItems": "", - "uniqueItems": false + "uniqueItems": false, + "metaProps": [] } } diff --git a/types/boolean.json b/types/boolean.json index fa56767..570c324 100644 --- a/types/boolean.json +++ b/types/boolean.json @@ -15,6 +15,7 @@ "childRelationships": [], "foreignEntity": "", "foreignField": [], - "sample": "" + "sample": "", + "metaProps": [] } } diff --git a/types/bytes.json b/types/bytes.json index d9857a3..97daa35 100644 --- a/types/bytes.json +++ b/types/bytes.json @@ -19,7 +19,8 @@ "foreignField": [], "enum": [], "subtype": "", - "sample": "" + "sample": "", + "metaProps": [] }, "subtypes": { "": { diff --git a/types/enum.json b/types/enum.json index 80697d5..3ab3173 100644 --- a/types/enum.json +++ b/types/enum.json @@ -20,6 +20,7 @@ "sample": "", "symbols": ["Y"], "namespace": "", - "typeName": "" + "typeName": "", + "metaProps": [] } } \ No newline at end of file diff --git a/types/fixed.json b/types/fixed.json index 7a500f6..f8f0e24 100644 --- a/types/fixed.json +++ b/types/fixed.json @@ -20,7 +20,8 @@ "enum": [], "sample": "", "subtype": "", - "size": 0 + "size": 0, + "metaProps": [] }, "subtypes": { "": { diff --git a/types/map.json b/types/map.json index 0eb34f0..4f5f749 100644 --- a/types/map.json +++ b/types/map.json @@ -11,7 +11,8 @@ "properties": [], "minProperties": "", "maxProperties": "", - "additionalProperties": false + "additionalProperties": false, + "metaProps": [] }, "subtypes": { "map": { diff --git a/types/number.json b/types/number.json index 93cc6fc..591ca3a 100644 --- a/types/number.json +++ b/types/number.json @@ -24,6 +24,7 @@ "foreignField": [], "enum": [], "mode": "int", - "sample": "" + "sample": "", + "metaProps": [] } } diff --git a/types/record.json b/types/record.json index 2844130..ec4e269 100644 --- a/types/record.json +++ b/types/record.json @@ -17,6 +17,7 @@ "minProperties": "", "maxProperties": "", "additionalProperties": false, - "enum": [] + "enum": [], + "metaProps": [] } } \ No newline at end of file diff --git a/types/string.json b/types/string.json index 4ec5036..df6245b 100644 --- a/types/string.json +++ b/types/string.json @@ -16,6 +16,7 @@ "foreignCollection": "", "foreignField": [], "enum": [], - "sample": "" + "sample": "", + "metaProps": [] } } \ No newline at end of file