ngx-soap-next
Version:
SOAP service for Angular
1 lines • 218 kB
Source Map (JSON)
{"version":3,"file":"ngx-soap-next.mjs","sources":["../../../projects/ngx-soap/src/lib/soap/nscontext.ts","../../../projects/ngx-soap/src/lib/soap/utils.ts","../../../projects/ngx-soap/src/lib/soap/wsdl.ts","../../../projects/ngx-soap/src/lib/soap/security/BasicAuthSecurity.ts","../../../projects/ngx-soap/src/lib/soap/security/WSSecurity.ts","../../../projects/ngx-soap/src/lib/soap/security/BearerSecurity.ts","../../../projects/ngx-soap/src/lib/soap/security/NTLMSecurity.ts","../../../projects/ngx-soap/src/lib/soap/security/security.ts","../../../projects/ngx-soap/src/lib/soap/multipart.ts","../../../projects/ngx-soap/src/lib/soap/soapAttachment.ts","../../../projects/ngx-soap/src/lib/soap/client.ts","../../../projects/ngx-soap/src/lib/soap/soap.ts","../../../projects/ngx-soap/src/lib/ngx-soap.service.ts","../../../projects/ngx-soap/src/lib/ngx-soap.module.ts","../../../projects/ngx-soap/src/public_api.ts","../../../projects/ngx-soap/src/ngx-soap-next.ts"],"sourcesContent":["'use strict';\n\nexport class NamespaceScope {\n parent: any;\n namespaces: any;\n constructor(parent: any) {\n if (!(this instanceof NamespaceScope)) {\n return new NamespaceScope(parent);\n }\n this.parent = parent;\n this.namespaces = {}; \n }\n\n getNamespaceURI = function(prefix, localOnly) {\n switch (prefix) {\n case 'xml':\n return 'http://www.w3.org/XML/1998/namespace';\n case 'xmlns':\n return 'http://www.w3.org/2000/xmlns/';\n default:\n var nsUri = this.namespaces[prefix];\n /*jshint -W116 */\n if (nsUri != null) {\n return nsUri.uri;\n } else if (!localOnly && this.parent) {\n return this.parent.getNamespaceURI(prefix);\n } else {\n return null;\n }\n }\n }\n\n getNamespaceMapping = function(prefix) {\n switch (prefix) {\n case 'xml':\n return {\n uri: 'http://www.w3.org/XML/1998/namespace',\n prefix: 'xml',\n declared: true\n };\n case 'xmlns':\n return {\n uri: 'http://www.w3.org/2000/xmlns/',\n prefix: 'xmlns',\n declared: true\n };\n default:\n var mapping = this.namespaces[prefix];\n /*jshint -W116 */\n if (mapping != null) {\n return mapping;\n } else if (this.parent) {\n return this.parent.getNamespaceMapping(prefix);\n } else {\n return null;\n }\n }\n }\n\n getPrefix = function(nsUri, localOnly) {\n switch (nsUri) {\n case 'http://www.w3.org/XML/1998/namespace':\n return 'xml';\n case 'http://www.w3.org/2000/xmlns/':\n return 'xmlns';\n default:\n for (var p in this.namespaces) {\n if (this.namespaces[p].uri === nsUri) {\n return p;\n }\n }\n if (!localOnly && this.parent) {\n return this.parent.getPrefix(nsUri);\n } else {\n return null;\n }\n }\n }\n}\n\nexport class NamespaceContext {\n scopes: any[];\n prefixCount: number; \n\n constructor() {\n if (!(this instanceof NamespaceContext)) {\n return new NamespaceContext();\n }\n this.scopes = [];\n this.pushContext();\n this.prefixCount = 0;\n }\n\n addNamespace = function(prefix, nsUri, localOnly) {\n if (this.getNamespaceURI(prefix, localOnly) === nsUri) {\n return false;\n }\n if (this.currentScope) {\n this.currentScope.namespaces[prefix] = {\n uri: nsUri,\n prefix: prefix,\n declared: false\n };\n return true;\n }\n return false;\n }\n\n pushContext = function() {\n var scope = new NamespaceScope(this.currentScope);\n this.scopes.push(scope);\n this.currentScope = scope;\n return scope;\n }\n\n popContext = function() {\n var scope = this.scopes.pop();\n if (scope) {\n this.currentScope = scope.parent;\n } else {\n this.currentScope = null;\n }\n return scope;\n }\n\n getNamespaceURI = function(prefix, localOnly) {\n return this.currentScope && this.currentScope.getNamespaceURI(prefix, localOnly);\n }\n\n getPrefix = function(nsUri, localOnly) {\n return this.currentScope && this.currentScope.getPrefix(nsUri, localOnly);\n }\n \n registerNamespace = function(nsUri) {\n var prefix = this.getPrefix(nsUri);\n if (prefix) {\n // If the namespace has already mapped to a prefix\n return prefix;\n } else {\n // Try to generate a unique namespace\n while (true) {\n prefix = 'ns' + (++this.prefixCount);\n if (!this.getNamespaceURI(prefix)) {\n // The prefix is not used\n break;\n }\n }\n }\n this.addNamespace(prefix, nsUri, true);\n return prefix;\n }\n\n declareNamespace = function(prefix, nsUri) {\n if (this.currentScope) {\n var mapping = this.currentScope.getNamespaceMapping(prefix);\n if (mapping && mapping.uri === nsUri && mapping.declared) {\n return false;\n }\n this.currentScope.namespaces[prefix] = {\n uri: nsUri,\n prefix: prefix,\n declared: true\n };\n return true;\n }\n return false;\n }\n}\n\n/**\n * Scope for XML namespaces\n * @param [parent] Parent scope\n * \n */\n// export function NamespaceScope(parent) {\n// if (!(this instanceof NamespaceScope)) {\n// return NamespaceScope(parent);\n// }\n// this.parent = parent;\n// this.namespaces = {};\n// }\n\n// /**\n// * Namespace context that manages hierarchical scopes\n// * {NamespaceContext}\n// */\n// export function NamespaceContext() {\n// if (!(this instanceof NamespaceContext)) {\n// return NamespaceContext();\n// }\n// this.scopes = [];\n// this.pushContext();\n// this.prefixCount = 0;\n// }\n\n// /**\n// * Look up the namespace URI by prefix\n// * @param prefix Namespace prefix\n// * @param [localOnly] Search current scope only\n// * Namespace URI\n// */\n// NamespaceScope.prototype.getNamespaceURI = function(prefix, localOnly) {\n// switch (prefix) {\n// case 'xml':\n// return 'http://www.w3.org/XML/1998/namespace';\n// case 'xmlns':\n// return 'http://www.w3.org/2000/xmlns/';\n// default:\n// var nsUri = this.namespaces[prefix];\n// /*jshint -W116 */\n// if (nsUri != null) {\n// return nsUri.uri;\n// } else if (!localOnly && this.parent) {\n// return this.parent.getNamespaceURI(prefix);\n// } else {\n// return null;\n// }\n// }\n// };\n\n// NamespaceScope.prototype.getNamespaceMapping = function(prefix) {\n// switch (prefix) {\n// case 'xml':\n// return {\n// uri: 'http://www.w3.org/XML/1998/namespace',\n// prefix: 'xml',\n// declared: true\n// };\n// case 'xmlns':\n// return {\n// uri: 'http://www.w3.org/2000/xmlns/',\n// prefix: 'xmlns',\n// declared: true\n// };\n// default:\n// var mapping = this.namespaces[prefix];\n// /*jshint -W116 */\n// if (mapping != null) {\n// return mapping;\n// } else if (this.parent) {\n// return this.parent.getNamespaceMapping(prefix);\n// } else {\n// return null;\n// }\n// }\n// };\n\n// /**\n// * Look up the namespace prefix by URI\n// * @param nsUri Namespace URI\n// * @param [localOnly] Search current scope only\n// * Namespace prefix\n// */\n// NamespaceScope.prototype.getPrefix = function(nsUri, localOnly) {\n// switch (nsUri) {\n// case 'http://www.w3.org/XML/1998/namespace':\n// return 'xml';\n// case 'http://www.w3.org/2000/xmlns/':\n// return 'xmlns';\n// default:\n// for (var p in this.namespaces) {\n// if (this.namespaces[p].uri === nsUri) {\n// return p;\n// }\n// }\n// if (!localOnly && this.parent) {\n// return this.parent.getPrefix(nsUri);\n// } else {\n// return null;\n// }\n// }\n// };\n\n// /**\n// * Add a prefix/URI namespace mapping\n// * @param prefix Namespace prefix\n// * @param nsUri Namespace URI\n// * @param [localOnly] Search current scope only\n// * {boolean} true if the mapping is added or false if the mapping\n// * already exists\n// */\n// NamespaceContext.prototype.addNamespace = function(prefix, nsUri, localOnly) {\n// if (this.getNamespaceURI(prefix, localOnly) === nsUri) {\n// return false;\n// }\n// if (this.currentScope) {\n// this.currentScope.namespaces[prefix] = {\n// uri: nsUri,\n// prefix: prefix,\n// declared: false\n// };\n// return true;\n// }\n// return false;\n// };\n\n// /**\n// * Push a scope into the context\n// * The current scope\n// */\n// NamespaceContext.prototype.pushContext = function() {\n// var scope = NamespaceScope(this.currentScope);\n// this.scopes.push(scope);\n// this.currentScope = scope;\n// return scope;\n// };\n\n// /**\n// * Pop a scope out of the context\n// * The removed scope\n// */\n// NamespaceContext.prototype.popContext = function() {\n// var scope = this.scopes.pop();\n// if (scope) {\n// this.currentScope = scope.parent;\n// } else {\n// this.currentScope = null;\n// }\n// return scope;\n// };\n\n// /**\n// * Look up the namespace URI by prefix\n// * @param prefix Namespace prefix\n// * @param [localOnly] Search current scope only\n// * Namespace URI\n// */\n// NamespaceContext.prototype.getNamespaceURI = function(prefix, localOnly) {\n// return this.currentScope && this.currentScope.getNamespaceURI(prefix, localOnly);\n// };\n\n// /**\n// * Look up the namespace prefix by URI\n// * @param nsURI Namespace URI\n// * @param [localOnly] Search current scope only\n// * Namespace prefix\n// */\n// NamespaceContext.prototype.getPrefix = function(nsUri, localOnly) {\n// return this.currentScope && this.currentScope.getPrefix(nsUri, localOnly);\n// };\n\n// /**\n// * Register a namespace\n// * @param nsUri Namespace URI\n// * The matching or generated namespace prefix\n// */\n// NamespaceContext.prototype.registerNamespace = function(nsUri) {\n// var prefix = this.getPrefix(nsUri);\n// if (prefix) {\n// // If the namespace has already mapped to a prefix\n// return prefix;\n// } else {\n// // Try to generate a unique namespace\n// while (true) {\n// prefix = 'ns' + (++this.prefixCount);\n// if (!this.getNamespaceURI(prefix)) {\n// // The prefix is not used\n// break;\n// }\n// }\n// }\n// this.addNamespace(prefix, nsUri, true);\n// return prefix;\n// };\n\n// /**\n// * Declare a namespace prefix/uri mapping\n// * @param prefix Namespace prefix\n// * @param nsUri Namespace URI\n// * true if the declaration is created\n// */\n// NamespaceContext.prototype.declareNamespace = function(prefix, nsUri) {\n// if (this.currentScope) {\n// var mapping = this.currentScope.getNamespaceMapping(prefix);\n// if (mapping && mapping.uri === nsUri && mapping.declared) {\n// return false;\n// }\n// this.currentScope.namespaces[prefix] = {\n// uri: nsUri,\n// prefix: prefix,\n// declared: true\n// };\n// return true;\n// }\n// return false;\n// };\n","import sha1 from 'crypto-js/sha1';\nimport Base64 from 'crypto-js/enc-base64';\nimport { Buffer } from 'buffer';\n\nexport const passwordDigest = function passwordDigest(nonce, created, password) {\n const rawNonce = new Buffer(nonce || '', 'base64').toString('binary');\n return Base64.stringify(sha1(rawNonce + created + password, ''));\n};\n\nexport const TNS_PREFIX = '__tns__'; // Prefix for targetNamespace\n\n/**\n * Find a key from an object based on the value\n * @param Namespace prefix/uri mapping\n * @param nsURI value\n * @returns The matching key\n */\nexport const findPrefix = function(xmlnsMapping, nsURI) {\n for (const n in xmlnsMapping) {\n if (n === TNS_PREFIX) { continue; }\n if (xmlnsMapping[n] === nsURI) {\n return n;\n }\n }\n};\n","/*\n * Copyright (c) 2011 Vinay Pulim <vinay@milewise.com>\n * MIT Licensed\n *\n */\n/*jshint proto:true*/\n\n\"use strict\";\n\nimport * as sax from 'sax';\nimport { HttpClient } from '@angular/common/http';\nimport { NamespaceContext } from './nscontext';\nimport * as _ from 'lodash';\nimport * as utils from './utils';\nimport * as url from 'url';\nimport { ok as assert } from 'assert';\n\nconst stripBom = (x: string): string => {\n // Catches EFBBBF (UTF-8 BOM) because the buffer-to-string\n // conversion translates it to FEFF (UTF-16 BOM)\n if (x.charCodeAt(0) === 0xFEFF) {\n return x.slice(1);\n }\n\n return x;\n}\n\n\n\n\nlet TNS_PREFIX = utils.TNS_PREFIX;\nlet findPrefix = utils.findPrefix;\n\nlet Primitives = {\n string: 1,\n boolean: 1,\n decimal: 1,\n float: 1,\n double: 1,\n anyType: 1,\n byte: 1,\n int: 1,\n long: 1,\n short: 1,\n negativeInteger: 1,\n nonNegativeInteger: 1,\n positiveInteger: 1,\n nonPositiveInteger: 1,\n unsignedByte: 1,\n unsignedInt: 1,\n unsignedLong: 1,\n unsignedShort: 1,\n duration: 0,\n dateTime: 0,\n time: 0,\n date: 0,\n gYearMonth: 0,\n gYear: 0,\n gMonthDay: 0,\n gDay: 0,\n gMonth: 0,\n hexBinary: 0,\n base64Binary: 0,\n anyURI: 0,\n QName: 0,\n NOTATION: 0\n};\n\nfunction splitQName(nsName) {\n let i = typeof nsName === 'string' ? nsName.indexOf(':') : -1;\n return i < 0 ? { prefix: TNS_PREFIX, name: nsName } :\n { prefix: nsName.substring(0, i), name: nsName.substring(i + 1) };\n}\n\nfunction xmlEscape(obj) {\n if (typeof (obj) === 'string') {\n if (obj.substr(0, 9) === '<![CDATA[' && obj.substr(-3) === \"]]>\") {\n return obj;\n }\n return obj\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n }\n\n return obj;\n}\n\nlet trimLeft = /^[\\s\\xA0]+/;\nlet trimRight = /[\\s\\xA0]+$/;\n\nfunction trim(text) {\n return text.replace(trimLeft, '').replace(trimRight, '');\n}\n\nfunction deepMerge(destination, source) {\n return _.mergeWith(destination || {}, source, function (a, b) {\n return _.isArray(a) ? a.concat(b) : undefined;\n });\n}\n\nlet Element: any = function (nsName, attrs, options) {\n let parts = splitQName(nsName);\n\n this.nsName = nsName;\n this.prefix = parts.prefix;\n this.name = parts.name;\n this.children = [];\n this.xmlns = {};\n\n this._initializeOptions(options);\n\n for (let key in attrs) {\n let match = /^xmlns:?(.*)$/.exec(key);\n if (match) {\n this.xmlns[match[1] ? match[1] : TNS_PREFIX] = attrs[key];\n }\n else {\n if (key === 'value') {\n this[this.valueKey] = attrs[key];\n } else {\n this['$' + key] = attrs[key];\n }\n }\n }\n if (this.$targetNamespace !== undefined) {\n // Add targetNamespace to the mapping\n this.xmlns[TNS_PREFIX] = this.$targetNamespace;\n }\n};\n\nElement.prototype._initializeOptions = function (options) {\n if (options) {\n this.valueKey = options.valueKey || '$value';\n this.xmlKey = options.xmlKey || '$xml';\n this.ignoredNamespaces = options.ignoredNamespaces || [];\n } else {\n this.valueKey = '$value';\n this.xmlKey = '$xml';\n this.ignoredNamespaces = [];\n }\n};\n\nElement.prototype.deleteFixedAttrs = function () {\n this.children && this.children.length === 0 && delete this.children;\n this.xmlns && Object.keys(this.xmlns).length === 0 && delete this.xmlns;\n delete this.nsName;\n delete this.prefix;\n delete this.name;\n};\n\nElement.prototype.allowedChildren = [];\n\nElement.prototype.startElement = function (stack, nsName, attrs, options) {\n if (!this.allowedChildren) {\n return;\n }\n\n let ChildClass = this.allowedChildren[splitQName(nsName).name],\n element = null;\n\n if (ChildClass) {\n stack.push(new ChildClass(nsName, attrs, options));\n }\n else {\n this.unexpected(nsName);\n }\n\n};\n\nElement.prototype.endElement = function (stack, nsName) {\n if (this.nsName === nsName) {\n if (stack.length < 2)\n return;\n let parent = stack[stack.length - 2];\n if (this !== stack[0]) {\n _.defaultsDeep(stack[0].xmlns, this.xmlns);\n // delete this.xmlns;\n parent.children.push(this);\n parent.addChild(this);\n }\n stack.pop();\n }\n};\n\nElement.prototype.addChild = function (child) {\n return;\n};\n\nElement.prototype.unexpected = function (name) {\n throw new Error('Found unexpected element (' + name + ') inside ' + this.nsName);\n};\n\nElement.prototype.description = function (definitions) {\n return this.$name || this.name;\n};\n\nElement.prototype.init = function () {\n};\n\nElement.createSubClass = function () {\n let root = this;\n let subElement = function () {\n root.apply(this, arguments);\n this.init();\n };\n // inherits(subElement, root);\n subElement.prototype.__proto__ = root.prototype;\n return subElement;\n};\n\n\nlet ElementElement = Element.createSubClass();\nlet AnyElement = Element.createSubClass();\nlet InputElement = Element.createSubClass();\nlet OutputElement = Element.createSubClass();\nlet SimpleTypeElement = Element.createSubClass();\nlet RestrictionElement = Element.createSubClass();\nlet ExtensionElement = Element.createSubClass();\nlet ChoiceElement = Element.createSubClass();\nlet EnumerationElement = Element.createSubClass();\nlet ComplexTypeElement = Element.createSubClass();\nlet ComplexContentElement = Element.createSubClass();\nlet SimpleContentElement = Element.createSubClass();\nlet SequenceElement = Element.createSubClass();\nlet AllElement = Element.createSubClass();\nlet MessageElement = Element.createSubClass();\nlet DocumentationElement = Element.createSubClass();\n\nlet SchemaElement = Element.createSubClass();\nlet TypesElement = Element.createSubClass();\nlet OperationElement = Element.createSubClass();\nlet PortTypeElement = Element.createSubClass();\nlet BindingElement = Element.createSubClass();\nlet PortElement = Element.createSubClass();\nlet ServiceElement = Element.createSubClass();\nlet DefinitionsElement = Element.createSubClass();\n\nlet ElementTypeMap = {\n types: [TypesElement, 'schema documentation'],\n schema: [SchemaElement, 'element complexType simpleType include import'],\n element: [ElementElement, 'annotation complexType'],\n any: [AnyElement, ''],\n simpleType: [SimpleTypeElement, 'restriction'],\n restriction: [RestrictionElement, 'enumeration all choice sequence'],\n extension: [ExtensionElement, 'all sequence choice'],\n choice: [ChoiceElement, 'element sequence choice any'],\n // group: [GroupElement, 'element group'],\n enumeration: [EnumerationElement, ''],\n complexType: [ComplexTypeElement, 'annotation sequence all complexContent simpleContent choice'],\n complexContent: [ComplexContentElement, 'extension'],\n simpleContent: [SimpleContentElement, 'extension'],\n sequence: [SequenceElement, 'element sequence choice any'],\n all: [AllElement, 'element choice'],\n\n service: [ServiceElement, 'port documentation'],\n port: [PortElement, 'address documentation'],\n binding: [BindingElement, '_binding SecuritySpec operation documentation'],\n portType: [PortTypeElement, 'operation documentation'],\n message: [MessageElement, 'part documentation'],\n operation: [OperationElement, 'documentation input output fault _operation'],\n input: [InputElement, 'body SecuritySpecRef documentation header'],\n output: [OutputElement, 'body SecuritySpecRef documentation header'],\n fault: [Element, '_fault documentation'],\n definitions: [DefinitionsElement, 'types message portType binding service import documentation'],\n documentation: [DocumentationElement, '']\n};\n\nfunction mapElementTypes(types) {\n let rtn = {};\n types = types.split(' ');\n types.forEach(function (type) {\n rtn[type.replace(/^_/, '')] = (ElementTypeMap[type] || [Element])[0];\n });\n return rtn;\n}\n\nfor (let n in ElementTypeMap) {\n let v = ElementTypeMap[n];\n v[0].prototype.allowedChildren = mapElementTypes(v[1]);\n}\n\nMessageElement.prototype.init = function () {\n this.element = null;\n this.parts = null;\n};\n\nSchemaElement.prototype.init = function () {\n this.complexTypes = {};\n this.types = {};\n this.elements = {};\n this.includes = [];\n};\n\nTypesElement.prototype.init = function () {\n this.schemas = {};\n};\n\nOperationElement.prototype.init = function () {\n this.input = null;\n this.output = null;\n this.inputSoap = null;\n this.outputSoap = null;\n this.style = '';\n this.soapAction = '';\n};\n\nPortTypeElement.prototype.init = function () {\n this.methods = {};\n};\n\nBindingElement.prototype.init = function () {\n this.transport = '';\n this.style = '';\n this.methods = {};\n};\n\nPortElement.prototype.init = function () {\n this.location = null;\n};\n\nServiceElement.prototype.init = function () {\n this.ports = {};\n};\n\nDefinitionsElement.prototype.init = function () {\n if (this.name !== 'definitions') this.unexpected(this.nsName);\n this.messages = {};\n this.portTypes = {};\n this.bindings = {};\n this.services = {};\n this.schemas = {};\n};\n\nDocumentationElement.prototype.init = function () {\n};\n\nSchemaElement.prototype.merge = function (source) {\n assert(source instanceof SchemaElement);\n if (this.$targetNamespace === source.$targetNamespace) {\n _.merge(this.complexTypes, source.complexTypes);\n _.merge(this.types, source.types);\n _.merge(this.elements, source.elements);\n _.merge(this.xmlns, source.xmlns);\n }\n return this;\n};\n\n\nSchemaElement.prototype.addChild = function (child) {\n if (child.$name in Primitives)\n return;\n if (child.name === 'include' || child.name === 'import') {\n let location = child.$schemaLocation || child.$location;\n if (location) {\n this.includes.push({\n namespace: child.$namespace || child.$targetNamespace || this.$targetNamespace,\n location: location\n });\n }\n }\n else if (child.name === 'complexType') {\n this.complexTypes[child.$name] = child;\n }\n else if (child.name === 'element') {\n this.elements[child.$name] = child;\n }\n else if (child.$name) {\n this.types[child.$name] = child;\n }\n this.children.pop();\n // child.deleteFixedAttrs();\n};\n//fix#325\nTypesElement.prototype.addChild = function (child) {\n assert(child instanceof SchemaElement);\n\n let targetNamespace = child.$targetNamespace;\n\n if (!this.schemas.hasOwnProperty(targetNamespace)) {\n this.schemas[targetNamespace] = child;\n } else {\n console.error('Target-Namespace \"' + targetNamespace + '\" already in use by another Schema!');\n }\n};\n\nInputElement.prototype.addChild = function (child) {\n if (child.name === 'body') {\n this.use = child.$use;\n if (this.use === 'encoded') {\n this.encodingStyle = child.$encodingStyle;\n }\n this.children.pop();\n }\n};\n\nOutputElement.prototype.addChild = function (child) {\n if (child.name === 'body') {\n this.use = child.$use;\n if (this.use === 'encoded') {\n this.encodingStyle = child.$encodingStyle;\n }\n this.children.pop();\n }\n};\n\nOperationElement.prototype.addChild = function (child) {\n if (child.name === 'operation') {\n this.soapAction = child.$soapAction || '';\n this.style = child.$style || '';\n this.children.pop();\n }\n};\n\nBindingElement.prototype.addChild = function (child) {\n if (child.name === 'binding') {\n this.transport = child.$transport;\n this.style = child.$style;\n this.children.pop();\n }\n};\n\nPortElement.prototype.addChild = function (child) {\n if (child.name === 'address' && typeof (child.$location) !== 'undefined') {\n this.location = child.$location;\n }\n};\n\nDefinitionsElement.prototype.addChild = function (child) {\n let self = this;\n if (child instanceof TypesElement) {\n // Merge types.schemas into definitions.schemas\n _.merge(self.schemas, child.schemas);\n }\n else if (child instanceof MessageElement) {\n self.messages[child.$name] = child;\n }\n else if (child.name === 'import') {\n self.schemas[child.$namespace] = new SchemaElement(child.$namespace, {});\n self.schemas[child.$namespace].addChild(child);\n }\n else if (child instanceof PortTypeElement) {\n self.portTypes[child.$name] = child;\n }\n else if (child instanceof BindingElement) {\n if (child.transport === 'http://schemas.xmlsoap.org/soap/http' ||\n child.transport === 'http://www.w3.org/2003/05/soap/bindings/HTTP/')\n self.bindings[child.$name] = child;\n }\n else if (child instanceof ServiceElement) {\n self.services[child.$name] = child;\n }\n else if (child instanceof DocumentationElement) {\n }\n this.children.pop();\n};\n\nMessageElement.prototype.postProcess = function (definitions) {\n let part = null;\n let child = undefined;\n let children = this.children || [];\n let ns = undefined;\n let nsName = undefined;\n let i = undefined;\n let type = undefined;\n\n for (i in children) {\n if ((child = children[i]).name === 'part') {\n part = child;\n break;\n }\n }\n\n if (!part) {\n return;\n }\n\n if (part.$element) {\n let lookupTypes = [],\n elementChildren;\n\n delete this.parts;\n\n nsName = splitQName(part.$element);\n ns = nsName.prefix;\n let schema = definitions.schemas[definitions.xmlns[ns]];\n this.element = schema.elements[nsName.name];\n if (!this.element) {\n // debug(nsName.name + \" is not present in wsdl and cannot be processed correctly.\");\n return;\n }\n this.element.targetNSAlias = ns;\n this.element.targetNamespace = definitions.xmlns[ns];\n\n // set the optional $lookupType to be used within `client#_invoke()` when\n // calling `wsdl#objectToDocumentXML()\n this.element.$lookupType = part.$element;\n\n elementChildren = this.element.children;\n\n // get all nested lookup types (only complex types are followed)\n if (elementChildren.length > 0) {\n for (i = 0; i < elementChildren.length; i++) {\n lookupTypes.push(this._getNestedLookupTypeString(elementChildren[i]));\n }\n }\n\n // if nested lookup types where found, prepare them for furter usage\n if (lookupTypes.length > 0) {\n lookupTypes = lookupTypes.\n join('_').\n split('_').\n filter(function removeEmptyLookupTypes(type) {\n return type !== '^';\n });\n\n let schemaXmlns = definitions.schemas[this.element.targetNamespace].xmlns;\n\n for (i = 0; i < lookupTypes.length; i++) {\n lookupTypes[i] = this._createLookupTypeObject(lookupTypes[i], schemaXmlns);\n }\n }\n\n this.element.$lookupTypes = lookupTypes;\n\n if (this.element.$type) {\n type = splitQName(this.element.$type);\n let typeNs = schema.xmlns && schema.xmlns[type.prefix] || definitions.xmlns[type.prefix];\n\n if (typeNs) {\n if (type.name in Primitives) {\n // this.element = this.element.$type;\n }\n else {\n // first check local mapping of ns alias to namespace\n schema = definitions.schemas[typeNs];\n let ctype = schema.complexTypes[type.name] || schema.types[type.name] || schema.elements[type.name];\n\n\n if (ctype) {\n this.parts = ctype.description(definitions, schema.xmlns);\n }\n }\n }\n }\n else {\n let method = this.element.description(definitions, schema.xmlns);\n this.parts = method[nsName.name];\n }\n\n\n this.children.splice(0, 1);\n } else {\n // rpc encoding\n this.parts = {};\n delete this.element;\n for (i = 0; part = this.children[i]; i++) {\n if (part.name === 'documentation') {\n // <wsdl:documentation can be present under <wsdl:message>\n continue;\n }\n assert(part.name === 'part', 'Expected part element');\n nsName = splitQName(part.$type);\n ns = definitions.xmlns[nsName.prefix];\n type = nsName.name;\n let schemaDefinition = definitions.schemas[ns];\n if (typeof schemaDefinition !== 'undefined') {\n this.parts[part.$name] = definitions.schemas[ns].types[type] || definitions.schemas[ns].complexTypes[type];\n } else {\n this.parts[part.$name] = part.$type;\n }\n\n if (typeof this.parts[part.$name] === 'object') {\n this.parts[part.$name].prefix = nsName.prefix;\n this.parts[part.$name].xmlns = ns;\n }\n\n this.children.splice(i--, 1);\n }\n }\n this.deleteFixedAttrs();\n};\n\n/**\n * Takes a given namespaced String(for example: 'alias:property') and creates a lookupType\n * object for further use in as first (lookup) `parameterTypeObj` within the `objectToXML`\n * method and provides an entry point for the already existing code in `findChildSchemaObject`.\n *\n * @method _createLookupTypeObject\n * @param {String} nsString The NS String (for example \"alias:type\").\n * @param {Object} xmlns The fully parsed `wsdl` definitions object (including all schemas).\n * @returns {Object}\n * @private\n */\nMessageElement.prototype._createLookupTypeObject = function (nsString, xmlns) {\n let splittedNSString = splitQName(nsString),\n nsAlias = splittedNSString.prefix,\n splittedName = splittedNSString.name.split('#'),\n type = splittedName[0],\n name = splittedName[1],\n lookupTypeObj: any = {};\n\n lookupTypeObj.$namespace = xmlns[nsAlias];\n lookupTypeObj.$type = nsAlias + ':' + type;\n lookupTypeObj.$name = name;\n\n return lookupTypeObj;\n};\n\n/**\n * Iterates through the element and every nested child to find any defined `$type`\n * property and returns it in a underscore ('_') separated String (using '^' as default\n * value if no `$type` property was found).\n *\n * @method _getNestedLookupTypeString\n * @param {Object} element The element which (probably) contains nested `$type` values.\n * @returns {String}\n * @private\n */\nMessageElement.prototype._getNestedLookupTypeString = function (element) {\n let resolvedType = '^',\n excluded = this.ignoredNamespaces.concat('xs'); // do not process $type values wich start with\n\n if (element.hasOwnProperty('$type') && typeof element.$type === 'string') {\n if (excluded.indexOf(element.$type.split(':')[0]) === -1) {\n resolvedType += ('_' + element.$type + '#' + element.$name);\n }\n }\n\n if (element.children.length > 0) {\n let self = this;\n\n element.children.forEach(function (child) {\n let resolvedChildType = self._getNestedLookupTypeString(child).replace(/\\^_/, '');\n\n if (resolvedChildType && typeof resolvedChildType === 'string') {\n resolvedType += ('_' + resolvedChildType);\n }\n });\n }\n\n return resolvedType;\n};\n\nOperationElement.prototype.postProcess = function (definitions, tag) {\n let children = this.children;\n for (let i = 0, child; child = children[i]; i++) {\n if (child.name !== 'input' && child.name !== 'output')\n continue;\n if (tag === 'binding') {\n this[child.name] = child;\n children.splice(i--, 1);\n continue;\n }\n let messageName = splitQName(child.$message).name;\n let message = definitions.messages[messageName];\n message.postProcess(definitions);\n if (message.element) {\n definitions.messages[message.element.$name] = message;\n this[child.name] = message.element;\n }\n else {\n this[child.name] = message;\n }\n children.splice(i--, 1);\n }\n this.deleteFixedAttrs();\n};\n\nPortTypeElement.prototype.postProcess = function (definitions) {\n let children = this.children;\n if (typeof children === 'undefined')\n return;\n for (let i = 0, child; child = children[i]; i++) {\n if (child.name !== 'operation')\n continue;\n child.postProcess(definitions, 'portType');\n this.methods[child.$name] = child;\n children.splice(i--, 1);\n }\n delete this.$name;\n this.deleteFixedAttrs();\n};\n\nBindingElement.prototype.postProcess = function (definitions) {\n let type = splitQName(this.$type).name,\n portType = definitions.portTypes[type],\n style = this.style,\n children = this.children;\n if (portType) {\n portType.postProcess(definitions);\n this.methods = portType.methods;\n\n for (let i = 0, child; child = children[i]; i++) {\n if (child.name !== 'operation')\n continue;\n child.postProcess(definitions, 'binding');\n children.splice(i--, 1);\n child.style || (child.style = style);\n let method = this.methods[child.$name];\n\n if (method) {\n method.style = child.style;\n method.soapAction = child.soapAction;\n method.inputSoap = child.input || null;\n method.outputSoap = child.output || null;\n method.inputSoap && method.inputSoap.deleteFixedAttrs();\n method.outputSoap && method.outputSoap.deleteFixedAttrs();\n }\n }\n }\n delete this.$name;\n delete this.$type;\n this.deleteFixedAttrs();\n};\n\nServiceElement.prototype.postProcess = function (definitions) {\n let children = this.children,\n bindings = definitions.bindings;\n if (children && children.length > 0) {\n for (let i = 0, child; child = children[i]; i++) {\n if (child.name !== 'port')\n continue;\n let bindingName = splitQName(child.$binding).name;\n let binding = bindings[bindingName];\n if (binding) {\n binding.postProcess(definitions);\n this.ports[child.$name] = {\n location: child.location,\n binding: binding\n };\n children.splice(i--, 1);\n }\n }\n }\n delete this.$name;\n this.deleteFixedAttrs();\n};\n\n\nSimpleTypeElement.prototype.description = function (definitions) {\n let children = this.children;\n for (let i = 0, child; child = children[i]; i++) {\n if (child instanceof RestrictionElement)\n return this.$name + \"|\" + child.description();\n }\n return {};\n};\n\nRestrictionElement.prototype.description = function (definitions, xmlns) {\n let children = this.children;\n let desc;\n for (let i = 0, child; child = children[i]; i++) {\n if (child instanceof SequenceElement ||\n child instanceof ChoiceElement) {\n desc = child.description(definitions, xmlns);\n break;\n }\n }\n if (desc && this.$base) {\n let type = splitQName(this.$base),\n typeName = type.name,\n ns = xmlns && xmlns[type.prefix] || definitions.xmlns[type.prefix],\n schema = definitions.schemas[ns],\n typeElement = schema && (schema.complexTypes[typeName] || schema.types[typeName] || schema.elements[typeName]);\n\n desc.getBase = function () {\n return typeElement.description(definitions, schema.xmlns);\n };\n return desc;\n }\n\n // then simple element\n let base = this.$base ? this.$base + \"|\" : \"\";\n return base + this.children.map(function (child) {\n return child.description();\n }).join(\",\");\n};\n\nExtensionElement.prototype.description = function (definitions, xmlns) {\n let children = this.children;\n let desc = {};\n for (let i = 0, child; child = children[i]; i++) {\n if (child instanceof SequenceElement ||\n child instanceof ChoiceElement) {\n desc = child.description(definitions, xmlns);\n }\n }\n if (this.$base) {\n let type = splitQName(this.$base),\n typeName = type.name,\n ns = xmlns && xmlns[type.prefix] || definitions.xmlns[type.prefix],\n schema = definitions.schemas[ns];\n\n if (typeName in Primitives) {\n return this.$base;\n }\n else {\n let typeElement = schema && (schema.complexTypes[typeName] ||\n schema.types[typeName] || schema.elements[typeName]);\n\n if (typeElement) {\n let base = typeElement.description(definitions, schema.xmlns);\n desc = _.defaultsDeep(base, desc);\n }\n }\n }\n return desc;\n};\n\nEnumerationElement.prototype.description = function () {\n return this[this.valueKey];\n};\n\nComplexTypeElement.prototype.description = function (definitions, xmlns) {\n let children = this.children || [];\n for (let i = 0, child; child = children[i]; i++) {\n if (child instanceof ChoiceElement ||\n child instanceof SequenceElement ||\n child instanceof AllElement ||\n child instanceof SimpleContentElement ||\n child instanceof ComplexContentElement) {\n\n return child.description(definitions, xmlns);\n }\n }\n return {};\n};\n\nComplexContentElement.prototype.description = function (definitions, xmlns) {\n let children = this.children;\n for (let i = 0, child; child = children[i]; i++) {\n if (child instanceof ExtensionElement) {\n return child.description(definitions, xmlns);\n }\n }\n return {};\n};\n\nSimpleContentElement.prototype.description = function (definitions, xmlns) {\n let children = this.children;\n for (let i = 0, child; child = children[i]; i++) {\n if (child instanceof ExtensionElement) {\n return child.description(definitions, xmlns);\n }\n }\n return {};\n};\n\nElementElement.prototype.description = function (definitions, xmlns) {\n let element = {},\n name = this.$name;\n let isMany = !this.$maxOccurs ? false : (isNaN(this.$maxOccurs) ? (this.$maxOccurs === 'unbounded') : (this.$maxOccurs > 1));\n if (this.$minOccurs !== this.$maxOccurs && isMany) {\n name += '[]';\n }\n\n if (xmlns && xmlns[TNS_PREFIX]) {\n this.$targetNamespace = xmlns[TNS_PREFIX];\n }\n let type = this.$type || this.$ref;\n if (type) {\n type = splitQName(type);\n let typeName = type.name,\n ns = xmlns && xmlns[type.prefix] || definitions.xmlns[type.prefix],\n schema = definitions.schemas[ns],\n typeElement = schema && (this.$type ? schema.complexTypes[typeName] || schema.types[typeName] : schema.elements[typeName]);\n\n if (ns && definitions.schemas[ns]) {\n xmlns = definitions.schemas[ns].xmlns;\n }\n\n if (typeElement && !(typeName in Primitives)) {\n\n if (!(typeName in definitions.descriptions.types)) {\n\n let elem: any = {};\n definitions.descriptions.types[typeName] = elem;\n let description = typeElement.description(definitions, xmlns);\n if (typeof description === 'string') {\n elem = description;\n }\n else {\n Object.keys(description).forEach(function (key) {\n elem[key] = description[key];\n });\n }\n\n if (this.$ref) {\n element = elem;\n }\n else {\n element[name] = elem;\n }\n\n if (typeof elem === 'object') {\n elem.targetNSAlias = type.prefix;\n elem.targetNamespace = ns;\n }\n\n definitions.descriptions.types[typeName] = elem;\n }\n else {\n if (this.$ref) {\n element = definitions.descriptions.types[typeName];\n }\n else {\n element[name] = definitions.descriptions.types[typeName];\n }\n }\n\n }\n else {\n element[name] = this.$type;\n }\n }\n else {\n let children = this.children;\n element[name] = {};\n for (let i = 0, child; child = children[i]; i++) {\n if (child instanceof ComplexTypeElement) {\n element[name] = child.description(definitions, xmlns);\n }\n }\n }\n return element;\n};\n\nAllElement.prototype.description =\n SequenceElement.prototype.description = function (definitions, xmlns) {\n let children = this.children;\n let sequence = {};\n for (let i = 0, child; child = children[i]; i++) {\n if (child instanceof AnyElement) {\n continue;\n }\n let description = child.description(definitions, xmlns);\n for (let key in description) {\n sequence[key] = description[key];\n }\n }\n return sequence;\n };\n\nChoiceElement.prototype.description = function (definitions, xmlns) {\n let children = this.children;\n let choice = {};\n for (let i = 0, child; child = children[i]; i++) {\n let description = child.description(definitions, xmlns);\n for (let key in description) {\n choice[key] = description[key];\n }\n }\n return choice;\n};\n\nMessageElement.prototype.description = function (definitions) {\n if (this.element) {\n return this.element && this.element.description(definitions);\n }\n let desc = {};\n desc[this.$name] = this.parts;\n return desc;\n};\n\nPortTypeElement.prototype.description = function (definitions) {\n let methods = {};\n for (let name in this.methods) {\n let method = this.methods[name];\n methods[name] = method.description(definitions);\n }\n return methods;\n};\n\nOperationElement.prototype.description = function (definitions) {\n let inputDesc = this.input ? this.input.description(definitions) : null;\n let outputDesc = this.output ? this.output.description(definitions) : null;\n return {\n input: inputDesc && inputDesc[Object.keys(inputDesc)[0]],\n output: outputDesc && outputDesc[Object.keys(outputDesc)[0]]\n };\n};\n\nBindingElement.prototype.description = function (definitions) {\n let methods = {};\n for (let name in this.methods) {\n let method = this.methods[name];\n methods[name] = method.description(definitions);\n }\n return methods;\n};\n\nServiceElement.prototype.description = function (definitions) {\n let ports = {};\n for (let name in this.ports) {\n let port = this.ports[name];\n ports[name] = port.binding.description(definitions);\n }\n return ports;\n};\n\nexport let WSDL = function (definition, uri, options) {\n let self = this,\n fromFunc;\n\n this.uri = uri;\n this.callback = function () {\n };\n this._includesWsdl = [];\n\n // initialize WSDL cache\n this.WSDL_CACHE = (options || {}).WSDL_CACHE || {};\n\n this._initializeOptions(options);\n\n if (typeof definition === 'string') {\n definition = stripBom(definition);\n fromFunc = this._fromXML;\n }\n else if (typeof definition === 'object') {\n fromFunc = this._fromServices;\n }\n else {\n throw new Error('WSDL letructor takes either an XML string or service definition');\n }\n\n Promise.resolve(true).then(() => {\n try {\n fromFunc.call(self, definition);\n } catch (e) {\n return self.callback(e.message);\n }\n\n self.processIncludes().then(() => {\n self.definitions.deleteFixedAttrs();\n let services = self.services = self.definitions.services;\n if (services) {\n for (const name in services) {\n services[name].postProcess(self.definitions);\n }\n }\n let complexTypes = self.definitions.complexTypes;\n if (complexTypes) {\n for (const name in complexTypes) {\n complexTypes[name].deleteFixedAttrs();\n }\n }\n\n // for document style, for every binding, prepare input message element name to (methodName, output message element name) mapping\n let bindings = self.definitions.bindings;\n for (let bindingName in bindings) {\n let binding = bindings[bindingName];\n if (typeof binding.style === 'undefined') {\n binding.style = 'document';\n }\n if (binding.style !== 'document')\n continue;\n let methods = binding.methods;\n let topEls = binding.topElements = {};\n for (let methodName in methods) {\n if (methods[methodName].input) {\n let inputName = methods[methodName].input.$name;\n let outputName = \"\";\n if (methods[methodName].output)\n outputName = methods[methodName].output.$name;\n topEls[inputName] = { \"methodName\": methodName, \"outputName\": outputName };\n }\n }\n }\n\n // prepare soap envelope xmlns definition string\n self.xmlnsInEnvelope = self._xmlnsMap();\n self.callback(null, self);\n }).catch(err => self.callback(err));\n\n });\n\n // process.nextTick(function() {\n // try {\n // fromFunc.call(self, definition);\n // } catch (e) {\n // return self.callback(e.message);\n // }\n\n // self.processIncludes(function(err) {\n // let name;\n // if (err) {\n // return self.callback(err);\n // }\n\n // self.definitions.deleteFixedAttrs();\n // let services = self.services = self.definitions.services;\n // if (services) {\n // for (name in services) {\n // services[name].postProcess(self.definitions);\n // }\n // }\n // let complexTypes = self.definitions.complexTypes;\n // if (complexTypes) {\n // for (name in complexTypes) {\n // complexTypes[name].deleteFixedAttrs();\n // }\n // }\n\n // // for document style, for every binding, prepare input message element name to (methodName, output message element name) mapping\n // let bindings = self.definitions.bindings;\n // for (let bindingName in bindings) {\n // let binding = bindings[bindingName];\n // if (typeof binding.style === 'undefined') {\n // binding.style = 'document';\n // }\n // if (binding.style !== 'document')\n // continue;\n // let methods = binding.methods;\n // let topEls = binding.topElements = {};\n // for (let methodName in methods) {\n // if (methods[methodName].input) {\n // let inputName = methods[methodName].input.$name;\n // let outputName=\"\";\n // if(methods[methodName].output )\n // outputName = methods[methodName].output.$name;\n // topEls[inputName] = {\"methodName\": methodName, \"outputName\": outputName};\n // }\n // }\n // }\n\n // // prepare soap envelope xmlns definition string\n // self.xmlnsInEnvelope = self._xmlnsMap();\n\n // self.callback(err, self);\n // });\n\n // });\n};\n\nWSDL.prototype.ignoredNamespaces = ['tns', 'targetNamespace', 'typedNamespace'];\n\nWSDL.prototype.ignoreBaseNameSpaces = false;\n\nWSDL.prototype.valueKey = '$value';\nWSDL.prototype.xmlKey = '$xml';\n\nWSDL.prototype._initializeOptions = function (options) {\n this._originalIgnoredNamespaces = (options || {}).ignoredNamespaces;\n this.options = {};\n\n let ignoredNamespaces = options ? options.ignoredNamespaces : null;\n\n if (ignoredNamespaces &&\n (Array.isArray(ignoredNamespaces.namespaces) || typeof ignoredNamespaces.namespaces === 'string')) {\n if (ignoredNamespaces.override) {\n this.options.ignoredNamespaces = ignoredNamespaces.namespaces;\n } else {\n this.options.ignoredNamespaces = this.ignoredNamespaces.concat(ignoredNamespaces.namespaces);\n }\n } else {\n this.options.ignoredNamespaces = this.ignoredNamespaces;\n }\n\n this.options.valueKey = options.valueKey || this.valueKey;\n this.options.xmlKey = options.xmlKey || this.xmlKey;\n if (options.escapeXML !== undefined) {\n this.options.escapeXML = options.escapeXML;\n } else {\n this.options.escapeXML = true;\n }\n if (options.returnFault !== undefined) {\n this.options.returnFault = options.returnFault;\n } else {\n this.options.returnFault = false;\n }\n this.options.handleNilAsNull = !!options.handleNilAsNull;\n\n if (options.namespaceArrayElements !== undefined) {\n this.options.namespaceArrayElements = options.namespaceArrayElements;\n } else {\n this.options.namespaceArrayElements = true;\n }\n\n // Allow any request headers to keep passing through\n this.options.wsdl_headers = options.wsdl_headers;\n this.options.wsdl_options = options.wsdl_options;\n if (options.httpClient) {\n this.options.httpClient = options.httpClient;\n }\n\n // The supplied request-object should be passed through\n if (options.request) {\n this.options.request = options.request;\n }\n\n let ignoreBaseNameSpaces = options ? options.ignoreBaseNameSpaces : null;\n if (ignoreBaseNameSpaces !== null && typeof ignoreBaseNameSpaces !== 'undefined') {\n this.options.ignoreBaseNameSpaces = ignoreBaseNameSpaces;\n } else {\n this.options.ignoreBaseNameSpaces = this.ignoreBaseNameSpaces;\n }\n\n // Works only in client\n this.options.forceSoap12Headers = options.forceSoap12Headers;\n this.options.customDeserializer = options.customDeserializer;\n\n if (options.overrideRootElement !== undefined) {\n this.options.overrideRootElement = options.overrideRootElement;\n }\n\n this.options.useEmptyTag = !!options.useEmptyTag;\n};\n\nWSDL.prototype.onReady = function (callback) {\n if (callback)\n this.callback = callback;\n};\n\nWSDL.prototype._processNextInclude = async function (includes) {\n let self = this,\n include = includes.shift(),\n options;\n\n if (!include)\n return; // callback();\n\n let includePath;\n if (!/^https?:/.test(self.uri) && !/^https?:/.test(include.location)) {\n // includePath = path.resolve(path.dirname(self.uri), include.location);\n } else {\n includePath = url.resolve(self.uri || '', include.location);\n }\n\n options = _.assign({}, this.options);\n // follow supplied ignoredNamespaces option\n options.ignoredNamespaces = this._originalIgnoredNamespaces || this.options.ignoredNamespaces;\n options.WSDL_CACHE = this.WSDL_CACHE;\n\n const wsdl = await open_wsdl_recursive(includePath, options)\n self._includesWsdl.push(wsdl);\n\n if (wsdl.definitions instanceof DefinitionsElement) {\n _.mergeWith(self.definitions, wsdl.definitions, function (a, b) {\n return (a instanceof SchemaElement) ? a.merge(b) : undefined;\n });\n } else {\n self.definitions.schemas[include.namespace || wsdl.definitions.$targetNamespace] = deepMerge(self.definitions.schemas[include.namespace || wsdl.definitions.$targetNamespace], wsdl.definitions);\n }\n\n return self._processNextInclude(includes);\n\n // open_wsdl_recursive(includePath, options, function(err, wsdl) {\n // if (err) {\n // return callback(err);\n // }\n\n // self._includesWsdl.push(wsdl);\n\n // if (wsdl.definitions instanceof DefinitionsElement) {\n // _.mergeWith(self.definitions, wsdl.definitions, function(a,b) {\n // return (a instanceof SchemaElement) ? a.merge(b) : undefined;\n // });\n // } else {\n // self.definitions.schemas[include.namespace || wsdl.definitions.$targetNamespace] = deepMerge(self.definitions.schemas[include.namespace || wsdl.definitions.$targetNamespace], wsdl.definitions);\n // }\n // self._processNextInclude(includes, function(err) {\n // callback(err);\n // });\n // });\n};\n\nWSDL.prototype.processIncludes = async function () {\n let schemas = this.definitions.schemas,\n includes = [];\n\n for (let ns in schemas) {\n let schema = schemas[ns];\n includes = includes.concat(schema.includes || []);\n }\n\n return this._processNextInclude(includes);\n};\n\nWSDL.prototype.describeServices = function () {\n let services = {};\n for (let name in this.services) {\n let service = this.services[name];\n services[name] = service.description(this.definitions);\n }\n return services;\n};\n\nWSDL.prototype.toXML = function () {\n return this.xml || '';\n};\n\nWSDL.prototype.xmlToObject = function (xml, callback) {\n let self = this;\n let p = typeof callback === 'function' ? {} : sax.parser(true);\n let objectName = null;\n let root: any = {};\n let schema = {\n Envelope: {\n Header: {\n Security: {\n UsernameToken: {\n Username: 'string',\n Password: 'string'\n }\n }\n },\n Body: {\n Fault: {\n faultcode: 'string',\n faultstring: 'string',\n detail: 'string'\n }\n }\n }\n };\n let stack: any[] = [{ name: null, object: root, schema: schema }];\n let xmlns: any = {};\n\n let refs = {}, id; // {id:{hrefs:[],obj:}, ...}\n\n p.onopentag = function (node) {\n let nsName = node.name;\n let attrs: any = node.attributes;\n let name = splitQName(nsName).name,\n attributeName,\n top = stack[stack.length - 1],\n topSchema = top.schema,\n elementAttributes = {},\n hasNonXmlnsAttribute = false,\n hasNilAttribute = false,\n obj = {};\n let originalName = name;\n\n if (!objectName && top.name === 'Body' && name !== 'Fault') {\n let message = self.definitions.messages[name];\n // Support RPC/literal messages where response body contains one element named\n // after the operation + 'Response'. See http://www.w3.org/TR/wsdl#_names\n if (!message) {\n try {\n // Determine if this is request or response\n let isInput = false;\n let isOutput = false;\n if ((/Response$/).test(name)) {\n isOutput = true;\n name = name.replace(/Response$/, '');\n } else if ((/Request$/).test(name)) {\n isInput = true;\n name = name.replace(/Request$/, '');\n } else if ((/Solicit$/).test(name)) {\n isInput = true;\n name = name.replace(/Solicit$/, '');\n }\n // Look up the appropriate message as given in the portType's operations\n let portTypes = self.definitions.portTypes;\n let portTypeNames = Object.keys(portTypes);\n // Currently this supports only one portType definition.\n let portType = portTypes[portTypeNames[0]];\n if (isInput) {\n name = portType.methods[name].input.$name;\n } else {\n name = portType.methods[name].output.$name;\n }\n message = self.definitions.messages[name];\n // 'cache' this alias to speed future lookups\n self.definitions.messages[originalName] = self.definitions.messages[name];\n } catch (e) {\n if (self.options.returnFault) {\n p.onerror(e);\n }\n }\n }\n\n topSchema = message.description(self.definitions);\n objectName = originalName;\n }\n\n if (attrs.href) {\n id = attrs.href.substr(1);\n if (!refs[id]) {\n refs[id] = { hrefs: [], obj: null };\n }\n refs[id].hrefs.push({ par: top.object, key: name, obj: obj });\n }\n if (id = attrs.id) {\n if (!refs[id]) {\n refs[id] = { hrefs: [], obj: null };\n }\n }\n\n //Handle element attributes\n for (attributeName in attrs) {\n if (/^xmlns:|^xmlns$/.test(attributeName)) {\n xmlns[splitQName(attributeName).name] = attrs[attributeName];\n continue;\n }\n hasNonXmlnsAttribute = true;\n elementAttributes[attributeName] = attrs[attributeName];\n }\n\n for (attributeName in elementAttributes) {\n let res = splitQName(attributeName);\n if (res.name === 'nil' && xmlns[res.prefix] === 'http://www.w3.org/2001/XMLSchema-instance' && elementAttributes[attributeName] &&\n (elementAttributes[attributeName].toLowerCase() === 'true' || elementAttributes[attributeName] === '1')\n ) {\n hasNilAttribute = true;\n break;\n }\n }\n\n if (hasNonXmlnsAttribute) {\n obj[self.options.attributesKey] = elementAttributes;\n }\n\n // Pick up the schema for the type specified in element's xsi:type attribute.\n let xsiTypeSchema;\n let xsiType = elementAttributes['xsi:type'];\n if (xsiType) {\n let type = splitQName(xsiType);\n let typeURI;\n if (type.prefix === TNS_PREFIX) {\n // In case of xsi:type = \"MyType\"\n typeURI = xmlns[type.prefix] || xmlns.xmlns;\n } else {\n typeURI = xmlns[type.prefix];\n }\n let typeDef = self.findSchemaObject(typeURI, type.name);\n if (typeDef) {\n xsiTypeSchema = typeDef.description(self.definitions);\n }\n }\n\n if (topSchema && topSchema[name + '[]']) {\n name = name + '[]';\n }\n stack.push({\n name: originalName,\n object: obj,\n schema: (xsiTypeSchema || (topSchema && topSchema[name])),\n id: attrs.id,\n nil: hasNilAttribute\n });\n };\n\n p.onclosetag = function (nsName) {\n let cur: any = stack.pop(),\n obj = cur.object,\n top = stack[stack.length - 1],\n topObject = top.object,\n topSchema = top.schema,\n name = splitQName(nsName).name;\n\n if (typeof cur.schema === 'string' && (cur.schema === 'string' || (<string>cur.schema).split(':')[1] === 'string')) {\n if (typeof obj === 'object' && Object.keys(obj).length === 0) obj = cur.object = '';\n }\n\n if (cur.nil === true) {\n if (self.options.handleNilAsNull) {\n obj = null;\n } else {\n return;\n }\n }\n\n if (_.isPlainObject(obj) && !Object.keys(obj).length) {\n obj = null;\n }\n\n if (topSchema && topSchema[name + '[]']) {\n if (!topObject[name]) {\n topObject[name] = [];\n }\n topObject[name].push(obj);\n } else if (name in topObject) {\n if (!Array.isArray(topObject[name])) {\n topObject[name] = [topObject[name]];\n }\n topObject[name].push(obj);\n } else {\n topObject[name] = obj;\n }\n\n if (cur.id) {\n refs[cur.id].obj = obj;\n }\n };\n\n p.oncdata = function (text) {\n let originalText = text;\n text = trim(text);\n if (!text.length) {\n return;\n }\n\n if (/<\\?xml[\\s\\S]+\\?>/.test(text)) {\n let top = stack[stack.length - 1];\n let value = self.xmlToObject(text);\n if (top.object[self.options.attributesKey]) {\n top.object[self.options.valueKey] = value;\n } else {\n top.object = value;\n }\n } else {\n p.ontext(originalText);\n }\n };\n\n p.onerror = function (e) {\n p.resume();\n throw {\n Fault: {\n faultcode: 500,\n faultstring: 'Invalid XML',\n detail: new Error(e).message,\n statusCode: 500\n }\n };\n };\n\n p.ontext = function (text) {\n let originalText = text;\n text = trim(text);\n if (!text.length) {\n return;\n }\n\n let top = stack[stack.length - 1];\n let name = splitQName(top.schema).name,\n value;\n if (self.options && self.options.customDeserializer && self.options.customDeserializer[name]) {\n value = self.options.customDeserializer[name](text, top);\n }\n else {\n if (name === 'int' || name === 'integer') {\n value = parseInt(text, 10);\n } else if (name === 'bool' || name === 'boolean') {\n value = text.toLowerCase() === 'true' || text === '1';\n } else if (name === 'dateTime' || name === 'date') {\n value = new Date(text);\n } else {\n if (self.options.preserveWhitespace) {\n text = originalText;\n }\n // handle string or other types\n if (typeof top.object !== 'string') {\n value = text;\n } else {\n value = top.object + text;\n }\n }\n }\n\n if (top.object[self.options.attributesKey]) {\n top.object[self.options.valueKey] = value;\n } else {\n top.object = value;\n }\n };\n\n if (typeof callback === 'function') {\n // we be streaming\n let saxStream = sax.createStream(true);\n saxStream.on('opentag', p.onopentag);\n saxStream.on('closetag', p.onclosetag);\n saxStream.on('cdata', p.oncdata);\n saxStream.on('text', p.ontext);\n xml.pipe(saxStream)\n .on('error', function (err) {\n callback(err);\n })\n .on('end', function () {\n let r;\n try {\n r = finish();\n } catch (e) {\n return callback(e);\n }\n callback(null, r);\n });\n return;\n }\n p.write(xml).close();\n\n return finish();\n\n function finish() {\n // MultiRef support: merge objects instead of replacing\n for (let n in refs) {\n let ref = refs[n];\n for (let i = 0; i < ref.hrefs.length; i++) {\n _.assign(ref.hrefs[i].obj, ref.obj);\n }\n }\n\n if (root.Envelope) {\n let body = root.Envelope.Body;\n if (body && body.Fault) {\n let code = body.Fault.faultcode && body.Fault.faultcode.$value;\n let string = body.Fault.faultstring && body.Fault.faultstring.$value;\n let detail = body.Fault.detail && body.Fault.detail.$value;\n\n code = code || body.Fault.faultcode;\n string = string || body.Fault.faultstring;\n detail = detail || body.Fault.detail;\n\n let error: any = new Error(code + ': ' + string + (detail ? ': ' + detail : ''));\n\n error.root = root;\n throw error;\n }\n return root.Envelope;\n }\n return root;\n }\n};\n\n/**\n * Look up a XSD type or element by namespace URI and name\n * @param {String} nsURI Namespace URI\n * @param {String} qname Local or qualified name\n * @returns {*} The XSD type/element definition\n */\nWSDL.prototype.findSchemaObject = function (nsURI, qname) {\n if (!nsURI || !qname) {\n return null;\n }\n\n let def = null;\n\n if (this.definitions.schemas) {\n let schema = this.definitions.schemas[nsURI];\n if (schema) {\n if (qname.indexOf(':') !== -1) {\n qname = qname.substring(qname.indexOf(':') + 1, qname.length);\n }\n\n // if the client passed an input element which has a `$lookupType` property instead of `$type`\n // the `def` is found in `schema.elements`.\n def = schema.complexTypes[qname] || schema.types[qname] || schema.elements[qname];\n }\n }\n\n return def;\n};\n\n/**\n * Create document style xml string from the parameters\n * @param {String} name\n * @param {*} params\n * @param {String} nsPrefix\n * @param {String} nsURI\n * @param {String} type\n */\nWSDL.prototype.objectToDocumentXML = function (name, params, nsPrefix, nsURI, type) {\n //If user supplies XML already, just use that. XML Declaration should not be present.\n if (params && params._xml) {\n return params._xml;\n }\n let args = {};\n args[name] = params;\n let parameterTypeObj = type ? this.findSchemaObject(nsURI, type) : null;\n return this.objectToXML(args, null, nsPrefix, nsURI, true, null, parameterTypeObj);\n};\n\n/**\n * Create RPC style xml string from the parameters\n * @param {String} name\n * @param {*} params\n * @param {String} nsPrefix\n * @param {String} nsURI\n * @returns {string}\n */\nWSDL.prototype.objectToRpcXML = function (name, params, nsPrefix, nsURI, isParts) {\n let parts = [];\n let defs = this.definitions;\n let nsAttrName = '_xmlns';\n\n nsPrefix = nsPrefix || findPrefix(defs.xmlns, nsURI);\n\n nsURI = nsURI || defs.xmlns[nsPrefix];\n nsPrefix = nsPrefix === TNS_PREFIX ? '' : (nsPrefix + ':');\n\n parts.push(['<', nsPrefix, name, '>'].join(''));\n\n for (let key in params) {\n if (!params.hasOwnProperty(key)) {\n continue;\n }\n if (key !== nsAttrName) {\n let value = params[key];\n let prefixedKey = (isParts ? '' : nsPrefix) + key;\n let attributes = [];\n if (typeof value === 'object' && value.hasOwnProperty(this.options.attributesKey)) {\n let attrs = value[this.options.attributesKey];\n for (let n in attrs) {\n attributes.push(' ' + n + '=' + '\"' + attrs[n] + '\"');\n }\n }\n parts.push(['<', prefixedKey].concat(attributes).concat('>').join(''));\n parts.push((typeof value === 'object') ? this.objectToXML(value, key, nsPrefix, nsURI) : xmlEscape(value));\n parts.push(['</', prefixedKey, '>'].join(''));\n }\n }\n parts.push(['</', nsPrefix, name, '>'].join(''));\n return parts.join('');\n};\n\n\nfunction appendColon(ns) {\n return (ns && ns.charAt(ns.length - 1) !== ':') ? ns + ':' : ns;\n}\n\nfunction noColonNameSpace(ns) {\n return (ns && ns.charAt(ns.length - 1) === ':') ? ns.substring(0, ns.length - 1) : ns;\n}\n\nWSDL.prototype.isIgnoredNameSpace = function (ns) {\n return this.options.ignoredNamespaces.indexOf(ns) > -1;\n};\n\nWSDL.prototype.filterOutIgnoredNameSpace = function (ns) {\n let namespace = noColonNameSpace(ns);\n return this.isIgnoredNameSpace(namespace) ? '' : namespace;\n};\n\n\n\n/**\n * Convert an object to XML. This is a recursive method as it calls itself.\n *\n * @param {Object} obj the object to convert.\n * @param {String} name the name of the element (if the object being traversed is\n * an element).\n * @param {String} nsPrefix the namespace prefix of the object I.E. xsd.\n * @param {String} nsURI the full namespace of the object I.E. http://w3.org/schema.\n * @param {Boolean} isFirst whether or not this is the first item being traversed.\n * @param {?} xmlnsAttr\n * @param {?} parameterTypeObject\n * @param {NamespaceContext} nsContext Namespace context\n */\nWSDL.prototype.objectToXML = function (obj, name, nsPrefix, nsURI, isFirst, xmlnsAttr, schemaObject, nsContext) {\n const schema = this.definitions.schemas[nsURI];\n\n let parentNsPrefix = nsPrefix ? nsPrefix.parent : undefined;\n if (typeof parentNsPrefix !== 'undefined') {\n // we got the parentNsPrefix for our array. setting the namespace-variable back to the current namespace string\n nsPrefix = nsPrefix.current;\n }\n\n parentNsPrefix = noColonNameSpace(parentNsPrefix);\n if (this.isIgnoredNameSpace(parentNsPrefix)) {\n parentNsPrefix = '';\n }\n\n const soapHeader = !schema;\n const qualified = schema && schema.$elementFormDefault === 'qualified';\n const parts = [];\n const prefixNamespace = (nsPrefix || qualified) && nsPrefix !== TNS_PREFIX;\n\n let xmlnsAttrib = '';\n if (nsURI && isFirst) {\n if (this.options.overrideRootElement && this.options.overrideRootElement.xmlnsAttributes) {\n this.options.overrideRootElement.xmlnsAttributes.forEach((attribute) => {\n xmlnsAttrib += ' ' + attribute.name + '=\"' + attribute.value + '\"';\n });\n } else {\n if (prefixNamespace && !this.isIgnoredNameSpace(nsPrefix)) {\n // resolve the prefix namespace\n xmlnsAttrib += ' xmlns:' + nsPrefix + '=\"' + nsURI + '\"';\n }\n // only add default namespace if the schema elementFormDefault is qualified\n if (qualified || soapHeader) { xmlnsAttrib += ' xmlns=\"' + nsURI + '\"'; }\n }\n }\n\n if (!nsContext) {\n nsContext = new NamespaceContext();\n nsContext.declareNamespace(nsPrefix, nsURI);\n } else {\n nsContext.pushContext();\n }\n\n // explicitly use xmlns attribute if available\n if (xmlnsAttr && !(this.options.overrideRootElement && this.options.overrideRootElement.xmlnsAttributes)) {\n xmlnsAttrib = xmlnsAttr;\n }\n\n let ns = '';\n\n if (this.options.overrideRootElement && isFirst) {\n ns = this.options.overrideRootElement.namespace;\n } else if (prefixNamespace && (qualified || isFirst || soapHeader) && !this.isIgnoredNameSpace(nsPrefix)) {\n ns = nsPrefix;\n }\n\n let i;\n let n;\n // start building out XML string.\n if (Array.isArray(obj)) {\n let nonSubNameSpace = '';\n let emptyNonSubNameSpaceForArray = false;\n const nameWithNsRegex = /^([^:]+):([^:]+)$/.exec(name);\n if (nameWithNsRegex) {\n nonSubNameSpace = nameWithNsRegex[1];\n name = nameWithNsRegex[2];\n } else if (name[0] === ':') {\n emptyNonSubNameSpaceForArray = true;\n name = name.substr(1);\n }\n\n for (i = 0, n = obj.length; i < n; i++) {\n const item = obj[i];\n const arrayAttr = this.processAttributes(item, nsContext);\n const correctOuterNsPrefix = nonSubNameSpace || parentNsPrefix || ns; // using the parent namespace prefix if given\n\n const body = this.objectToXML(item, name, nsPrefix, nsURI, false, null, schemaObject, nsContext);\n\n let openingTagParts = ['<', name, arrayAttr, xmlnsAttrib];\n if (!emptyNonSubNameSpaceForArray) {\n openingTagParts = ['<', appendColon(correctOuterNsPrefix), name, arrayAttr, xmlnsAttrib];\n }\n\n if (body === '' && this.options.useEmptyTag) {\n // Use empty (self-closing) tags if no contents\n openingTagParts.push(' />');\n parts.push(openingTagParts.join(''));\n } else {\n openingTagParts.push('>');\n if (this.options.namespaceArrayElements || i === 0) {\n parts.push(openingTagParts.join(''));\n }\n parts.push(body);\n if (this.options.namespaceArrayElements || i === n - 1) {\n if (emptyNonSubNameSpaceForArray) {\n parts.push(['</', name, '>'].join(''));\n } else {\n parts.push(['</', appendColon(correctOuterNsPrefix), name, '>'].join(''));\n }\n }\n }\n }\n } else if (typeof obj === 'object') {\n for (name in obj) {\n if (!obj.hasOwnProperty(name)) { continue; }\n // don't process attributes as element\n if (name === this.options.attributesKey) {\n continue;\n }\n // Its the value of a xml object. Return it directly.\n if (name === this.options.xmlKey) {\n nsContext.popContext();\n return obj[name];\n }\n // Its the value of an item. Return it directly.\n if (name === this.options.valueKey) {\n nsContext.popContext();\n return xmlEscape(obj[name]);\n }\n\n const child = obj[name];\n if (typeof child === 'undefined') {\n continue;\n }\n\n const attr = this.processAttributes(child, nsContext);\n\n let value = '';\n let nonSubNameSpace = '';\n let emptyNonSubNameSpace = false;\n\n const nameWithNsRegex = /^([^:]+):([^:]+)$/.exec(name);\n if (nameWithNsRegex) {\n nonSubNameSpace = nameWithNsRegex[1] + ':';\n name = nameWithNsRegex[2];\n } else if (name[0] === ':') {\n emptyNonSubNameSpace = true;\n name = name.substr(1);\n }\n\n if (isFirst) {\n value = this.objectToXML(child, name, nsPrefix, nsURI, false, null, schemaObject, nsContext);\n } else {\n\n if (this.definitions.schemas) {\n if (schema) {\n const childSchemaObject = this.findChildSchemaObject(schemaObject, name);\n // find sub namespace if not a primitive\n if (childSchemaObject &&\n ((childSchemaObject.$type && (childSchemaObject.$type.indexOf('xsd:') === -1)) ||\n childSchemaObject.$ref || childSchemaObject.$name)) {\n /*if the base name space of the children is not in the ingoredSchemaNamspaces we use it.\n This is because in some services the child nodes do not need the baseNameSpace.\n */\n\n let childNsPrefix: any = '';\n let childName = '';\n let childNsURI;\n let childXmlnsAttrib = '';\n\n let elementQName = childSchemaObject.$ref || childSchemaObject.$name;\n if (elementQName) {\n elementQName = splitQName(elementQName);\n childName = elementQName.name;\n if (elementQName.prefix === TNS_PREFIX) {\n // Local element\n childNsURI = childSchemaObject.$targetNamespace;\n childNsPrefix = nsContext.registerNamespace(childNsURI);\n if (this.isIgnoredNameSpace(childNsPrefix)) {\n childNsPrefix = nsPrefix;\n }\n } else {\n childNsPrefix = elementQName.prefix;\n if (this.isIgnoredNameSpace(childNsPrefix)) {\n childNsPrefix = nsPrefix;\n }\n childNsURI = schema.xmlns[childNsPrefix] || this.definitions.xmlns[childNsPrefix];\n }\n\n let unqualified = false;\n // Check qualification form for local elements\n if (childSchemaObject.$name && childSchemaObject.targetNamespace === undefined) {\n if (childSchemaObject.$form === 'unqualified') {\n unqualified = true;\n } else if (childSchemaObject.$form === 'qualified') {\n unqualified = false;\n } else {\n unqualified = schema.$elementFormDefault !== 'qualified';\n }\n }\n if (unqualified) {\n childNsPrefix = '';\n }\n\n if (childNsURI && childNsPrefix) {\n if (nsContext.declareNamespace(childNsPrefix, childNsURI)) {\n childXmlnsAttrib = ' xmlns:' + childNsPrefix + '=\"' + childNsURI + '\"';\n xmlnsAttrib += childXmlnsAttrib;\n }\n }\n }\n\n let resolvedChildSchemaObject;\n if (childSchemaObject.$type) {\n const typeQName = splitQName(childSchemaObject.$type);\n const typePrefix = typeQName.prefix;\n const typeURI = schema.xmlns[typePrefix] || this.definitions.xmlns[typePrefix];\n childNsURI = typeURI;\n if (typeURI !== 'http://www.w3.org/2001/XMLSchema' && typePrefix !== TNS_PREFIX) {\n // Add the prefix/namespace mapping, but not declare it\n nsContext.addNamespace(typePrefix, typeURI);\n }\n resolvedChildSchemaObject =\n this.findSchemaType(typeQName.name, typeURI) || childSchemaObject;\n } else {\n resolvedChildSchemaObject =\n this.findSchemaObject(childNsURI, childName) || childSchemaObject;\n }\n\n if (childSchemaObject.$baseNameSpace && this.options.ignoreBaseNameSpaces) {\n childNsPrefix = nsPrefix;\n childNsURI = nsURI;\n }\n\n if (this.options.ignoreBaseNameSpaces) {\n childNsPrefix = '';\n childNsURI = '';\n }\n\n ns = childNsPrefix;\n\n if (Array.isArray(child)) {\n // for arrays, we need to remember the current namespace\n childNsPrefix = {\n current: childNsPrefix,\n parent: ns,\n };\n } else {\n // parent (array) already got the namespace\n childXmlnsAttrib = null;\n }\n\n value = this.objectToXML(child, name, childNsPrefix, childNsURI,\n false, childXmlnsAttrib, resolvedChildSchemaObject, nsContext);\n } else if (obj[this.options.attributesKey] && obj[this.options.attributesKey].xsi_type) {\n // if parent object has complex type defined and child not found in parent\n const completeChildParamTypeObject = this.findChildSchemaObject(\n obj[this.options.attributesKey].xsi_type.type,\n obj[this.options.attributesKey].xsi_type.xmlns);\n\n nonSubNameSpace = obj[this.options.attributesKey].xsi_type.prefix;\n nsContext.addNamespace(obj[this.options.attributesKey].xsi_type.prefix,\n obj[this.options.attributesKey].xsi_type.xmlns);\n value = this.objectToXML(child, name, obj[this.options.attributesKey].xsi_type.prefix,\n obj[this.options.attributesKey].xsi_type.xmlns, false, null, null, nsContext);\n } else {\n if (Array.isArray(child)) {\n if (emptyNonSubNameSpace) {\n name = ':' + name;\n } else {\n name = nonSubNameSpace + name;\n }\n }\n\n value = this.objectToXML(child, name, nonSubNameSpace || nsPrefix, nsURI, false, null, null, nsContext);\n }\n } else {\n value = this.objectToXML(child, name, nonSubNameSpace || nsPrefix, nsURI, false, null, null, nsContext);\n }\n }\n }\n\n ns = noColonNameSpace(ns);\n if (prefixNamespace && !qualified && isFirst && !this.options.overrideRootElement) {\n ns = nsPrefix;\n } else if (this.isIgnoredNameSpace(ns)) {\n ns = '';\n }\n\n const useEmptyTag = !value && this.options.useEmptyTag;\n if (!Array.isArray(child)) {\n // start tag\n parts.push(['<', emptyNonSubNameSpace ? '' : appendColon(nonSubNameSpace || ns), name, attr, xmlnsAttrib,\n (child === null ? ' xsi:nil=\"true\"' : ''),\n useEmptyTag ? ' />' : '>',\n ].join(''));\n }\n\n if (!useEmptyTag) {\n parts.push(value);\n if (!Array.isArray(child)) {\n // end tag\n parts.push(['</', emptyNonSubNameSpace ? '' : appendColon(nonSubNameSpace || ns), name, '>'].join(''));\n }\n }\n }\n } else if (obj !== undefined) {\n parts.push((this.options.escapeXML) ? xmlEscape(obj) : obj);\n }\n nsContext.popContext();\n return parts.join('');\n};\n\nWSDL.prototype.processAttributes = function (child, nsContext) {\n let attr = '';\n\n if (child === null) {\n child = [];\n }\n\n let attrObj = child[this.options.attributesKey];\n if (attrObj && attrObj.xsi_type) {\n let xsiType = attrObj.xsi_type;\n\n let prefix = xsiType.prefix || xsiType.namespace;\n // Generate a new namespace for complex extension if one not provided\n if (!prefix) {\n prefix = nsContext.registerNamespace(xsiType.xmlns);\n } else {\n nsContext.declareNamespace(prefix, xsiType.xmlns);\n }\n xsiType.prefix = prefix;\n }\n\n\n if (attrObj) {\n for (let attrKey in attrObj) {\n //handle complex extension separately\n if (attrKey === 'xsi_type') {\n let attrValue = attrObj[attrKey];\n attr += ' xsi:type=\"' + attrValue.prefix + ':' + attrValue.type + '\"';\n attr += ' xmlns:' + attrValue.prefix + '=\"' + attrValue.xmlns + '\"';\n\n continue;\n } else {\n attr += ' ' + attrKey + '=\"' + xmlEscape(attrObj[attrKey]) + '\"';\n }\n }\n }\n\n return attr;\n};\n\n/**\n * Look up a schema type definition\n * @param name\n * @param nsURI\n * @returns {*}\n */\nWSDL.prototype.findSchemaType = function (name, nsURI) {\n if (!this.definitions.schemas || !name || !nsURI) {\n return null;\n }\n\n let schema = this.definitions.schemas[nsURI];\n if (!schema || !schema.complexTypes) {\n return null;\n }\n\n return schema.complexTypes[name];\n};\n\nWSDL.prototype.findChildSchemaObject = function (parameterTypeObj, childName, backtrace) {\n if (!parameterTypeObj || !childName) {\n return null;\n }\n\n if (!backtrace) {\n backtrace = [];\n }\n\n if (backtrace.indexOf(parameterTypeObj) >= 0) {\n // We've recursed back to ourselves; break.\n return null;\n } else {\n backtrace = backtrace.concat([parameterTypeObj]);\n }\n\n let found = null,\n i = 0,\n child,\n ref;\n\n if (Array.isArray(parameterTypeObj.$lookupTypes) && parameterTypeObj.$lookupTypes.length) {\n let types = parameterTypeObj.$lookupTypes;\n\n for (i = 0; i < types.length; i++) {\n let typeObj = types[i];\n\n if (typeObj.$name === childName) {\n found = typeObj;\n break;\n }\n }\n }\n\n let object = parameterTypeObj;\n if (object.$name === childName && object.name === 'element') {\n return object;\n }\n if (object.$ref) {\n ref = splitQName(object.$ref);\n if (ref.name === childName) {\n return object;\n }\n }\n\n let childNsURI;\n\n // want to avoid unecessary recursion to improve performance\n if (object.$type && backtrace.length === 1) {\n let typeInfo = splitQName(object.$type);\n if (typeInfo.prefix === TNS_PREFIX) {\n childNsURI = parameterTypeObj.$targetNamespace;\n } else {\n childNsURI = this.definitions.xmlns[typeInfo.prefix];\n }\n let typeDef = this.findSchemaType(typeInfo.name, childNsURI);\n if (typeDef) {\n return this.findChildSchemaObject(typeDef, childName, backtrace);\n }\n }\n\n if (object.children) {\n for (i = 0, child; child = object.children[i]; i++) {\n found = this.findChildSchemaObject(child, childName, backtrace);\n if (found) {\n break;\n }\n\n if (child.$base) {\n let baseQName = splitQName(child.$base);\n let childNameSpace = baseQName.prefix === TNS_PREFIX ? '' : baseQName.prefix;\n childNsURI = child.xmlns[baseQName.prefix] || this.definitions.xmlns[baseQName.prefix];\n\n let foundBase = this.findSchemaType(baseQName.name, childNsURI);\n\n if (foundBase) {\n found = this.findChildSchemaObject(foundBase, childName, backtrace);\n\n if (found) {\n found.$baseNameSpace = childNameSpace;\n found.$type = childNameSpace + ':' + childName;\n break;\n }\n }\n }\n }\n\n }\n\n if (!found && object.$name === childName) {\n return object;\n }\n\n return found;\n};\n\nWSDL.prototype._parse = function (xml) {\n let self = this,\n p = sax.parser(true),\n stack = [],\n root = null,\n types = null,\n schema = null,\n options = self.options;\n\n p.onopentag = function (node) {\n let nsName = node.name;\n let attrs = node.attributes;\n\n let top = stack[stack.length - 1];\n let name;\n if (top) {\n try {\n top.startElement(stack, nsName, attrs, options);\n } catch (e) {\n if (self.options.strict) {\n throw e;\n } else {\n stack.push(new Element(nsName, attrs, options));\n }\n }\n } else {\n name = splitQName(nsName).name;\n if (name === 'definitions') {\n root = new DefinitionsElement(nsName, attrs, options);\n stack.push(root);\n } else if (name === 'schema') {\n // Shim a structure in here to allow the proper objects to be created when merging back.\n root = new DefinitionsElement('definitions', {}, {});\n types = new TypesElement('types', {}, {});\n schema = new SchemaElement(nsName, attrs, options);\n types.addChild(schema);\n root.addChild(types);\n stack.push(schema);\n } else {\n throw new Error('Unexpected root element of WSDL or include');\n }\n }\n };\n\n p.onclosetag = function (name) {\n let top = stack[stack.length - 1];\n assert(top, 'Unmatched close tag: ' + name);\n\n top.endElement(stack, name);\n };\n\n p.write(xml).close();\n\n return root;\n};\n\nWSDL.prototype._fromXML = function (xml) {\n this.definitions = this._parse(xml);\n this.definitions.descriptions = {\n types: {}\n };\n this.xml = xml;\n};\n\nWSDL.prototype._fromServices = function (services) {\n\n};\n\n\n\nWSDL.prototype._xmlnsMap = function () {\n let xmlns = this.definitions.xmlns;\n let str = '';\n for (let alias in xmlns) {\n if (alias === '' || alias === TNS_PREFIX) {\n continue;\n }\n let ns = xmlns[alias];\n switch (ns) {\n case \"http://xml.apache.org/xml-soap\": // apachesoap\n case \"http://schemas.xmlsoap.org/wsdl/\": // wsdl\n case \"http://schemas.xmlsoap.org/wsdl/soap/\": // wsdlsoap\n case \"http://schemas.xmlsoap.org/wsdl/soap12/\": // wsdlsoap12\n case \"http://schemas.xmlsoap.org/soap/encoding/\": // soapenc\n case \"http://www.w3.org/2001/XMLSchema\": // xsd\n continue;\n }\n if (~ns.indexOf('http://schemas.xmlsoap.org/')) {\n continue;\n }\n if (~ns.indexOf('http://www.w3.org/')) {\n continue;\n }\n if (~ns.indexOf('http://xml.apache.org/')) {\n continue;\n }\n str += ' xmlns:' + alias + '=\"' + ns + '\"';\n }\n return str;\n};\n\n/*\n * Have another function to load previous WSDLs as we\n * don't want this to be invoked externally (expect for tests)\n * This will attempt to fix circular dependencies with XSD files,\n * Given\n * - file.wsdl\n * - xs:import namespace=\"A\" schemaLocation: A.xsd\n * - A.xsd\n * - xs:import namespace=\"B\" schemaLocation: B.xsd\n * - B.xsd\n * - xs:import namespace=\"A\" schemaLocation: A.xsd\n * file.wsdl will start loading, import A, then A will import B, which will then import A\n * Because A has already started to load previously it will be returned right away and\n * have an internal circular reference\n * B would then complete loading, then A, then file.wsdl\n * By the time file A starts processing its includes its definitions will be already loaded,\n * this is the only thing that B will depend on when \"opening\" A\n */\nfunction open_wsdl_recursive(uri, options): Promise<any> {\n let fromCache,\n WSDL_CACHE;\n\n // if (typeof options === 'function') {\n // callback = options;\n // options = {};\n // }\n\n WSDL_CACHE = options.WSDL_CACHE;\n\n if (fromCache = WSDL_CACHE[uri]) {\n // return callback.call(fromCache, null, fromCache);\n return fromCache;\n }\n\n return open_wsdl(uri, options);\n}\n\nexport async function open_wsdl(uri, options): Promise<any> {\n // if (typeof options === 'function') {\n // callback = options;\n // options = {};\n // }\n\n // initialize cache when calling open_wsdl directly\n let WSDL_CACHE = options.WSDL_CACHE || {};\n let request_headers = options.wsdl_headers;\n let request_options = options.wsdl_options;\n\n // let wsdl;\n // if (!/^https?:/.test(uri)) {\n // // debug('Reading file: %s', uri);\n // // fs.readFile(uri, 'utf8', function(err, definition) {\n // // if (err) {\n // // callback(err);\n // // }\n // // else {\n // // wsdl = new WSDL(definition, uri, options);\n // // WSDL_CACHE[ uri ] = wsdl;\n // // wsdl.WSDL_CACHE = WSDL_CACHE;\n // // wsdl.onReady(callback);\n // // }\n // // });\n // }\n // else {\n // debug('Reading url: %s', uri);\n // let httpClient = options.httpClient || new HttpClient(options);\n // httpClient.request(uri, null /* options */, function(err, response, definition) {\n // if (err) {\n // callback(err);\n // } else if (response && response.statusCode === 200) {\n // wsdl = new WSDL(definition, uri, options);\n // WSDL_CACHE[ uri ] = wsdl;\n // wsdl.WSDL_CACHE = WSDL_CACHE;\n // wsdl.onReady(callback);\n // } else {\n // callback(new Error('Invalid WSDL URL: ' + uri + \"\\n\\n\\r Code: \" + response.statusCode + \"\\n\\n\\r Response Body: \" + response.body));\n // }\n // }, request_headers, request_options);\n // }\n // return wsdl;\n\n const httpClient: HttpClient = options.httpClient;\n const wsdlDef = await httpClient.get(uri, { responseType: 'text' }).toPromise();\n const wsdlObj = await new Promise((resolve) => {\n const wsdl = new WSDL(wsdlDef, uri, options);\n WSDL_CACHE[uri] = wsdl;\n wsdl.WSDL_CACHE = WSDL_CACHE;\n wsdl.onReady(resolve(wsdl));\n });\n return wsdlObj;\n}\n","import * as _ from 'lodash';\nimport { Buffer } from 'buffer';\n\nexport function BasicAuthSecurity(username, password, defaults) {\n this._username = username;\n this._password = password;\n this.defaults = {};\n _.merge(this.defaults, defaults);\n}\n\nBasicAuthSecurity.prototype.addHeaders = function(headers) {\n headers.Authorization = 'Basic ' + new Buffer((this._username + ':' + this._password) || '').toString('base64');\n};\n\nBasicAuthSecurity.prototype.toXML = function() {\n return '';\n};\n\nBasicAuthSecurity.prototype.addOptions = function(options) {\n _.merge(options, this.defaults);\n};\n","\"use strict\";\n\n// var crypto = require('crypto');\nimport sha1 from 'crypto-js/sha1';\nimport Base64 from 'crypto-js/enc-base64';\n\n// var passwordDigest = require('../utils').passwordDigest;\nimport { passwordDigest } from '../utils';\n\nvar validPasswordTypes = ['PasswordDigest', 'PasswordText'];\n\nexport function WSSecurity(username, password, options) {\n options = options || {};\n this._username = username;\n this._password = password;\n //must account for backward compatibility for passwordType String param as well as object options defaults: passwordType = 'PasswordText', hasTimeStamp = true \n if (typeof options === 'string') {\n this._passwordType = options ? options : 'PasswordText';\n options = {};\n } else {\n this._passwordType = options.passwordType ? options.passwordType : 'PasswordText';\n }\n\n if (validPasswordTypes.indexOf(this._passwordType) === -1) {\n this._passwordType = 'PasswordText';\n }\n\n this._hasTimeStamp = options.hasTimeStamp || typeof options.hasTimeStamp === 'boolean' ? !!options.hasTimeStamp : true;\n /*jshint eqnull:true */\n if (options.hasNonce != null) {\n this._hasNonce = !!options.hasNonce;\n }\n this._hasTokenCreated = options.hasTokenCreated || typeof options.hasTokenCreated === 'boolean' ? !!options.hasTokenCreated : true;\n if (options.actor != null) {\n this._actor = options.actor;\n }\n if (options.mustUnderstand != null) {\n this._mustUnderstand = !!options.mustUnderstand;\n }\n}\n\nWSSecurity.prototype.toXML = function() {\n // avoid dependency on date formatting libraries\n function getDate(d) {\n function pad(n) {\n return n < 10 ? '0' + n : n;\n }\n return d.getUTCFullYear() + '-'\n + pad(d.getUTCMonth() + 1) + '-'\n + pad(d.getUTCDate()) + 'T'\n + pad(d.getUTCHours()) + ':'\n + pad(d.getUTCMinutes()) + ':'\n + pad(d.getUTCSeconds()) + 'Z';\n }\n var now = new Date();\n var created = getDate(now);\n var timeStampXml = '';\n if (this._hasTimeStamp) {\n var expires = getDate( new Date(now.getTime() + (1000 * 600)) );\n timeStampXml = \"<wsu:Timestamp wsu:Id=\\\"Timestamp-\"+created+\"\\\">\" +\n \"<wsu:Created>\"+created+\"</wsu:Created>\" +\n \"<wsu:Expires>\"+expires+\"</wsu:Expires>\" +\n \"</wsu:Timestamp>\";\n }\n\n var password, nonce;\n if (this._hasNonce || this._passwordType !== 'PasswordText') {\n // nonce = base64 ( sha1 ( created + random ) )\n // var nHash = crypto.createHash('sha1');\n // nHash.update(created + Math.random());\n // nonce = nHash.digest('base64');\n nonce = Base64.stringify(sha1(created + Math.random(), ''));\n }\n if (this._passwordType === 'PasswordText') {\n password = \"<wsse:Password Type=\\\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText\\\">\" + this._password + \"</wsse:Password>\";\n if (nonce) {\n password += \"<wsse:Nonce EncodingType=\\\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary\\\">\" + nonce + \"</wsse:Nonce>\";\n }\n } else {\n password = \"<wsse:Password Type=\\\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest\\\">\" + passwordDigest(nonce, created, this._password) + \"</wsse:Password>\" +\n \"<wsse:Nonce EncodingType=\\\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary\\\">\" + nonce + \"</wsse:Nonce>\";\n }\n\n return \"<wsse:Security \" + (this._actor ? \"soap:actor=\\\"\" + this._actor + \"\\\" \" : \"\") +\n (this._mustUnderstand ? \"soap:mustUnderstand=\\\"1\\\" \" : \"\") +\n \"xmlns:wsse=\\\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\\\" xmlns:wsu=\\\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\\\">\" +\n timeStampXml +\n \"<wsse:UsernameToken xmlns:wsu=\\\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\\\" wsu:Id=\\\"SecurityToken-\" + created + \"\\\">\" +\n \"<wsse:Username>\" + this._username + \"</wsse:Username>\" +\n password +\n (this._hasTokenCreated ? \"<wsu:Created>\" + created + \"</wsu:Created>\" : \"\") +\n \"</wsse:UsernameToken>\" +\n \"</wsse:Security>\";\n};\n\n// module.exports = WSSecurity;\n","\"use strict\";\n\n// var _ = require('lodash');\nimport * as _ from 'lodash';\n\nexport function BearerSecurity(token, defaults) {\n\tthis._token = token;\n\tthis.defaults = {};\n\t_.merge(this.defaults, defaults);\n}\n\nBearerSecurity.prototype.addHeaders = function(headers) {\n\theaders.Authorization = \"Bearer \" + this._token;\n};\n\nBearerSecurity.prototype.toXML = function() {\n\treturn '';\n};\n\nBearerSecurity.prototype.addOptions = function(options) {\n _.merge(options, this.defaults);\n};\n\n// module.exports = BearerSecurity;\n","\"use strict\";\n\n// var _ = require('lodash');\nimport * as _ from 'lodash';\n\nexport function NTLMSecurity(username, password, domain, workstation) {\n if (typeof username === \"object\") {\n this.defaults = username;\n this.defaults.ntlm = true;\n } else {\n this.defaults = {\n ntlm: true,\n username: username,\n password: password,\n domain: domain,\n workstation: workstation\n };\n }\n}\n\nNTLMSecurity.prototype.addHeaders = function (headers) {\n headers.Connection = 'keep-alive';\n};\n\nNTLMSecurity.prototype.toXML = function () {\n return '';\n};\n\nNTLMSecurity.prototype.addOptions = function (options) {\n _.merge(options, this.defaults);\n};\n\n// module.exports = NTLMSecurity;\n","\"use strict\";\n\nimport { BasicAuthSecurity } from './BasicAuthSecurity';\nimport { WSSecurity } from './WSSecurity';\n// import { WSSecurityCert } from './WSSecurityCert';\nimport { BearerSecurity } from './BearerSecurity';\nimport { NTLMSecurity } from './NTLMSecurity';\n\nexport const security = { \n BasicAuthSecurity,\n BearerSecurity,\n WSSecurity,\n // WSSecurityCert,\n NTLMSecurity,\n // ClientSSLSecurity,\n // ClientSSLSecurityPFX\n};","export class Multipart {\n preambleCRLF = true;\n postambleCRLF = true;\n\n build(parts, boundary) {\n const body = [];\n\n function add (part) {\n if (typeof part === 'number') {\n part = part.toString();\n }\n return body.push(part)\n }\n\n if (this.preambleCRLF) {\n add('\\r\\n')\n }\n\n parts.forEach(function (part) {\n let preamble = '--' + boundary + '\\r\\n';\n Object.keys(part).forEach(function (key) {\n if (key === 'body') { return }\n preamble += key + ': ' + part[key] + '\\r\\n'\n });\n preamble += '\\r\\n';\n add(preamble);\n add(part.body);\n add('\\r\\n');\n });\n add('--' + boundary + '--');\n\n if (this.postambleCRLF) {\n add('\\r\\n');\n }\n\n const size = body.map((part) => {\n if (typeof part === 'string') {\n return part.length\n } else {\n return part.byteLength;\n }\n }).reduce((a, b) => a + b, 0);\n\n let uint8array = new Uint8Array(size);\n let i = 0;\n body.forEach((part) => {\n if (typeof part === 'string') {\n for (let j = 0; j < part.length; i++, j++) {\n uint8array[i] = part.charCodeAt(j) & 0xff;\n }\n } else {\n for (let j = 0; j < part.byteLength; i++, j++) {\n uint8array[i] = part[j];\n }\n }\n });\n return uint8array.buffer;\n }\n\n}\n","export class SoapAttachment {\n\n constructor(\n public mimetype: string,\n public contentId: string,\n public name: string,\n public body: any\n ) {\n\n }\n\n static fromFormFiles(files: FileList | File[] = []): Promise<any> {\n if (files instanceof FileList) {\n files = Array.from(files);\n }\n\n const promises = files.map((file: any) => {\n return new Promise(function(resolve) {\n const reader = new FileReader();\n reader.readAsArrayBuffer(file);\n reader.onload = function (e) {\n const arrayBuffer = (e.target as any).result;\n const bytes = new Uint8Array(arrayBuffer);\n const attachment = new SoapAttachment(file.type, file.contentId || file.name, file.name, bytes);\n resolve(attachment);\n }\n });\n });\n\n return Promise.all(promises);\n }\n\n}\n","/*\n * Copyright (c) 2011 Vinay Pulim <vinay@milewise.com>\n * MIT Licensed\n */\n\nimport { HttpClient, HttpResponse } from '@angular/common/http';\nimport * as assert from 'assert';\nimport { findPrefix } from './utils';\nimport * as _ from 'lodash';\nimport uuid4 from 'uuid/v4';\nimport { from, Observable, throwError } from 'rxjs';\nimport { mergeMap, map } from 'rxjs/operators';\nimport { Multipart } from './multipart';\nimport { SoapAttachment } from './soapAttachment';\n\nconst nonIdentifierChars = /[^a-z$_0-9]/i;\n\nexport const Client = function(wsdl, endpoint, options) {\n options = options || {};\n this.wsdl = wsdl;\n this._initializeOptions(options);\n this._initializeServices(endpoint);\n this.httpClient = options.httpClient as HttpClient;\n const promiseOptions: any = { multiArgs: true };\n if (options.overridePromiseSuffix) {\n promiseOptions.suffix = options.overridePromiseSuffix;\n }\n Promise.all([this, promiseOptions]);\n};\n\nClient.prototype.addSoapHeader = function(soapHeader, name, namespace, xmlns) {\n if (!this.soapHeaders) {\n this.soapHeaders = [];\n }\n if (typeof soapHeader === 'object') {\n soapHeader = this.wsdl.objectToXML(soapHeader, name, namespace, xmlns, true);\n }\n return this.soapHeaders.push(soapHeader) - 1;\n};\n\nClient.prototype.changeSoapHeader = function(index, soapHeader, name, namespace, xmlns) {\n if (!this.soapHeaders) {\n this.soapHeaders = [];\n }\n if (typeof soapHeader === 'object') {\n soapHeader = this.wsdl.objectToXML(soapHeader, name, namespace, xmlns, true);\n }\n this.soapHeaders[index] = soapHeader;\n};\n\nClient.prototype.getSoapHeaders = function() {\n return this.soapHeaders;\n};\n\nClient.prototype.clearSoapHeaders = function() {\n this.soapHeaders = null;\n};\n\nClient.prototype.addHttpHeader = function(name, value) {\n if (!this.httpHeaders) {\n this.httpHeaders = {};\n }\n this.httpHeaders[name] = value;\n};\n\nClient.prototype.getHttpHeaders = function() {\n return this.httpHeaders;\n};\n\nClient.prototype.clearHttpHeaders = function() {\n this.httpHeaders = {};\n};\n\nClient.prototype.addBodyAttribute = function(bodyAttribute, name, namespace, xmlns) {\n if (!this.bodyAttributes) {\n this.bodyAttributes = [];\n }\n if (typeof bodyAttribute === 'object') {\n let composition = '';\n Object.getOwnPropertyNames(bodyAttribute).forEach(function(prop, idx, array) {\n composition += ' ' + prop + '=\"' + bodyAttribute[prop] + '\"';\n });\n bodyAttribute = composition;\n }\n if (bodyAttribute.substr(0, 1) !== ' ') bodyAttribute = ' ' + bodyAttribute;\n this.bodyAttributes.push(bodyAttribute);\n};\n\nClient.prototype.getBodyAttributes = function() {\n return this.bodyAttributes;\n};\n\nClient.prototype.clearBodyAttributes = function() {\n this.bodyAttributes = null;\n};\n\nClient.prototype.setEndpoint = function(endpoint) {\n this.endpoint = endpoint;\n this._initializeServices(endpoint);\n};\n\nClient.prototype.describe = function() {\n const types = this.wsdl.definitions.types;\n return this.wsdl.describeServices();\n};\n\nClient.prototype.setSecurity = function(security) {\n this.security = security;\n};\n\nClient.prototype.setSOAPAction = function(SOAPAction) {\n this.SOAPAction = SOAPAction;\n};\n\nClient.prototype._initializeServices = function(endpoint) {\n const definitions = this.wsdl.definitions,\n services = definitions.services;\n for (const name in services) {\n this[name] = this._defineService(services[name], endpoint);\n }\n};\n\nClient.prototype._initializeOptions = function(options) {\n this.streamAllowed = options.stream;\n this.normalizeNames = options.normalizeNames;\n this.wsdl.options.attributesKey = options.attributesKey || 'attributes';\n this.wsdl.options.envelopeKey = options.envelopeKey || 'soap';\n this.wsdl.options.preserveWhitespace = !!options.preserveWhitespace;\n if (options.ignoredNamespaces !== undefined) {\n if (options.ignoredNamespaces.override !== undefined) {\n if (options.ignoredNamespaces.override === true) {\n if (options.ignoredNamespaces.namespaces !== undefined) {\n this.wsdl.options.ignoredNamespaces = options.ignoredNamespaces.namespaces;\n }\n }\n }\n }\n if (options.overrideRootElement !== undefined) {\n this.wsdl.options.overrideRootElement = options.overrideRootElement;\n }\n this.wsdl.options.forceSoap12Headers = !!options.forceSoap12Headers;\n};\n\nClient.prototype._defineService = function(service, endpoint) {\n const ports = service.ports,\n def = {};\n for (const name in ports) {\n def[name] = this._definePort(ports[name], endpoint ? endpoint : ports[name].location);\n }\n return def;\n};\n\nClient.prototype._definePort = function(port, endpoint) {\n const location = endpoint,\n binding = port.binding,\n methods = binding.methods,\n def = {};\n for (const name in methods) {\n def[name] = this._defineMethod(methods[name], location);\n const methodName = this.normalizeNames ? name.replace(nonIdentifierChars, '_') : name;\n this[methodName] = def[name];\n }\n return def;\n};\n\nClient.prototype._defineMethod = function(method, location) {\n const self = this;\n let temp = null;\n return function(args, options, extraHeaders): Observable<any> {\n return self._invoke(method, args, location, options, extraHeaders);\n };\n};\n\nClient.prototype._invoke = function(method, args, location, options, extraHeaders): Observable<any> {\n let self = this,\n name = method.$name,\n input = method.input,\n output = method.output,\n style = method.style,\n defs = this.wsdl.definitions,\n envelopeKey = this.wsdl.options.envelopeKey,\n ns = defs.$targetNamespace,\n encoding = '',\n message = '',\n xml = null,\n req = null,\n soapAction = null,\n alias = findPrefix(defs.xmlns, ns),\n headers: any = {\n 'Content-Type': 'text/xml; charset=utf-8'\n },\n xmlnsSoap = 'xmlns:' + envelopeKey + '=\"http://schemas.xmlsoap.org/soap/envelope/\"';\n\n if (this.wsdl.options.forceSoap12Headers) {\n headers['Content-Type'] = 'application/soap+xml; charset=utf-8';\n xmlnsSoap = 'xmlns:' + envelopeKey + '=\"http://www.w3.org/2003/05/soap-envelope\"';\n }\n\n if (this.SOAPAction) {\n soapAction = this.SOAPAction;\n } else if (method.soapAction !== undefined && method.soapAction !== null) {\n soapAction = method.soapAction;\n } else {\n soapAction = (ns.lastIndexOf('/') !== ns.length - 1 ? ns + '/' : ns) + name;\n }\n\n if (!this.wsdl.options.forceSoap12Headers) {\n headers.SOAPAction = '\"' + soapAction + '\"';\n }\n\n options = options || {};\n\n //Add extra headers\n for (const header in this.httpHeaders) {\n headers[header] = this.httpHeaders[header];\n }\n for (const attr in extraHeaders) {\n headers[attr] = extraHeaders[attr];\n }\n\n // Allow the security object to add headers\n if (self.security && self.security.addHeaders) self.security.addHeaders(headers);\n if (self.security && self.security.addOptions) self.security.addOptions(options);\n\n if (style === 'rpc' && (input.parts || input.name === 'element' || args === null)) {\n assert.ok(!style || style === 'rpc', 'invalid message definition for document style binding');\n message = self.wsdl.objectToRpcXML(name, args, alias, ns, input.name !== 'element');\n method.inputSoap === 'encoded' && (encoding = 'soap:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" ');\n } else {\n assert.ok(!style || style === 'document', 'invalid message definition for rpc style binding');\n // pass `input.$lookupType` if `input.$type` could not be found\n message = self.wsdl.objectToDocumentXML(input.$name, args, input.targetNSAlias, input.targetNamespace, input.$type || input.$lookupType);\n }\n xml =\n '<?xml version=\"1.0\" encoding=\"utf-8\"?>' +\n '<' +\n envelopeKey +\n ':Envelope ' +\n xmlnsSoap +\n ' ' +\n 'xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ' +\n encoding +\n this.wsdl.xmlnsInEnvelope +\n '>' +\n (self.soapHeaders || self.security\n ? '<' +\n envelopeKey +\n ':Header>' +\n (self.soapHeaders ? self.soapHeaders.join('\\n') : '') +\n (self.security && !self.security.postProcess ? self.security.toXML() : '') +\n '</' +\n envelopeKey +\n ':Header>'\n : '') +\n '<' +\n envelopeKey +\n ':Body' +\n (self.bodyAttributes ? self.bodyAttributes.join(' ') : '') +\n (self.security && self.security.postProcess ? ' Id=\"_0\"' : '') +\n '>' +\n message +\n '</' +\n envelopeKey +\n ':Body>' +\n '</' +\n envelopeKey +\n ':Envelope>';\n\n if (self.security && self.security.postProcess) {\n xml = self.security.postProcess(xml, envelopeKey);\n }\n\n if (options && options.postProcess) {\n xml = options.postProcess(xml);\n }\n\n self.lastMessage = message;\n self.lastRequest = xml;\n self.lastEndpoint = location;\n\n const tryJSONparse = function(body) {\n try {\n return JSON.parse(body);\n } catch (err) {\n return undefined;\n }\n };\n\n return from(SoapAttachment.fromFormFiles(options.attachments)).pipe(\n map((soapAttachments: SoapAttachment[]) => {\n if (!soapAttachments.length) {\n return xml;\n }\n\n if (options.forceMTOM || soapAttachments.length > 0) {\n const start = uuid4();\n const boundry = uuid4();\n let action = null;\n if (headers['Content-Type'].indexOf('action') > -1) {\n for (const ct of headers['Content-Type'].split('; ')) {\n if (ct.indexOf('action') > -1) {\n action = ct;\n }\n }\n }\n\n headers['Content-Type'] =\n 'multipart/related; type=\"application/xop+xml\"; start=\"<' + start + '>\"; start-info=\"text/xml\"; boundary=\"' + boundry + '\"';\n if (action) {\n headers['Content-Type'] = headers['Content-Type'] + '; ' + action;\n }\n\n const multipart: any[] = [\n {\n 'Content-Type': 'application/xop+xml; charset=UTF-8; type=\"text/xml\"',\n 'Content-ID': '<' + start + '>',\n body: xml\n }\n ];\n\n soapAttachments.forEach((attachment: SoapAttachment) => {\n multipart.push({\n 'Content-Type': attachment.mimetype + ';',\n 'Content-Transfer-Encoding': 'binary',\n 'Content-ID': '<' + (attachment.contentId || attachment.name) + '>',\n 'Content-Disposition': 'attachment; name=\"' + attachment.name + '\"; filename=\"' + attachment.name + '\"',\n body: attachment.body\n });\n });\n\n return new Multipart().build(multipart, boundry);\n }\n }),\n mergeMap((body: any) =>\n (self.httpClient)\n .post(location, body, {\n headers: headers,\n responseType: 'text',\n observe: 'response'\n })\n .pipe(\n map((response: HttpResponse<any>) => {\n self.lastResponse = response.body;\n self.lastResponseHeaders = response && response.headers;\n return parseSync(response.body, response);\n })\n )\n )\n );\n\n function parseSync(body, response: HttpResponse<any>) {\n let obj;\n try {\n obj = self.wsdl.xmlToObject(body);\n } catch (error) {\n // When the output element cannot be looked up in the wsdl and the body is JSON\n // instead of sending the error, we pass the body in the response.\n if (!output || !output.$lookupTypes) {\n // debug('Response element is not present. Unable to convert response xml to json.');\n // If the response is JSON then return it as-is.\n const json = _.isObject(body) ? body : tryJSONparse(body);\n if (json) {\n return { err: null, response, responseBody: json, header: undefined, xml };\n }\n }\n error.response = response;\n error.body = body;\n // self.emit('soapError', error, eid);\n throw error;\n }\n return finish(obj, body, response);\n }\n\n function finish(obj, responseBody, response) {\n let result = null;\n\n if (!output) {\n // one-way, no output expected\n return { err: null, response: null, responseBody, header: obj.Header, xml };\n }\n\n // If it's not HTML and Soap Body is empty\n if (!obj.html && !obj.Body) {\n return { err: null, obj, responseBody, header: obj.Header, xml };\n }\n\n if (typeof obj.Body !== 'object') {\n const error: any = new Error('Cannot parse response');\n error.response = response;\n error.body = responseBody;\n return { err: error, obj, responseBody, header: undefined, xml };\n }\n\n result = obj.Body[output.$name];\n // RPC/literal response body may contain elements with added suffixes I.E.\n // 'Response', or 'Output', or 'Out'\n // This doesn't necessarily equal the ouput message name. See WSDL 1.1 Section 2.4.5\n if (!result) {\n result = obj.Body[output.$name.replace(/(?:Out(?:put)?|Response)$/, '')];\n }\n if (!result) {\n ['Response', 'Out', 'Output'].forEach(function(term) {\n if (obj.Body.hasOwnProperty(name + term)) {\n return (result = obj.Body[name + term]);\n }\n });\n }\n\n return { err: null, result, responseBody, header: obj.Header, xml };\n }\n};\n\nClient.prototype.call = function(method: string, body: any, options?: any, extraHeaders?: any): Observable<any> {\n // console.log('call', method);\n\n if (!this[method]) {\n return throwError(`Method ${method} not found`);\n }\n\n return (<Function>this[method]).call(this, body, options, extraHeaders);\n};\n","/*\n * Copyright (c) 2011 Vinay Pulim <vinay@milewise.com>\n * MIT Licensed\n */\n\nimport * as wsdl from './wsdl';\nimport { security } from './security/security';\nimport { Client } from './client';\nexport { Client } from './client';\nexport { security } from './security/security';\n\nexport { passwordDigest } from './utils'\nexport const WSDL = wsdl.WSDL;\n\nconst cache = {}; // TODO some caching?\n\nconst getFromCache = async (url, options) => {\n // console.log('Getting from cache', url);\n // console.log('Cache', cache)\n if (cache[url]) {\n // console.log('Found in cache', url);\n return cache[url];\n } else {\n return wsdl.open_wsdl(url, options).then(wsdl => {\n cache[url] = wsdl;\n return wsdl;\n })\n }\n};\n\nasync function _requestWSDL(url, options) {\n if (options.disableCache === true) {\n return wsdl.open_wsdl(url, options);\n } else {\n return getFromCache(url, options);\n }\n}\n\nexport async function createClient(url, options, endpoint): Promise<any> {\n if (typeof options === 'undefined') {\n options = {};\n }\n // console.log(\"createClient\", options)\n endpoint = options.endpoint || endpoint;\n \n const wsdl = await _requestWSDL(url, options);\n const client = new Client(wsdl, endpoint, options);\n return client;\n}\n\nexport const BasicAuthSecurity = security.BasicAuthSecurity;\nexport const NTLMSecurity = security.NTLMSecurity;\nexport const WSSecurity = security.WSSecurity;\n// export const WSSecurityCert = security.WSSecurityCert;\nexport const BearerSecurity = security.BearerSecurity;\n// export const ClientSSLSecurity = security.ClientSSLSecurity;\n// export const ClientSSLSecurityPFX = security.ClientSSLSecurityPFX;\n","import { Injectable } from '@angular/core';\nimport { createClient } from './soap/soap';\nimport { HttpClient } from '@angular/common/http';\nimport { Client } from './soap/interfaces';\n\nexport {\n Client,\n WSDL,\n ISoapMethod,\n ISoapMethodResponse,\n BasicAuthSecurity,\n BearerSecurity,\n // WSSecurityCert,\n WSSecurity,\n NTLMSecurity\n} from './soap/interfaces';\n\nexport { security } from './soap/security/security'\n\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxSoapService {\n\n constructor(private http: HttpClient) { }\n\n createClient(wsdlUrl: string, options: any = {}, endpoint?: string): Promise<Client> {\n options.httpClient = this.http;\n return createClient(wsdlUrl, options, endpoint);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\n\n@NgModule({\n imports: [\n HttpClientModule\n ],\n exports: []\n})\nexport class NgxSoapModule { }\n","/*\n * Public API Surface of ngx-soap\n */\n\nexport * from './lib/ngx-soap.service';\nexport * from './lib/ngx-soap.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["TNS_PREFIX","findPrefix","utils.TNS_PREFIX","utils.findPrefix","assert","WSDL","BasicAuthSecurity","WSSecurity","BearerSecurity","NTLMSecurity","wsdl.WSDL","wsdl.open_wsdl"],"mappings":"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"}