1 line
87 KiB
XML
1 line
87 KiB
XML
{"version":3,"file":"index.cjs","sources":["../lib/common.js","../lib/read.js","../lib/write.js"],"sourcesContent":["export function hasLowerCaseAlias(pkg) {\n return pkg.xml && pkg.xml.tagAlias === 'lowerCase';\n}\n\nexport var DEFAULT_NS_MAP = {\n 'xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n 'xml': 'http://www.w3.org/XML/1998/namespace'\n};\n\nexport var XSI_TYPE = 'xsi:type';\n\nfunction serializeFormat(element) {\n return element.xml && element.xml.serialize;\n}\n\nexport function serializeAsType(element) {\n return serializeFormat(element) === XSI_TYPE;\n}\n\nexport function serializeAsProperty(element) {\n return serializeFormat(element) === 'property';\n}","import {\n forEach,\n find,\n assign\n} from 'min-dash';\n\nimport {\n Parser as SaxParser\n} from 'saxen';\n\nimport {\n Moddle,\n parseNameNS,\n coerceType,\n isSimpleType\n} from 'moddle';\n\nimport {\n XSI_TYPE,\n serializeAsType,\n hasLowerCaseAlias\n} from './common.js';\n\nfunction capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nfunction aliasToName(aliasNs, pkg) {\n\n if (!hasLowerCaseAlias(pkg)) {\n return aliasNs.name;\n }\n\n return aliasNs.prefix + ':' + capitalize(aliasNs.localName);\n}\n\nfunction prefixedToName(nameNs, pkg) {\n\n var name = nameNs.name,\n localName = nameNs.localName;\n\n var typePrefix = pkg.xml && pkg.xml.typePrefix;\n\n if (typePrefix && localName.indexOf(typePrefix) === 0) {\n return nameNs.prefix + ':' + localName.slice(typePrefix.length);\n } else {\n return name;\n }\n}\n\nfunction normalizeXsiTypeName(name, model) {\n\n var nameNs = parseNameNS(name);\n var pkg = model.getPackage(nameNs.prefix);\n\n return prefixedToName(nameNs, pkg);\n}\n\nfunction error(message) {\n return new Error(message);\n}\n\n/**\n * Get the moddle descriptor for a given instance or type.\n *\n * @param {ModdleElement|Function} element\n *\n * @return {Object} the moddle descriptor\n */\nfunction getModdleDescriptor(element) {\n return element.$descriptor;\n}\n\n\n/**\n * A parse context.\n *\n * @class\n *\n * @param {Object} options\n * @param {ElementHandler} options.rootHandler the root handler for parsing a document\n * @param {boolean} [options.lax=false] whether or not to ignore invalid elements\n */\nexport function Context(options) {\n\n /**\n * @property {ElementHandler} rootHandler\n */\n\n /**\n * @property {Boolean} lax\n */\n\n assign(this, options);\n\n this.elementsById = {};\n this.references = [];\n this.warnings = [];\n\n /**\n * Add an unresolved reference.\n *\n * @param {Object} reference\n */\n this.addReference = function(reference) {\n this.references.push(reference);\n };\n\n /**\n * Add a processed element.\n *\n * @param {ModdleElement} element\n */\n this.addElement = function(element) {\n\n if (!element) {\n throw error('expected element');\n }\n\n var elementsById = this.elementsById;\n\n var descriptor = getModdleDescriptor(element);\n\n var idProperty = descriptor.idProperty,\n id;\n\n if (idProperty) {\n id = element.get(idProperty.name);\n\n if (id) {\n\n // for QName validation as per http://www.w3.org/TR/REC-xml/#NT-NameChar\n if (!/^([a-z][\\w-.]*:)?[a-z_][\\w-.]*$/i.test(id)) {\n throw new Error('illegal ID <' + id + '>');\n }\n\n if (elementsById[id]) {\n throw error('duplicate ID <' + id + '>');\n }\n\n elementsById[id] = element;\n }\n }\n };\n\n /**\n * Add an import warning.\n *\n * @param {Object} warning\n * @param {String} warning.message\n * @param {Error} [warning.error]\n */\n this.addWarning = function(warning) {\n this.warnings.push(warning);\n };\n}\n\nfunction BaseHandler() {}\n\nBaseHandler.prototype.handleEnd = function() {};\nBaseHandler.prototype.handleText = function() {};\nBaseHandler.prototype.handleNode = function() {};\n\n\n/**\n * A simple pass through handler that does nothing except for\n * ignoring all input it receives.\n *\n * This is used to ignore unknown elements and\n * attributes.\n */\nfunction NoopHandler() { }\n\nNoopHandler.prototype = Object.create(BaseHandler.prototype);\n\nNoopHandler.prototype.handleNode = function() {\n return this;\n};\n\nfunction BodyHandler() {}\n\nBodyHandler.prototype = Object.create(BaseHandler.prototype);\n\nBodyHandler.prototype.handleText = function(text) {\n this.body = (this.body || '') + text;\n};\n\nfunction ReferenceHandler(property, context) {\n this.property = property;\n this.context = context;\n}\n\nReferenceHandler.prototype = Object.create(BodyHandler.prototype);\n\nReferenceHandler.prototype.handleNode = function(node) {\n\n if (this.element) {\n throw error('expected no sub nodes');\n } else {\n this.element = this.createReference(node);\n }\n\n return this;\n};\n\nReferenceHandler.prototype.handleEnd = function() {\n this.element.id = this.body;\n};\n\nReferenceHandler.prototype.createReference = function(node) {\n return {\n property: this.property.ns.name,\n id: ''\n };\n};\n\nfunction ValueHandler(propertyDesc, element) {\n this.element = element;\n this.propertyDesc = propertyDesc;\n}\n\nValueHandler.prototype = Object.create(BodyHandler.prototype);\n\nValueHandler.prototype.handleEnd = function() {\n\n var value = this.body || '',\n element = this.element,\n propertyDesc = this.propertyDesc;\n\n value = coerceType(propertyDesc.type, value);\n\n if (propertyDesc.isMany) {\n element.get(propertyDesc.name).push(value);\n } else {\n element.set(propertyDesc.name, value);\n }\n};\n\n\nfunction BaseElementHandler() {}\n\nBaseElementHandler.prototype = Object.create(BodyHandler.prototype);\n\nBaseElementHandler.prototype.handleNode = function(node) {\n var parser = this,\n element = this.element;\n\n if (!element) {\n element = this.element = this.createElement(node);\n\n this.context.addElement(element);\n } else {\n parser = this.handleChild(node);\n }\n\n return parser;\n};\n\n/**\n * @class Reader.ElementHandler\n *\n */\nexport function ElementHandler(model, typeName, context) {\n this.model = model;\n this.type = model.getType(typeName);\n this.context = context;\n}\n\nElementHandler.prototype = Object.create(BaseElementHandler.prototype);\n\nElementHandler.prototype.addReference = function(reference) {\n this.context.addReference(reference);\n};\n\nElementHandler.prototype.handleText = function(text) {\n\n var element = this.element,\n descriptor = getModdleDescriptor(element),\n bodyProperty = descriptor.bodyProperty;\n\n if (!bodyProperty) {\n throw error('unexpected body text <' + text + '>');\n }\n\n BodyHandler.prototype.handleText.call(this, text);\n};\n\nElementHandler.prototype.handleEnd = function() {\n\n var value = this.body,\n element = this.element,\n descriptor = getModdleDescriptor(element),\n bodyProperty = descriptor.bodyProperty;\n\n if (bodyProperty && value !== undefined) {\n value = coerceType(bodyProperty.type, value);\n element.set(bodyProperty.name, value);\n }\n};\n\n/**\n * Create an instance of the model from the given node.\n *\n * @param {Element} node the xml node\n */\nElementHandler.prototype.createElement = function(node) {\n var attributes = node.attributes,\n Type = this.type,\n descriptor = getModdleDescriptor(Type),\n context = this.context,\n instance = new Type({}),\n model = this.model,\n propNameNs;\n\n forEach(attributes, function(value, name) {\n\n var prop = descriptor.propertiesByName[name],\n values;\n\n if (prop && prop.isReference) {\n\n if (!prop.isMany) {\n context.addReference({\n element: instance,\n property: prop.ns.name,\n id: value\n });\n } else {\n\n // IDREFS: parse references as whitespace-separated list\n values = value.split(' ');\n\n forEach(values, function(v) {\n context.addReference({\n element: instance,\n property: prop.ns.name,\n id: v\n });\n });\n }\n\n } else {\n if (prop) {\n value = coerceType(prop.type, value);\n } else\n if (name !== 'xmlns') {\n propNameNs = parseNameNS(name, descriptor.ns.prefix);\n\n // check whether attribute is defined in a well-known namespace\n // if that is the case we emit a warning to indicate potential misuse\n if (model.getPackage(propNameNs.prefix)) {\n\n context.addWarning({\n message: 'unknown attribute <' + name + '>',\n element: instance,\n property: name,\n value: value\n });\n }\n }\n\n instance.set(name, value);\n }\n });\n\n return instance;\n};\n\nElementHandler.prototype.getPropertyForNode = function(node) {\n\n var name = node.name;\n var nameNs = parseNameNS(name);\n\n var type = this.type,\n model = this.model,\n descriptor = getModdleDescriptor(type);\n\n var propertyName = nameNs.name,\n property = descriptor.propertiesByName[propertyName],\n elementTypeName,\n elementType;\n\n // search for properties by name first\n\n if (property && !property.isAttr) {\n\n if (serializeAsType(property)) {\n elementTypeName = node.attributes[XSI_TYPE];\n\n // xsi type is optional, if it does not exists the\n // default type is assumed\n if (elementTypeName) {\n\n // take possible type prefixes from XML\n // into account, i.e.: xsi:type=\"t{ActualType}\"\n elementTypeName = normalizeXsiTypeName(elementTypeName, model);\n\n elementType = model.getType(elementTypeName);\n\n return assign({}, property, {\n effectiveType: getModdleDescriptor(elementType).name\n });\n }\n }\n\n // search for properties by name first\n return property;\n }\n\n var pkg = model.getPackage(nameNs.prefix);\n\n if (pkg) {\n elementTypeName = aliasToName(nameNs, pkg);\n elementType = model.getType(elementTypeName);\n\n // search for collection members later\n property = find(descriptor.properties, function(p) {\n return !p.isVirtual && !p.isReference && !p.isAttribute && elementType.hasType(p.type);\n });\n\n if (property) {\n return assign({}, property, {\n effectiveType: getModdleDescriptor(elementType).name\n });\n }\n } else {\n\n // parse unknown element (maybe extension)\n property = find(descriptor.properties, function(p) {\n return !p.isReference && !p.isAttribute && p.type === 'Element';\n });\n\n if (property) {\n return property;\n }\n }\n\n throw error('unrecognized element <' + nameNs.name + '>');\n};\n\nElementHandler.prototype.toString = function() {\n return 'ElementDescriptor[' + getModdleDescriptor(this.type).name + ']';\n};\n\nElementHandler.prototype.valueHandler = function(propertyDesc, element) {\n return new ValueHandler(propertyDesc, element);\n};\n\nElementHandler.prototype.referenceHandler = function(propertyDesc) {\n return new ReferenceHandler(propertyDesc, this.context);\n};\n\nElementHandler.prototype.handler = function(type) {\n if (type === 'Element') {\n return new GenericElementHandler(this.model, type, this.context);\n } else {\n return new ElementHandler(this.model, type, this.context);\n }\n};\n\n/**\n * Handle the child element parsing\n *\n * @param {Element} node the xml node\n */\nElementHandler.prototype.handleChild = function(node) {\n var propertyDesc, type, element, childHandler;\n\n propertyDesc = this.getPropertyForNode(node);\n element = this.element;\n\n type = propertyDesc.effectiveType || propertyDesc.type;\n\n if (isSimpleType(type)) {\n return this.valueHandler(propertyDesc, element);\n }\n\n if (propertyDesc.isReference) {\n childHandler = this.referenceHandler(propertyDesc).handleNode(node);\n } else {\n childHandler = this.handler(type).handleNode(node);\n }\n\n var newElement = childHandler.element;\n\n // child handles may decide to skip elements\n // by not returning anything\n if (newElement !== undefined) {\n\n if (propertyDesc.isMany) {\n element.get(propertyDesc.name).push(newElement);\n } else {\n element.set(propertyDesc.name, newElement);\n }\n\n if (propertyDesc.isReference) {\n assign(newElement, {\n element: element\n });\n\n this.context.addReference(newElement);\n } else {\n\n // establish child -> parent relationship\n newElement.$parent = element;\n }\n }\n\n return childHandler;\n};\n\n/**\n * An element handler that performs special validation\n * to ensure the node it gets initialized with matches\n * the handlers type (namespace wise).\n *\n * @param {Moddle} model\n * @param {String} typeName\n * @param {Context} context\n */\nfunction RootElementHandler(model, typeName, context) {\n ElementHandler.call(this, model, typeName, context);\n}\n\nRootElementHandler.prototype = Object.create(ElementHandler.prototype);\n\nRootElementHandler.prototype.createElement = function(node) {\n\n var name = node.name,\n nameNs = parseNameNS(name),\n model = this.model,\n type = this.type,\n pkg = model.getPackage(nameNs.prefix),\n typeName = pkg && aliasToName(nameNs, pkg) || name;\n\n // verify the correct namespace if we parse\n // the first element in the handler tree\n //\n // this ensures we don't mistakenly import wrong namespace elements\n if (!type.hasType(typeName)) {\n throw error('unexpected element <' + node.originalName + '>');\n }\n\n return ElementHandler.prototype.createElement.call(this, node);\n};\n\n\nfunction GenericElementHandler(model, typeName, context) {\n this.model = model;\n this.context = context;\n}\n\nGenericElementHandler.prototype = Object.create(BaseElementHandler.prototype);\n\nGenericElementHandler.prototype.createElement = function(node) {\n\n var name = node.name,\n ns = parseNameNS(name),\n prefix = ns.prefix,\n uri = node.ns[prefix + '$uri'],\n attributes = node.attributes;\n\n return this.model.createAny(name, uri, attributes);\n};\n\nGenericElementHandler.prototype.handleChild = function(node) {\n\n var handler = new GenericElementHandler(this.model, 'Element', this.context).handleNode(node),\n element = this.element;\n\n var newElement = handler.element,\n children;\n\n if (newElement !== undefined) {\n children = element.$children = element.$children || [];\n children.push(newElement);\n\n // establish child -> parent relationship\n newElement.$parent = element;\n }\n\n return handler;\n};\n\nGenericElementHandler.prototype.handleEnd = function() {\n if (this.body) {\n this.element.$body = this.body;\n }\n};\n\n/**\n * A reader for a meta-model\n *\n * @param {Object} options\n * @param {Model} options.model used to read xml files\n * @param {Boolean} options.lax whether to make parse errors warnings\n */\nexport function Reader(options) {\n\n if (options instanceof Moddle) {\n options = {\n model: options\n };\n }\n\n assign(this, { lax: false }, options);\n}\n\n/**\n * The fromXML result.\n *\n * @typedef {Object} ParseResult\n *\n * @property {ModdleElement} rootElement\n * @property {Array<Object>} references\n * @property {Array<Error>} warnings\n * @property {Object} elementsById - a mapping containing each ID -> ModdleElement\n */\n\n/**\n * The fromXML result.\n *\n * @typedef {Error} ParseError\n *\n * @property {Array<Error>} warnings\n */\n\n/**\n * Parse the given XML into a moddle document tree.\n *\n * @param {String} xml\n * @param {ElementHandler|Object} options or rootHandler\n *\n * @returns {Promise<ParseResult, ParseError>}\n */\nReader.prototype.fromXML = function(xml, options, done) {\n\n var rootHandler = options.rootHandler;\n\n if (options instanceof ElementHandler) {\n\n // root handler passed via (xml, { rootHandler: ElementHandler }, ...)\n rootHandler = options;\n options = {};\n } else {\n if (typeof options === 'string') {\n\n // rootHandler passed via (xml, 'someString', ...)\n rootHandler = this.handler(options);\n options = {};\n } else if (typeof rootHandler === 'string') {\n\n // rootHandler passed via (xml, { rootHandler: 'someString' }, ...)\n rootHandler = this.handler(rootHandler);\n }\n }\n\n var model = this.model,\n lax = this.lax;\n\n var context = new Context(assign({}, options, { rootHandler: rootHandler })),\n parser = new SaxParser({ proxy: true }),\n stack = createStack();\n\n rootHandler.context = context;\n\n // push root handler\n stack.push(rootHandler);\n\n\n /**\n * Handle error.\n *\n * @param {Error} err\n * @param {Function} getContext\n * @param {boolean} lax\n *\n * @return {boolean} true if handled\n */\n function handleError(err, getContext, lax) {\n\n var ctx = getContext();\n\n var line = ctx.line,\n column = ctx.column,\n data = ctx.data;\n\n // we receive the full context data here,\n // for elements trim down the information\n // to the tag name, only\n if (data.charAt(0) === '<' && data.indexOf(' ') !== -1) {\n data = data.slice(0, data.indexOf(' ')) + '>';\n }\n\n var message =\n 'unparsable content ' + (data ? data + ' ' : '') + 'detected\\n\\t' +\n 'line: ' + line + '\\n\\t' +\n 'column: ' + column + '\\n\\t' +\n 'nested error: ' + err.message;\n\n if (lax) {\n context.addWarning({\n message: message,\n error: err\n });\n\n return true;\n } else {\n throw error(message);\n }\n }\n\n function handleWarning(err, getContext) {\n\n // just like handling errors in <lax=true> mode\n return handleError(err, getContext, true);\n }\n\n /**\n * Resolve collected references on parse end.\n */\n function resolveReferences() {\n\n var elementsById = context.elementsById;\n var references = context.references;\n\n var i, r;\n\n for (i = 0; (r = references[i]); i++) {\n var element = r.element;\n var reference = elementsById[r.id];\n var property = getModdleDescriptor(element).propertiesByName[r.property];\n\n if (!reference) {\n context.addWarning({\n message: 'unresolved reference <' + r.id + '>',\n element: r.element,\n property: r.property,\n value: r.id\n });\n }\n\n if (property.isMany) {\n var collection = element.get(property.name),\n idx = collection.indexOf(r);\n\n // we replace an existing place holder (idx != -1) or\n // append to the collection instead\n if (idx === -1) {\n idx = collection.length;\n }\n\n if (!reference) {\n\n // remove unresolvable reference\n collection.splice(idx, 1);\n } else {\n\n // add or update reference in collection\n collection[idx] = reference;\n }\n } else {\n element.set(property.name, reference);\n }\n }\n }\n\n function handleClose() {\n stack.pop().handleEnd();\n }\n\n var PREAMBLE_START_PATTERN = /^<\\?xml /i;\n\n var ENCODING_PATTERN = / encoding=\"([^\"]+)\"/i;\n\n var UTF_8_PATTERN = /^utf-8$/i;\n\n function handleQuestion(question) {\n\n if (!PREAMBLE_START_PATTERN.test(question)) {\n return;\n }\n\n var match = ENCODING_PATTERN.exec(question);\n var encoding = match && match[1];\n\n if (!encoding || UTF_8_PATTERN.test(encoding)) {\n return;\n }\n\n context.addWarning({\n message:\n 'unsupported document encoding <' + encoding + '>, ' +\n 'falling back to UTF-8'\n });\n }\n\n function handleOpen(node, getContext) {\n var handler = stack.peek();\n\n try {\n stack.push(handler.handleNode(node));\n } catch (err) {\n\n if (handleError(err, getContext, lax)) {\n stack.push(new NoopHandler());\n }\n }\n }\n\n function handleCData(text, getContext) {\n\n try {\n stack.peek().handleText(text);\n } catch (err) {\n handleWarning(err, getContext);\n }\n }\n\n function handleText(text, getContext) {\n\n // strip whitespace only nodes, i.e. before\n // <!CDATA[ ... ]> sections and in between tags\n\n if (!text.trim()) {\n return;\n }\n\n handleCData(text, getContext);\n }\n\n var uriMap = model.getPackages().reduce(function(uriMap, p) {\n uriMap[p.uri] = p.prefix;\n\n return uriMap;\n }, {\n 'http://www.w3.org/XML/1998/namespace': 'xml' // add default xml ns\n });\n parser\n .ns(uriMap)\n .on('openTag', function(obj, decodeStr, selfClosing, getContext) {\n\n // gracefully handle unparsable attributes (attrs=false)\n var attrs = obj.attrs || {};\n\n var decodedAttrs = Object.keys(attrs).reduce(function(d, key) {\n var value = decodeStr(attrs[key]);\n\n d[key] = value;\n\n return d;\n }, {});\n\n var node = {\n name: obj.name,\n originalName: obj.originalName,\n attributes: decodedAttrs,\n ns: obj.ns\n };\n\n handleOpen(node, getContext);\n })\n .on('question', handleQuestion)\n .on('closeTag', handleClose)\n .on('cdata', handleCData)\n .on('text', function(text, decodeEntities, getContext) {\n handleText(decodeEntities(text), getContext);\n })\n .on('error', handleError)\n .on('warn', handleWarning);\n\n // async XML parsing to make sure the execution environment\n // (node or brower) is kept responsive and that certain optimization\n // strategies can kick in.\n return new Promise(function(resolve, reject) {\n\n var err;\n\n try {\n parser.parse(xml);\n\n resolveReferences();\n } catch (e) {\n err = e;\n }\n\n var rootElement = rootHandler.element;\n\n if (!err && !rootElement) {\n err = error('failed to parse document as <' + rootHandler.type.$descriptor.name + '>');\n }\n\n var warnings = context.warnings;\n var references = context.references;\n var elementsById = context.elementsById;\n\n if (err) {\n err.warnings = warnings;\n\n return reject(err);\n } else {\n return resolve({\n rootElement: rootElement,\n elementsById: elementsById,\n references: references,\n warnings: warnings\n });\n }\n });\n};\n\nReader.prototype.handler = function(name) {\n return new RootElementHandler(this.model, name);\n};\n\n\n// helpers //////////////////////////\n\nfunction createStack() {\n var stack = [];\n\n Object.defineProperty(stack, 'peek', {\n value: function() {\n return this[this.length - 1];\n }\n });\n\n return stack;\n}\n","import {\n forEach,\n isString,\n filter,\n assign,\n has,\n findIndex\n} from 'min-dash';\n\nimport {\n isSimpleType,\n parseNameNS\n} from 'moddle';\n\nimport {\n hasLowerCaseAlias,\n serializeAsType,\n serializeAsProperty,\n DEFAULT_NS_MAP,\n XSI_TYPE\n} from './common.js';\n\nvar XML_PREAMBLE = '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n';\n\nvar ESCAPE_ATTR_CHARS = /<|>|'|\"|&|\\n\\r|\\n/g;\nvar ESCAPE_CHARS = /<|>|&/g;\n\n\nexport function Namespaces(parent) {\n\n var prefixMap = {};\n var uriMap = {};\n var used = {};\n\n var wellknown = [];\n var custom = [];\n\n // API\n\n this.byUri = function(uri) {\n return uriMap[uri] || (\n parent && parent.byUri(uri)\n );\n };\n\n this.add = function(ns, isWellknown) {\n\n uriMap[ns.uri] = ns;\n\n if (isWellknown) {\n wellknown.push(ns);\n } else {\n custom.push(ns);\n }\n\n this.mapPrefix(ns.prefix, ns.uri);\n };\n\n this.uriByPrefix = function(prefix) {\n return prefixMap[prefix || 'xmlns'];\n };\n\n this.mapPrefix = function(prefix, uri) {\n prefixMap[prefix || 'xmlns'] = uri;\n };\n\n this.getNSKey = function(ns) {\n return (ns.prefix !== undefined) ? (ns.uri + '|' + ns.prefix) : ns.uri;\n };\n\n this.logUsed = function(ns) {\n\n var uri = ns.uri;\n var nsKey = this.getNSKey(ns);\n\n used[nsKey] = this.byUri(uri);\n\n // Inform parent recursively about the usage of this NS\n if (parent) {\n parent.logUsed(ns);\n }\n };\n\n this.getUsed = function(ns) {\n\n function isUsed(ns) {\n var nsKey = self.getNSKey(ns);\n\n return used[nsKey];\n }\n\n var self = this;\n\n var allNs = [].concat(wellknown, custom);\n\n return allNs.filter(isUsed);\n };\n\n}\n\nfunction lower(string) {\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\nfunction nameToAlias(name, pkg) {\n if (hasLowerCaseAlias(pkg)) {\n return lower(name);\n } else {\n return name;\n }\n}\n\nfunction inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n}\n\nfunction nsName(ns) {\n if (isString(ns)) {\n return ns;\n } else {\n return (ns.prefix ? ns.prefix + ':' : '') + ns.localName;\n }\n}\n\nfunction getNsAttrs(namespaces) {\n\n return namespaces.getUsed().filter(function(ns) {\n\n // do not serialize built in <xml> namespace\n return ns.prefix !== 'xml';\n }).map(function(ns) {\n var name = 'xmlns' + (ns.prefix ? ':' + ns.prefix : '');\n return { name: name, value: ns.uri };\n });\n\n}\n\nfunction getElementNs(ns, descriptor) {\n if (descriptor.isGeneric) {\n return assign({ localName: descriptor.ns.localName }, ns);\n } else {\n return assign({ localName: nameToAlias(descriptor.ns.localName, descriptor.$pkg) }, ns);\n }\n}\n\nfunction getPropertyNs(ns, descriptor) {\n return assign({ localName: descriptor.ns.localName }, ns);\n}\n\nfunction getSerializableProperties(element) {\n var descriptor = element.$descriptor;\n\n return filter(descriptor.properties, function(p) {\n var name = p.name;\n\n if (p.isVirtual) {\n return false;\n }\n\n // do not serialize defaults\n if (!has(element, name)) {\n return false;\n }\n\n var value = element[name];\n\n // do not serialize default equals\n if (value === p.default) {\n return false;\n }\n\n // do not serialize null properties\n if (value === null) {\n return false;\n }\n\n return p.isMany ? value.length : true;\n });\n}\n\nvar ESCAPE_ATTR_MAP = {\n '\\n': '#10',\n '\\n\\r': '#10',\n '\"': '#34',\n '\\'': '#39',\n '<': '#60',\n '>': '#62',\n '&': '#38'\n};\n\nvar ESCAPE_MAP = {\n '<': 'lt',\n '>': 'gt',\n '&': 'amp'\n};\n\nfunction escape(str, charPattern, replaceMap) {\n\n // ensure we are handling strings here\n str = isString(str) ? str : '' + str;\n\n return str.replace(charPattern, function(s) {\n return '&' + replaceMap[s] + ';';\n });\n}\n\n/**\n * Escape a string attribute to not contain any bad values (line breaks, '\"', ...)\n *\n * @param {String} str the string to escape\n * @return {String} the escaped string\n */\nfunction escapeAttr(str) {\n return escape(str, ESCAPE_ATTR_CHARS, ESCAPE_ATTR_MAP);\n}\n\nfunction escapeBody(str) {\n return escape(str, ESCAPE_CHARS, ESCAPE_MAP);\n}\n\nfunction filterAttributes(props) {\n return filter(props, function(p) { return p.isAttr; });\n}\n\nfunction filterContained(props) {\n return filter(props, function(p) { return !p.isAttr; });\n}\n\n\nfunction ReferenceSerializer(tagName) {\n this.tagName = tagName;\n}\n\nReferenceSerializer.prototype.build = function(element) {\n this.element = element;\n return this;\n};\n\nReferenceSerializer.prototype.serializeTo = function(writer) {\n writer\n .appendIndent()\n .append('<' + this.tagName + '>' + this.element.id + '</' + this.tagName + '>')\n .appendNewLine();\n};\n\nfunction BodySerializer() {}\n\nBodySerializer.prototype.serializeValue =\nBodySerializer.prototype.serializeTo = function(writer) {\n writer.append(\n this.escape\n ? escapeBody(this.value)\n : this.value\n );\n};\n\nBodySerializer.prototype.build = function(prop, value) {\n this.value = value;\n\n if (prop.type === 'String' && value.search(ESCAPE_CHARS) !== -1) {\n this.escape = true;\n }\n\n return this;\n};\n\nfunction ValueSerializer(tagName) {\n this.tagName = tagName;\n}\n\ninherits(ValueSerializer, BodySerializer);\n\nValueSerializer.prototype.serializeTo = function(writer) {\n\n writer\n .appendIndent()\n .append('<' + this.tagName + '>');\n\n this.serializeValue(writer);\n\n writer\n .append('</' + this.tagName + '>')\n .appendNewLine();\n};\n\nfunction ElementSerializer(parent, propertyDescriptor) {\n this.body = [];\n this.attrs = [];\n\n this.parent = parent;\n this.propertyDescriptor = propertyDescriptor;\n}\n\nElementSerializer.prototype.build = function(element) {\n this.element = element;\n\n var elementDescriptor = element.$descriptor,\n propertyDescriptor = this.propertyDescriptor;\n\n var otherAttrs,\n properties;\n\n var isGeneric = elementDescriptor.isGeneric;\n\n if (isGeneric) {\n otherAttrs = this.parseGeneric(element);\n } else {\n otherAttrs = this.parseNsAttributes(element);\n }\n\n if (propertyDescriptor) {\n this.ns = this.nsPropertyTagName(propertyDescriptor);\n } else {\n this.ns = this.nsTagName(elementDescriptor);\n }\n\n // compute tag name\n this.tagName = this.addTagName(this.ns);\n\n if (!isGeneric) {\n properties = getSerializableProperties(element);\n\n this.parseAttributes(filterAttributes(properties));\n this.parseContainments(filterContained(properties));\n }\n\n this.parseGenericAttributes(element, otherAttrs);\n\n return this;\n};\n\nElementSerializer.prototype.nsTagName = function(descriptor) {\n var effectiveNs = this.logNamespaceUsed(descriptor.ns);\n return getElementNs(effectiveNs, descriptor);\n};\n\nElementSerializer.prototype.nsPropertyTagName = function(descriptor) {\n var effectiveNs = this.logNamespaceUsed(descriptor.ns);\n return getPropertyNs(effectiveNs, descriptor);\n};\n\nElementSerializer.prototype.isLocalNs = function(ns) {\n return ns.uri === this.ns.uri;\n};\n\n/**\n * Get the actual ns attribute name for the given element.\n *\n * @param {Object} element\n * @param {Boolean} [element.inherited=false]\n *\n * @return {Object} nsName\n */\nElementSerializer.prototype.nsAttributeName = function(element) {\n\n var ns;\n\n if (isString(element)) {\n ns = parseNameNS(element);\n } else {\n ns = element.ns;\n }\n\n // return just local name for inherited attributes\n if (element.inherited) {\n return { localName: ns.localName };\n }\n\n // parse + log effective ns\n var effectiveNs = this.logNamespaceUsed(ns);\n\n // LOG ACTUAL namespace use\n this.getNamespaces().logUsed(effectiveNs);\n\n // strip prefix if same namespace like parent\n if (this.isLocalNs(effectiveNs)) {\n return { localName: ns.localName };\n } else {\n return assign({ localName: ns.localName }, effectiveNs);\n }\n};\n\nElementSerializer.prototype.parseGeneric = function(element) {\n\n var self = this,\n body = this.body;\n\n var attributes = [];\n\n forEach(element, function(val, key) {\n\n var nonNsAttr;\n\n if (key === '$body') {\n body.push(new BodySerializer().build({ type: 'String' }, val));\n } else\n if (key === '$children') {\n forEach(val, function(child) {\n body.push(new ElementSerializer(self).build(child));\n });\n } else\n if (key.indexOf('$') !== 0) {\n nonNsAttr = self.parseNsAttribute(element, key, val);\n\n if (nonNsAttr) {\n attributes.push({ name: key, value: val });\n }\n }\n });\n\n return attributes;\n};\n\nElementSerializer.prototype.parseNsAttribute = function(element, name, value) {\n var model = element.$model;\n\n var nameNs = parseNameNS(name);\n\n var ns;\n\n // parse xmlns:foo=\"http://foo.bar\"\n if (nameNs.prefix === 'xmlns') {\n ns = { prefix: nameNs.localName, uri: value };\n }\n\n // parse xmlns=\"http://foo.bar\"\n if (!nameNs.prefix && nameNs.localName === 'xmlns') {\n ns = { uri: value };\n }\n\n if (!ns) {\n return {\n name: name,\n value: value\n };\n }\n\n if (model && model.getPackage(value)) {\n\n // register well known namespace\n this.logNamespace(ns, true, true);\n } else {\n\n // log custom namespace directly as used\n var actualNs = this.logNamespaceUsed(ns, true);\n\n this.getNamespaces().logUsed(actualNs);\n }\n};\n\n\n/**\n * Parse namespaces and return a list of left over generic attributes\n *\n * @param {Object} element\n * @return {Array<Object>}\n */\nElementSerializer.prototype.parseNsAttributes = function(element, attrs) {\n var self = this;\n\n var genericAttrs = element.$attrs;\n\n var attributes = [];\n\n // parse namespace attributes first\n // and log them. push non namespace attributes to a list\n // and process them later\n forEach(genericAttrs, function(value, name) {\n\n var nonNsAttr = self.parseNsAttribute(element, name, value);\n\n if (nonNsAttr) {\n attributes.push(nonNsAttr);\n }\n });\n\n return attributes;\n};\n\nElementSerializer.prototype.parseGenericAttributes = function(element, attributes) {\n\n var self = this;\n\n forEach(attributes, function(attr) {\n\n // do not serialize xsi:type attribute\n // it is set manually based on the actual implementation type\n if (attr.name === XSI_TYPE) {\n return;\n }\n\n try {\n self.addAttribute(self.nsAttributeName(attr.name), attr.value);\n } catch (e) {\n /* global console */\n\n console.warn(\n 'missing namespace information for ',\n attr.name, '=', attr.value, 'on', element,\n e);\n }\n });\n};\n\nElementSerializer.prototype.parseContainments = function(properties) {\n\n var self = this,\n body = this.body,\n element = this.element;\n\n forEach(properties, function(p) {\n var value = element.get(p.name),\n isReference = p.isReference,\n isMany = p.isMany;\n\n if (!isMany) {\n value = [ value ];\n }\n\n if (p.isBody) {\n body.push(new BodySerializer().build(p, value[0]));\n } else\n if (isSimpleType(p.type)) {\n forEach(value, function(v) {\n body.push(new ValueSerializer(self.addTagName(self.nsPropertyTagName(p))).build(p, v));\n });\n } else\n if (isReference) {\n forEach(value, function(v) {\n body.push(new ReferenceSerializer(self.addTagName(self.nsPropertyTagName(p))).build(v));\n });\n } else {\n\n // allow serialization via type\n // rather than element name\n var asType = serializeAsType(p),\n asProperty = serializeAsProperty(p);\n\n forEach(value, function(v) {\n var serializer;\n\n if (asType) {\n serializer = new TypeSerializer(self, p);\n } else\n if (asProperty) {\n serializer = new ElementSerializer(self, p);\n } else {\n serializer = new ElementSerializer(self);\n }\n\n body.push(serializer.build(v));\n });\n }\n });\n};\n\nElementSerializer.prototype.getNamespaces = function(local) {\n\n var namespaces = this.namespaces,\n parent = this.parent,\n parentNamespaces;\n\n if (!namespaces) {\n parentNamespaces = parent && parent.getNamespaces();\n\n if (local || !parentNamespaces) {\n this.namespaces = namespaces = new Namespaces(parentNamespaces);\n } else {\n namespaces = parentNamespaces;\n }\n }\n\n return namespaces;\n};\n\nElementSerializer.prototype.logNamespace = function(ns, wellknown, local) {\n var namespaces = this.getNamespaces(local);\n\n var nsUri = ns.uri,\n nsPrefix = ns.prefix;\n\n var existing = namespaces.byUri(nsUri);\n\n if (!existing || local) {\n namespaces.add(ns, wellknown);\n }\n\n namespaces.mapPrefix(nsPrefix, nsUri);\n\n return ns;\n};\n\nElementSerializer.prototype.logNamespaceUsed = function(ns, local) {\n var element = this.element,\n model = element.$model,\n namespaces = this.getNamespaces(local);\n\n // ns may be\n //\n // * prefix only\n // * prefix:uri\n // * localName only\n\n var prefix = ns.prefix,\n uri = ns.uri,\n newPrefix, idx,\n wellknownUri;\n\n // handle anonymous namespaces (elementForm=unqualified), cf. #23\n if (!prefix && !uri) {\n return { localName: ns.localName };\n }\n\n wellknownUri = DEFAULT_NS_MAP[prefix] || model && (model.getPackage(prefix) || {}).uri;\n\n uri = uri || wellknownUri || namespaces.uriByPrefix(prefix);\n\n if (!uri) {\n throw new Error('no namespace uri given for prefix <' + prefix + '>');\n }\n\n ns = namespaces.byUri(uri);\n\n if (!ns) {\n newPrefix = prefix;\n idx = 1;\n\n // find a prefix that is not mapped yet\n while (namespaces.uriByPrefix(newPrefix)) {\n newPrefix = prefix + '_' + idx++;\n }\n\n ns = this.logNamespace({ prefix: newPrefix, uri: uri }, wellknownUri === uri);\n }\n\n if (prefix) {\n namespaces.mapPrefix(prefix, uri);\n }\n\n return ns;\n};\n\nElementSerializer.prototype.parseAttributes = function(properties) {\n var self = this,\n element = this.element;\n\n forEach(properties, function(p) {\n\n var value = element.get(p.name);\n\n if (p.isReference) {\n\n if (!p.isMany) {\n value = value.id;\n }\n else {\n var values = [];\n forEach(value, function(v) {\n values.push(v.id);\n });\n\n // IDREFS is a whitespace-separated list of references.\n value = values.join(' ');\n }\n\n }\n\n self.addAttribute(self.nsAttributeName(p), value);\n });\n};\n\nElementSerializer.prototype.addTagName = function(nsTagName) {\n var actualNs = this.logNamespaceUsed(nsTagName);\n\n this.getNamespaces().logUsed(actualNs);\n\n return nsName(nsTagName);\n};\n\nElementSerializer.prototype.addAttribute = function(name, value) {\n var attrs = this.attrs;\n\n if (isString(value)) {\n value = escapeAttr(value);\n }\n\n // de-duplicate attributes\n // https://github.com/bpmn-io/moddle-xml/issues/66\n var idx = findIndex(attrs, function(element) {\n return (\n element.name.localName === name.localName &&\n element.name.uri === name.uri &&\n element.name.prefix === name.prefix\n );\n });\n\n var attr = { name: name, value: value };\n\n if (idx !== -1) {\n attrs.splice(idx, 1, attr);\n } else {\n attrs.push(attr);\n }\n};\n\nElementSerializer.prototype.serializeAttributes = function(writer) {\n var attrs = this.attrs,\n namespaces = this.namespaces;\n\n if (namespaces) {\n attrs = getNsAttrs(namespaces).concat(attrs);\n }\n\n forEach(attrs, function(a) {\n writer\n .append(' ')\n .append(nsName(a.name)).append('=\"').append(a.value).append('\"');\n });\n};\n\nElementSerializer.prototype.serializeTo = function(writer) {\n var firstBody = this.body[0],\n indent = firstBody && firstBody.constructor !== BodySerializer;\n\n writer\n .appendIndent()\n .append('<' + this.tagName);\n\n this.serializeAttributes(writer);\n\n writer.append(firstBody ? '>' : ' />');\n\n if (firstBody) {\n\n if (indent) {\n writer\n .appendNewLine()\n .indent();\n }\n\n forEach(this.body, function(b) {\n b.serializeTo(writer);\n });\n\n if (indent) {\n writer\n .unindent()\n .appendIndent();\n }\n\n writer.append('</' + this.tagName + '>');\n }\n\n writer.appendNewLine();\n};\n\n/**\n * A serializer for types that handles serialization of data types\n */\nfunction TypeSerializer(parent, propertyDescriptor) {\n ElementSerializer.call(this, parent, propertyDescriptor);\n}\n\ninherits(TypeSerializer, ElementSerializer);\n\nTypeSerializer.prototype.parseNsAttributes = function(element) {\n\n // extracted attributes\n var attributes = ElementSerializer.prototype.parseNsAttributes.call(this, element);\n\n var descriptor = element.$descriptor;\n\n // only serialize xsi:type if necessary\n if (descriptor.name === this.propertyDescriptor.type) {\n return attributes;\n }\n\n var typeNs = this.typeNs = this.nsTagName(descriptor);\n this.getNamespaces().logUsed(this.typeNs);\n\n // add xsi:type attribute to represent the elements\n // actual type\n\n var pkg = element.$model.getPackage(typeNs.uri),\n typePrefix = (pkg.xml && pkg.xml.typePrefix) || '';\n\n this.addAttribute(\n this.nsAttributeName(XSI_TYPE),\n (typeNs.prefix ? typeNs.prefix + ':' : '') + typePrefix + descriptor.ns.localName\n );\n\n return attributes;\n};\n\nTypeSerializer.prototype.isLocalNs = function(ns) {\n return ns.uri === (this.typeNs || this.ns).uri;\n};\n\nfunction SavingWriter() {\n this.value = '';\n\n this.write = function(str) {\n this.value += str;\n };\n}\n\nfunction FormatingWriter(out, format) {\n\n var indent = [ '' ];\n\n this.append = function(str) {\n out.write(str);\n\n return this;\n };\n\n this.appendNewLine = function() {\n if (format) {\n out.write('\\n');\n }\n\n return this;\n };\n\n this.appendIndent = function() {\n if (format) {\n out.write(indent.join(' '));\n }\n\n return this;\n };\n\n this.indent = function() {\n indent.push('');\n return this;\n };\n\n this.unindent = function() {\n indent.pop();\n return this;\n };\n}\n\n/**\n * A writer for meta-model backed document trees\n *\n * @param {Object} options output options to pass into the writer\n */\nexport function Writer(options) {\n\n options = assign({ format: false, preamble: true }, options || {});\n\n function toXML(tree, writer) {\n var internalWriter = writer || new SavingWriter();\n var formatingWriter = new FormatingWriter(internalWriter, options.format);\n\n if (options.preamble) {\n formatingWriter.append(XML_PREAMBLE);\n }\n\n new ElementSerializer().build(tree).serializeTo(formatingWriter);\n\n if (!writer) {\n return internalWriter.value;\n }\n }\n\n return {\n toXML: toXML\n };\n}\n"],"names":["parseNameNS","assign","coerceType","forEach","find","isSimpleType","Moddle","SaxParser","isString","filter","has","findIndex"],"mappings":"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"} |