Файловый менеджер - Редактировать - /home/freeclou/app.optimyar.com/front-web/build/assets/fonts/iran-yekan/MobileFonts/wgdpf7/wsdl.zip
Назад
PK F�i[�M��$ �$ elements.d.tsnu �Iw�� import { IWsdlBaseOptions } from '../types'; export interface IWsdlXmlns { wsu?: string; wsp?: string; wsam?: string; soap?: string; tns?: string; xsd?: string; __tns__?: string; [prop: string]: string | void; } export interface IXmlNs { [key: string]: string; } export declare class Element { readonly allowedChildren?: { [k: string]: typeof Element; }; $name?: string; $targetNamespace?: any; children: Element[]; ignoredNamespaces: any; name?: string; nsName?: any; prefix?: string; schemaXmlns?: any; valueKey: string; xmlKey: any; xmlns?: IXmlNs; constructor(nsName: string, attrs: any, options?: IWsdlBaseOptions, schemaAttrs?: any); deleteFixedAttrs(): void; startElement(stack: Element[], nsName: string, attrs: any, options: IWsdlBaseOptions, schemaXmlns: any): void; endElement(stack: Element[], nsName: string): void; addChild(child: Element): void; unexpected(name: string): void; description(definitions?: DefinitionsElement, xmlns?: IXmlNs): any; init(): void; private _initializeOptions; } export declare class ElementElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; $minOccurs?: string; $maxOccurs?: string; $type?: string; $ref?: string; targetNSAlias?: string; targetNamespace?: string; $lookupType?: string; $lookupTypes?: any[]; description(definitions: DefinitionsElement, xmlns?: IXmlNs): {}; } export declare class AnyElement extends Element { } export declare class InputElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; use: string; encodingStyle: string; $type: string; $lookupType: string; targetNSAlias?: string; targetNamespace?: string; parts?: any; addChild(child: Element): void; } export declare class OutputElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; targetNSAlias?: string; targetNamespace?: string; use?: string; encodingStyle?: string; $lookupTypes: any; addChild(child: Element): void; } export declare class SimpleTypeElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; description(definitions: DefinitionsElement): {}; } export declare class RestrictionElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; $base: string; description(definitions?: DefinitionsElement, xmlns?: IXmlNs): any; } export declare class ExtensionElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; $base: string; description(definitions: DefinitionsElement, xmlns?: IXmlNs): {}; } export declare class ChoiceElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; description(definitions: DefinitionsElement, xmlns: IXmlNs): {}; } export declare class EnumerationElement extends Element { description(): string; } export declare class ComplexTypeElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; description(definitions: DefinitionsElement, xmlns: IXmlNs): {}; } export declare class ComplexContentElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; description(definitions: DefinitionsElement, xmlns: IXmlNs): {}; } export declare class SimpleContentElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; description(definitions: DefinitionsElement, xmlns: IXmlNs): {}; } export declare class SequenceElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; description(definitions: DefinitionsElement, xmlns: IXmlNs): {}; } export declare class AllElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; description(definitions: DefinitionsElement, xmlns: IXmlNs): {}; } export declare class MessageElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; element: ElementElement; parts: any; postProcess(definitions: DefinitionsElement): void; description(definitions: DefinitionsElement): {}; /** * Takes a given namespaced String(for example: 'alias:property') and creates a lookupType * object for further use in as first (lookup) `parameterTypeObj` within the `objectToXML` * method and provides an entry point for the already existing code in `findChildSchemaObject`. * * @method _createLookupTypeObject * @param {String} nsString The NS String (for example "alias:type"). * @param {Object} xmlns The fully parsed `wsdl` definitions object (including all schemas). * @returns {Object} * @private */ private _createLookupTypeObject; /** * Iterates through the element and every nested child to find any defined `$type` * property and returns it in a underscore ('_') separated String (using '^' as default * value if no `$type` property was found). * * @method _getNestedLookupTypeString * @param {Object} element The element which (probably) contains nested `$type` values. * @returns {String} * @private */ private _getNestedLookupTypeString; } export declare class DocumentationElement extends Element { } export interface IInclude { namespace: string; location: string; } export declare class SchemaElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; complexTypes: { [name: string]: ComplexTypeElement; }; types: { [name: string]: SimpleTypeElement; }; elements: { [name: string]: ElementElement; }; includes: IInclude[]; $elementFormDefault: any; merge(source: SchemaElement): this; addChild(child: Element): void; } export declare class TypesElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; schemas: { [name: string]: SchemaElement; }; addChild(child: any): void; } export declare class OperationElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; input: InputElement; output: OutputElement; inputSoap: any; outputSoap: any; style: string; soapAction: string; $soapAction?: string; $style?: string; addChild(child: any): void; postProcess(definitions: DefinitionsElement, tag: string): void; description(definitions: DefinitionsElement): { input: any; output: any; }; } export declare class PortTypeElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; methods: { [name: string]: OperationElement; }; postProcess(definitions: DefinitionsElement): void; description(definitions: DefinitionsElement): {}; } export interface ITopElement { methodName: string; outputName: string; } export interface ITopElements { [name: string]: ITopElement; } export declare class BindingElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; topElements?: ITopElements; transport: string; style: string; methods: { [name: string]: OperationElement; }; $type?: string; addChild(child: any): void; postProcess(definitions: DefinitionsElement): void; description(definitions: DefinitionsElement): {}; } export declare class PortElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; location: any; addChild(child: any): void; } export interface IPort { location: string; binding: BindingElement; } export declare class ServiceElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; ports: { [name: string]: IPort; }; postProcess(definitions: DefinitionsElement): void; description(definitions: DefinitionsElement): {}; } export declare class DefinitionsElement extends Element { readonly allowedChildren: { [k: string]: typeof Element; }; complexTypes: any; messages: { [name: string]: MessageElement; }; portTypes: { [name: string]: PortTypeElement; }; bindings: { [name: string]: BindingElement; }; services: { [name: string]: ServiceElement; }; schemas: { [name: string]: SchemaElement; }; descriptions: { types: { [key: string]: Element; }; elements: { [key: string]: Element; }; }; init(): void; addChild(child: any): void; } export declare class BodyElement extends Element { $use?: string; $encodingStyle?: string; } export declare class IncludeElement extends Element { $schemaLocation?: any; $location?: any; $namespace?: any; } export declare class ImportElement extends Element { $schemaLocation?: any; $location?: any; $namespace?: any; } PK F�i[�0��x� x� elements.jsnu �Iw�� "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ImportElement = exports.IncludeElement = exports.BodyElement = exports.DefinitionsElement = exports.ServiceElement = exports.PortElement = exports.BindingElement = exports.PortTypeElement = exports.OperationElement = exports.TypesElement = exports.SchemaElement = exports.DocumentationElement = exports.MessageElement = exports.AllElement = exports.SequenceElement = exports.SimpleContentElement = exports.ComplexContentElement = exports.ComplexTypeElement = exports.EnumerationElement = exports.ChoiceElement = exports.ExtensionElement = exports.RestrictionElement = exports.SimpleTypeElement = exports.OutputElement = exports.InputElement = exports.AnyElement = exports.ElementElement = exports.Element = void 0; const assert_1 = require("assert"); const debugBuilder = require("debug"); const _ = require("lodash"); const utils_1 = require("../utils"); const debug = debugBuilder('node-soap'); const Primitives = { string: 1, boolean: 1, decimal: 1, float: 1, double: 1, anyType: 1, byte: 1, int: 1, long: 1, short: 1, negativeInteger: 1, nonNegativeInteger: 1, positiveInteger: 1, nonPositiveInteger: 1, unsignedByte: 1, unsignedInt: 1, unsignedLong: 1, unsignedShort: 1, duration: 0, dateTime: 0, time: 0, date: 0, gYearMonth: 0, gYear: 0, gMonthDay: 0, gDay: 0, gMonth: 0, hexBinary: 0, base64Binary: 0, anyURI: 0, QName: 0, NOTATION: 0, }; class Element { constructor(nsName, attrs, options, schemaAttrs) { this.allowedChildren = {}; this.children = []; const parts = (0, utils_1.splitQName)(nsName); this.nsName = nsName; this.prefix = parts.prefix; this.name = parts.name; this.children = []; this.xmlns = {}; this.schemaXmlns = {}; this._initializeOptions(options); for (const key in attrs) { const match = /^xmlns:?(.*)$/.exec(key); if (match) { this.xmlns[match[1] ? match[1] : utils_1.TNS_PREFIX] = attrs[key]; } else { if (key === 'value') { this[this.valueKey] = attrs[key]; } else { this['$' + key] = attrs[key]; } } } for (const schemaKey in schemaAttrs) { const schemaMatch = /^xmlns:?(.*)$/.exec(schemaKey); if (schemaMatch && schemaMatch[1]) { this.schemaXmlns[schemaMatch[1]] = schemaAttrs[schemaKey]; } } if (this.$targetNamespace !== undefined) { // Add targetNamespace to the mapping this.xmlns[utils_1.TNS_PREFIX] = this.$targetNamespace; } this.init(); } deleteFixedAttrs() { this.children && this.children.length === 0 && delete this.children; this.xmlns && Object.keys(this.xmlns).length === 0 && delete this.xmlns; delete this.nsName; delete this.prefix; delete this.name; } startElement(stack, nsName, attrs, options, schemaXmlns) { if (!this.allowedChildren) { return; } const ChildClass = this.allowedChildren[(0, utils_1.splitQName)(nsName).name]; if (ChildClass) { const child = new ChildClass(nsName, attrs, options, schemaXmlns); child.init(); stack.push(child); } else { this.unexpected(nsName); } } endElement(stack, nsName) { if (this.nsName === nsName) { if (stack.length < 2) { return; } const parent = stack[stack.length - 2]; if (this !== stack[0]) { _.defaultsDeep(stack[0].xmlns, this.xmlns); // delete this.xmlns; parent.children.push(this); parent.addChild(this); } stack.pop(); } } addChild(child) { return; } unexpected(name) { throw new Error('Found unexpected element (' + name + ') inside ' + this.nsName); } description(definitions, xmlns) { return this.$name || this.name; } init() { } _initializeOptions(options) { if (options) { this.valueKey = options.valueKey || '$value'; this.xmlKey = options.xmlKey || '$xml'; this.ignoredNamespaces = options.ignoredNamespaces || []; } else { this.valueKey = '$value'; this.xmlKey = '$xml'; this.ignoredNamespaces = []; } } } exports.Element = Element; class ElementElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'annotation', 'complexType', 'simpleType', ]); } description(definitions, xmlns) { let element = {}; let name = this.$name; // Check minOccurs / maxOccurs attributes to see if this element is a list // These are default values for an element let minOccurs = 1; let maxOccurs = 1; if (this.$maxOccurs === 'unbounded') { maxOccurs = Infinity; } else if (Boolean(this.$maxOccurs)) { maxOccurs = parseInt(this.$maxOccurs, 10); } if (Boolean(this.$minOccurs)) { minOccurs = parseInt(this.$minOccurs, 10); } const isMany = maxOccurs > 1; if (isMany) { name += '[]'; } if (xmlns && xmlns[utils_1.TNS_PREFIX]) { this.$targetNamespace = xmlns[utils_1.TNS_PREFIX]; } let type = this.$type || this.$ref; if (type) { type = (0, utils_1.splitQName)(type); const typeName = type.name; const ns = xmlns && xmlns[type.prefix] || ((definitions.xmlns[type.prefix] !== undefined || definitions.xmlns[this.targetNSAlias] !== undefined) && this.schemaXmlns[type.prefix]) || definitions.xmlns[type.prefix]; const schema = definitions.schemas[ns]; const typeElement = schema && (this.$type ? schema.complexTypes[typeName] || schema.types[typeName] : schema.elements[typeName]); const typeStorage = this.$type ? definitions.descriptions.types : definitions.descriptions.elements; if (ns && definitions.schemas[ns]) { xmlns = definitions.schemas[ns].xmlns; } if (typeElement && !(typeName in Primitives)) { if (!(typeName in typeStorage)) { let elem = {}; typeStorage[typeName] = elem; const description = typeElement.description(definitions, xmlns); if (typeof description === 'string') { elem = description; } else { Object.keys(description).forEach((key) => { elem[key] = description[key]; }); } if (this.$ref) { element = elem; } else { element[name] = elem; } if (typeof elem === 'object') { elem.targetNSAlias = type.prefix; elem.targetNamespace = ns; } typeStorage[typeName] = elem; } else { if (this.$ref) { element = typeStorage[typeName]; } else { element[name] = typeStorage[typeName]; } } } else { element[name] = this.$type; } } else { const children = this.children; element[name] = {}; for (const child of children) { if (child instanceof ComplexTypeElement || child instanceof SimpleTypeElement) { element[name] = child.description(definitions, xmlns); } } } return element; } } exports.ElementElement = ElementElement; class AnyElement extends Element { } exports.AnyElement = AnyElement; class InputElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'body', 'documentation', 'header', 'SecuritySpecRef', ]); } addChild(child) { if (child instanceof BodyElement) { this.use = child.$use; if (this.use === 'encoded') { this.encodingStyle = child.$encodingStyle; } this.children.pop(); } } } exports.InputElement = InputElement; class OutputElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'body', 'documentation', 'header', 'SecuritySpecRef', ]); } addChild(child) { if (child instanceof BodyElement) { this.use = child.$use; if (this.use === 'encoded') { this.encodingStyle = child.$encodingStyle; } this.children.pop(); } } } exports.OutputElement = OutputElement; class SimpleTypeElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'restriction', ]); } description(definitions) { for (const child of this.children) { if (child instanceof RestrictionElement) { return [this.$name, child.description()].filter(Boolean).join('|'); } } return {}; } } exports.SimpleTypeElement = SimpleTypeElement; class RestrictionElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'all', 'choice', 'enumeration', 'sequence', ]); } description(definitions, xmlns) { const children = this.children; let desc; for (let i = 0, child; child = children[i]; i++) { if (child instanceof SequenceElement || child instanceof ChoiceElement) { desc = child.description(definitions, xmlns); break; } } if (desc && this.$base) { const type = (0, utils_1.splitQName)(this.$base); const typeName = type.name; const ns = xmlns && xmlns[type.prefix] || definitions.xmlns[type.prefix]; const schema = definitions.schemas[ns]; const typeElement = schema && (schema.complexTypes[typeName] || schema.types[typeName] || schema.elements[typeName]); desc.getBase = () => { return typeElement.description(definitions, schema.xmlns); }; return desc; } // then simple element const base = this.$base ? this.$base + '|' : ''; const restrictions = this.children.map((child) => { return child.description(); }).join(','); return [this.$base, restrictions].filter(Boolean).join('|'); } } exports.RestrictionElement = RestrictionElement; class ExtensionElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'all', 'choice', 'sequence', ]); } description(definitions, xmlns) { let desc = {}; for (const child of this.children) { if (child instanceof SequenceElement || child instanceof ChoiceElement) { desc = child.description(definitions, xmlns); } } if (this.$base) { const type = (0, utils_1.splitQName)(this.$base); const typeName = type.name; const ns = xmlns && xmlns[type.prefix] || definitions.xmlns[type.prefix]; const schema = definitions.schemas[ns]; if (typeName in Primitives) { return this.$base; } else { const typeElement = schema && (schema.complexTypes[typeName] || schema.types[typeName] || schema.elements[typeName]); if (typeElement) { const base = typeElement.description(definitions, schema.xmlns); desc = typeof base === 'string' ? base : _.defaults(base, desc); } } } return desc; } } exports.ExtensionElement = ExtensionElement; class ChoiceElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'any', 'choice', 'element', 'sequence', ]); } description(definitions, xmlns) { const choice = {}; for (const child of this.children) { const description = child.description(definitions, xmlns); for (const key in description) { choice[key] = description[key]; } } return choice; } } exports.ChoiceElement = ChoiceElement; class EnumerationElement extends Element { // no children description() { return this[this.valueKey]; } } exports.EnumerationElement = EnumerationElement; class ComplexTypeElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'all', 'annotation', 'choice', 'complexContent', 'sequence', 'simpleContent', ]); } description(definitions, xmlns) { const children = this.children || []; for (const child of children) { if (child instanceof ChoiceElement || child instanceof SequenceElement || child instanceof AllElement || child instanceof SimpleContentElement || child instanceof ComplexContentElement) { return child.description(definitions, xmlns); } } return {}; } } exports.ComplexTypeElement = ComplexTypeElement; class ComplexContentElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'extension', ]); } description(definitions, xmlns) { for (const child of this.children) { if (child instanceof ExtensionElement) { return child.description(definitions, xmlns); } } return {}; } } exports.ComplexContentElement = ComplexContentElement; class SimpleContentElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'extension', ]); } description(definitions, xmlns) { for (const child of this.children) { if (child instanceof ExtensionElement) { return child.description(definitions, xmlns); } } return {}; } } exports.SimpleContentElement = SimpleContentElement; class SequenceElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'any', 'choice', 'element', 'sequence', ]); } description(definitions, xmlns) { const sequence = {}; for (const child of this.children) { if (child instanceof AnyElement) { continue; } const description = child.description(definitions, xmlns); for (const key in description) { sequence[key] = description[key]; } } return sequence; } } exports.SequenceElement = SequenceElement; class AllElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'choice', 'element', ]); } description(definitions, xmlns) { const sequence = {}; for (const child of this.children) { if (child instanceof AnyElement) { continue; } const description = child.description(definitions, xmlns); for (const key in description) { sequence[key] = description[key]; } } return sequence; } } exports.AllElement = AllElement; class MessageElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'part', 'documentation', ]); this.element = null; this.parts = null; } postProcess(definitions) { let part = null; const children = this.children || []; for (const child of children) { if (child.name === 'part') { part = child; break; } } if (!part) { return; } if (part.$element) { let lookupTypes = []; delete this.parts; const nsName = (0, utils_1.splitQName)(part.$element); const ns = nsName.prefix; let schema = definitions.schemas[definitions.xmlns[ns]]; this.element = schema.elements[nsName.name]; if (!this.element) { debug(nsName.name + ' is not present in wsdl and cannot be processed correctly.'); return; } this.element.targetNSAlias = ns; this.element.targetNamespace = definitions.xmlns[ns]; // set the optional $lookupType to be used within `client#_invoke()` when // calling `wsdl#objectToDocumentXML() this.element.$lookupType = part.$element; const elementChildren = this.element.children; // get all nested lookup types (only complex types are followed) if (elementChildren.length > 0) { for (const child of elementChildren) { lookupTypes.push(this._getNestedLookupTypeString(child)); } } // if nested lookup types where found, prepare them for furter usage if (lookupTypes.length > 0) { lookupTypes = lookupTypes. join('_'). split('_'). filter(function removeEmptyLookupTypes(type) { return type !== '^'; }); const schemaXmlns = definitions.schemas[this.element.targetNamespace].xmlns; for (let i = 0; i < lookupTypes.length; i++) { lookupTypes[i] = this._createLookupTypeObject(lookupTypes[i], schemaXmlns); } } this.element.$lookupTypes = lookupTypes; if (this.element.$type) { const type = (0, utils_1.splitQName)(this.element.$type); const typeNs = schema.xmlns && schema.xmlns[type.prefix] || definitions.xmlns[type.prefix]; if (typeNs) { if (type.name in Primitives) { // this.element = this.element.$type; } else { // first check local mapping of ns alias to namespace schema = definitions.schemas[typeNs]; const ctype = schema.complexTypes[type.name] || schema.types[type.name] || schema.elements[type.name]; if (ctype) { this.parts = ctype.description(definitions, schema.xmlns); } } } } else { const method = this.element.description(definitions, schema.xmlns); this.parts = method[nsName.name]; } this.children.splice(0, 1); } else { // rpc encoding this.parts = {}; delete this.element; for (let i = 0; part = this.children[i]; i++) { if (part.name === 'documentation') { // <wsdl:documentation can be present under <wsdl:message> continue; } (0, assert_1.ok)(part.name === 'part', 'Expected part element'); const nsName = (0, utils_1.splitQName)(part.$type); const ns = definitions.xmlns[nsName.prefix]; const type = nsName.name; const schemaDefinition = definitions.schemas[ns]; if (typeof schemaDefinition !== 'undefined') { this.parts[part.$name] = definitions.schemas[ns].types[type] || definitions.schemas[ns].complexTypes[type]; } else { this.parts[part.$name] = part.$type; } if (typeof this.parts[part.$name] === 'object') { this.parts[part.$name].prefix = nsName.prefix; this.parts[part.$name].xmlns = ns; } this.children.splice(i--, 1); } } this.deleteFixedAttrs(); } description(definitions) { if (this.element) { return this.element && this.element.description(definitions); } const desc = {}; desc[this.$name] = this.parts; return desc; } /** * Takes a given namespaced String(for example: 'alias:property') and creates a lookupType * object for further use in as first (lookup) `parameterTypeObj` within the `objectToXML` * method and provides an entry point for the already existing code in `findChildSchemaObject`. * * @method _createLookupTypeObject * @param {String} nsString The NS String (for example "alias:type"). * @param {Object} xmlns The fully parsed `wsdl` definitions object (including all schemas). * @returns {Object} * @private */ _createLookupTypeObject(nsString, xmlns) { const splittedNSString = (0, utils_1.splitQName)(nsString); const nsAlias = splittedNSString.prefix; const splittedName = splittedNSString.name.split('#'); const type = splittedName[0]; const name = splittedName[1]; return { $namespace: xmlns[nsAlias], $type: nsAlias + ':' + type, $name: name, }; } /** * Iterates through the element and every nested child to find any defined `$type` * property and returns it in a underscore ('_') separated String (using '^' as default * value if no `$type` property was found). * * @method _getNestedLookupTypeString * @param {Object} element The element which (probably) contains nested `$type` values. * @returns {String} * @private */ _getNestedLookupTypeString(element) { let resolvedType = '^'; const excluded = this.ignoredNamespaces.concat('xs'); // do not process $type values wich start with if (element.hasOwnProperty('$type') && typeof element.$type === 'string') { if (excluded.indexOf(element.$type.split(':')[0]) === -1) { resolvedType += ('_' + element.$type + '#' + element.$name); } } if (element.children.length > 0) { element.children.forEach((child) => { const resolvedChildType = this._getNestedLookupTypeString(child).replace(/\^_/, ''); if (resolvedChildType && typeof resolvedChildType === 'string') { resolvedType += ('_' + resolvedChildType); } }); } return resolvedType; } } exports.MessageElement = MessageElement; class DocumentationElement extends Element { } exports.DocumentationElement = DocumentationElement; class SchemaElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'complexType', 'element', 'import', 'include', 'simpleType', ]); this.complexTypes = {}; this.types = {}; this.elements = {}; this.includes = []; } merge(source) { (0, assert_1.ok)(source instanceof SchemaElement); _.merge(this.complexTypes, source.complexTypes); _.merge(this.types, source.types); _.merge(this.elements, source.elements); _.merge(this.xmlns, source.xmlns); // Merge attributes from source without overwriting our's _.merge(this, _.pickBy(source, (value, key) => { return key.startsWith('$') && !this.hasOwnProperty(key); })); return this; } addChild(child) { if (child.$name in Primitives) { return; } if (child instanceof IncludeElement || child instanceof ImportElement) { const location = child.$schemaLocation || child.$location; if (location) { this.includes.push({ namespace: child.$namespace || child.$targetNamespace || this.$targetNamespace, location: location, }); } } else if (child instanceof ComplexTypeElement) { this.complexTypes[child.$name] = child; } else if (child instanceof ElementElement) { this.elements[child.$name] = child; } else if (child instanceof SimpleTypeElement) { this.types[child.$name] = child; } this.children.pop(); // child.deleteFixedAttrs(); } } exports.SchemaElement = SchemaElement; class TypesElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'documentation', 'schema', ]); this.schemas = {}; } // fix#325 addChild(child) { (0, assert_1.ok)(child instanceof SchemaElement); const targetNamespace = child.$targetNamespace || child.includes[0]?.namespace; if (!this.schemas.hasOwnProperty(targetNamespace)) { this.schemas[targetNamespace] = child; } else { console.error('Target-Namespace "' + targetNamespace + '" already in use by another Schema!'); } } } exports.TypesElement = TypesElement; class OperationElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'documentation', 'fault', 'input', 'operation', 'output', ]); this.input = null; this.output = null; this.inputSoap = null; this.outputSoap = null; this.style = ''; this.soapAction = ''; } addChild(child) { if (child instanceof OperationElement) { this.soapAction = child.$soapAction || ''; this.style = child.$style || ''; this.children.pop(); } } postProcess(definitions, tag) { const children = this.children; for (let i = 0, child; child = children[i]; i++) { if (child.name !== 'input' && child.name !== 'output') { continue; } if (tag === 'binding') { this[child.name] = child; children.splice(i--, 1); continue; } const messageName = (0, utils_1.splitQName)(child.$message).name; const message = definitions.messages[messageName]; message.postProcess(definitions); if (message.element) { definitions.messages[message.element.$name] = message; this[child.name] = message.element; } else { this[child.name] = message; } children.splice(i--, 1); } this.deleteFixedAttrs(); } description(definitions) { const inputDesc = this.input ? this.input.description(definitions) : null; const outputDesc = this.output ? this.output.description(definitions) : null; return { input: inputDesc && inputDesc[Object.keys(inputDesc)[0]], output: outputDesc && outputDesc[Object.keys(outputDesc)[0]], }; } } exports.OperationElement = OperationElement; class PortTypeElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'documentation', 'operation', ]); this.methods = {}; } postProcess(definitions) { const children = this.children; if (typeof children === 'undefined') { return; } for (let i = 0, child; child = children[i]; i++) { if (child.name !== 'operation') { continue; } child.postProcess(definitions, 'portType'); this.methods[child.$name] = child; children.splice(i--, 1); } delete this.$name; this.deleteFixedAttrs(); } description(definitions) { const methods = {}; for (const name in this.methods) { const method = this.methods[name]; methods[name] = method.description(definitions); } return methods; } } exports.PortTypeElement = PortTypeElement; class BindingElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'binding', 'documentation', 'operation', 'SecuritySpec', ]); this.transport = ''; this.style = ''; this.methods = {}; } addChild(child) { if (child.name === 'binding') { this.transport = child.$transport; this.style = child.$style; this.children.pop(); } } postProcess(definitions) { const type = (0, utils_1.splitQName)(this.$type).name; const portType = definitions.portTypes[type]; const style = this.style; const children = this.children; if (portType) { portType.postProcess(definitions); this.methods = portType.methods; for (let i = 0, child; child = children[i]; i++) { if (child.name !== 'operation') { continue; } child.postProcess(definitions, 'binding'); children.splice(i--, 1); child.style || (child.style = style); const method = this.methods[child.$name]; if (method) { method.style = child.style; method.soapAction = child.soapAction; method.inputSoap = child.input || null; method.outputSoap = child.output || null; method.inputSoap && method.inputSoap.deleteFixedAttrs(); method.outputSoap && method.outputSoap.deleteFixedAttrs(); } } } delete this.$name; delete this.$type; this.deleteFixedAttrs(); } description(definitions) { const methods = {}; for (const name in this.methods) { const method = this.methods[name]; methods[name] = method.description(definitions); } return methods; } } exports.BindingElement = BindingElement; class PortElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'address', 'documentation', ]); this.location = null; } addChild(child) { if (child.name === 'address' && typeof (child.$location) !== 'undefined') { this.location = child.$location; } } } exports.PortElement = PortElement; class ServiceElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'documentation', 'port', ]); this.ports = {}; } postProcess(definitions) { const children = this.children; const bindings = definitions.bindings; if (children && children.length > 0) { for (let i = 0, child; child = children[i]; i++) { if (child.name !== 'port') { continue; } const bindingName = (0, utils_1.splitQName)(child.$binding).name; const binding = bindings[bindingName]; if (binding) { binding.postProcess(definitions); this.ports[child.$name] = { location: child.location, binding: binding, }; children.splice(i--, 1); } } } delete this.$name; this.deleteFixedAttrs(); } description(definitions) { const ports = {}; for (const name in this.ports) { const port = this.ports[name]; ports[name] = port.binding.description(definitions); } return ports; } } exports.ServiceElement = ServiceElement; class DefinitionsElement extends Element { constructor() { super(...arguments); this.allowedChildren = buildAllowedChildren([ 'binding', 'documentation', 'import', 'message', 'portType', 'service', 'types', ]); this.messages = {}; this.portTypes = {}; this.bindings = {}; this.services = {}; this.schemas = {}; this.descriptions = { types: {}, elements: {}, }; } init() { if (this.name !== 'definitions') { this.unexpected(this.nsName); } } addChild(child) { if (child instanceof TypesElement) { // Merge types.schemas into definitions.schemas _.merge(this.schemas, child.schemas); } else if (child instanceof MessageElement) { this.messages[child.$name] = child; } else if (child.name === 'import') { const schemaElement = new SchemaElement(child.$namespace, {}); schemaElement.init(); this.schemas[child.$namespace] = schemaElement; this.schemas[child.$namespace].addChild(child); } else if (child instanceof PortTypeElement) { this.portTypes[child.$name] = child; } else if (child instanceof BindingElement) { if (child.transport === 'http://schemas.xmlsoap.org/soap/http' || child.transport === 'http://www.w3.org/2003/05/soap/bindings/HTTP/') { this.bindings[child.$name] = child; } } else if (child instanceof ServiceElement) { this.services[child.$name] = child; } else if (child instanceof DocumentationElement) { } this.children.pop(); } } exports.DefinitionsElement = DefinitionsElement; class BodyElement extends Element { } exports.BodyElement = BodyElement; class IncludeElement extends Element { } exports.IncludeElement = IncludeElement; class ImportElement extends Element { } exports.ImportElement = ImportElement; const ElementTypeMap = { // group: [GroupElement, 'element group'], all: AllElement, any: AnyElement, binding: BindingElement, body: BodyElement, choice: ChoiceElement, complexContent: ComplexContentElement, complexType: ComplexTypeElement, definitions: DefinitionsElement, documentation: DocumentationElement, element: ElementElement, enumeration: EnumerationElement, extension: ExtensionElement, fault: Element, import: ImportElement, include: IncludeElement, input: InputElement, message: MessageElement, operation: OperationElement, output: OutputElement, port: PortElement, portType: PortTypeElement, restriction: RestrictionElement, schema: SchemaElement, sequence: SequenceElement, service: ServiceElement, simpleContent: SimpleContentElement, simpleType: SimpleTypeElement, types: TypesElement, }; function buildAllowedChildren(elementList) { const rtn = {}; for (const element of elementList) { rtn[element.replace(/^_/, '')] = ElementTypeMap[element] || Element; } return rtn; } //# sourceMappingURL=elements.js.mapPK F�i[W�1Xu Xu elements.js.mapnu �Iw�� {"version":3,"file":"elements.js","sourceRoot":"","sources":["../../src/wsdl/elements.ts"],"names":[],"mappings":"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"}PK F�i[�q@�� � index.d.tsnu �Iw�� import * as sax from 'sax'; import { NamespaceContext } from '../nscontext'; import { IOptions } from '../types'; import * as elements from './elements'; interface IInitializedOptions extends IOptions { ignoredNamespaces?: string[]; } export declare class WSDL { ignoredNamespaces: string[]; ignoreBaseNameSpaces: boolean; valueKey: string; xmlKey: string; xmlnsInEnvelope: string; xmlnsInHeader: string; uri: string; definitions: elements.DefinitionsElement; options: IInitializedOptions; private callback; private services; private xml; private _includesWsdl; private _originalIgnoredNamespaces; constructor(definition: any, uri: string, options: IOptions); onReady(callback: (err: Error) => void): void; processIncludes(callback: any): void; describeServices(): {}; toXML(): string; getSaxStream(xml: any): sax.SAXStream; xmlToObject(xml: any, callback?: any): any; /** * Look up a XSD type or element by namespace URI and name * @param {String} nsURI Namespace URI * @param {String} qname Local or qualified name * @returns {*} The XSD type/element definition */ findSchemaObject(nsURI: string, qname: string): any; /** * Create document style xml string from the parameters * @param {String} name * @param {*} params * @param {String} nsPrefix * @param {String} nsURI * @param {String} type */ objectToDocumentXML(name: string, params: any, nsPrefix: string, nsURI?: string, type?: string): any; /** * Create RPC style xml string from the parameters * @param {String} name * @param {*} params * @param {String} nsPrefix * @param {String} nsURI * @returns {string} */ objectToRpcXML(name: string, params: any, nsPrefix: string, nsURI: string, isParts?: boolean): string; isIgnoredNameSpace(ns: string): boolean; filterOutIgnoredNameSpace(ns: string): string; /** * Convert an object to XML. This is a recursive method as it calls itself. * * @param {Object} obj the object to convert. * @param {String} name the name of the element (if the object being traversed is * an element). * @param {String} nsPrefix the namespace prefix of the object I.E. xsd. * @param {String} nsURI the full namespace of the object I.E. http://w3.org/schema. * @param {Boolean} isFirst whether or not this is the first item being traversed. * @param {?} xmlnsAttr * @param {?} parameterTypeObject * @param {NamespaceContext} nsContext Namespace context */ objectToXML(obj: any, name: string, nsPrefix: any, nsURI: string, isFirst?: boolean, xmlnsAttr?: any, schemaObject?: any, nsContext?: NamespaceContext): any; processAttributes(child: any, nsContext: NamespaceContext): string; /** * Look up a schema type definition * @param name * @param nsURI * @returns {*} */ findSchemaType(name: any, nsURI: any): any; findChildSchemaObject(parameterTypeObj: any, childName: any, backtrace?: any): any; private _initializeOptions; private _processNextInclude; private _parse; private _fromXML; private _fromServices; private _xmlnsMap; } declare type WSDLCallback = (error: any, result?: WSDL) => any; export declare function open_wsdl(uri: any, callback: WSDLCallback): any; export declare function open_wsdl(uri: any, options: IOptions, callback: WSDLCallback): any; export {}; PK F�i[A��� �� index.jsnu �Iw�� "use strict"; /* * Copyright (c) 2011 Vinay Pulim <vinay@milewise.com> * MIT Licensed * */ /*jshint proto:true*/ Object.defineProperty(exports, "__esModule", { value: true }); exports.open_wsdl = exports.WSDL = void 0; const assert_1 = require("assert"); const debugBuilder = require("debug"); const fs = require("fs"); const _ = require("lodash"); const path = require("path"); const sax = require("sax"); const stripBom = require("strip-bom"); const url = require("url"); const http_1 = require("../http"); const nscontext_1 = require("../nscontext"); const utils_1 = require("../utils"); const elements = require("./elements"); const debug = debugBuilder('node-soap'); const XSI_URI = 'http://www.w3.org/2001/XMLSchema-instance'; const trimLeft = /^[\s\xA0]+/; const trimRight = /[\s\xA0]+$/; function trim(text) { return text.replace(trimLeft, '').replace(trimRight, ''); } function deepMerge(destination, source) { return _.mergeWith(destination, source, (a, b) => { return Array.isArray(a) ? a.concat(b) : undefined; }); } function appendColon(ns) { return (ns && ns.charAt(ns.length - 1) !== ':') ? ns + ':' : ns; } function noColonNameSpace(ns) { return (ns && ns.charAt(ns.length - 1) === ':') ? ns.substring(0, ns.length - 1) : ns; } class WSDL { constructor(definition, uri, options) { this.ignoredNamespaces = ['tns', 'targetNamespace', 'typedNamespace']; this.ignoreBaseNameSpaces = false; this.valueKey = '$value'; this.xmlKey = '$xml'; let fromFunc; this.uri = uri; this.callback = () => { }; this._includesWsdl = []; // initialize WSDL cache this.WSDL_CACHE = {}; if (options && options.WSDL_CACHE) { this.WSDL_CACHE = options.WSDL_CACHE; } this._initializeOptions(options); if (typeof definition === 'string') { definition = stripBom(definition); fromFunc = this._fromXML; } else if (typeof definition === 'object') { fromFunc = this._fromServices; } else { throw new Error('WSDL constructor takes either an XML string or service definition'); } process.nextTick(() => { try { fromFunc.call(this, definition); } catch (e) { return this.callback(e); } this.processIncludes((err) => { let name; if (err) { return this.callback(err); } try { this.definitions.deleteFixedAttrs(); const services = this.services = this.definitions.services; if (services) { for (name in services) { services[name].postProcess(this.definitions); } } const complexTypes = this.definitions.complexTypes; if (complexTypes) { for (name in complexTypes) { complexTypes[name].deleteFixedAttrs(); } } // for document style, for every binding, prepare input message element name to (methodName, output message element name) mapping const bindings = this.definitions.bindings; for (const bindingName in bindings) { const binding = bindings[bindingName]; if (typeof binding.style === 'undefined') { binding.style = 'document'; } const methods = binding.methods; const topEls = binding.topElements = {}; for (const methodName in methods) { if ((methods[methodName].style || binding.style) !== 'document') { continue; } if (methods[methodName].input) { const inputName = methods[methodName].input.$name; let outputName = ''; if (methods[methodName].output) { outputName = methods[methodName].output.$name; } topEls[inputName] = { methodName: methodName, outputName: outputName }; } } } // prepare soap envelope xmlns definition string this.xmlnsInEnvelope = this._xmlnsMap(); this.callback(err, this); } catch (e) { this.callback(e); } }); }); } onReady(callback) { if (callback) { this.callback = callback; } } processIncludes(callback) { const schemas = this.definitions.schemas; let includes = []; for (const ns in schemas) { const schema = schemas[ns]; includes = includes.concat(schema.includes || []); } this._processNextInclude(includes, callback); } describeServices() { const services = {}; for (const name in this.services) { const service = this.services[name]; services[name] = service.description(this.definitions); } return services; } toXML() { return this.xml || ''; } getSaxStream(xml) { const saxStream = sax.createStream(true, null); xml.pipe(saxStream); return saxStream; } xmlToObject(xml, callback) { const p = typeof callback === 'function' ? {} : sax.parser(true, null); let objectName = null; const root = {}; const schema = { Envelope: { Header: { Security: { UsernameToken: { Username: 'string', Password: 'string', }, }, }, Body: { Fault: { faultcode: 'string', faultstring: 'string', detail: 'string', }, }, }, }; const stack = [{ name: null, object: root, schema: schema }]; const xmlns = {}; const refs = {}; let id; // {id:{hrefs:[],obj:}, ...} p.onopentag = (node) => { const nsName = node.name; const attrs = node.attributes; let name = (0, utils_1.splitQName)(nsName).name; let attributeName; const top = stack[stack.length - 1]; let topSchema = top.schema; const elementAttributes = {}; let hasNonXmlnsAttribute = false; let hasNilAttribute = false; const obj = {}; const originalName = name; if (!objectName && top.name === 'Body' && name !== 'Fault') { let message = this.definitions.messages[name]; // Support RPC/literal messages where response body contains one element named // after the operation + 'Response'. See http://www.w3.org/TR/wsdl#_names if (!message) { try { // Determine if this is request or response let isInput = false; let isOutput = false; if ((/Response$/).test(name)) { isOutput = true; name = name.replace(/Response$/, ''); } else if ((/Request$/).test(name)) { isInput = true; name = name.replace(/Request$/, ''); } else if ((/Solicit$/).test(name)) { isInput = true; name = name.replace(/Solicit$/, ''); } // Look up the appropriate message as given in the portType's operations const portTypes = this.definitions.portTypes; const portTypeNames = Object.keys(portTypes); // Currently this supports only one portType definition. const portType = portTypes[portTypeNames[0]]; if (isInput) { name = portType.methods[name].input.$name; } else { name = portType.methods[name].output.$name; } message = this.definitions.messages[name]; // 'cache' this alias to speed future lookups this.definitions.messages[originalName] = this.definitions.messages[name]; } catch (e) { if (this.options.returnFault) { p.onerror(e); } } } topSchema = message.description(this.definitions); objectName = originalName; } if (attrs.href) { id = attrs.href.substr(1); if (!refs[id]) { refs[id] = { hrefs: [], obj: null }; } refs[id].hrefs.push({ par: top.object, key: name, obj: obj }); } if (id = attrs.id) { if (!refs[id]) { refs[id] = { hrefs: [], obj: null }; } } // Handle element attributes for (attributeName in attrs) { if (/^xmlns:|^xmlns$/.test(attributeName)) { xmlns[(0, utils_1.splitQName)(attributeName).name] = attrs[attributeName]; continue; } hasNonXmlnsAttribute = true; elementAttributes[attributeName] = attrs[attributeName]; } for (attributeName in elementAttributes) { const res = (0, utils_1.splitQName)(attributeName); if (res.name === 'nil' && xmlns[res.prefix] === XSI_URI && elementAttributes[attributeName] && (elementAttributes[attributeName].toLowerCase() === 'true' || elementAttributes[attributeName] === '1')) { hasNilAttribute = true; break; } } if (hasNonXmlnsAttribute) { obj[this.options.attributesKey] = elementAttributes; } // Pick up the schema for the type specified in element's xsi:type attribute. let xsiTypeSchema; let xsiType; for (const prefix in xmlns) { if (xmlns[prefix] === XSI_URI && (`${prefix}:type` in elementAttributes)) { xsiType = elementAttributes[`${prefix}:type`]; break; } } if (xsiType) { const type = (0, utils_1.splitQName)(xsiType); let typeURI; if (type.prefix === utils_1.TNS_PREFIX) { // In case of xsi:type = "MyType" typeURI = xmlns[type.prefix] || xmlns.xmlns; } else { typeURI = xmlns[type.prefix]; } const typeDef = this.findSchemaObject(typeURI, type.name); if (typeDef) { xsiTypeSchema = typeDef.description(this.definitions); } } if (topSchema && topSchema[name + '[]']) { name = name + '[]'; } stack.push({ name: originalName, object: obj, schema: (xsiTypeSchema || (topSchema && topSchema[name])), id: attrs.id, nil: hasNilAttribute }); }; p.onclosetag = (nsName) => { const cur = stack.pop(); let obj = cur.object; const top = stack[stack.length - 1]; const topObject = top.object; const topSchema = top.schema; const name = (0, utils_1.splitQName)(nsName).name; if (typeof cur.schema === 'string' && (cur.schema === 'string' || cur.schema.split(':')[1] === 'string')) { if (typeof obj === 'object' && Object.keys(obj).length === 0) { obj = cur.object = ''; } } if (cur.nil === true) { if (this.options.handleNilAsNull) { obj = null; } else { return; } } if (_.isPlainObject(obj) && !Object.keys(obj).length) { obj = null; } if (topSchema && topSchema[name + '[]']) { if (!topObject[name]) { topObject[name] = []; } topObject[name].push(obj); } else if (name in topObject) { if (!Array.isArray(topObject[name])) { topObject[name] = [topObject[name]]; } topObject[name].push(obj); } else { topObject[name] = obj; } if (cur.id) { refs[cur.id].obj = obj; } }; p.oncdata = (text) => { const originalText = text; text = trim(text); if (!text.length) { return; } if (/<\?xml[\s\S]+\?>/.test(text)) { const top = stack[stack.length - 1]; const value = this.xmlToObject(text); if (top.object[this.options.attributesKey]) { top.object[this.options.valueKey] = value; } else { top.object = value; } } else { p.ontext(originalText); } }; p.onerror = (e) => { p.resume(); throw { Fault: { faultcode: 500, faultstring: 'Invalid XML', detail: new Error(e).message, statusCode: 500, }, }; }; p.ontext = (text) => { const originalText = text; text = trim(text); if (!text.length) { return; } const top = stack[stack.length - 1]; const name = (0, utils_1.splitQName)(top.schema).name; let value; if (this.options && this.options.customDeserializer && this.options.customDeserializer[name]) { value = this.options.customDeserializer[name](text, top); } else { if (name === 'int' || name === 'integer' || name === 'short' || name === 'long') { value = parseInt(text, 10); } else if (name === 'double' || name === 'float' || name === 'decimal') { value = Number(text); } else if (name === 'bool' || name === 'boolean') { value = text.toLowerCase() === 'true' || text === '1'; } else if (name === 'dateTime' || name === 'date') { value = new Date(text); } else { if (this.options.preserveWhitespace) { text = originalText; } // handle string or other types if (typeof top.object !== 'string') { value = text; } else { value = top.object + text; } } } if (top.object[this.options.attributesKey]) { top.object[this.options.valueKey] = value; } else { top.object = value; } }; if (typeof callback === 'function') { // we be streaming const saxStream = sax.createStream(true, null); saxStream.on('opentag', p.onopentag); saxStream.on('closetag', p.onclosetag); saxStream.on('cdata', p.oncdata); saxStream.on('text', p.ontext); xml.pipe(saxStream) .on('error', (err) => { callback(err); }) .on('end', () => { let r; try { r = finish(); } catch (e) { return callback(e); } callback(null, r); }); return; } p.write(xml).close(); return finish(); function finish() { // MultiRef support: merge objects instead of replacing for (const n in refs) { const ref = refs[n]; for (const href of ref.hrefs) { Object.assign(href.obj, ref.obj); } } if (root.Envelope) { const body = root.Envelope.Body; if (body && body.Fault) { let code = body.Fault.faultcode && body.Fault.faultcode.$value; let string = body.Fault.faultstring && body.Fault.faultstring.$value; let detail = body.Fault.detail && body.Fault.detail.$value; code = code || body.Fault.faultcode; string = string || body.Fault.faultstring; detail = detail || body.Fault.detail; const error = new Error(code + ': ' + string + (detail ? ': ' + JSON.stringify(detail) : '')); error.root = root; throw error; } return root.Envelope; } return root; } } /** * Look up a XSD type or element by namespace URI and name * @param {String} nsURI Namespace URI * @param {String} qname Local or qualified name * @returns {*} The XSD type/element definition */ findSchemaObject(nsURI, qname) { if (!nsURI || !qname) { return null; } let def = null; if (this.definitions.schemas) { const schema = this.definitions.schemas[nsURI]; if (schema) { if (qname.indexOf(':') !== -1) { qname = qname.substring(qname.indexOf(':') + 1, qname.length); } // if the client passed an input element which has a `$lookupType` property instead of `$type` // the `def` is found in `schema.elements`. def = schema.complexTypes[qname] || schema.types[qname] || schema.elements[qname]; } } return def; } /** * Create document style xml string from the parameters * @param {String} name * @param {*} params * @param {String} nsPrefix * @param {String} nsURI * @param {String} type */ objectToDocumentXML(name, params, nsPrefix, nsURI, type) { // If user supplies XML already, just use that. XML Declaration should not be present. if (params && params._xml) { return params._xml; } const args = {}; args[name] = params; const parameterTypeObj = type ? this.findSchemaObject(nsURI, type) : null; return this.objectToXML(args, null, nsPrefix, nsURI, true, null, parameterTypeObj); } /** * Create RPC style xml string from the parameters * @param {String} name * @param {*} params * @param {String} nsPrefix * @param {String} nsURI * @returns {string} */ objectToRpcXML(name, params, nsPrefix, nsURI, isParts) { const parts = []; const defs = this.definitions; const nsAttrName = '_xmlns'; nsPrefix = nsPrefix || (0, utils_1.findPrefix)(defs.xmlns, nsURI); nsURI = nsURI || defs.xmlns[nsPrefix]; nsPrefix = nsPrefix === utils_1.TNS_PREFIX ? '' : (nsPrefix + ':'); parts.push(['<', nsPrefix, name, '>'].join('')); for (const key in params) { if (!params.hasOwnProperty(key)) { continue; } if (key !== nsAttrName) { const value = params[key]; const prefixedKey = (isParts ? '' : nsPrefix) + key; const attributes = []; if (typeof value === 'object' && value.hasOwnProperty(this.options.attributesKey)) { const attrs = value[this.options.attributesKey]; for (const n in attrs) { attributes.push(' ' + n + '=' + '"' + attrs[n] + '"'); } } parts.push(['<', prefixedKey].concat(attributes).concat('>').join('')); parts.push((typeof value === 'object') ? this.objectToXML(value, key, nsPrefix, nsURI) : (0, utils_1.xmlEscape)(value)); parts.push(['</', prefixedKey, '>'].join('')); } } parts.push(['</', nsPrefix, name, '>'].join('')); return parts.join(''); } isIgnoredNameSpace(ns) { return this.options.ignoredNamespaces.indexOf(ns) > -1; } filterOutIgnoredNameSpace(ns) { const namespace = noColonNameSpace(ns); return this.isIgnoredNameSpace(namespace) ? '' : namespace; } /** * Convert an object to XML. This is a recursive method as it calls itself. * * @param {Object} obj the object to convert. * @param {String} name the name of the element (if the object being traversed is * an element). * @param {String} nsPrefix the namespace prefix of the object I.E. xsd. * @param {String} nsURI the full namespace of the object I.E. http://w3.org/schema. * @param {Boolean} isFirst whether or not this is the first item being traversed. * @param {?} xmlnsAttr * @param {?} parameterTypeObject * @param {NamespaceContext} nsContext Namespace context */ objectToXML(obj, name, nsPrefix, nsURI, isFirst, xmlnsAttr, schemaObject, nsContext) { const schema = this.definitions.schemas[nsURI]; let parentNsPrefix = nsPrefix ? nsPrefix.parent : undefined; if (typeof parentNsPrefix !== 'undefined') { // we got the parentNsPrefix for our array. setting the namespace-variable back to the current namespace string nsPrefix = nsPrefix.current; } parentNsPrefix = noColonNameSpace(parentNsPrefix); if (this.isIgnoredNameSpace(parentNsPrefix)) { parentNsPrefix = ''; } const soapHeader = !schema; const qualified = schema && schema.$elementFormDefault === 'qualified'; const parts = []; const prefixNamespace = (nsPrefix || qualified) && nsPrefix !== utils_1.TNS_PREFIX; let xmlnsAttrib = ''; if (nsURI && isFirst) { if (this.options.overrideRootElement && this.options.overrideRootElement.xmlnsAttributes) { this.options.overrideRootElement.xmlnsAttributes.forEach((attribute) => { xmlnsAttrib += ' ' + attribute.name + '="' + attribute.value + '"'; }); } else { if (prefixNamespace && !this.isIgnoredNameSpace(nsPrefix)) { // resolve the prefix namespace xmlnsAttrib += ' xmlns:' + nsPrefix + '="' + nsURI + '"'; } // only add default namespace if the schema elementFormDefault is qualified if (qualified || soapHeader) { xmlnsAttrib += ' xmlns="' + nsURI + '"'; } } } if (!nsContext) { nsContext = new nscontext_1.NamespaceContext(); nsContext.declareNamespace(nsPrefix, nsURI); } else { nsContext.pushContext(); } // explicitly use xmlns attribute if available if (xmlnsAttr && !(this.options.overrideRootElement && this.options.overrideRootElement.xmlnsAttributes)) { xmlnsAttrib = xmlnsAttr; } let ns = ''; if (this.options.overrideRootElement && isFirst) { ns = this.options.overrideRootElement.namespace; } else if (prefixNamespace && (qualified || isFirst || soapHeader) && !this.isIgnoredNameSpace(nsPrefix)) { ns = nsPrefix; } let i; let n; // start building out XML string. if (Array.isArray(obj)) { let nonSubNameSpace = ''; let emptyNonSubNameSpaceForArray = false; const nameWithNsRegex = /^([^:]+):([^:]+)$/.exec(name); if (nameWithNsRegex) { nonSubNameSpace = nameWithNsRegex[1]; name = nameWithNsRegex[2]; } else if (name[0] === ':') { emptyNonSubNameSpaceForArray = true; name = name.substr(1); } for (i = 0, n = obj.length; i < n; i++) { const item = obj[i]; const arrayAttr = this.processAttributes(item, nsContext); const correctOuterNsPrefix = nonSubNameSpace || parentNsPrefix || ns; // using the parent namespace prefix if given const body = this.objectToXML(item, name, nsPrefix, nsURI, false, null, schemaObject, nsContext); let openingTagParts = ['<', name, arrayAttr, xmlnsAttrib]; if (!emptyNonSubNameSpaceForArray) { openingTagParts = ['<', appendColon(correctOuterNsPrefix), name, arrayAttr, xmlnsAttrib]; } if (body === '' && this.options.useEmptyTag) { // Use empty (self-closing) tags if no contents openingTagParts.push(' />'); parts.push(openingTagParts.join('')); } else { openingTagParts.push('>'); if (this.options.namespaceArrayElements || i === 0) { parts.push(openingTagParts.join('')); } parts.push(body); if (this.options.namespaceArrayElements || i === n - 1) { if (emptyNonSubNameSpaceForArray) { parts.push(['</', name, '>'].join('')); } else { parts.push(['</', appendColon(correctOuterNsPrefix), name, '>'].join('')); } } } } } else if (typeof obj === 'object') { let currentChildXmlnsAttrib = ''; for (name in obj) { // Happens when Object.create(null) is used, it will not inherit the Object prototype if (!obj.hasOwnProperty) { obj = Object.assign({}, obj); } if (!obj.hasOwnProperty(name)) { continue; } // don't process attributes as element if (name === this.options.attributesKey) { continue; } // Its the value of a xml object. Return it directly. if (name === this.options.xmlKey) { nsContext.popContext(); return obj[name]; } // Its the value of an item. Return it directly. if (name === this.options.valueKey) { nsContext.popContext(); return (0, utils_1.xmlEscape)(obj[name]); } const child = obj[name]; if (typeof child === 'undefined') { continue; } const attr = this.processAttributes(child, nsContext); let value = ''; let nonSubNameSpace = ''; let emptyNonSubNameSpace = false; const nameWithNsRegex = /^([^:]+):([^:]+)$/.exec(name); if (nameWithNsRegex) { nonSubNameSpace = nameWithNsRegex[1] + ':'; name = nameWithNsRegex[2]; } else if (name[0] === ':') { emptyNonSubNameSpace = true; name = name.substr(1); } if (isFirst) { value = this.objectToXML(child, name, nsPrefix, nsURI, false, null, schemaObject, nsContext); } else { if (this.definitions.schemas) { if (schema) { const childSchemaObject = this.findChildSchemaObject(schemaObject, name); // find sub namespace if not a primitive if (childSchemaObject && ((childSchemaObject.$type && (childSchemaObject.$type.indexOf('xsd:') === -1)) || childSchemaObject.$ref || childSchemaObject.$name)) { /*if the base name space of the children is not in the ingoredSchemaNamspaces we use it. This is because in some services the child nodes do not need the baseNameSpace. */ let childNsPrefix = ''; let childName = ''; let childNsURI; let childXmlnsAttrib = ''; let elementQName = childSchemaObject.$ref || childSchemaObject.$name; if (elementQName) { elementQName = (0, utils_1.splitQName)(elementQName); childName = elementQName.name; if (elementQName.prefix === utils_1.TNS_PREFIX) { // Local element childNsURI = childSchemaObject.$targetNamespace; childNsPrefix = nsContext.registerNamespace(childNsURI); if (this.isIgnoredNameSpace(childNsPrefix)) { childNsPrefix = nsPrefix; } } else { childNsPrefix = elementQName.prefix; if (this.isIgnoredNameSpace(childNsPrefix)) { childNsPrefix = nsPrefix; } childNsURI = schema.xmlns[childNsPrefix] || this.definitions.xmlns[childNsPrefix]; } let unqualified = false; // Check qualification form for local elements if (childSchemaObject.$name && childSchemaObject.targetNamespace === undefined) { if (childSchemaObject.$form === 'unqualified') { unqualified = true; } else if (childSchemaObject.$form === 'qualified') { unqualified = false; } else { unqualified = schema.$elementFormDefault !== 'qualified'; } } if (unqualified) { childNsPrefix = ''; } if (childNsURI && childNsPrefix) { if (nsContext.declareNamespace(childNsPrefix, childNsURI)) { childXmlnsAttrib = ' xmlns:' + childNsPrefix + '="' + childNsURI + '"'; if (!xmlnsAttrib.includes(childNsPrefix)) { currentChildXmlnsAttrib = childXmlnsAttrib; xmlnsAttrib += childXmlnsAttrib; } } } } let resolvedChildSchemaObject; if (childSchemaObject.$type) { const typeQName = (0, utils_1.splitQName)(childSchemaObject.$type); const typePrefix = typeQName.prefix; const typeURI = schema.xmlns[typePrefix] || this.definitions.xmlns[typePrefix]; childNsURI = typeURI; if (typeURI !== 'http://www.w3.org/2001/XMLSchema' && typePrefix !== utils_1.TNS_PREFIX) { // Add the prefix/namespace mapping, but not declare it nsContext.addNamespace(typePrefix, typeURI); } resolvedChildSchemaObject = this.findSchemaType(typeQName.name, typeURI) || childSchemaObject; } else { resolvedChildSchemaObject = this.findSchemaObject(childNsURI, childName) || childSchemaObject; } if (childSchemaObject.$baseNameSpace && this.options.ignoreBaseNameSpaces) { childNsPrefix = nsPrefix; childNsURI = nsURI; } if (this.options.ignoreBaseNameSpaces) { childNsPrefix = ''; childNsURI = ''; } ns = childNsPrefix; if (Array.isArray(child)) { // for arrays, we need to remember the current namespace childNsPrefix = { current: childNsPrefix, parent: ns, }; childXmlnsAttrib = childXmlnsAttrib && childXmlnsAttrib.length ? childXmlnsAttrib : currentChildXmlnsAttrib; } else { // parent (array) already got the namespace childXmlnsAttrib = null; } value = this.objectToXML(child, name, childNsPrefix, childNsURI, false, childXmlnsAttrib, resolvedChildSchemaObject, nsContext); } else if (obj[this.options.attributesKey] && obj[this.options.attributesKey].xsi_type) { // if parent object has complex type defined and child not found in parent const completeChildParamTypeObject = this.findChildSchemaObject(obj[this.options.attributesKey].xsi_type.type, obj[this.options.attributesKey].xsi_type.xmlns); nonSubNameSpace = obj[this.options.attributesKey].xsi_type.prefix; nsContext.addNamespace(obj[this.options.attributesKey].xsi_type.prefix, obj[this.options.attributesKey].xsi_type.xmlns); value = this.objectToXML(child, name, obj[this.options.attributesKey].xsi_type.prefix, obj[this.options.attributesKey].xsi_type.xmlns, false, null, null, nsContext); } else { if (Array.isArray(child)) { if (emptyNonSubNameSpace) { name = ':' + name; } else { name = nonSubNameSpace + name; } } value = this.objectToXML(child, name, nsPrefix, nsURI, false, null, null, nsContext); } } else { value = this.objectToXML(child, name, nsPrefix, nsURI, false, null, null, nsContext); } } } ns = noColonNameSpace(ns); if (prefixNamespace && !qualified && isFirst && !this.options.overrideRootElement) { ns = nsPrefix; } else if (this.isIgnoredNameSpace(ns)) { ns = ''; } const useEmptyTag = !value && this.options.useEmptyTag; if (!Array.isArray(child)) { // start tag parts.push(['<', emptyNonSubNameSpace ? '' : appendColon(nonSubNameSpace || ns), name, attr, xmlnsAttrib, (child === null ? ' xsi:nil="true"' : ''), useEmptyTag ? ' />' : '>', ].join('')); } if (!useEmptyTag) { parts.push(value); if (!Array.isArray(child)) { // end tag parts.push(['</', emptyNonSubNameSpace ? '' : appendColon(nonSubNameSpace || ns), name, '>'].join('')); } } } } else if (obj !== undefined) { parts.push((this.options.escapeXML) ? (0, utils_1.xmlEscape)(obj) : obj); } nsContext.popContext(); return parts.join(''); } processAttributes(child, nsContext) { let attr = ''; if (child === null || child === undefined) { child = []; } const attrObj = child[this.options.attributesKey] || {}; if (attrObj && attrObj.xsi_type) { const xsiType = attrObj.xsi_type; let prefix = xsiType.prefix || xsiType.namespace; if (xsiType.xmlns) { // Generate a new namespace for complex extension if one not provided if (!prefix) { prefix = nsContext.registerNamespace(xsiType.xmlns); } else { nsContext.declareNamespace(prefix, xsiType.xmlns); } xsiType.prefix = prefix; } } Object.keys(attrObj).forEach((k) => { const v = attrObj[k]; if (k === 'xsi_type') { let name = v.type; if (v.prefix) { name = `${v.prefix}:${name}`; } attr += ` xsi:type="${name}"`; if (v.xmlns) { attr += ` xmlns:${v.prefix}="${v.xmlns}"`; } } else { attr += ` ${k}="${(0, utils_1.xmlEscape)(v)}"`; } }); return attr; } /** * Look up a schema type definition * @param name * @param nsURI * @returns {*} */ findSchemaType(name, nsURI) { if (!this.definitions.schemas || !name || !nsURI) { return null; } const schema = this.definitions.schemas[nsURI]; if (!schema || !schema.complexTypes) { return null; } return schema.complexTypes[name]; } findChildSchemaObject(parameterTypeObj, childName, backtrace) { if (!parameterTypeObj || !childName) { return null; } if (!backtrace) { backtrace = []; } if (backtrace.indexOf(parameterTypeObj) >= 0) { // We've recursed back to ourselves; break. return null; } else { backtrace = backtrace.concat([parameterTypeObj]); } let found = null; let i = 0; let child; let ref; if (Array.isArray(parameterTypeObj.$lookupTypes) && parameterTypeObj.$lookupTypes.length) { const types = parameterTypeObj.$lookupTypes; for (i = 0; i < types.length; i++) { const typeObj = types[i]; if (typeObj.$name === childName) { found = typeObj; break; } } } const object = parameterTypeObj; if (object.$name === childName && object.name === 'element') { return object; } if (object.$ref) { ref = (0, utils_1.splitQName)(object.$ref); if (ref.name === childName) { return object; } } let childNsURI; // want to avoid unecessary recursion to improve performance if (object.$type && backtrace.length === 1) { const typeInfo = (0, utils_1.splitQName)(object.$type); if (typeInfo.prefix === utils_1.TNS_PREFIX) { childNsURI = parameterTypeObj.$targetNamespace; } else { childNsURI = this.definitions.xmlns[typeInfo.prefix]; } const typeDef = this.findSchemaType(typeInfo.name, childNsURI); if (typeDef) { return this.findChildSchemaObject(typeDef, childName, backtrace); } } // handle $base (e.g. for ExtensionElement) like $type if (object.$base && (!Array.isArray(object.children) || !object.children.length)) { const baseInfo = (0, utils_1.splitQName)(object.$base); childNsURI = parameterTypeObj.$targetNamespace; if (baseInfo.prefix !== utils_1.TNS_PREFIX) { childNsURI = this.definitions.xmlns[baseInfo.prefix]; } const baseDef = this.findSchemaType(baseInfo.name, childNsURI); if (baseDef) { return this.findChildSchemaObject(baseDef, childName, backtrace); } } if (Array.isArray(object.children) && object.children.length > 0) { for (i = 0, child; child = object.children[i]; i++) { found = this.findChildSchemaObject(child, childName, backtrace); if (found) { break; } if (child.$base) { const baseQName = (0, utils_1.splitQName)(child.$base); const childNameSpace = baseQName.prefix === utils_1.TNS_PREFIX ? '' : baseQName.prefix; childNsURI = child.xmlns[baseQName.prefix] || child.schemaXmlns[baseQName.prefix]; const foundBase = this.findSchemaType(baseQName.name, childNsURI); if (foundBase) { found = this.findChildSchemaObject(foundBase, childName, backtrace); if (found) { found.$baseNameSpace = childNameSpace; found.$type = childNameSpace + ':' + childName; break; } } } } } if (!found && object.$name === childName) { return object; } return found; } _initializeOptions(options) { this._originalIgnoredNamespaces = (options || {}).ignoredNamespaces; this.options = {}; const ignoredNamespaces = options ? options.ignoredNamespaces : null; if (ignoredNamespaces && (Array.isArray(ignoredNamespaces.namespaces) || typeof ignoredNamespaces.namespaces === 'string')) { if (ignoredNamespaces.override) { this.options.ignoredNamespaces = ignoredNamespaces.namespaces; } else { this.options.ignoredNamespaces = this.ignoredNamespaces.concat(ignoredNamespaces.namespaces); } } else { this.options.ignoredNamespaces = this.ignoredNamespaces; } this.options.valueKey = options.valueKey || this.valueKey; this.options.xmlKey = options.xmlKey || this.xmlKey; if (options.escapeXML !== undefined) { this.options.escapeXML = options.escapeXML; } else { this.options.escapeXML = true; } if (options.returnFault !== undefined) { this.options.returnFault = options.returnFault; } else { this.options.returnFault = false; } this.options.handleNilAsNull = !!options.handleNilAsNull; if (options.namespaceArrayElements !== undefined) { this.options.namespaceArrayElements = options.namespaceArrayElements; } else { this.options.namespaceArrayElements = true; } // Allow any request headers to keep passing through this.options.wsdl_headers = options.wsdl_headers; this.options.wsdl_options = options.wsdl_options; if (options.httpClient) { this.options.httpClient = options.httpClient; } // The supplied request-object should be passed through if (options.request) { this.options.request = options.request; } const ignoreBaseNameSpaces = options ? options.ignoreBaseNameSpaces : null; if (ignoreBaseNameSpaces !== null && typeof ignoreBaseNameSpaces !== 'undefined') { this.options.ignoreBaseNameSpaces = ignoreBaseNameSpaces; } else { this.options.ignoreBaseNameSpaces = this.ignoreBaseNameSpaces; } // Works only in client this.options.forceSoap12Headers = options.forceSoap12Headers; this.options.customDeserializer = options.customDeserializer; if (options.overrideRootElement !== undefined) { this.options.overrideRootElement = options.overrideRootElement; } this.options.useEmptyTag = !!options.useEmptyTag; } _processNextInclude(includes, callback) { const include = includes.shift(); if (!include) { return callback(); } let includePath; if (!/^https?:/i.test(this.uri) && !/^https?:/i.test(include.location)) { const isFixed = (this.options.wsdl_options !== undefined && this.options.wsdl_options.hasOwnProperty('fixedPath')) ? this.options.wsdl_options.fixedPath : false; if (isFixed) { includePath = path.resolve(path.dirname(this.uri), path.parse(include.location).base); } else { includePath = path.resolve(path.dirname(this.uri), include.location); } } else { includePath = url.resolve(this.uri || '', include.location); } if (this.options.wsdl_options !== undefined && typeof this.options.wsdl_options.overrideImportLocation === 'function') { includePath = this.options.wsdl_options.overrideImportLocation(includePath); } const options = Object.assign({}, this.options); // follow supplied ignoredNamespaces option options.ignoredNamespaces = this._originalIgnoredNamespaces || this.options.ignoredNamespaces; options.WSDL_CACHE = this.WSDL_CACHE; open_wsdl_recursive(includePath, options, (err, wsdl) => { if (err) { return callback(err); } this._includesWsdl.push(wsdl); if (wsdl.definitions instanceof elements.DefinitionsElement) { _.mergeWith(this.definitions, wsdl.definitions, (a, b) => { return (a instanceof elements.SchemaElement) ? a.merge(b) : undefined; }); } else { return callback(new Error('wsdl.defintions is not an instance of elements.DefinitionsElement')); } this._processNextInclude(includes, (err) => { callback(err); }); }); } _parse(xml) { const p = sax.parser(true, null); const stack = []; let root = null; let types = null; let schema = null; let schemaAttrs = null; const options = this.options; p.onopentag = (node) => { const nsName = node.name; const attrs = node.attributes; const top = stack[stack.length - 1]; const name = (0, utils_1.splitQName)(nsName).name; if (name === 'schema') { schemaAttrs = attrs; } if (top) { try { top.startElement(stack, nsName, attrs, options, schemaAttrs); } catch (e) { if (this.options.strict) { throw e; } else { stack.push(new elements.Element(nsName, attrs, options, schemaAttrs)); } } } else { if (name === 'definitions') { root = new elements.DefinitionsElement(nsName, attrs, options); stack.push(root); } else if (name === 'schema') { // Shim a structure in here to allow the proper objects to be created when merging back. root = new elements.DefinitionsElement('definitions', {}, {}); types = new elements.TypesElement('types', {}, {}); schema = new elements.SchemaElement(nsName, attrs, options); types.addChild(schema); root.addChild(types); stack.push(schema); } else { throw new Error('Unexpected root element of WSDL or include'); } } }; p.onclosetag = (name) => { const top = stack[stack.length - 1]; (0, assert_1.ok)(top, 'Unmatched close tag: ' + name); top.endElement(stack, name); }; p.write(xml).close(); return root; } _fromXML(xml) { this.definitions = this._parse(xml); this.definitions.descriptions = { types: {}, elements: {}, }; this.xml = xml; } _fromServices(services) { } _xmlnsMap() { const xmlns = this.definitions.xmlns; let str = ''; for (const alias in xmlns) { if (alias === '' || alias === utils_1.TNS_PREFIX) { continue; } const ns = xmlns[alias]; switch (ns) { case 'http://xml.apache.org/xml-soap': // apachesoap case 'http://schemas.xmlsoap.org/wsdl/': // wsdl case 'http://schemas.xmlsoap.org/wsdl/soap/': // wsdlsoap case 'http://schemas.xmlsoap.org/wsdl/soap12/': // wsdlsoap12 case 'http://schemas.xmlsoap.org/soap/encoding/': // soapenc case 'http://www.w3.org/2001/XMLSchema': // xsd continue; } if (~ns.indexOf('http://schemas.xmlsoap.org/')) { continue; } if (~ns.indexOf('http://www.w3.org/')) { continue; } if (~ns.indexOf('http://xml.apache.org/')) { continue; } str += ' xmlns:' + alias + '="' + ns + '"'; } return str; } } exports.WSDL = WSDL; function open_wsdl_recursive(uri, p2, p3) { let fromCache; let WSDL_CACHE; let options; let callback; if (typeof p2 === 'function') { options = {}; callback = p2; } else { options = p2; callback = p3; } WSDL_CACHE = options.WSDL_CACHE; if (fromCache = WSDL_CACHE[uri]) { return callback.call(fromCache, null, fromCache); } return open_wsdl(uri, options, callback); } function open_wsdl(uri, p2, p3) { let options; let callback; if (typeof p2 === 'function') { options = {}; callback = p2; } else if (typeof p3 === 'function') { options = p2; callback = p3; } // initialize cache when calling open_wsdl directly const WSDL_CACHE = options.WSDL_CACHE || {}; const request_headers = options.wsdl_headers; const request_options = options.wsdl_options; let wsdl; if (/^\<\?xml[^>]*?>/i.test(uri)) { wsdl = new WSDL(uri, uri, options); WSDL_CACHE[uri] = wsdl; wsdl.WSDL_CACHE = WSDL_CACHE; wsdl.onReady(callback); } else if (!/^https?:/i.test(uri)) { debug('Reading file: %s', uri); fs.readFile(uri, 'utf8', (err, definition) => { if (err) { callback(err); } else { wsdl = new WSDL(definition, uri, options); WSDL_CACHE[uri] = wsdl; wsdl.WSDL_CACHE = WSDL_CACHE; wsdl.onReady(callback); } }); } else { debug('Reading url: %s', uri); const httpClient = options.httpClient || new http_1.HttpClient(options); httpClient.request(uri, null /* options */, (err, response, definition) => { if (err) { callback(err); } else if (response && response.status === 200) { wsdl = new WSDL(definition, uri, options); WSDL_CACHE[uri] = wsdl; wsdl.WSDL_CACHE = WSDL_CACHE; wsdl.onReady(callback); } else { callback(new Error('Invalid WSDL URL: ' + uri + '\n\n\r Code: ' + response.status + '\n\n\r Response Body: ' + response.data)); } }, request_headers, request_options); } return wsdl; } exports.open_wsdl = open_wsdl; //# sourceMappingURL=index.js.mapPK F�i[vgh�5� 5� index.js.mapnu �Iw�� {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wsdl/index.ts"],"names":[],"mappings":"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"}PK F�i[�M��$ �$ elements.d.tsnu �Iw�� PK F�i[�0��x� x� �$ elements.jsnu �Iw�� PK F�i[W�1Xu Xu �� elements.js.mapnu �Iw�� PK F�i[�q@�� � (- index.d.tsnu �Iw�� PK F�i[A��� �� ; index.jsnu �Iw�� PK F�i[vgh�5� 5� index.js.mapnu �Iw�� PK � {�
| ver. 1.4 |
Github
|
.
| PHP 8.1.33 | Генерация страницы: 0.01 |
proxy
|
phpinfo
|
Настройка