UNPKG

@ui5/task-adaptation

Version:

Custom task for ui5-builder which allows building UI5 Flexibility Adaptation Projects for SAP BTP, Cloud Foundry environment

41 lines 1.48 kB
import MetadataJsonUtil from "../converter/metadataJsonUtil.js"; import crc16 from "crc/crc16"; export default class MakeAnnotationNamespaceUnique { transform({ json, uri }) { const uniquePart = crc16(uri).toString(16); // First add current schema as reference const schema = MetadataJsonUtil.getSchemaNode(json); const references = this.getReferences(json); references.push(this.createReference(schema, uri)); // Then rename the namespace/alias schema._attributes.Namespace += "." + uniquePart; delete schema._attributes["Alias"]; return json; } createReference(schema, uri) { const attributes = { Namespace: schema._attributes.Namespace }; if (schema._attributes.Alias) { attributes.Alias = schema._attributes.Alias; } ; return { _attributes: { Uri: uri }, "edmx:Include": { _attributes: attributes } }; } getReferences(json) { const REFERENCE_NODE_NAME = "edmx:Reference"; const references = MetadataJsonUtil.getEdmx(json)[REFERENCE_NODE_NAME]; if (!Array.isArray(references)) { MetadataJsonUtil.getEdmx(json)[REFERENCE_NODE_NAME] = [references]; } return MetadataJsonUtil.getEdmx(json)[REFERENCE_NODE_NAME]; } } //# sourceMappingURL=makeAnnotationNamespaceUnique.js.map