@api-client/core 0.11.4 → 0.11.6
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/build/oauth-popup.html +33 -0
- package/build/src/modeling/DataAssociation.d.ts +5 -1
- package/build/src/modeling/DataAssociation.d.ts.map +1 -1
- package/build/src/modeling/DataAssociation.js +10 -4
- package/build/src/modeling/DataAssociation.js.map +1 -1
- package/build/src/modeling/DataEntity.d.ts +5 -1
- package/build/src/modeling/DataEntity.d.ts.map +1 -1
- package/build/src/modeling/DataEntity.js +15 -8
- package/build/src/modeling/DataEntity.js.map +1 -1
- package/build/src/modeling/DataModel.d.ts +5 -1
- package/build/src/modeling/DataModel.d.ts.map +1 -1
- package/build/src/modeling/DataModel.js +15 -11
- package/build/src/modeling/DataModel.js.map +1 -1
- package/build/src/modeling/DataNamespace.d.ts +12 -1
- package/build/src/modeling/DataNamespace.d.ts.map +1 -1
- package/build/src/modeling/DataNamespace.js +45 -6
- package/build/src/modeling/DataNamespace.js.map +1 -1
- package/build/src/modeling/DataProperty.js +2 -2
- package/build/src/modeling/DataProperty.js.map +1 -1
- package/data/models/example-generator-api.json +18 -18
- package/package.json +1 -1
- package/src/modeling/DataAssociation.ts +11 -4
- package/src/modeling/DataEntity.ts +16 -8
- package/src/modeling/DataModel.ts +16 -11
- package/src/modeling/DataNamespace.ts +46 -6
- package/src/modeling/DataProperty.ts +2 -2
- package/tests/unit/modeling/data_association.spec.ts +2 -2
- package/tests/unit/modeling/data_entity.spec.ts +3 -3
- package/tests/unit/modeling/data_model.spec.ts +3 -3
- package/tests/unit/modeling/data_namespace.spec.ts +72 -3
- package/Local.session.sql +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataProperty.js","sourceRoot":"","sources":["../../../src/modeling/DataProperty.ts"],"names":[],"mappings":"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","sourcesContent":["import { Json } from '@api-client/json'\nimport { IThing, Thing } from '../models/Thing.js'\nimport v4 from '../lib/uuid.js'\nimport { DataNamespace } from './DataNamespace.js'\nimport { IApiPropertyShape } from '../amf/definitions/Shapes.js'\nimport { AmfShapeGenerator } from '../amf/AmfShapeGenerator.js'\nimport { PropertyBinding, PropertyBindings, PropertyWebBindings } from './Bindings.js'\nimport { DataPropertyKind } from '../models/kinds.js'\nimport {\n type BinaryFormat,\n BinaryFormats,\n type DataPropertyAttribute,\n DataPropertyAttributes,\n type DataPropertyFormat,\n DataPropertyList,\n type DataPropertyType,\n DataPropertyTypes,\n type NumberFormat,\n NumberFormats,\n} from './DataFormat.js'\n\n/**\n * Describes the default value set on a property schema.\n */\nexport interface SchemaDefaultValue {\n /**\n * The type of the default value.\n *\n * - `literal` The `value` should be used as-is.\n * - `function` The value represents the name of the function to be used.\n */\n type: 'literal' | 'function'\n /**\n * The actual value type depends on the `type`.\n * It is always a string and it has to be casted to the property's data type.\n */\n value: string\n}\n\n/**\n * A general schema definition for a property.\n * This is propagated to all bindings (when they support these properties).\n */\nexport interface DataPropertySchema {\n /**\n * The minimum value of the property.\n *\n * By default it is inclusive value. Use the `exclusiveMinimum` property to make it exclusive.\n *\n * Used with:\n * - string\n * - number\n * - date\n * - time\n * - datetime\n */\n minimum?: number\n /**\n * The maximum value of the property.\n *\n * By default it is inclusive value. Use the `exclusiveMaximum` property to make it exclusive.\n *\n * Used with:\n * - string\n * - number\n * - date\n * - time\n * - datetime\n */\n maximum?: number\n /**\n * When set, the minimum value is exclusive.\n *\n * - When `false`: value ≥ minimum.\n * - When `true`: value > minimum.\n */\n exclusiveMinimum?: boolean\n /**\n * When set, the exclusiveMaximum value is exclusive.\n *\n * - When `false`: value ≤ maximum.\n * - When `true`: value < minimum.\n */\n exclusiveMaximum?: boolean\n /**\n * The multiplier value for a number scalar.\n *\n * Examples:\n * - if `1` then every integer is allowed\n * - if `2` than every even number is allowed\n * - if `0.5` than every number difidable by `0.5` is allowed\n */\n multipleOf?: number\n /**\n * The enum values for the property.\n * They are always encoded as strings. The actual type is defined in the `dataType` property.\n */\n enum?: string[]\n /**\n * The default value for the property.\n * This is always encoded as a string. The actual type is defined in the `dataType` property.\n */\n defaultValue?: SchemaDefaultValue\n /**\n * The example values for the property.\n * They are always encoded as strings. The actual type is defined in the `dataType` property.\n */\n examples?: string[]\n}\n\nexport interface IDataProperty {\n kind: typeof DataPropertyKind\n /**\n * The key of the namespace.\n */\n key: string\n /**\n * The data property description.\n */\n info: IThing\n /**\n * Wether the data property is required.\n */\n required?: boolean\n /**\n * Whether the data property allows multiple items.\n */\n multiple?: boolean\n /**\n * Whether this property describes a primary key of the entity.\n */\n primary?: boolean\n /**\n * Whether this property describes an indexed property of the entity.\n */\n index?: boolean\n /**\n * Whether the property is read only in the schema.\n */\n readOnly?: boolean\n /**\n * Whether the property is write only in the schema.\n */\n writeOnly?: boolean\n /**\n * Whether this property is deprecated.\n */\n deprecated?: boolean\n /**\n * Optional general purpose tags for the UI.\n */\n tags?: string[]\n /**\n * For future use.\n *\n * The keys of the taxonomy items associated with the property.\n */\n taxonomy?: string[]\n /**\n * The data type for this property.\n * Note, not all schemas support the same type. For example, defining `sint32`\n * works for protocol buffers, but does not for JSON. In such case we use default\n * translation `sint32` -> `number`. Another way it to create\n * a derivative entity for specific schema to describe specific schema case.\n */\n type: DataPropertyType\n /**\n * The general schema definition of this property.\n * This is propagated to all bindings (when they support these properties).\n */\n schema?: DataPropertySchema\n /**\n * The list of bindings for this property.\n *\n * A binding defines a translation from a data model to a specific format.\n * For example allows to define properties required to generate AMF shape and therefore RAML/OAS shapes for web APIs\n * or a protocol buffer schema.\n */\n bindings?: PropertyBinding[]\n}\n\nexport class DataProperty {\n kind = DataPropertyKind\n\n key = ''\n\n /**\n * The description of the data namespace.\n */\n info: Thing = Thing.fromName('')\n\n /**\n * Wether the data property is required.\n */\n required?: boolean\n\n /**\n * Whether the data property allows multiple items.\n */\n multiple?: boolean\n\n /**\n * Whether this property describes a primary key of the entity.\n */\n primary?: boolean\n\n /**\n * Whether this property describes an indexed property of the entity.\n */\n index?: boolean\n\n /**\n * Whether the property is read only in the schema.\n */\n readOnly?: boolean\n\n /**\n * Whether the property is write only in the schema.\n */\n writeOnly?: boolean\n\n /**\n * Whether this property is deprecated.\n */\n deprecated?: boolean\n\n /**\n * Optional general purpose tags for the UI.\n *\n * Note to implementations, use the `addTag()` method as it propagates the \"tag\" value in the namespace.\n */\n tags: string[] = []\n\n /**\n * Reserved for future use.\n *\n * The keys of the taxonomy items associated with the property.\n */\n taxonomy: string[] = []\n\n /**\n * The data type for this property.\n * Note, not all schemas support the same type. For example, defining `sint32`\n * works for protocol buffers but does not for JSON. In such case we use default\n * translation `sint32` -> `number`. Another way it to create\n * a derivative entity for specific schema to describe specific schema case.\n */\n type: DataPropertyType = 'string'\n\n /**\n * The general schema definition of this property.\n * This is propagated to all bindings (when they support these properties).\n */\n schema?: DataPropertySchema\n /**\n * The list of bindings for this property.\n *\n * A binding defines a translation from a data model to a specific format.\n * For example allows to define properties required to generate AMF shape and therefore RAML/OAS shapes for web APIs\n * or a protocol buffer schema.\n */\n bindings: PropertyBinding[] = []\n\n /**\n * @deprecated Use the direct import of types.\n */\n static get supportedTypes(): DataPropertyType[] {\n return [...DataPropertyTypes]\n }\n\n static fromName(root: DataNamespace, name: string): DataProperty {\n const property = new DataProperty(root)\n property.info = Thing.fromName(name)\n return property\n }\n\n static fromType(root: DataNamespace, type: DataPropertyType): DataProperty {\n const result = new DataProperty(root)\n result.type = type\n return result\n }\n\n /**\n * @param input The data property definition to restore.\n */\n constructor(\n public root: DataNamespace,\n input?: string | IDataProperty\n ) {\n let init: IDataProperty\n if (typeof input === 'string') {\n init = JSON.parse(input)\n } else if (typeof input === 'object') {\n init = input\n } else {\n init = {\n kind: DataPropertyKind,\n key: v4(),\n info: Thing.fromName('').toJSON(),\n type: 'string',\n }\n }\n this.new(init)\n }\n\n new(init: IDataProperty): void {\n if (!DataProperty.isDataProperty(init)) {\n throw new Error(`Not a data property.`)\n }\n const {\n info,\n key = v4(),\n kind = DataPropertyKind,\n multiple,\n required,\n type = DataPropertyList.string,\n index,\n primary,\n readOnly,\n writeOnly,\n tags,\n taxonomy,\n deprecated,\n schema,\n bindings,\n } = init\n this.kind = kind\n this.key = key\n this.type = type\n if (info) {\n this.info = new Thing(info)\n } else {\n this.info = Thing.fromName('')\n }\n if (typeof multiple === 'boolean') {\n this.multiple = multiple\n } else {\n this.multiple = undefined\n }\n if (typeof required === 'boolean') {\n this.required = required\n } else {\n this.required = undefined\n }\n if (typeof index === 'boolean') {\n this.index = index\n } else {\n this.index = undefined\n }\n if (typeof deprecated === 'boolean') {\n this.deprecated = deprecated\n } else {\n this.deprecated = undefined\n }\n if (typeof primary === 'boolean') {\n this.primary = primary\n } else {\n this.primary = undefined\n }\n if (typeof readOnly === 'boolean') {\n this.readOnly = readOnly\n } else {\n this.readOnly = undefined\n }\n if (typeof writeOnly === 'boolean') {\n this.writeOnly = writeOnly\n } else {\n this.writeOnly = undefined\n }\n if (Array.isArray(tags)) {\n this.tags = [...tags]\n } else {\n this.tags = []\n }\n if (Array.isArray(taxonomy)) {\n this.taxonomy = [...taxonomy]\n } else {\n this.taxonomy = []\n }\n if (schema) {\n this.schema = Json.clone(schema)\n } else {\n this.schema = undefined\n }\n if (Array.isArray(bindings)) {\n this.bindings = bindings.map((i) => Json.clone(i))\n } else {\n this.bindings = []\n }\n }\n\n static isDataProperty(input: unknown): boolean {\n const typed = input as IDataProperty\n if (!input || typed.kind !== DataPropertyKind) {\n return false\n }\n return true\n }\n\n toJSON(): IDataProperty {\n const result: IDataProperty = {\n kind: DataPropertyKind,\n info: this.info.toJSON(),\n key: this.key,\n type: this.type || DataPropertyList.string,\n }\n if (typeof this.index === 'boolean') {\n result.index = this.index\n }\n if (typeof this.deprecated === 'boolean') {\n result.deprecated = this.deprecated\n }\n if (typeof this.primary === 'boolean') {\n result.primary = this.primary\n }\n if (typeof this.multiple === 'boolean') {\n result.multiple = this.multiple\n }\n if (typeof this.required === 'boolean') {\n result.required = this.required\n }\n if (typeof this.readOnly === 'boolean') {\n result.readOnly = this.readOnly\n }\n if (typeof this.writeOnly === 'boolean') {\n result.writeOnly = this.writeOnly\n }\n if (Array.isArray(this.tags) && this.tags.length) {\n result.tags = [...this.tags]\n }\n if (Array.isArray(this.taxonomy) && this.taxonomy.length) {\n result.taxonomy = [...this.taxonomy]\n }\n if (this.schema) {\n result.schema = Json.clone(this.schema)\n }\n if (Array.isArray(this.bindings) && this.bindings.length) {\n result.bindings = this.bindings.map((i) => Json.clone(i))\n }\n return result\n }\n\n /**\n * Removes self from the parent entity and the namespace definition.\n */\n remove(): void {\n const { root } = this\n const entity = root.definitions.entities.find((i) => i.properties.some((j) => j === this))\n if (entity) {\n const assocIndex = entity.properties.findIndex((i) => i === this)\n entity.properties.splice(assocIndex, 1)\n }\n const defIndex = this.root.definitions.properties.findIndex((i) => i.key === this.key)\n if (defIndex >= 0) {\n this.root.definitions.properties.splice(defIndex, 1)\n }\n }\n\n /**\n * Adds a new tag to the property. It also populates the root namespace's tags when tag is new.\n *\n * Note, it does nothing when the tag is already defined.\n *\n * @param tag The tag to add.\n */\n addTag(tag: string): void {\n if (!tag) {\n return\n }\n const lower = tag.toLowerCase()\n const { tags } = this\n if (tags.some((t) => t.toLowerCase() === lower)) {\n return\n }\n tags.push(tag)\n const { definitions } = this.root\n if (!definitions.tags.some((t) => t.toLowerCase() === lower)) {\n definitions.tags.push(tag)\n }\n }\n\n /**\n * Removes a tag from the property. Unlike the `addTag()` this won't remove a `tag` from the root namespace.\n *\n * @param tag The tag to remove.\n */\n removeTag(tag: string): void {\n if (!tag) {\n return\n }\n const lower = tag.toLowerCase()\n const { tags } = this\n const index = tags.findIndex((t) => t.toLowerCase() === lower)\n if (index >= 0) {\n tags.splice(index, 1)\n }\n }\n\n /**\n * Creates a Property Shape of AMF.\n * The property itself is auto-generated. If the `schema` is defined then it is used\n * as the `range` of the property. Otherwise basic shape is generated for the range.\n *\n * This is a preferred way of reading the AMF shape as this synchronizes changed\n * data properties with the shape definition.\n *\n * @returns AMF property shape definition.\n */\n toApiShape(): IApiPropertyShape {\n const serializer = new AmfShapeGenerator()\n return serializer.property(this)\n }\n\n /**\n * Checks whether the passed value is one of the supported data types.\n * @param value The value to test\n * @returns True when the passed value is one of the supported data types.\n */\n static isValidType(value: unknown): value is DataPropertyType {\n if (typeof value !== 'string') {\n return false\n }\n return DataPropertyTypes.includes(value as DataPropertyType)\n }\n\n /**\n * Checks whether the passed value is one of the supported data proprty attributes.\n * @param value The value to test\n * @returns True when the passed value is one of the supported data proprty attributes.\n */\n static isValidAttribute(value: unknown): value is DataPropertyAttribute {\n if (typeof value !== 'string') {\n return false\n }\n return DataPropertyAttributes.includes(value as DataPropertyAttribute)\n }\n\n /**\n * Checks whether the passed value of one of the supported `format` values.\n *\n * @param value The value to test\n * @returns `true` when the value is one of the supported `format` values.\n */\n static isValidFormat(value: unknown): value is DataPropertyFormat {\n if (value === undefined) {\n // It is the valid value.\n return true\n }\n if (typeof value !== 'string') {\n return false\n }\n if (NumberFormats.includes(value as NumberFormat)) {\n return true\n }\n if (BinaryFormats.includes(value as BinaryFormat)) {\n return true\n }\n return false\n }\n\n /**\n * Creates the `schema` object if missing and returns it.\n * @returns The schema object.\n */\n ensureSchema(): DataPropertySchema {\n if (!this.schema) {\n this.schema = {}\n }\n return this.schema\n }\n\n /**\n * Creates if not existing and returns web bindings definition.\n * @returns The web binding definition\n */\n getWebBinding(): PropertyWebBindings {\n let object = this.bindings.find((i) => i.type === 'web') as PropertyBinding | undefined\n if (!object) {\n object = { type: 'web', schema: {} } as PropertyBinding\n this.bindings.push(object)\n }\n return object.schema as PropertyWebBindings\n }\n\n /**\n * Returns the schema value of the binding, if any was created.\n * @param type The type of the binding to read.\n * @returns The binding schema, if any\n */\n readBinding(type: 'web' | 'protobuf'): PropertyBindings | undefined {\n const item = this.bindings.find((i) => i.type === type) as PropertyBinding\n return item?.schema\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DataProperty.js","sourceRoot":"","sources":["../../../src/modeling/DataProperty.ts"],"names":[],"mappings":"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","sourcesContent":["import { Json } from '@api-client/json'\nimport { IThing, Thing } from '../models/Thing.js'\nimport v4 from '../lib/uuid.js'\nimport { DataNamespace } from './DataNamespace.js'\nimport { IApiPropertyShape } from '../amf/definitions/Shapes.js'\nimport { AmfShapeGenerator } from '../amf/AmfShapeGenerator.js'\nimport { PropertyBinding, PropertyBindings, PropertyWebBindings } from './Bindings.js'\nimport { DataPropertyKind } from '../models/kinds.js'\nimport {\n type BinaryFormat,\n BinaryFormats,\n type DataPropertyAttribute,\n DataPropertyAttributes,\n type DataPropertyFormat,\n DataPropertyList,\n type DataPropertyType,\n DataPropertyTypes,\n type NumberFormat,\n NumberFormats,\n} from './DataFormat.js'\n\n/**\n * Describes the default value set on a property schema.\n */\nexport interface SchemaDefaultValue {\n /**\n * The type of the default value.\n *\n * - `literal` The `value` should be used as-is.\n * - `function` The value represents the name of the function to be used.\n */\n type: 'literal' | 'function'\n /**\n * The actual value type depends on the `type`.\n * It is always a string and it has to be casted to the property's data type.\n */\n value: string\n}\n\n/**\n * A general schema definition for a property.\n * This is propagated to all bindings (when they support these properties).\n */\nexport interface DataPropertySchema {\n /**\n * The minimum value of the property.\n *\n * By default it is inclusive value. Use the `exclusiveMinimum` property to make it exclusive.\n *\n * Used with:\n * - string\n * - number\n * - date\n * - time\n * - datetime\n */\n minimum?: number\n /**\n * The maximum value of the property.\n *\n * By default it is inclusive value. Use the `exclusiveMaximum` property to make it exclusive.\n *\n * Used with:\n * - string\n * - number\n * - date\n * - time\n * - datetime\n */\n maximum?: number\n /**\n * When set, the minimum value is exclusive.\n *\n * - When `false`: value ≥ minimum.\n * - When `true`: value > minimum.\n */\n exclusiveMinimum?: boolean\n /**\n * When set, the exclusiveMaximum value is exclusive.\n *\n * - When `false`: value ≤ maximum.\n * - When `true`: value < minimum.\n */\n exclusiveMaximum?: boolean\n /**\n * The multiplier value for a number scalar.\n *\n * Examples:\n * - if `1` then every integer is allowed\n * - if `2` than every even number is allowed\n * - if `0.5` than every number difidable by `0.5` is allowed\n */\n multipleOf?: number\n /**\n * The enum values for the property.\n * They are always encoded as strings. The actual type is defined in the `dataType` property.\n */\n enum?: string[]\n /**\n * The default value for the property.\n * This is always encoded as a string. The actual type is defined in the `dataType` property.\n */\n defaultValue?: SchemaDefaultValue\n /**\n * The example values for the property.\n * They are always encoded as strings. The actual type is defined in the `dataType` property.\n */\n examples?: string[]\n}\n\nexport interface IDataProperty {\n kind: typeof DataPropertyKind\n /**\n * The key of the namespace.\n */\n key: string\n /**\n * The data property description.\n */\n info: IThing\n /**\n * Wether the data property is required.\n */\n required?: boolean\n /**\n * Whether the data property allows multiple items.\n */\n multiple?: boolean\n /**\n * Whether this property describes a primary key of the entity.\n */\n primary?: boolean\n /**\n * Whether this property describes an indexed property of the entity.\n */\n index?: boolean\n /**\n * Whether the property is read only in the schema.\n */\n readOnly?: boolean\n /**\n * Whether the property is write only in the schema.\n */\n writeOnly?: boolean\n /**\n * Whether this property is deprecated.\n */\n deprecated?: boolean\n /**\n * Optional general purpose tags for the UI.\n */\n tags?: string[]\n /**\n * For future use.\n *\n * The keys of the taxonomy items associated with the property.\n */\n taxonomy?: string[]\n /**\n * The data type for this property.\n * Note, not all schemas support the same type. For example, defining `sint32`\n * works for protocol buffers, but does not for JSON. In such case we use default\n * translation `sint32` -> `number`. Another way it to create\n * a derivative entity for specific schema to describe specific schema case.\n */\n type: DataPropertyType\n /**\n * The general schema definition of this property.\n * This is propagated to all bindings (when they support these properties).\n */\n schema?: DataPropertySchema\n /**\n * The list of bindings for this property.\n *\n * A binding defines a translation from a data model to a specific format.\n * For example allows to define properties required to generate AMF shape and therefore RAML/OAS shapes for web APIs\n * or a protocol buffer schema.\n */\n bindings?: PropertyBinding[]\n}\n\nexport class DataProperty {\n kind = DataPropertyKind\n\n key = ''\n\n /**\n * The description of the data namespace.\n */\n info: Thing = Thing.fromName('')\n\n /**\n * Wether the data property is required.\n */\n required?: boolean\n\n /**\n * Whether the data property allows multiple items.\n */\n multiple?: boolean\n\n /**\n * Whether this property describes a primary key of the entity.\n */\n primary?: boolean\n\n /**\n * Whether this property describes an indexed property of the entity.\n */\n index?: boolean\n\n /**\n * Whether the property is read only in the schema.\n */\n readOnly?: boolean\n\n /**\n * Whether the property is write only in the schema.\n */\n writeOnly?: boolean\n\n /**\n * Whether this property is deprecated.\n */\n deprecated?: boolean\n\n /**\n * Optional general purpose tags for the UI.\n *\n * Note to implementations, use the `addTag()` method as it propagates the \"tag\" value in the namespace.\n */\n tags: string[] = []\n\n /**\n * Reserved for future use.\n *\n * The keys of the taxonomy items associated with the property.\n */\n taxonomy: string[] = []\n\n /**\n * The data type for this property.\n * Note, not all schemas support the same type. For example, defining `sint32`\n * works for protocol buffers but does not for JSON. In such case we use default\n * translation `sint32` -> `number`. Another way it to create\n * a derivative entity for specific schema to describe specific schema case.\n */\n type: DataPropertyType = 'string'\n\n /**\n * The general schema definition of this property.\n * This is propagated to all bindings (when they support these properties).\n */\n schema?: DataPropertySchema\n /**\n * The list of bindings for this property.\n *\n * A binding defines a translation from a data model to a specific format.\n * For example allows to define properties required to generate AMF shape and therefore RAML/OAS shapes for web APIs\n * or a protocol buffer schema.\n */\n bindings: PropertyBinding[] = []\n\n /**\n * @deprecated Use the direct import of types.\n */\n static get supportedTypes(): DataPropertyType[] {\n return [...DataPropertyTypes]\n }\n\n static fromName(root: DataNamespace, name: string): DataProperty {\n const property = new DataProperty(root)\n property.info = Thing.fromName(name)\n return property\n }\n\n static fromType(root: DataNamespace, type: DataPropertyType): DataProperty {\n const result = new DataProperty(root)\n result.type = type\n return result\n }\n\n /**\n * @param input The data property definition to restore.\n */\n constructor(\n public root: DataNamespace,\n input?: string | IDataProperty\n ) {\n let init: IDataProperty\n if (typeof input === 'string') {\n init = JSON.parse(input)\n } else if (typeof input === 'object') {\n init = input\n } else {\n init = {\n kind: DataPropertyKind,\n key: v4(),\n info: Thing.fromName('').toJSON(),\n type: 'string',\n }\n }\n this.new(init)\n }\n\n new(init: IDataProperty): void {\n if (!DataProperty.isDataProperty(init)) {\n throw new Error(`Not a data property.`)\n }\n const {\n info,\n key = v4(),\n kind = DataPropertyKind,\n multiple,\n required,\n type = DataPropertyList.string,\n index,\n primary,\n readOnly,\n writeOnly,\n tags,\n taxonomy,\n deprecated,\n schema,\n bindings,\n } = init\n this.kind = kind\n this.key = key\n this.type = type\n if (info) {\n this.info = new Thing(info)\n } else {\n this.info = Thing.fromName('')\n }\n if (typeof multiple === 'boolean') {\n this.multiple = multiple\n } else {\n this.multiple = undefined\n }\n if (typeof required === 'boolean') {\n this.required = required\n } else {\n this.required = undefined\n }\n if (typeof index === 'boolean') {\n this.index = index\n } else {\n this.index = undefined\n }\n if (typeof deprecated === 'boolean') {\n this.deprecated = deprecated\n } else {\n this.deprecated = undefined\n }\n if (typeof primary === 'boolean') {\n this.primary = primary\n } else {\n this.primary = undefined\n }\n if (typeof readOnly === 'boolean') {\n this.readOnly = readOnly\n } else {\n this.readOnly = undefined\n }\n if (typeof writeOnly === 'boolean') {\n this.writeOnly = writeOnly\n } else {\n this.writeOnly = undefined\n }\n if (Array.isArray(tags)) {\n this.tags = [...tags]\n } else {\n this.tags = []\n }\n if (Array.isArray(taxonomy)) {\n this.taxonomy = [...taxonomy]\n } else {\n this.taxonomy = []\n }\n if (schema) {\n this.schema = Json.clone(schema)\n } else {\n this.schema = undefined\n }\n if (Array.isArray(bindings)) {\n this.bindings = bindings.map((i) => Json.clone(i))\n } else {\n this.bindings = []\n }\n }\n\n static isDataProperty(input: unknown): boolean {\n const typed = input as IDataProperty\n if (!input || typed.kind !== DataPropertyKind) {\n return false\n }\n return true\n }\n\n toJSON(): IDataProperty {\n const result: IDataProperty = {\n kind: DataPropertyKind,\n info: this.info.toJSON(),\n key: this.key,\n type: this.type || DataPropertyList.string,\n }\n if (typeof this.index === 'boolean') {\n result.index = this.index\n }\n if (typeof this.deprecated === 'boolean') {\n result.deprecated = this.deprecated\n }\n if (typeof this.primary === 'boolean') {\n result.primary = this.primary\n }\n if (typeof this.multiple === 'boolean') {\n result.multiple = this.multiple\n }\n if (typeof this.required === 'boolean') {\n result.required = this.required\n }\n if (typeof this.readOnly === 'boolean') {\n result.readOnly = this.readOnly\n }\n if (typeof this.writeOnly === 'boolean') {\n result.writeOnly = this.writeOnly\n }\n if (Array.isArray(this.tags) && this.tags.length) {\n result.tags = [...this.tags]\n }\n if (Array.isArray(this.taxonomy) && this.taxonomy.length) {\n result.taxonomy = [...this.taxonomy]\n }\n if (this.schema) {\n result.schema = Json.clone(this.schema)\n }\n if (Array.isArray(this.bindings) && this.bindings.length) {\n result.bindings = this.bindings.map((i) => Json.clone(i))\n }\n return result\n }\n\n /**\n * Removes self from the parent entity and the namespace definition.\n */\n remove(): void {\n const { root } = this\n const entity = root.definitions.entities.find((i) => i.properties.some((j) => j.key === this.key))\n if (entity) {\n const assocIndex = entity.properties.findIndex((i) => i.key === this.key)\n entity.properties.splice(assocIndex, 1)\n }\n const defIndex = this.root.definitions.properties.findIndex((i) => i.key === this.key)\n if (defIndex >= 0) {\n this.root.definitions.properties.splice(defIndex, 1)\n }\n }\n\n /**\n * Adds a new tag to the property. It also populates the root namespace's tags when tag is new.\n *\n * Note, it does nothing when the tag is already defined.\n *\n * @param tag The tag to add.\n */\n addTag(tag: string): void {\n if (!tag) {\n return\n }\n const lower = tag.toLowerCase()\n const { tags } = this\n if (tags.some((t) => t.toLowerCase() === lower)) {\n return\n }\n tags.push(tag)\n const { definitions } = this.root\n if (!definitions.tags.some((t) => t.toLowerCase() === lower)) {\n definitions.tags.push(tag)\n }\n }\n\n /**\n * Removes a tag from the property. Unlike the `addTag()` this won't remove a `tag` from the root namespace.\n *\n * @param tag The tag to remove.\n */\n removeTag(tag: string): void {\n if (!tag) {\n return\n }\n const lower = tag.toLowerCase()\n const { tags } = this\n const index = tags.findIndex((t) => t.toLowerCase() === lower)\n if (index >= 0) {\n tags.splice(index, 1)\n }\n }\n\n /**\n * Creates a Property Shape of AMF.\n * The property itself is auto-generated. If the `schema` is defined then it is used\n * as the `range` of the property. Otherwise basic shape is generated for the range.\n *\n * This is a preferred way of reading the AMF shape as this synchronizes changed\n * data properties with the shape definition.\n *\n * @returns AMF property shape definition.\n */\n toApiShape(): IApiPropertyShape {\n const serializer = new AmfShapeGenerator()\n return serializer.property(this)\n }\n\n /**\n * Checks whether the passed value is one of the supported data types.\n * @param value The value to test\n * @returns True when the passed value is one of the supported data types.\n */\n static isValidType(value: unknown): value is DataPropertyType {\n if (typeof value !== 'string') {\n return false\n }\n return DataPropertyTypes.includes(value as DataPropertyType)\n }\n\n /**\n * Checks whether the passed value is one of the supported data proprty attributes.\n * @param value The value to test\n * @returns True when the passed value is one of the supported data proprty attributes.\n */\n static isValidAttribute(value: unknown): value is DataPropertyAttribute {\n if (typeof value !== 'string') {\n return false\n }\n return DataPropertyAttributes.includes(value as DataPropertyAttribute)\n }\n\n /**\n * Checks whether the passed value of one of the supported `format` values.\n *\n * @param value The value to test\n * @returns `true` when the value is one of the supported `format` values.\n */\n static isValidFormat(value: unknown): value is DataPropertyFormat {\n if (value === undefined) {\n // It is the valid value.\n return true\n }\n if (typeof value !== 'string') {\n return false\n }\n if (NumberFormats.includes(value as NumberFormat)) {\n return true\n }\n if (BinaryFormats.includes(value as BinaryFormat)) {\n return true\n }\n return false\n }\n\n /**\n * Creates the `schema` object if missing and returns it.\n * @returns The schema object.\n */\n ensureSchema(): DataPropertySchema {\n if (!this.schema) {\n this.schema = {}\n }\n return this.schema\n }\n\n /**\n * Creates if not existing and returns web bindings definition.\n * @returns The web binding definition\n */\n getWebBinding(): PropertyWebBindings {\n let object = this.bindings.find((i) => i.type === 'web') as PropertyBinding | undefined\n if (!object) {\n object = { type: 'web', schema: {} } as PropertyBinding\n this.bindings.push(object)\n }\n return object.schema as PropertyWebBindings\n }\n\n /**\n * Returns the schema value of the binding, if any was created.\n * @param type The type of the binding to read.\n * @returns The binding schema, if any\n */\n readBinding(type: 'web' | 'protobuf'): PropertyBindings | undefined {\n const item = this.bindings.find((i) => i.type === type) as PropertyBinding\n return item?.schema\n }\n}\n"]}
|
|
@@ -41722,22 +41722,22 @@
|
|
|
41722
41722
|
"@id": "#209"
|
|
41723
41723
|
},
|
|
41724
41724
|
{
|
|
41725
|
-
"@id": "#
|
|
41725
|
+
"@id": "#191"
|
|
41726
41726
|
},
|
|
41727
41727
|
{
|
|
41728
|
-
"@id": "#
|
|
41728
|
+
"@id": "#194"
|
|
41729
41729
|
},
|
|
41730
41730
|
{
|
|
41731
|
-
"@id": "#
|
|
41731
|
+
"@id": "#197"
|
|
41732
41732
|
},
|
|
41733
41733
|
{
|
|
41734
|
-
"@id": "#
|
|
41734
|
+
"@id": "#200"
|
|
41735
41735
|
},
|
|
41736
41736
|
{
|
|
41737
|
-
"@id": "#
|
|
41737
|
+
"@id": "#203"
|
|
41738
41738
|
},
|
|
41739
41739
|
{
|
|
41740
|
-
"@id": "#
|
|
41740
|
+
"@id": "#206"
|
|
41741
41741
|
},
|
|
41742
41742
|
{
|
|
41743
41743
|
"@id": "#209"
|
|
@@ -43096,7 +43096,7 @@
|
|
|
43096
43096
|
"doc:ExternalDomainElement",
|
|
43097
43097
|
"doc:DomainElement"
|
|
43098
43098
|
],
|
|
43099
|
-
"doc:raw": "
|
|
43099
|
+
"doc:raw": "countryCode: \"BE\"\ngraydonEnterpriseId: 1057155523\nregistrationId: \"0422319093\"\nvatNumber: \"BE0422319093\"\ngraydonCompanyId: \"0422319093\"\nisBranchOffice: false\n",
|
|
43100
43100
|
"core:mediaType": "application/yaml",
|
|
43101
43101
|
"sourcemaps:sources": [
|
|
43102
43102
|
{
|
|
@@ -43117,7 +43117,7 @@
|
|
|
43117
43117
|
"doc:ExternalDomainElement",
|
|
43118
43118
|
"doc:DomainElement"
|
|
43119
43119
|
],
|
|
43120
|
-
"doc:raw": "
|
|
43120
|
+
"doc:raw": "addressType: 'REGISTERED-OFFICE-ADDRESS'\nstreetName: 'UITBREIDINGSTRAAT'\nhouseNumber: '84'\nhouseNumberAddition: '/1'\npostalCode: '2600'\ncity: 'BERCHEM (ANTWERPEN)'\ncountry: 'Belgium'\ncountryCode: 'BE'\nfullFormatedAddress: \"UITBREIDINGSTRAAT 84 /1, 2600 BERCHEM (ANTWERPEN), BELIUM\"\n",
|
|
43121
43121
|
"core:mediaType": "application/yaml",
|
|
43122
43122
|
"sourcemaps:sources": [
|
|
43123
43123
|
{
|
|
@@ -43138,7 +43138,7 @@
|
|
|
43138
43138
|
"doc:ExternalDomainElement",
|
|
43139
43139
|
"doc:DomainElement"
|
|
43140
43140
|
],
|
|
43141
|
-
"doc:raw": "code: '
|
|
43141
|
+
"doc:raw": "code: '5'\ndescription: 'Limited company'\n",
|
|
43142
43142
|
"core:mediaType": "application/yaml",
|
|
43143
43143
|
"sourcemaps:sources": [
|
|
43144
43144
|
{
|
|
@@ -43159,7 +43159,7 @@
|
|
|
43159
43159
|
"doc:ExternalDomainElement",
|
|
43160
43160
|
"doc:DomainElement"
|
|
43161
43161
|
],
|
|
43162
|
-
"doc:raw": "
|
|
43162
|
+
"doc:raw": "class: '3'\ndescription: '150 - 300'\nnumberOfFte: 5500\nnumberOfEmployees: 5232\n",
|
|
43163
43163
|
"core:mediaType": "application/yaml",
|
|
43164
43164
|
"sourcemaps:sources": [
|
|
43165
43165
|
{
|
|
@@ -43180,7 +43180,7 @@
|
|
|
43180
43180
|
"doc:ExternalDomainElement",
|
|
43181
43181
|
"doc:DomainElement"
|
|
43182
43182
|
],
|
|
43183
|
-
"doc:raw": "
|
|
43183
|
+
"doc:raw": "code: 'J'\ndescription: 'Information and communication'\n",
|
|
43184
43184
|
"core:mediaType": "application/yaml",
|
|
43185
43185
|
"sourcemaps:sources": [
|
|
43186
43186
|
{
|
|
@@ -43201,7 +43201,7 @@
|
|
|
43201
43201
|
"doc:ExternalDomainElement",
|
|
43202
43202
|
"doc:DomainElement"
|
|
43203
43203
|
],
|
|
43204
|
-
"doc:raw": "
|
|
43204
|
+
"doc:raw": "code: '7487'\ndescription: 'Financial and insurance activities'\ntype: \"PRIMARY\"\nclassificationCode: 'BE_NACEBEL2008'\nactivityGroupCode: 'ABCDE'\n",
|
|
43205
43205
|
"core:mediaType": "application/yaml",
|
|
43206
43206
|
"sourcemaps:sources": [
|
|
43207
43207
|
{
|
|
@@ -44416,32 +44416,32 @@
|
|
|
44416
44416
|
{
|
|
44417
44417
|
"@id": "#193/source-map/lexical/element_0",
|
|
44418
44418
|
"sourcemaps:element": "amf://id#193",
|
|
44419
|
-
"sourcemaps:value": "[(1,0)-(
|
|
44419
|
+
"sourcemaps:value": "[(1,0)-(7,0)]"
|
|
44420
44420
|
},
|
|
44421
44421
|
{
|
|
44422
44422
|
"@id": "#196/source-map/lexical/element_0",
|
|
44423
44423
|
"sourcemaps:element": "amf://id#196",
|
|
44424
|
-
"sourcemaps:value": "[(1,0)-(
|
|
44424
|
+
"sourcemaps:value": "[(1,0)-(10,0)]"
|
|
44425
44425
|
},
|
|
44426
44426
|
{
|
|
44427
44427
|
"@id": "#199/source-map/lexical/element_0",
|
|
44428
44428
|
"sourcemaps:element": "amf://id#199",
|
|
44429
|
-
"sourcemaps:value": "[(1,0)-(
|
|
44429
|
+
"sourcemaps:value": "[(1,0)-(3,0)]"
|
|
44430
44430
|
},
|
|
44431
44431
|
{
|
|
44432
44432
|
"@id": "#202/source-map/lexical/element_0",
|
|
44433
44433
|
"sourcemaps:element": "amf://id#202",
|
|
44434
|
-
"sourcemaps:value": "[(1,0)-(
|
|
44434
|
+
"sourcemaps:value": "[(1,0)-(5,0)]"
|
|
44435
44435
|
},
|
|
44436
44436
|
{
|
|
44437
44437
|
"@id": "#205/source-map/lexical/element_0",
|
|
44438
44438
|
"sourcemaps:element": "amf://id#205",
|
|
44439
|
-
"sourcemaps:value": "[(1,0)-(
|
|
44439
|
+
"sourcemaps:value": "[(1,0)-(3,0)]"
|
|
44440
44440
|
},
|
|
44441
44441
|
{
|
|
44442
44442
|
"@id": "#208/source-map/lexical/element_0",
|
|
44443
44443
|
"sourcemaps:element": "amf://id#208",
|
|
44444
|
-
"sourcemaps:value": "[(1,0)-(
|
|
44444
|
+
"sourcemaps:value": "[(1,0)-(6,0)]"
|
|
44445
44445
|
},
|
|
44446
44446
|
{
|
|
44447
44447
|
"@id": "#223/source-map/lexical/element_0",
|
package/package.json
CHANGED
|
@@ -358,9 +358,9 @@ export class DataAssociation {
|
|
|
358
358
|
*/
|
|
359
359
|
remove(): void {
|
|
360
360
|
const { root } = this
|
|
361
|
-
const entity = root.definitions.entities.find((i) => i.associations.some((j) => j === this))
|
|
361
|
+
const entity = root.definitions.entities.find((i) => i.associations.some((j) => j.key === this.key))
|
|
362
362
|
if (entity) {
|
|
363
|
-
const assocIndex = entity.associations.findIndex((i) => i === this)
|
|
363
|
+
const assocIndex = entity.associations.findIndex((i) => i.key === this.key)
|
|
364
364
|
entity.associations.splice(assocIndex, 1)
|
|
365
365
|
}
|
|
366
366
|
const defIndex = this.root.definitions.associations.findIndex((i) => i.key === this.key)
|
|
@@ -450,15 +450,22 @@ export class DataAssociation {
|
|
|
450
450
|
return serializer.associationProperty(this)
|
|
451
451
|
}
|
|
452
452
|
|
|
453
|
+
/**
|
|
454
|
+
* @deprecated Use the `getParentInstance()` method instead.
|
|
455
|
+
*/
|
|
456
|
+
getParent(): DataEntity {
|
|
457
|
+
return this.getParentInstance()
|
|
458
|
+
}
|
|
459
|
+
|
|
453
460
|
/**
|
|
454
461
|
* Retrieves the parent entity of this association.
|
|
455
462
|
*
|
|
456
463
|
* @returns The `DataEntity` instance that contains this association.
|
|
457
464
|
*/
|
|
458
|
-
|
|
465
|
+
getParentInstance(): DataEntity {
|
|
459
466
|
// this is forced as an association is only created when an entity is created
|
|
460
467
|
// so it has to be defined.
|
|
461
|
-
return this.root.definitions.entities.find((i) => i.associations.
|
|
468
|
+
return this.root.definitions.entities.find((i) => i.associations.some((a) => a.key === this.key)) as DataEntity
|
|
462
469
|
}
|
|
463
470
|
|
|
464
471
|
/**
|
|
@@ -585,7 +585,7 @@ export class DataEntity {
|
|
|
585
585
|
)
|
|
586
586
|
if (associationsToEntity.length > 0) {
|
|
587
587
|
const entitiesNames = associationsToEntity.reduce<string[]>((acc, association) => {
|
|
588
|
-
const entity = root.definitions.entities.find((e) => e.associations.
|
|
588
|
+
const entity = root.definitions.entities.find((e) => e.associations.some((a) => a.key === association.key))
|
|
589
589
|
if (entity) {
|
|
590
590
|
acc.push(entity.info.name as string)
|
|
591
591
|
}
|
|
@@ -605,18 +605,26 @@ export class DataEntity {
|
|
|
605
605
|
root.definitions.entities.splice(index, 1)
|
|
606
606
|
}
|
|
607
607
|
// remove from the parent
|
|
608
|
-
const model = this.
|
|
608
|
+
const model = this.getParentInstance()
|
|
609
609
|
if (model) {
|
|
610
|
-
const entityIndex = model.entities.findIndex((e) => e === this)
|
|
610
|
+
const entityIndex = model.entities.findIndex((e) => e.key === this.key)
|
|
611
611
|
model.entities.splice(entityIndex, 1)
|
|
612
612
|
}
|
|
613
613
|
}
|
|
614
614
|
|
|
615
615
|
/**
|
|
616
|
-
*
|
|
616
|
+
* @deprecated Use the `getParentInstance()` method instead.
|
|
617
617
|
*/
|
|
618
|
+
// This method name colides with the `getParents()` method.
|
|
618
619
|
getParent(): DataModel | undefined {
|
|
619
|
-
return this.
|
|
620
|
+
return this.getParentInstance()
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* Returns a parent data model where this entity exist.
|
|
625
|
+
*/
|
|
626
|
+
getParentInstance(): DataModel | undefined {
|
|
627
|
+
return this.root.definitions.models.find((m) => m.entities.some((e) => e.key === this.key))
|
|
620
628
|
}
|
|
621
629
|
|
|
622
630
|
/**
|
|
@@ -808,21 +816,21 @@ export class DataEntity {
|
|
|
808
816
|
name: this.info.name || 'Unnamed entity',
|
|
809
817
|
kind: DataEntityKind,
|
|
810
818
|
})
|
|
811
|
-
const model = this.
|
|
819
|
+
const model = this.getParentInstance()
|
|
812
820
|
if (model) {
|
|
813
821
|
result.push({
|
|
814
822
|
key: model.key,
|
|
815
823
|
kind: model.kind,
|
|
816
824
|
name: model.info.name || 'Unnamed data model',
|
|
817
825
|
})
|
|
818
|
-
let parent = model.
|
|
826
|
+
let parent = model.getParentInstance()
|
|
819
827
|
while (parent && parent !== this.root) {
|
|
820
828
|
result.push({
|
|
821
829
|
key: parent.key,
|
|
822
830
|
kind: parent.kind,
|
|
823
831
|
name: parent.info.name || 'Unnamed namespace',
|
|
824
832
|
})
|
|
825
|
-
parent = parent.
|
|
833
|
+
parent = parent.getParentInstance()
|
|
826
834
|
}
|
|
827
835
|
}
|
|
828
836
|
result.push({
|
|
@@ -135,7 +135,7 @@ export class DataModel {
|
|
|
135
135
|
entities.forEach((e) => e.remove())
|
|
136
136
|
|
|
137
137
|
// remove self from the parent
|
|
138
|
-
const parent = this.
|
|
138
|
+
const parent = this.getParentInstance()
|
|
139
139
|
if (parent) {
|
|
140
140
|
const itemIndex = parent.items.findIndex((i) => i.key === key)
|
|
141
141
|
if (itemIndex >= 0) {
|
|
@@ -169,17 +169,15 @@ export class DataModel {
|
|
|
169
169
|
if (entity.root !== this.root) {
|
|
170
170
|
throw new Error(`The entity ${entity.key} is not in the same namespace as this data model.`)
|
|
171
171
|
}
|
|
172
|
-
|
|
173
|
-
throw new Error(`The entity ${entity.key} is already adapted by this data model.`)
|
|
174
|
-
}
|
|
175
|
-
const parent = entity.getParent()
|
|
172
|
+
const parent = entity.getParentInstance()
|
|
176
173
|
if (!parent) {
|
|
177
174
|
throw new Error(`The entity ${entity.key} has no parent.`)
|
|
178
175
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
throw new Error(`The entity ${entity.key} is not in the parent data model.`)
|
|
176
|
+
if (parent.key === this.key) {
|
|
177
|
+
throw new Error(`The entity ${entity.key} is already adapted by this data model.`)
|
|
182
178
|
}
|
|
179
|
+
// it has a parent (above check) so it has the index.
|
|
180
|
+
const index = parent.entities.findIndex((i) => i.key === entity.key)
|
|
183
181
|
parent.entities.splice(index, 1)
|
|
184
182
|
if (opts.index !== undefined) {
|
|
185
183
|
this.entities.splice(opts.index, 0, entity)
|
|
@@ -209,9 +207,16 @@ export class DataModel {
|
|
|
209
207
|
}
|
|
210
208
|
|
|
211
209
|
/**
|
|
212
|
-
*
|
|
210
|
+
* @deprecated Use the `getParentInstance()` method instead.
|
|
213
211
|
*/
|
|
214
212
|
getParent(): DataNamespace | undefined {
|
|
213
|
+
return this.getParentInstance()
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Returns the parent namespace where this data model exist.
|
|
218
|
+
*/
|
|
219
|
+
getParentInstance(): DataNamespace | undefined {
|
|
215
220
|
if (this.root.items.some((e) => e.key === this.key)) {
|
|
216
221
|
return this.root
|
|
217
222
|
}
|
|
@@ -228,14 +233,14 @@ export class DataModel {
|
|
|
228
233
|
name: this.info.name || 'Unnamed data model',
|
|
229
234
|
kind: DataModelKind,
|
|
230
235
|
})
|
|
231
|
-
let parent = this.
|
|
236
|
+
let parent = this.getParentInstance()
|
|
232
237
|
while (parent && parent !== this.root) {
|
|
233
238
|
result.push({
|
|
234
239
|
key: parent.key,
|
|
235
240
|
kind: parent.kind,
|
|
236
241
|
name: parent.info.name || 'Unnamed namespace',
|
|
237
242
|
})
|
|
238
|
-
parent = parent.
|
|
243
|
+
parent = parent.getParentInstance()
|
|
239
244
|
}
|
|
240
245
|
result.push({
|
|
241
246
|
key: this.root.key,
|
|
@@ -127,9 +127,16 @@ class DataNamespaceParent {
|
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
/**
|
|
130
|
-
* @
|
|
130
|
+
* @deprecated Use the `getParentInstance()` method instead.
|
|
131
131
|
*/
|
|
132
132
|
getParent(): DataNamespace | undefined {
|
|
133
|
+
return this.getParentInstance()
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* @returns The parent namespace of this namespace. It returns `undefined` when this is the root namespace.
|
|
138
|
+
*/
|
|
139
|
+
getParentInstance(): DataNamespace | undefined {
|
|
133
140
|
const { root, key } = this
|
|
134
141
|
if (root) {
|
|
135
142
|
const result = (root as DataNamespace).findParent(key)
|
|
@@ -523,7 +530,7 @@ export class DataNamespace extends DataNamespaceParent {
|
|
|
523
530
|
if (ns.root !== this.root) {
|
|
524
531
|
throw new Error(`The namespace ${ns.key} is not in the same namespace as this data namespace.`)
|
|
525
532
|
}
|
|
526
|
-
if (ns.
|
|
533
|
+
if (ns.getParentInstance() === this) {
|
|
527
534
|
throw new Error(`The namespace ${ns.key} is already adapted by this data namespace.`)
|
|
528
535
|
}
|
|
529
536
|
// Check for circular dependency
|
|
@@ -532,16 +539,49 @@ export class DataNamespace extends DataNamespaceParent {
|
|
|
532
539
|
if (current === ns) {
|
|
533
540
|
throw new Error(`Unable to adapt namespace ${ns.key} under itself or one of its children.`)
|
|
534
541
|
}
|
|
535
|
-
current = current.
|
|
542
|
+
current = current.getParentInstance()
|
|
536
543
|
}
|
|
537
|
-
const parent = ns.
|
|
544
|
+
const parent = ns.getParentInstance() || this.root
|
|
538
545
|
if (!parent) {
|
|
539
546
|
throw new Error(`The namespace ${ns.key} has no parent.`)
|
|
540
547
|
}
|
|
548
|
+
// it has a parent (above check) so it has the index.
|
|
541
549
|
const index = parent.items.findIndex((i) => i.key === ns.key)
|
|
542
|
-
|
|
543
|
-
|
|
550
|
+
const [item] = parent.items.splice(index, 1)
|
|
551
|
+
if (opts.index !== undefined) {
|
|
552
|
+
this.items.splice(opts.index, 0, item)
|
|
553
|
+
} else {
|
|
554
|
+
this.items.push(item)
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
/**
|
|
559
|
+
* Adapts an existing data model to this namespace.
|
|
560
|
+
* This will remove the data model from the parent namespace and add it to this one.
|
|
561
|
+
* @param model The data model to adapt.
|
|
562
|
+
* @param opts The adapting options.
|
|
563
|
+
*/
|
|
564
|
+
adaptDataModel(model: DataModel, opts: DataItemAdaptingOptions = {}): void {
|
|
565
|
+
if (opts.index !== undefined) {
|
|
566
|
+
if (opts.index < 0) {
|
|
567
|
+
throw new Error(`The index ${opts.index} cannot be below 0.`)
|
|
568
|
+
}
|
|
569
|
+
if (opts.index >= this.items.length) {
|
|
570
|
+
throw new Error(`The index ${opts.index} is not valid.`)
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
if (model.root !== this.root) {
|
|
574
|
+
throw new Error(`The data model ${model.key} is not in the same namespace as this data namespace.`)
|
|
575
|
+
}
|
|
576
|
+
const parent = model.getParentInstance()
|
|
577
|
+
if (!parent) {
|
|
578
|
+
throw new Error(`The data model ${model.key} has no parent.`)
|
|
579
|
+
}
|
|
580
|
+
if (parent === this) {
|
|
581
|
+
throw new Error(`The data model ${model.key} is already adapted by this data namespace.`)
|
|
544
582
|
}
|
|
583
|
+
// it has a parent (above check) so it has the index.
|
|
584
|
+
const index = parent.items.findIndex((i) => i.key === model.key)
|
|
545
585
|
const [item] = parent.items.splice(index, 1)
|
|
546
586
|
if (opts.index !== undefined) {
|
|
547
587
|
this.items.splice(opts.index, 0, item)
|
|
@@ -445,9 +445,9 @@ export class DataProperty {
|
|
|
445
445
|
*/
|
|
446
446
|
remove(): void {
|
|
447
447
|
const { root } = this
|
|
448
|
-
const entity = root.definitions.entities.find((i) => i.properties.some((j) => j === this))
|
|
448
|
+
const entity = root.definitions.entities.find((i) => i.properties.some((j) => j.key === this.key))
|
|
449
449
|
if (entity) {
|
|
450
|
-
const assocIndex = entity.properties.findIndex((i) => i === this)
|
|
450
|
+
const assocIndex = entity.properties.findIndex((i) => i.key === this.key)
|
|
451
451
|
entity.properties.splice(assocIndex, 1)
|
|
452
452
|
}
|
|
453
453
|
const defIndex = this.root.definitions.properties.findIndex((i) => i.key === this.key)
|
|
@@ -510,7 +510,7 @@ test.group('toApiShape()', (g) => {
|
|
|
510
510
|
})
|
|
511
511
|
})
|
|
512
512
|
|
|
513
|
-
test.group('
|
|
513
|
+
test.group('getParentInstance()', (g) => {
|
|
514
514
|
let root: DataNamespace
|
|
515
515
|
let m1: DataModel
|
|
516
516
|
let e1: DataEntity
|
|
@@ -525,7 +525,7 @@ test.group('getParent()', (g) => {
|
|
|
525
525
|
|
|
526
526
|
test('returns the reference to the parent entity', ({ assert }) => {
|
|
527
527
|
const a1 = e1.addTargetAssociation(e2.key)
|
|
528
|
-
const result = a1.
|
|
528
|
+
const result = a1.getParentInstance()
|
|
529
529
|
assert.deepEqual(result, e1)
|
|
530
530
|
})
|
|
531
531
|
})
|
|
@@ -1616,7 +1616,7 @@ test.group('addParent()', (group) => {
|
|
|
1616
1616
|
})
|
|
1617
1617
|
})
|
|
1618
1618
|
|
|
1619
|
-
test.group('
|
|
1619
|
+
test.group('getParentInstance()', (group) => {
|
|
1620
1620
|
let root: DataNamespace
|
|
1621
1621
|
let model: DataModel
|
|
1622
1622
|
let entity1: DataEntity
|
|
@@ -1628,12 +1628,12 @@ test.group('DataEntity - getParent()', (group) => {
|
|
|
1628
1628
|
})
|
|
1629
1629
|
|
|
1630
1630
|
test('returns undefined when the entity is not in a model', ({ assert }) => {
|
|
1631
|
-
const result = new DataEntity(root).
|
|
1631
|
+
const result = new DataEntity(root).getParentInstance()
|
|
1632
1632
|
assert.isUndefined(result)
|
|
1633
1633
|
})
|
|
1634
1634
|
|
|
1635
1635
|
test('returns the parent data model', ({ assert }) => {
|
|
1636
|
-
const result = entity1.
|
|
1636
|
+
const result = entity1.getParentInstance()
|
|
1637
1637
|
assert.instanceOf(result, DataModel)
|
|
1638
1638
|
})
|
|
1639
1639
|
})
|
|
@@ -227,7 +227,7 @@ test.group('addEntity()', (group) => {
|
|
|
227
227
|
})
|
|
228
228
|
})
|
|
229
229
|
|
|
230
|
-
test.group('
|
|
230
|
+
test.group('getParentInstance()', (group) => {
|
|
231
231
|
let root: DataNamespace
|
|
232
232
|
|
|
233
233
|
group.each.setup(() => {
|
|
@@ -236,14 +236,14 @@ test.group('getParent()', (group) => {
|
|
|
236
236
|
|
|
237
237
|
test('returns the parent as root', ({ assert }) => {
|
|
238
238
|
const m1 = root.addDataModel('m1')
|
|
239
|
-
const result = m1.
|
|
239
|
+
const result = m1.getParentInstance()
|
|
240
240
|
assert.isTrue(result === root)
|
|
241
241
|
})
|
|
242
242
|
|
|
243
243
|
test('returns the parent is as sub-namespace', ({ assert }) => {
|
|
244
244
|
const n1 = root.addNamespace('n1')
|
|
245
245
|
const m1 = n1.addDataModel('m1')
|
|
246
|
-
const result = m1.
|
|
246
|
+
const result = m1.getParentInstance()
|
|
247
247
|
assert.isTrue(result === n1)
|
|
248
248
|
})
|
|
249
249
|
})
|