ngx-soap-next
Version:
SOAP service for Angular
1 lines • 248 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/WSSecurityCert.ts","../../../projects/ngx-soap/src/lib/soap/security/WSSecurityCertWithToken.ts","../../../projects/ngx-soap/src/lib/soap/security/WSSecurityPlusCert.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: Map<string, {uri: string, prefix: string, declared: boolean}>;\n constructor(parent: any) {\n if (!(this instanceof NamespaceScope)) {\n return new NamespaceScope(parent);\n }\n this.parent = parent;\n this.namespaces = new Map(); \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.get(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.get(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 (const [prefix, mapping] of this.namespaces) {\n if (mapping.uri === nsUri) {\n return prefix;\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.set(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.set(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';\nimport debugBuilder from 'debug';\n\nconst debug = debugBuilder('ngx-soap:wsdl');\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\nfunction trim(text: string): string {\n return text.trim();\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 // Fallback to include namespace if targetNamespace is missing\n let childInclude = child.includes && child.includes.find(function(e) {\n return e.hasOwnProperty('namespace');\n });\n let childIncludeNs = childInclude && childInclude.namespace;\n let targetNamespace = child.$targetNamespace || (child.includes && child.includes[0] && child.includes[0].namespace) || childIncludeNs;\n\n if (!this.schemas.hasOwnProperty(targetNamespace)) {\n this.schemas[targetNamespace] = child;\n } else {\n // Merge schemas with duplicate namespaces instead of error\n this.schemas[targetNamespace].merge(child);\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 \n // Handle missing message definitions gracefully\n if (!message) {\n debug(`Warning: Message definition '${messageName}' not found in WSDL for operation '${this.$name}'`);\n children.splice(i--, 1);\n continue;\n }\n \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 // Handle both ExtensionElement and RestrictionElement in ComplexContent\n if (child instanceof ExtensionElement || child instanceof RestrictionElement) {\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 \n // Apply element key override if configured (for element renaming)\n if (definitions.options && definitions.options.overrideElementKey && definitions.options.overrideElementKey[name]) {\n name = definitions.options.overrideElementKey[name];\n debug('Element key overridden: %s -> %s', this.$name, name);\n }\n \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 // For element refs, preserve maxOccurs/minOccurs from the referring element\n // If the referring element has maxOccurs/minOccurs, apply array notation\n if (isMany && typeof elem === 'object') {\n // Apply array notation to the referenced element's name\n let refElemName = Object.keys(elem)[0];\n if (refElemName && !refElemName.endsWith('[]')) {\n let refValue = elem[refElemName];\n delete elem[refElemName];\n elem[refElemName + '[]'] = refValue;\n }\n }\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 // Apply maxOccurs/minOccurs from referring element to cached description\n let cachedElem = definitions.descriptions.types[typeName];\n if (isMany && typeof cachedElem === 'object') {\n let refElemName = Object.keys(cachedElem)[0];\n if (refElemName && !refElemName.endsWith('[]')) {\n // Create a new object with array notation\n element = {};\n element[refElemName + '[]'] = cachedElem[refElemName];\n } else {\n element = cachedElem;\n }\n } else {\n element = cachedElem;\n }\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 // Configuration options\n this.options.useEmptyTag = options.useEmptyTag !== undefined ? options.useEmptyTag : false;\n this.options.preserveWhitespace = options.preserveWhitespace !== undefined ? options.preserveWhitespace : false;\n this.options.normalizeNames = options.normalizeNames !== undefined ? options.normalizeNames : false;\n this.options.suppressStack = options.suppressStack !== undefined ? options.suppressStack : false;\n this.options.forceUseSchemaXmlns = options.forceUseSchemaXmlns !== undefined ? options.forceUseSchemaXmlns : false;\n this.options.envelopeKey = options.envelopeKey || 'soap';\n this.options.overridePromiseSuffix = options.overridePromiseSuffix || 'Async';\n\n // Multi-service/multi-port support\n this.options.serviceName = options.serviceName;\n this.options.portName = options.portName;\n\n // Element key override support\n this.options.overrideElementKey = options.overrideElementKey;\n\n // Custom SOAP envelope URL support\n this.options.envelopeSoapUrl = options.envelopeSoapUrl;\n\n // Response encoding support\n this.options.encoding = options.encoding || 'utf-8';\n\n // Custom WSDL cache support\n this.options.wsdlCache = options.wsdlCache;\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\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 const fault = body.Fault;\n let code, string, actor, detail, statusCode;\n\n // SOAP 1.1 Fault\n if (fault.faultcode) {\n code = fault.faultcode && fault.faultcode.$value || fault.faultcode;\n string = fault.faultstring && fault.faultstring.$value || fault.faultstring;\n actor = fault.faultactor && fault.faultactor.$value || fault.faultactor;\n detail = fault.detail && fault.detail.$value || fault.detail;\n statusCode = fault.statusCode;\n }\n // SOAP 1.2 Fault\n else if (fault.Code) {\n code = fault.Code.Value;\n string = fault.Reason && fault.Reason.Text && fault.Reason.Text.$value\n || fault.Reason && fault.Reason.Text\n || '';\n actor = fault.Role;\n detail = fault.Detail;\n statusCode = fault.statusCode;\n }\n\n const error: any = new Error(string || code);\n error.root = root;\n error.Fault = fault;\n error.code = code;\n error.string = string;\n error.actor = actor;\n error.detail = detail;\n error.statusCode = statusCode || 500;\n\n // If returnFault option is enabled, return the fault in the response instead of throwing\n if (self.options.returnFault) {\n debug('SOAP Fault (returnFault=true): %s', string || code);\n return root.Envelope;\n }\n\n debug('SOAP Fault: %s', string || code);\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 // For arrays without schema, pass namespace information as object\n const arrayNsPrefix = {\n current: nonSubNameSpace || nsPrefix,\n parent: ns || nsPrefix\n };\n value = this.objectToXML(child, name, arrayNsPrefix, nsURI, false, null, null, nsContext);\n } else {\n value = this.objectToXML(child, name, nonSubNameSpace || nsPrefix, nsURI, false, null, null, nsContext);\n }\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 // Clone the found object to prevent mutating the original schema\n // This prevents state pollution between multiple requests\n found = _.cloneDeep(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 debug('Parsing WSDL XML, length: %d', xml?.length || 0);\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\n/**\n * Generate a UUID using native crypto API with fallback for non-secure contexts\n * Uses crypto.randomUUID() when available, with fallback for HTTP contexts\n */\nfunction generateUUID(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n // Fallback for non-secure contexts (HTTP)\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\nfunction generateId() {\n return generateUUID().replace(/-/gm, '');\n}\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 // Custom SOAP envelope prefix (e.g., 'SOAP-ENV', 'soapenv')\n this._envelopeKey = options.envelopeKey || 'soap';\n // Custom XML to append to security header (e.g., session tokens)\n this._appendElement = options.appendElement || '';\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 // Use unique ID for timestamp (dynamic UUID generation)\n var timestampId = 'Timestamp-' + generateId();\n timeStampXml = \"<wsu:Timestamp wsu:Id=\\\"\" + timestampId + \"\\\">\" +\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 // Proper spacing after xmlns attributes to prevent xmldom warnings\n // Use envelopeKey for actor/mustUnderstand attributes\n return \"<wsse:Security \" + (this._actor ? this._envelopeKey + \":actor=\\\"\" + this._actor + \"\\\" \" : \"\") +\n (this._mustUnderstand ? this._envelopeKey + \":mustUnderstand=\\\"1\\\" \" : \"\") +\n \"xmlns:wsse=\\\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\\\" \" +\n \"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 this._appendElement +\n \"</wsse:Security>\";\n};\n\n// module.exports = WSSecurity;\n","\"use strict\";\n\n// var fs = require('fs');\n// var path = require('path');\n// var ejs = require('ejs');\n// var SignedXml = require('xml-crypto').SignedXml;\n\nimport { SignedXml } from 'xml-crypto';\n\nlet wsseSecurityHeaderTemplate;\nlet wsseSecurityTokenTemplate;\n\nfunction addMinutes(date, minutes) {\n return new Date(date.getTime() + minutes * 60000);\n}\n\nfunction dateStringForSOAP(date) {\n return date.getUTCFullYear() + '-' + ('0' + (date.getUTCMonth() + 1)).slice(-2) + '-' +\n ('0' + date.getUTCDate()).slice(-2) + 'T' + ('0' + date.getUTCHours()).slice(-2) + \":\" +\n ('0' + date.getUTCMinutes()).slice(-2) + \":\" + ('0' + date.getUTCSeconds()).slice(-2) + \"Z\";\n}\n\nfunction generateCreated() {\n return dateStringForSOAP(new Date());\n}\n\nfunction generateExpires() {\n return dateStringForSOAP(addMinutes(new Date(), 10));\n}\n\nfunction insertStr(src, dst, pos) {\n return [dst.slice(0, pos), src, dst.slice(pos)].join('');\n}\n\n/**\n * Generate a UUID using native crypto API with fallback for non-secure contexts\n */\nfunction generateUUID(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n // Fallback for non-secure contexts (HTTP)\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\nfunction generateId() {\n return generateUUID().replace(/-/gm, '');\n}\n\nexport function WSSecurityCert(privatePEM, publicP12PEM, password, options?) {\n options = options || {};\n \n this.publicP12PEM = publicP12PEM.toString().replace('-----BEGIN CERTIFICATE-----', '').replace('-----END CERTIFICATE-----', '').replace(/(\\r\\n|\\n|\\r)/gm, '');\n\n // Store algorithm options\n this.digestAlgorithm = options.digestAlgorithm || 'sha256';\n this.signatureAlgorithm = options.signatureAlgorithm || 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256';\n \n // Store reference exclusion options\n this.excludeReferencesFromSigning = options.excludeReferencesFromSigning || [];\n \n // Custom XML to append to security header (e.g., custom authentication elements)\n this.appendElement = options.appendElement || '';\n\n this.signer = new SignedXml();\n this.signer.signatureAlgorithm = this.signatureAlgorithm;\n this.signer.canonicalizationAlgorithm = 'http://www.w3.org/2001/10/xml-exc-c14n#';\n this.signer.signingKey = {\n key: privatePEM,\n passphrase: password\n };\n this.x509Id = \"x509-\" + generateId();\n\n var _this = this;\n this.signer.keyInfoProvider = {};\n this.signer.keyInfoProvider.getKeyInfo = function (key) {\n if (!wsseSecurityTokenTemplate) {\n // wsseSecurityTokenTemplate = ejs.compile(fs.readFileSync(path.join(__dirname, 'templates', 'wsse-security-token.ejs')).toString());\n }\n\n // return wsseSecurityTokenTemplate({ x509Id: _this.x509Id });\n return `\n <wsse:SecurityTokenReference>\n <wsse:Reference URI=\"#${this.x509Id}\" ValueType=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3\"/>\n </wsse:SecurityTokenReference>\n `;\n };\n}\n\nWSSecurityCert.prototype.postProcess = function (xml, envelopeKey) {\n this.created = generateCreated();\n this.expires = generateExpires();\n\n if (!wsseSecurityHeaderTemplate) {\n // wsseSecurityHeaderTemplate = ejs.compile(fs.readFileSync(path.join(__dirname, 'templates', 'wsse-security-header.ejs')).toString());\n }\n\n // var secHeader = wsseSecurityHeaderTemplate({\n // binaryToken: this.publicP12PEM,\n // created: this.created,\n // expires: this.expires,\n // id: this.x509Id\n // });\n\n // Build security header with optional custom XML element\n var secHeader = `\n <wsse:Security xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\"\n xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\"\n soap:mustUnderstand=\"1\">\n <wsse:BinarySecurityToken \n EncodingType=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary\" \n ValueType=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3\" \n wsu:Id=\"${this.x509Id}\">${this.publicP12PEM}</wsse:BinarySecurityToken>\n <Timestamp xmlns=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\" Id=\"_1\"> \n <Created>${this.created}</Created>\n <Expires>${this.expires}</Expires>\n </Timestamp>${this.appendElement}\n </wsse:Security>\n `;\n\n var xmlWithSec = insertStr(secHeader, xml, xml.indexOf('</soap:Header>'));\n\n var references = [\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\",\n \"http://www.w3.org/2001/10/xml-exc-c14n#\"];\n\n // Add references conditionally based on excludeReferencesFromSigning option\n const shouldExclude = (refName) => {\n return this.excludeReferencesFromSigning && \n this.excludeReferencesFromSigning.some(excluded => \n refName.toLowerCase().includes(excluded.toLowerCase())\n );\n };\n\n // Use the configured digest algorithm for references\n if (!shouldExclude('Body')) {\n this.signer.addReference({\n xpath: \"//*[name(.)='\" + envelopeKey + \":Body']\",\n transforms: references,\n digestAlgorithm: 'http://www.w3.org/2001/04/xmlenc#' + this.digestAlgorithm\n });\n }\n \n if (!shouldExclude('Timestamp')) {\n this.signer.addReference({\n xpath: \"//*[name(.)='wsse:Security']/*[local-name(.)='Timestamp']\",\n transforms: references,\n digestAlgorithm: 'http://www.w3.org/2001/04/xmlenc#' + this.digestAlgorithm\n });\n }\n\n this.signer.computeSignature(xmlWithSec);\n\n return insertStr(this.signer.getSignatureXml(), xmlWithSec, xmlWithSec.indexOf('</wsse:Security>'));\n};\n\n// module.exports = WSSecurityCert;\n","\"use strict\";\n\nimport { WSSecurity } from './WSSecurity';\nimport { WSSecurityCert } from './WSSecurityCert';\n\n/**\n * WS-Security with both certificate and username token\n * Combines WSSecurityCert with UsernameToken for dual authentication\n * \n * @param privatePEM - Private key in PEM format\n * @param publicP12PEM - Public certificate in P12/PEM format\n * @param password - Certificate password\n * @param options - Additional options\n * @param options.username - Username for token authentication\n * @param options.password - Password for token authentication\n * @param options.passwordType - Type of password encoding ('PasswordText' or 'PasswordDigest')\n * @param options.hasTimeStamp - Include timestamp in security header (default: true)\n * @param options.hasNonce - Include nonce in security header\n * @param options.hasTokenCreated - Include created timestamp in token (default: true)\n * @param options.digestAlgorithm - Digest algorithm for signing (default: 'sha256')\n * @param options.signatureAlgorithm - Signature algorithm for signing\n * @param options.excludeReferencesFromSigning - Array of element names to exclude from signing\n * @param options.appendElement - Custom XML to append to security header\n * @param options.envelopeKey - Custom SOAP envelope prefix (default: 'soap')\n */\nexport function WSSecurityCertWithToken(\n privatePEM: string | Buffer,\n publicP12PEM: string | Buffer,\n password: string,\n options: any\n) {\n options = options || {};\n \n // Initialize certificate security with all supported options\n this.cert = new (WSSecurityCert as any)(privatePEM, publicP12PEM, password, {\n digestAlgorithm: options.digestAlgorithm,\n signatureAlgorithm: options.signatureAlgorithm,\n excludeReferencesFromSigning: options.excludeReferencesFromSigning,\n appendElement: options.appendElement\n });\n \n // Initialize username token security with all supported options\n if (options.username && options.password) {\n this.token = new (WSSecurity as any)(options.username, options.password, {\n passwordType: options.passwordType,\n hasTimeStamp: options.hasTimeStamp,\n hasNonce: options.hasNonce,\n hasTokenCreated: options.hasTokenCreated,\n actor: options.actor,\n mustUnderstand: options.mustUnderstand,\n envelopeKey: options.envelopeKey,\n appendElement: options.appendElement\n });\n }\n}\n\n/**\n * Generate the WS-Security XML header\n * Returns username token XML (certificate is added via postProcess)\n */\nWSSecurityCertWithToken.prototype.toXML = function(): string {\n // Only return username token if provided\n // Certificate security is handled via postProcess\n if (this.token) {\n return this.token.toXML();\n }\n return '';\n};\n\n/**\n * Post-process the SOAP envelope to add signature\n */\nWSSecurityCertWithToken.prototype.postProcess = function(xml: string, envelopeKey: string): string {\n if (this.cert && this.cert.postProcess) {\n return this.cert.postProcess(xml, envelopeKey);\n }\n return xml;\n};\n\n/**\n * Add additional options to the security configuration\n */\nWSSecurityCertWithToken.prototype.addOptions = function(options: any): void {\n if (this.token && options.username) {\n this.token._username = options.username;\n }\n if (this.token && options.password) {\n this.token._password = options.password;\n }\n};\n\n","\"use strict\";\n\nimport { WSSecurity } from './WSSecurity';\nimport { WSSecurityCert } from './WSSecurityCert';\n\n/**\n * Combined WSSecurity and WSSecurityCert\n * Allows using both username token and certificate security together\n * \n * @param wsSecurity - WSSecurity instance for username token\n * @param wsSecurityCert - WSSecurityCert instance for certificate\n */\nexport function WSSecurityPlusCert(\n wsSecurity: any,\n wsSecurityCert: any\n) {\n if (!wsSecurity) {\n throw new Error('WSSecurity instance is required');\n }\n if (!wsSecurityCert) {\n throw new Error('WSSecurityCert instance is required');\n }\n \n this.wsSecurity = wsSecurity;\n this.wsSecurityCert = wsSecurityCert;\n}\n\n/**\n * Generate the WS-Security XML header\n * Returns username token XML (certificate is added via postProcess)\n */\nWSSecurityPlusCert.prototype.toXML = function(): string {\n // Only return WSSecurity (username token)\n // Certificate security is handled via postProcess\n if (this.wsSecurity && this.wsSecurity.toXML) {\n return this.wsSecurity.toXML();\n }\n return '';\n};\n\n/**\n * Post-process the SOAP envelope to add signature\n */\nWSSecurityPlusCert.prototype.postProcess = function(xml: string, envelopeKey: string): string {\n // Apply certificate post-processing if available\n if (this.wsSecurityCert && this.wsSecurityCert.postProcess) {\n return this.wsSecurityCert.postProcess(xml, envelopeKey);\n }\n return xml;\n};\n\n/**\n * Add additional options to both security configurations\n */\nWSSecurityPlusCert.prototype.addOptions = function(options: any): void {\n if (this.wsSecurity && options.username) {\n this.wsSecurity._username = options.username;\n }\n if (this.wsSecurity && options.password) {\n this.wsSecurity._password = options.password;\n }\n};\n\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';\nimport { WSSecurityCert } from './WSSecurityCert';\nimport { WSSecurityCertWithToken } from './WSSecurityCertWithToken';\nimport { WSSecurityPlusCert } from './WSSecurityPlusCert';\nimport { BearerSecurity } from './BearerSecurity';\nimport { NTLMSecurity } from './NTLMSecurity';\n\nexport const security = { \n BasicAuthSecurity,\n BearerSecurity,\n WSSecurity,\n WSSecurityCert,\n WSSecurityCertWithToken,\n WSSecurityPlusCert,\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 { from, Observable, throwError } from 'rxjs';\nimport { mergeMap, map } from 'rxjs/operators';\nimport { Multipart } from './multipart';\nimport { SoapAttachment } from './soapAttachment';\nimport debugBuilder from 'debug';\n\nconst debug = debugBuilder('ngx-soap:client');\n\nconst nonIdentifierChars = /[^a-z$_0-9]/i;\n\n/**\n * Generate a UUID using native crypto API with fallback for non-secure contexts\n */\nfunction generateUUID(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n // Fallback for non-secure contexts (HTTP)\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\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._processSoapHeader = function(soapHeader, name, namespace, xmlns) {\n switch (typeof soapHeader) {\n case 'object':\n return this.wsdl.objectToXML(soapHeader, name, namespace, xmlns, true);\n case 'function':\n const self = this;\n return function() {\n const result = soapHeader.apply(null, arguments);\n if (typeof result === 'object') {\n return self.wsdl.objectToXML(result, name, namespace, xmlns, true);\n }\n return result;\n };\n default:\n return soapHeader;\n }\n};\n\nClient.prototype.addSoapHeader = function(soapHeader, name, namespace, xmlns) {\n if (!this.soapHeaders) {\n this.soapHeaders = [];\n }\n soapHeader = this._processSoapHeader(soapHeader, name, namespace, xmlns);\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 soapHeader = this._processSoapHeader(soapHeader, name, namespace, xmlns);\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 \n // Support selecting specific service from WSDL\n const selectedServiceName = this.wsdl.options.serviceName;\n \n if (selectedServiceName) {\n // Initialize only the selected service\n if (services[selectedServiceName]) {\n this[selectedServiceName] = this._defineService(services[selectedServiceName], endpoint);\n debug('Initialized selected service: %s', selectedServiceName);\n } else {\n debug('Warning: Selected service \"%s\" not found in WSDL. Available services: %s', \n selectedServiceName, Object.keys(services).join(', '));\n }\n } else {\n // Initialize all services (backward compatible)\n for (const name in services) {\n this[name] = this._defineService(services[name], endpoint);\n }\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 \n // Support selecting specific service/port from WSDL\n this.wsdl.options.serviceName = options.serviceName;\n this.wsdl.options.portName = options.portName;\n \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 \n // Support selecting specific port from service\n const selectedPortName = this.wsdl.options.portName;\n \n if (selectedPortName) {\n // Initialize only the selected port\n if (ports[selectedPortName]) {\n def[selectedPortName] = this._definePort(ports[selectedPortName], endpoint ? endpoint : ports[selectedPortName].location);\n debug('Initialized selected port: %s', selectedPortName);\n } else {\n debug('Warning: Selected port \"%s\" not found in service. Available ports: %s', \n selectedPortName, Object.keys(ports).join(', '));\n }\n } else {\n // Initialize all ports (backward compatible)\n for (const name in ports) {\n def[name] = this._definePort(ports[name], endpoint ? endpoint : ports[name].location);\n }\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 // Ensure options is defined\n options = options || {};\n \n // Generate or use provided exchange ID for request tracking\n const eid = options.exchangeId || generateUUID();\n debug('Invoking SOAP method: %s (EID: %s)', method.$name, eid);\n \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 // Support custom SOAP envelope URL\n if (this.wsdl.options.envelopeSoapUrl && !this.wsdl.options.forceSoap12Headers) {\n xmlnsSoap = 'xmlns:' + envelopeKey + '=\"' + this.wsdl.options.envelopeSoapUrl + '\"';\n }\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 = generateUUID();\n const boundry = generateUUID();\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 // Handle empty or null body\n if (!body || typeof body !== 'string' || body.trim().length === 0) {\n debug('Received empty SOAP body');\n if (!output) {\n // One-way operation, no response expected\n return { err: null, response: null, responseBody: body, header: undefined, xml };\n }\n return { err: null, result: {}, responseBody: body, header: undefined, xml };\n }\n\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 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 if (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 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, IOptions } from './soap/interfaces';\n\nexport {\n Client,\n WSDL,\n IOptions,\n IWsdlBaseOptions,\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/**\n * NgxSoapService - SOAP client service for Angular\n * \n * **Backwards Compatible:** Works with Angular 10+ (NgModule or standalone)\n * \n * This service creates SOAP clients from WSDL files and returns Promises for compatibility.\n * The returned Promise can be wrapped in Angular 20+ resource() or used directly.\n * \n * @example Basic usage (works in all Angular versions)\n * ```typescript\n * constructor(private soap: NgxSoapService) {\n * this.soap.createClient('assets/service.wsdl')\n * .then(client => this.client = client)\n * .catch(err => console.error(err));\n * }\n * ```\n * \n * @example Angular 20+ with resource() API\n * ```typescript\n * import { inject, resource } from '@angular/core';\n * \n * private soap = inject(NgxSoapService);\n * \n * soapClient = resource({\n * loader: () => this.soap.createClient('assets/service.wsdl')\n * });\n * ```\n * \n * @example Angular 16+ with signals\n * ```typescript\n * import { inject, signal } from '@angular/core';\n * \n * private soap = inject(NgxSoapService);\n * client = signal<Client | null>(null);\n * \n * constructor() {\n * this.soap.createClient('assets/service.wsdl')\n * .then(client => this.client.set(client));\n * }\n * ```\n * \n * @since 0.10.0\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class NgxSoapService {\n\n constructor(private http: HttpClient) { }\n\n /**\n * Creates a SOAP client from a WSDL URL\n * \n * @param wsdlUrl - URL to the WSDL file (can be relative or absolute)\n * @param options - Optional SOAP client configuration options\n * @param endpoint - Optional endpoint override (overrides WSDL endpoint)\n * @returns Promise that resolves to a SOAP Client\n * \n * @example\n * ```typescript\n * const client = await this.soap.createClient('assets/calculator.wsdl');\n * (client as any).Add({ intA: 1, intB: 2 }).subscribe(result => {\n * console.log(result.AddResult);\n * });\n * ```\n */\n createClient(wsdlUrl: string, options: IOptions = {}, endpoint?: string): Promise<Client> {\n options.httpClient = this.http;\n return createClient(wsdlUrl, options, endpoint);\n }\n}\n","import { NgModule, EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { NgxSoapService } from './ngx-soap.service';\n\n/**\n * Provides NgxSoap services for standalone applications (Angular 14+)\n * \n * **Recommended for Angular 14+ standalone applications**\n * \n * This is the modern approach for Angular 14+ projects using standalone components.\n * Works seamlessly with Angular 20 features like signals, computed(), and resource().\n * \n * @example\n * ```typescript\n * import { bootstrapApplication } from '@angular/platform-browser';\n * import { provideHttpClient } from '@angular/common/http';\n * import { provideNgxSoap } from 'ngx-soap-next';\n * \n * bootstrapApplication(AppComponent, {\n * providers: [\n * provideHttpClient(),\n * provideNgxSoap()\n * ]\n * });\n * ```\n * \n * @since 0.17.0 (Angular 14+)\n */\nexport function provideNgxSoap(): EnvironmentProviders {\n return makeEnvironmentProviders([\n NgxSoapService\n ]);\n}\n\n/**\n * NgxSoapModule for traditional NgModule-based applications\n * \n * **Fully supported for NgModule-based applications (Angular 10+)**\n * \n * Use this module in traditional NgModule-based Angular applications.\n * Both NgModule and standalone approaches are fully supported for backwards compatibility.\n * \n * For new standalone applications, consider using `provideNgxSoap()` instead.\n * \n * @example NgModule-based application\n * ```typescript\n * import { NgModule } from '@angular/core';\n * import { NgxSoapModule } from 'ngx-soap-next';\n * import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\n * \n * @NgModule({\n * imports: [NgxSoapModule],\n * // Or provide HttpClient separately:\n * // providers: [provideHttpClient(withInterceptorsFromDi())]\n * })\n * export class AppModule { }\n * ```\n * \n * @since 0.10.0 (Angular 10+)\n */\n@NgModule({ \n exports: [], \n imports: [], \n providers: [\n NgxSoapService,\n provideHttpClient(withInterceptorsFromDi())\n ] \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","debug","utils.TNS_PREFIX","utils.findPrefix","assert","WSDL","BasicAuthSecurity","generateUUID","generateId","WSSecurity","BearerSecurity","NTLMSecurity","wsdl.WSDL","wsdl.open_wsdl"],"mappings":"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"}