UNPKG

@hpcc-js/comms

Version:
1 lines 788 kB
{"version":3,"file":"index.umd.cjs","sources":["../../src/__package__.ts","../../src/connection.ts","../../src/espConnection.ts","../../src/services/wsdl/FileSpray/v1.26/FileSpray.ts","../../src/services/fileSpray.ts","../../src/services/wsdl/ws_access/v1.17/ws_access.ts","../../src/services/wsAccess.ts","../../src/services/wsdl/ws_account/v1.07/ws_account.ts","../../src/services/wsAccount.ts","../../src/services/wsdl/WsCloud/v1.02/WsCloud.ts","../../src/services/wsCloud.ts","../../src/services/wsCodesign.ts","../../src/services/wsdl/WsDali/v1.07/WsDali.ts","../../src/services/wsDali.ts","../../src/services/wsdl/WsDfu/v1.65/WsDfu.ts","../../src/services/wsDFU.ts","../../src/services/wsDFUXRef.ts","../../src/services/wsEcl.ts","../../src/services/wsdl/ws_elk/v1/ws_elk.ts","../../src/services/wsElk.ts","../../src/services/wsdl/ws_logaccess/v1.08/ws_logaccess.ts","../../src/services/wsLogaccess.ts","../../../../node_modules/d3-array/src/ascending.js","../../../../node_modules/d3-array/src/bisector.js","../../../../node_modules/d3-array/src/number.js","../../../../node_modules/d3-array/src/max.js","../../../../node_modules/d3-array/src/mean.js","../../../../node_modules/d3-array/src/bisect.js","../../src/services/wsdl/ws_machine/v1.17/ws_machine.ts","../../src/services/wsMachine.ts","../../src/services/wsdl/WsPackageProcess/v1.04/WsPackageProcess.ts","../../src/services/wsPackageProcess.ts","../../src/services/wsdl/WsResources/v1.01/WsResources.ts","../../src/services/wsResources.ts","../../src/services/wsdl/WsSasha/v1.01/WsSasha.ts","../../src/services/wsSasha.ts","../../src/services/wsdl/WsSMC/v1.27/WsSMC.ts","../../src/services/wsSMC.ts","../../src/services/wsStore.ts","../../src/services/wsdl/WsTopology/v1.32/WsTopology.ts","../../src/services/wsTopology.ts","../../src/services/wsdl/WsWorkunits/v2.02/WsWorkunits.ts","../../src/services/wsWorkunits.ts","../../../../node_modules/d3-format/src/formatDecimal.js","../../../../node_modules/d3-format/src/exponent.js","../../../../node_modules/d3-format/src/formatGroup.js","../../../../node_modules/d3-format/src/formatNumerals.js","../../../../node_modules/d3-format/src/formatSpecifier.js","../../../../node_modules/d3-format/src/formatPrefixAuto.js","../../../../node_modules/d3-format/src/formatTrim.js","../../../../node_modules/d3-format/src/formatRounded.js","../../../../node_modules/d3-format/src/formatTypes.js","../../../../node_modules/d3-format/src/identity.js","../../../../node_modules/d3-format/src/locale.js","../../../../node_modules/d3-format/src/defaultLocale.js","../../../../node_modules/d3-time/src/interval.js","../../../../node_modules/d3-time/src/duration.js","../../../../node_modules/d3-time/src/day.js","../../../../node_modules/d3-time/src/week.js","../../../../node_modules/d3-time/src/year.js","../../../../node_modules/d3-time/src/utcDay.js","../../../../node_modules/d3-time/src/utcWeek.js","../../../../node_modules/d3-time/src/utcYear.js","../../../../node_modules/d3-time-format/src/locale.js","../../../../node_modules/d3-time-format/src/defaultLocale.js","../../src/ecl/graph.ts","../../src/ecl/resource.ts","../../src/ecl/xsdParser.ts","../../src/ecl/result.ts","../../src/ecl/scope.ts","../../src/ecl/sourceFile.ts","../../src/ecl/timer.ts","../../src/ecl/workunit.ts","../../src/ecl/activity.ts","../../src/ecl/logicalFile.ts","../../src/ecl/machine.ts","../../src/ecl/targetCluster.ts","../../src/ecl/topology.ts","../../src/ecl/queryGraph.ts","../../src/ecl/query.ts","../../src/ecl/store.ts","../../src/ecl/dfuWorkunit.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/comms\";\nexport const PKG_VERSION = \"3.7.6\";\nexport const BUILD_VERSION = \"3.9.0\";\n","import { join, promiseTimeout, scopedLogger } from \"@hpcc-js/util\";\n\nconst logger = scopedLogger(\"comms/connection.ts\");\n\nexport type RequestType = \"post\" | \"get\" | \"jsonp\";\nexport type ResponseType = \"json\" | \"text\";\n\nexport type IOptionsSend = (options: IOptions, action: string, request: any, responseType: ResponseType, defaultSend: SendFunc, header?: any) => Promise<any>;\nexport interface IOptions {\n baseUrl: string;\n type?: RequestType;\n userID?: string;\n password?: string;\n rejectUnauthorized?: boolean;\n timeoutSecs?: number;\n hookSend?: IOptionsSend;\n encodeRequest?: boolean; // defaults to true\n}\nexport function instanceOfIOptions(object: any): object is IOptions {\n return \"baseUrl\" in object;\n}\n\nconst DefaultOptions: IOptions = {\n type: \"post\",\n baseUrl: \"\",\n userID: \"\",\n password: \"\",\n rejectUnauthorized: true,\n timeoutSecs: 60\n};\n\nexport interface IConnection {\n opts(_: Partial<IOptions>): this;\n opts(): IOptions;\n baseUrl: string;\n\n send(action: string, request: any, responseType?: ResponseType): Promise<any>;\n clone(): IConnection;\n}\nexport function instanceOfIConnection(object: any): object is IConnection {\n return typeof object.opts === \"function\" &&\n typeof object.send === \"function\" &&\n typeof object.clone === \"function\";\n}\n\n// comms ---\n\nfunction encode(uriComponent: string | number | boolean, encodeRequest: boolean): string {\n return (encodeRequest === undefined || encodeRequest === true) ? encodeURIComponent(uriComponent) : \"\" + uriComponent;\n}\n\nexport function serializeRequest(obj: any, encodeRequest: boolean = true, prefix: string = \"\"): string {\n if (prefix) {\n prefix += \".\";\n }\n if (typeof obj !== \"object\") {\n return encode(obj, encodeRequest);\n }\n\n const str: string[] = [];\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (obj[key] instanceof Array) {\n // Specific to ESP - but no REST standard exists...\n let includeItemCount = false;\n obj[key].forEach((row: any, i: number) => {\n if (typeof row === \"object\") {\n includeItemCount = true;\n str.push(serializeRequest(row, encodeRequest, prefix + encode(`${key}.${i}`, encodeRequest)));\n } else {\n str.push(prefix + encode(`${key}_i${i}`, encodeRequest) + \"=\" + serializeRequest(row, encodeRequest));\n }\n });\n if (includeItemCount) {\n str.push(prefix + encode(`${key}.itemcount`, encodeRequest) + \"=\" + obj[key].length);\n }\n } else if (typeof obj[key] === \"object\") {\n if (obj[key] && obj[key][\"Item\"] instanceof Array) { // Specific to ws_machine.GetTargetClusterInfo?\n str.push(serializeRequest(obj[key][\"Item\"], encodeRequest, prefix + encode(key, encodeRequest)));\n str.push(prefix + encode(`${key}.itemcount`, encodeRequest) + \"=\" + obj[key][\"Item\"].length);\n } else {\n str.push(serializeRequest(obj[key], encodeRequest, prefix + encode(key, encodeRequest)));\n }\n } else if (obj[key] !== undefined) {\n str.push(prefix + encode(key, encodeRequest) + \"=\" + encode(obj[key], encodeRequest));\n } else {\n str.push(prefix + encode(key, encodeRequest));\n }\n }\n }\n return str.join(\"&\");\n}\n\nexport function deserializeResponse(body: string) {\n return JSON.parse(body);\n}\n\nexport function jsonp(opts: IOptions, action: string, request: any = {}, responseType: ResponseType = \"json\", header?: any): Promise<any> {\n if (header) {\n console.warn(\"Header attributes ignored for JSONP connections\");\n }\n return new Promise<any>((resolve, reject) => {\n let respondedTimeout = opts.timeoutSecs! * 1000;\n const respondedTick = 5000;\n const callbackName = \"jsonp_callback_\" + Math.round(Math.random() * 999999);\n (window as any)[callbackName] = function (response: any) {\n respondedTimeout = 0;\n doCallback();\n resolve(responseType === \"json\" && typeof response === \"string\" ? deserializeResponse(response) : response);\n };\n const script = document.createElement(\"script\");\n let url = join(opts.baseUrl, action);\n url += url.indexOf(\"?\") >= 0 ? \"&\" : \"?\";\n script.src = url + \"jsonp=\" + callbackName + \"&\" + serializeRequest(request, opts.encodeRequest);\n document.body.appendChild(script);\n const progress = setInterval(function () {\n if (respondedTimeout <= 0) {\n clearInterval(progress);\n } else {\n respondedTimeout -= respondedTick;\n if (respondedTimeout <= 0) {\n clearInterval(progress);\n logger.error(\"Request timeout: \" + script.src);\n doCallback();\n reject(Error(\"Request timeout: \" + script.src));\n } else {\n logger.debug(\"Request pending (\" + respondedTimeout / 1000 + \" sec): \" + script.src);\n }\n }\n }, respondedTick);\n\n function doCallback() {\n delete (window as any)[callbackName];\n document.body.removeChild(script);\n }\n });\n}\n\nfunction authHeader(opts: IOptions): object {\n return opts.userID ? { Authorization: `Basic ${btoa(`${opts.userID}:${opts.password}`)}` } : {};\n}\n\n// _omitMap is a workaround for older HPCC-Platform instances without credentials ---\nconst _omitMap: { [baseUrl: string]: boolean } = {};\nfunction doFetch(opts: IOptions, action: string, requestInit: RequestInit, headersInit: HeadersInit, responseType: string) {\n headersInit = {\n ...authHeader(opts),\n ...headersInit\n };\n\n requestInit = {\n credentials: _omitMap[opts.baseUrl] ? \"omit\" : \"include\",\n ...requestInit,\n headers: headersInit\n };\n\n if (fetch[\"__setGlobalDispatcher\"]) {\n fetch[\"__setGlobalDispatcher\"](fetch[\"__defaultAgent\"]);\n }\n\n if (opts.baseUrl.indexOf(\"https:\") === 0) {\n // NodeJS / node-fetch only ---\n if (opts.rejectUnauthorized === false && fetch[\"__rejectUnauthorizedAgent\"]) {\n if (fetch[\"__setGlobalDispatcher\"]) {\n fetch[\"__setGlobalDispatcher\"](fetch[\"__rejectUnauthorizedAgent\"]);\n } else {\n requestInit[\"agent\"] = fetch[\"__rejectUnauthorizedAgent\"];\n }\n } else if (fetch[\"__trustwaveAgent\"]) {\n requestInit[\"agent\"] = fetch[\"__trustwaveAgent\"];\n }\n }\n\n function handleResponse(response: Response): Promise<any> {\n if (response.ok) {\n return responseType === \"json\" ? response.json() : response.text();\n }\n throw new Error(response.statusText);\n }\n\n return promiseTimeout(opts.timeoutSecs! * 1000, fetch(join(opts.baseUrl, action), requestInit)\n .then(handleResponse)\n .catch(e => {\n // Try again with the opposite credentials mode ---\n requestInit.credentials = !_omitMap[opts.baseUrl] ? \"omit\" : \"include\";\n return fetch(join(opts.baseUrl, action), requestInit)\n .then(handleResponse)\n .then(responseBody => {\n _omitMap[opts.baseUrl] = !_omitMap[opts.baseUrl]; // The \"opposite\" credentials mode is known to work ---\n return responseBody;\n });\n })\n );\n}\n\nexport function post(opts: IOptions, action: string, request: any, responseType: ResponseType = \"json\", header?: any): Promise<any> {\n if (request.upload_) {\n delete request.upload_;\n action += \"?upload_\";\n }\n let abortSignal;\n if (request.abortSignal_) {\n abortSignal = request.abortSignal_;\n delete request.abortSignal_;\n }\n return doFetch(opts, action, {\n method: \"post\",\n body: serializeRequest(request, opts.encodeRequest),\n signal: abortSignal\n }, {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n ...header\n } as any, responseType);\n}\n\nexport function get(opts: IOptions, action: string, request: any, responseType: ResponseType = \"json\", header?: any): Promise<any> {\n let abortSignal;\n if (request.abortSignal_) {\n abortSignal = request.abortSignal_;\n delete request.abortSignal_;\n }\n return doFetch(opts, `${action}?${serializeRequest(request, opts.encodeRequest)}`, {\n method: \"get\",\n signal: abortSignal\n }, {\n ...header\n } as any, responseType);\n}\n\nexport type SendFunc = (opts: IOptions, action: string, request: any, responseType: ResponseType, header?: any) => Promise<any>;\nexport function send(opts: IOptions, action: string, request: any, responseType: ResponseType = \"json\", header?: any): Promise<any> {\n let retVal: Promise<any>;\n switch (opts.type) {\n case \"jsonp\":\n retVal = jsonp(opts, action, request, responseType, header);\n break;\n case \"get\":\n retVal = get(opts, action, request, responseType, header);\n break;\n case \"post\":\n default:\n retVal = post(opts, action, request, responseType, header);\n break;\n }\n return retVal;\n}\n\nlet hookedSend: SendFunc = send;\nexport function hookSend(newSend?: SendFunc): SendFunc {\n const retVal = hookedSend;\n if (newSend) {\n hookedSend = newSend;\n }\n return retVal;\n}\n\nexport class Connection implements IConnection {\n protected _opts: IOptions;\n get baseUrl() { return this._opts.baseUrl; }\n\n constructor(opts: IOptions) {\n this.opts(opts);\n }\n\n // IConnection ---\n opts(_: Partial<IOptions>): this;\n opts(): IOptions;\n opts(_?: Partial<IOptions>): this | IOptions {\n if (arguments.length === 0) return this._opts;\n this._opts = { ...DefaultOptions, ..._ };\n return this;\n }\n\n send(action: string, request: any, responseType: ResponseType = \"json\", header?: any): Promise<any> {\n if (this._opts.hookSend) {\n return this._opts.hookSend(this._opts, action, request, responseType, hookedSend, header);\n }\n return hookedSend(this._opts, action, request, responseType, header);\n }\n\n clone() {\n return new Connection(this.opts());\n }\n}\n\nexport type IConnectionFactory = (opts: IOptions) => IConnection;\nexport let createConnection: IConnectionFactory = function (opts: IOptions): IConnection {\n return new Connection(opts);\n};\n\nexport function setTransportFactory(newFunc: IConnectionFactory): IConnectionFactory {\n const retVal = createConnection;\n createConnection = newFunc;\n return retVal;\n}\n","import { join } from \"@hpcc-js/util\";\nimport { createConnection, IConnection, IOptions, ResponseType } from \"./connection.ts\";\n\nexport type ESPResponseType = ResponseType | \"json2\" | \"xsd\";\n\nexport function isArray(arg: any) {\n return Object.prototype.toString.call(arg) === \"[object Array]\";\n}\n\nexport interface Exception {\n Code: number;\n Message: string;\n}\n\nexport interface Exceptions {\n Source: string;\n Exception: Exception[];\n}\n\nexport class ESPExceptions extends Error implements Exceptions {\n isESPExceptions = true;\n action: string;\n request: string;\n Source: string;\n Exception: Exception[];\n\n constructor(action: string, request: any, exceptions: Exceptions) {\n super(\"ESPException: \" + exceptions.Source);\n this.action = action;\n this.request = request;\n this.Source = exceptions.Source;\n this.Exception = exceptions.Exception;\n if (exceptions.Exception.length) {\n this.message = `${exceptions.Exception[0].Code}: ${exceptions.Exception[0].Message}`;\n } else {\n this.message = \"\";\n }\n }\n}\n\nexport function isExceptions(err: any): err is Exceptions {\n return err instanceof ESPExceptions || (err.isESPExceptions && Array.isArray(err.Exception));\n}\n\nfunction isConnection(optsConnection: IOptions | IConnection): optsConnection is IConnection {\n return (optsConnection as IConnection).send !== undefined;\n}\n\nexport class ESPConnection implements IConnection {\n private _connection: IConnection;\n get baseUrl() { return this._connection.opts().baseUrl; }\n private _service: string;\n private _version: string;\n\n constructor(optsConnection: IOptions | IConnection, service: string, version: string) {\n this._connection = isConnection(optsConnection) ? optsConnection : createConnection(optsConnection);\n this._service = service;\n this._version = version;\n }\n\n service(): string;\n service(_: string): ESPConnection;\n service(_?: string): string | ESPConnection {\n if (_ === void 0) return this._service;\n this._service = _;\n return this;\n }\n\n version(): string;\n version(_: string): ESPConnection;\n version(_?: string): string | ESPConnection {\n if (_ === void 0) return this._version;\n this._version = _;\n return this;\n }\n\n toESPStringArray(target: any, arrayName: string): any {\n if (isArray(target[arrayName])) {\n for (let i = 0; i < target[arrayName].length; ++i) {\n target[arrayName + \"_i\" + i] = target[arrayName][i];\n }\n delete target[arrayName];\n }\n return target;\n }\n\n // IConnection ---\n opts(_: Partial<IOptions>): this;\n opts(): IOptions;\n opts(_?: Partial<IOptions>): this | IOptions {\n if (_ === void 0) return this._connection.opts();\n this._connection.opts(_);\n return this;\n }\n\n send(action: string, _request: any = {}, espResponseType: ESPResponseType = \"json\", largeUpload: boolean = false, abortSignal?: AbortSignal, espResponseField?: string): Promise<any> {\n const request = { ..._request, ...{ ver_: this._version } };\n if (largeUpload) {\n request[\"upload_\"] = true;\n }\n if (abortSignal) {\n request[\"abortSignal_\"] = abortSignal;\n }\n let serviceAction: string;\n let responseType: ResponseType = \"json\";\n switch (espResponseType) {\n case \"text\":\n serviceAction = join(this._service, action);\n responseType = \"text\";\n break;\n case \"xsd\":\n serviceAction = join(this._service, action + \".xsd\");\n responseType = \"text\";\n break;\n case \"json2\":\n serviceAction = join(this._service, action + \"/json\");\n espResponseType = \"json\";\n const actionParts = action.split(\"/\");\n action = actionParts.pop()!;\n break;\n default:\n serviceAction = join(this._service, action + \".json\");\n }\n return this._connection.send(serviceAction, request, responseType).then((response) => {\n if (espResponseType === \"json\") {\n let retVal;\n if (response && response.Exceptions) {\n throw new ESPExceptions(action, request, response.Exceptions);\n } else if (response) {\n retVal = response[espResponseField || (action + \"Response\")];\n }\n if (!retVal) {\n throw new ESPExceptions(action, request, {\n Source: \"ESPConnection.send\",\n Exception: [{ Code: 0, Message: \"Missing Response\" }]\n });\n }\n return retVal;\n }\n return response;\n });\n }\n\n clone() {\n return new ESPConnection(this._connection.clone(), this._service, this._version);\n }\n}\n\nexport class Service {\n protected _connection: ESPConnection;\n get baseUrl() { return this._connection.opts().baseUrl; }\n\n constructor(optsConnection: IOptions | IConnection, service: string, version: string) {\n this._connection = new ESPConnection(optsConnection, service, version);\n }\n\n opts() {\n return this._connection.opts();\n }\n\n connection(): ESPConnection {\n return this._connection.clone();\n }\n}\n","import { IConnection, IOptions } from \"../../../../connection.ts\";\nimport { Service } from \"../../../../espConnection.ts\";\n\nexport namespace FileSpray {\n\n export type int = number;\n export type double = number;\n export type base64Binary = string;\n export type long = number;\n export type dateTime = string;\n\n export enum DFUWUActions {\n Delete = \"Delete\",\n Protect = \"Protect\",\n Unprotect = \"Unprotect\",\n Restore = \"Restore\",\n SetToFailed = \"SetToFailed\",\n Archive = \"Archive\"\n }\n\n export interface AbortDFUWorkunit {\n wuid: string;\n }\n\n export interface Exception {\n Code: string;\n Audience: string;\n Source: string;\n Message: string;\n }\n\n export interface Exceptions {\n Source: string;\n Exception: Exception[];\n }\n\n export interface AbortDFUWorkunitResponse {\n Exceptions: Exceptions;\n }\n\n export interface Copy {\n sourceLogicalName: string;\n destGroup: string;\n destGroupRoxie: string;\n destLogicalName: string;\n sourceDali: string;\n srcusername: string;\n srcpassword: string;\n overwrite: boolean;\n ensure: boolean;\n replicate: boolean;\n ReplicateOffset: int;\n maxConnections: int;\n throttle: int;\n transferBufferSize: int;\n nosplit: boolean;\n norecover: boolean;\n compress: boolean;\n Wrap: boolean;\n Multicopy: boolean;\n SourceDiffKeyName: string;\n DestDiffKeyName: string;\n superCopy: boolean;\n push: boolean;\n pull: boolean;\n ifnewer: boolean;\n noCommon: boolean;\n encrypt: string;\n decrypt: string;\n preserveCompression: boolean;\n DFUServerQueue: string;\n ExpireDays: int;\n }\n\n export interface CopyResponse {\n Exceptions: Exceptions;\n result: string;\n }\n\n export interface CreateDFUPublisherWorkunit {\n DFUServerQueue: string;\n }\n\n export interface result {\n ID: string;\n DFUServerName: string;\n ClusterName: string;\n JobName: string;\n Queue: string;\n User: string;\n isProtected: boolean;\n Command: int;\n CommandMessage: string;\n PercentDone: int;\n SecsLeft: int;\n ProgressMessage: string;\n SummaryMessage: string;\n State: int;\n SourceLogicalName: string;\n SourceIP: string;\n SourceFilePath: string;\n SourceDali: string;\n SourceRecordSize: int;\n SourceFormat: int;\n RowTag: string;\n SourceNumParts: int;\n SourceDirectory: string;\n DestLogicalName: string;\n DestGroupName: string;\n DestDirectory: string;\n DestIP: string;\n DestFilePath: string;\n DestFormat: int;\n DestNumParts: int;\n DestRecordSize: int;\n Replicate: boolean;\n Overwrite: boolean;\n Compress: boolean;\n SourceCsvSeparate: string;\n SourceCsvQuote: string;\n SourceCsvTerminate: string;\n SourceCsvEscape: string;\n TimeStarted: string;\n TimeStopped: string;\n StateMessage: string;\n MonitorEventName: string;\n MonitorSub: boolean;\n MonitorShotLimit: int;\n SourceDiffKeyName: string;\n DestDiffKeyName: string;\n Archived: boolean;\n encrypt: string;\n decrypt: string;\n failIfNoSourceFile: boolean;\n recordStructurePresent: boolean;\n quotedTerminator: boolean;\n preserveCompression: boolean;\n expireDays: int;\n PreserveFileParts: boolean;\n FileAccessCost: double;\n KbPerSecAve: int;\n KbPerSec: int;\n }\n\n export interface CreateDFUPublisherWorkunitResponse {\n Exceptions: Exceptions;\n result: result;\n }\n\n export interface CreateDFUWorkunit {\n DFUServerQueue: string;\n }\n\n export interface CreateDFUWorkunitResponse {\n Exceptions: Exceptions;\n result: result;\n }\n\n export interface DFUWUFileRequest {\n Wuid?: string;\n Type?: string;\n PlainText?: string;\n }\n\n export interface DFUWUFileResponse {\n Exceptions: Exceptions;\n file: string;\n }\n\n export interface DFUWUSearchRequest {\n\n }\n\n export interface ClusterNames {\n ClusterName: string[];\n }\n\n export interface DFUWUSearchResponse {\n Exceptions: Exceptions;\n ClusterNames: ClusterNames;\n }\n\n export interface wuids {\n Item: string[];\n }\n\n export interface DFUWorkunitsActionRequest {\n wuids?: wuids;\n Type?: DFUWUActions;\n }\n\n export interface DFUActionResult {\n ID: string;\n Action: string;\n Result: string;\n }\n\n export interface DFUActionResults {\n DFUActionResult: DFUActionResult[];\n }\n\n export interface DFUWorkunitsActionResponse {\n Exceptions: Exceptions;\n FirstColumn: string;\n DFUActionResults: DFUActionResults;\n }\n\n export interface DeleteDFUWorkunit {\n wuid: string;\n }\n\n export interface DeleteDFUWorkunitResponse {\n Exceptions: Exceptions;\n result: boolean;\n }\n\n export interface DeleteDFUWorkunits {\n wuids: wuids;\n }\n\n export interface DeleteDFUWorkunitsResponse {\n Exceptions: Exceptions;\n }\n\n export interface Names {\n Item: string[];\n }\n\n export interface DeleteDropZoneFilesRequest {\n DropZoneName?: string;\n NetAddress?: string;\n Path?: string;\n OS?: string;\n Names?: Names;\n }\n\n export interface Despray {\n destGroup: string;\n sourceLogicalName: string;\n destIP: string;\n destPath: string;\n destPlane: string;\n dstxml: base64Binary;\n overwrite: boolean;\n maxConnections: int;\n throttle: int;\n transferBufferSize: int;\n splitprefix: string;\n norecover: boolean;\n wrap: boolean;\n multiCopy: boolean;\n SingleConnection: boolean;\n DFUServerQueue: string;\n compress: boolean;\n encrypt: string;\n decrypt: string;\n }\n\n export interface DesprayResponse {\n Exceptions: Exceptions;\n wuid: string;\n }\n\n export interface DfuMonitorRequest {\n EventName?: string;\n LogicalName?: string;\n Ip?: string;\n Filename?: string;\n Sub?: boolean;\n ShotLimit?: int;\n }\n\n export interface DfuMonitorResponse {\n Exceptions: Exceptions;\n wuid: string;\n }\n\n export interface DropZoneFileSearchRequest {\n DropZoneName?: string;\n Server?: string;\n ECLWatchVisibleOnly?: boolean;\n NameFilter?: string;\n }\n\n export interface PhysicalFileStruct {\n name: string;\n Server: string;\n isDir: boolean;\n filesize: long;\n modifiedtime: string;\n Path: string;\n Files: Files;\n }\n\n export interface Files {\n PhysicalFileStruct: PhysicalFileStruct[];\n }\n\n export interface DropZoneFileSearchResponse {\n Exceptions: Exceptions;\n Files: Files;\n Warning: string;\n }\n\n export interface DropZoneFilesRequest {\n DropZoneName?: string;\n NetAddress?: string;\n Path?: string;\n OS?: string;\n Subfolder?: string;\n ECLWatchVisibleOnly?: boolean;\n DirectoryOnly?: boolean;\n }\n\n export interface DropZone {\n Name: string;\n NetAddress: string;\n Path: string;\n Computer: string;\n Linux: string;\n }\n\n export interface DropZones {\n DropZone: DropZone[];\n }\n\n export interface DropZoneFilesResponse {\n Exceptions: Exceptions;\n DropZoneName: string;\n NetAddress: string;\n Path: string;\n OS: int;\n ECLWatchVisibleOnly: boolean;\n DropZones: DropZones;\n Files: Files;\n }\n\n export interface EchoDateTime {\n dt: dateTime;\n }\n\n export interface EchoDateTimeResponse {\n result: dateTime;\n }\n\n export interface FileListRequest {\n DropZoneName?: string;\n Netaddr?: string;\n Path?: string;\n Mask?: string;\n OS?: string;\n DirectoryOnly?: boolean;\n }\n\n export interface files {\n PhysicalFileStruct: PhysicalFileStruct[];\n }\n\n export interface FileListResponse {\n Exceptions: Exceptions;\n Netaddr: string;\n Path: string;\n Mask: string;\n OS: int;\n DirectoryOnly: boolean;\n AcceptLanguage: string;\n files: files;\n }\n\n export interface GetDFUExceptions {\n wuid: string;\n }\n\n export interface DFUException {\n Code: int;\n Message: string;\n }\n\n export interface result2 {\n DFUException: DFUException[];\n }\n\n export interface GetDFUExceptionsResponse {\n Exceptions: Exceptions;\n result: result2;\n }\n\n export interface ProgressRequest {\n wuid?: string;\n }\n\n export interface ProgressResponse {\n Exceptions: Exceptions;\n wuid: string;\n PercentDone: int;\n SecsLeft: int;\n KbPerSecAve: int;\n KbPerSec: int;\n SlavesDone: int;\n TimeTaken: string;\n ProgressMessage: string;\n SummaryMessage: string;\n State: string;\n }\n\n export interface GetDFUServerQueuesRequest {\n DFUServerName?: string;\n }\n\n export interface GetDFUServerQueuesResponse {\n Exceptions: Exceptions;\n Names: Names;\n }\n\n export interface GetDFUWorkunit {\n wuid: string;\n }\n\n export interface GetDFUWorkunitResponse {\n Exceptions: Exceptions;\n result: result;\n AutoRefresh: int;\n }\n\n export interface GetDFUWorkunits {\n Wuid: string;\n Owner: string;\n Cluster: string;\n StateReq: string;\n Type: string;\n Jobname: string;\n PageSize: long;\n CurrentPage: int;\n PageStartFrom: long;\n Sortby: string;\n Descending: boolean;\n CacheHint: long;\n ParentWuid: string;\n PublisherWuid: string;\n includeProgressMessages: boolean;\n includeTimings: boolean;\n includeTransferRate: boolean;\n }\n\n export interface DFUWorkunit {\n ID: string;\n DFUServerName: string;\n ClusterName: string;\n JobName: string;\n Queue: string;\n User: string;\n isProtected: boolean;\n Command: int;\n CommandMessage: string;\n PercentDone: int;\n SecsLeft: int;\n ProgressMessage: string;\n SummaryMessage: string;\n State: int;\n SourceLogicalName: string;\n SourceIP: string;\n SourceFilePath: string;\n SourceDali: string;\n SourceRecordSize: int;\n SourceFormat: int;\n RowTag: string;\n SourceNumParts: int;\n SourceDirectory: string;\n DestLogicalName: string;\n DestGroupName: string;\n DestDirectory: string;\n DestIP: string;\n DestFilePath: string;\n DestFormat: int;\n DestNumParts: int;\n DestRecordSize: int;\n Replicate: boolean;\n Overwrite: boolean;\n Compress: boolean;\n SourceCsvSeparate: string;\n SourceCsvQuote: string;\n SourceCsvTerminate: string;\n SourceCsvEscape: string;\n TimeStarted: string;\n TimeStopped: string;\n StateMessage: string;\n MonitorEventName: string;\n MonitorSub: boolean;\n MonitorShotLimit: int;\n SourceDiffKeyName: string;\n DestDiffKeyName: string;\n Archived: boolean;\n encrypt: string;\n decrypt: string;\n failIfNoSourceFile: boolean;\n recordStructurePresent: boolean;\n quotedTerminator: boolean;\n preserveCompression: boolean;\n expireDays: int;\n PreserveFileParts: boolean;\n FileAccessCost: double;\n KbPerSecAve: int;\n KbPerSec: int;\n }\n\n export interface results {\n DFUWorkunit: DFUWorkunit[];\n }\n\n export interface GetDFUWorkunitsResponse {\n Exceptions: Exceptions;\n results: results;\n Type: string;\n Owner: string;\n Cluster: string;\n StateReq: string;\n PageSize: long;\n PrevPage: long;\n NextPage: long;\n LastPage: long;\n NumWUs: long;\n PageStartFrom: long;\n PageEndAt: long;\n First: boolean;\n Sortby: string;\n Descending: boolean;\n BasicQuery: string;\n Filters: string;\n CacheHint: long;\n }\n\n export interface GetRemoteTargetsRequest {\n\n }\n\n export interface TargetNames {\n Item: string[];\n }\n\n export interface GetRemoteTargetsResponse {\n Exceptions: Exceptions;\n TargetNames: TargetNames;\n AllowForeign: boolean;\n }\n\n export interface GetSprayTargetsRequest {\n\n }\n\n export interface GroupNode {\n Name: string;\n ClusterType: string;\n ReplicateOutputs: boolean;\n }\n\n export interface GroupNodes {\n GroupNode: GroupNode[];\n }\n\n export interface GetSprayTargetsResponse {\n Exceptions: Exceptions;\n GroupNodes: GroupNodes;\n }\n\n export interface OpenSaveRequest {\n Location?: string;\n Path?: string;\n Name?: string;\n Type?: string;\n DateTime?: string;\n BinaryFile?: boolean;\n }\n\n export interface OpenSaveResponse {\n Exceptions: Exceptions;\n Location: string;\n Path: string;\n Name: string;\n Type: string;\n DateTime: string;\n Viewable: boolean;\n }\n\n export interface FileSprayPingRequest {\n\n }\n\n export interface FileSprayPingResponse {\n\n }\n\n export interface Rename {\n srcname: string;\n dstname: string;\n overwrite: boolean;\n DFUServerQueue: string;\n }\n\n export interface RenameResponse {\n Exceptions: Exceptions;\n wuid: string;\n }\n\n export interface Replicate {\n sourceLogicalName: string;\n replicateOffset: int;\n cluster: string;\n repeatLast: boolean;\n onlyRepeated: boolean;\n DFUServerQueue: string;\n }\n\n export interface ReplicateResponse {\n Exceptions: Exceptions;\n wuid: string;\n }\n\n export interface ShowResultRequest {\n Result?: string;\n }\n\n export interface ShowResultResponse {\n Exceptions: Exceptions;\n Result: string;\n }\n\n export interface SprayFixed {\n sourceIP: string;\n sourcePlane: string;\n sourcePath: string;\n srcxml: base64Binary;\n sourceFormat: string;\n sourceRecordSize: int;\n destGroup: string;\n destLogicalName: string;\n destNumParts: int;\n overwrite: boolean;\n replicate: boolean;\n ReplicateOffset: int;\n maxConnections: int;\n throttle: int;\n transferBufferSize: int;\n prefix: string;\n nosplit: boolean;\n norecover: boolean;\n compress: boolean;\n push: boolean;\n pull: boolean;\n noCommon: boolean;\n encrypt: string;\n decrypt: string;\n wrap: boolean;\n failIfNoSourceFile: boolean;\n recordStructurePresent: boolean;\n quotedTerminator: boolean;\n expireDays: int;\n DFUServerQueue: string;\n }\n\n export interface SprayFixedResponse {\n Exceptions: Exceptions;\n wuid: string;\n }\n\n export interface SprayVariable {\n sourceIP: string;\n sourcePlane: string;\n sourcePath: string;\n srcxml: base64Binary;\n sourceMaxRecordSize: int;\n sourceFormat: int;\n NoSourceCsvSeparator: boolean;\n sourceCsvSeparate: string;\n sourceCsvTerminate: string;\n sourceCsvQuote: string;\n sourceCsvEscape: string;\n sourceRowTag: string;\n destGroup: string;\n destLogicalName: string;\n destNumParts: int;\n overwrite: boolean;\n replicate: boolean;\n ReplicateOffset: int;\n maxConnections: int;\n throttle: int;\n transferBufferSize: int;\n prefix: string;\n nosplit: boolean;\n norecover: boolean;\n compress: boolean;\n push: boolean;\n pull: boolean;\n noCommon: boolean;\n encrypt: string;\n decrypt: string;\n failIfNoSourceFile: boolean;\n recordStructurePresent: boolean;\n quotedTerminator: boolean;\n sourceRowPath: string;\n isJSON: boolean;\n expireDays: int;\n DFUServerQueue: string;\n srcUsername: string;\n srcPassword: string;\n }\n\n export interface SprayResponse {\n Exceptions: Exceptions;\n wuid: string;\n }\n\n export interface SubmitDFUWorkunit {\n wuid: string;\n }\n\n export interface SubmitDFUWorkunitResponse {\n Exceptions: Exceptions;\n }\n\n export interface wu {\n ID: string;\n DFUServerName: string;\n ClusterName: string;\n JobName: string;\n Queue: string;\n User: string;\n isProtected: boolean;\n Command: int;\n CommandMessage: string;\n PercentDone: int;\n SecsLeft: int;\n ProgressMessage: string;\n SummaryMessage: string;\n State: int;\n SourceLogicalName: string;\n SourceIP: string;\n SourceFilePath: string;\n SourceDali: string;\n SourceRecordSize: int;\n SourceFormat: int;\n RowTag: string;\n SourceNumParts: int;\n SourceDirectory: string;\n DestLogicalName: string;\n DestGroupName: string;\n DestDirectory: string;\n DestIP: string;\n DestFilePath: string;\n DestFormat: int;\n DestNumParts: int;\n DestRecordSize: int;\n Replicate: boolean;\n Overwrite: boolean;\n Compress: boolean;\n SourceCsvSeparate: string;\n SourceCsvQuote: string;\n SourceCsvTerminate: string;\n SourceCsvEscape: string;\n TimeStarted: string;\n TimeStopped: string;\n StateMessage: string;\n MonitorEventName: string;\n MonitorSub: boolean;\n MonitorShotLimit: int;\n SourceDiffKeyName: string;\n DestDiffKeyName: string;\n Archived: boolean;\n encrypt: string;\n decrypt: string;\n failIfNoSourceFile: boolean;\n recordStructurePresent: boolean;\n quotedTerminator: boolean;\n preserveCompression: boolean;\n expireDays: int;\n PreserveFileParts: boolean;\n FileAccessCost: double;\n KbPerSecAve: int;\n KbPerSec: int;\n }\n\n export interface UpdateDFUWorkunit {\n wu: wu;\n ClusterOrig: string;\n JobNameOrig: string;\n isProtectedOrig: boolean;\n StateOrig: int;\n }\n\n export interface UpdateDFUWorkunitResponse {\n Exceptions: Exceptions;\n }\n\n}\n\nexport class FileSprayServiceBase extends Service {\n\n constructor(optsConnection: IOptions | IConnection) {\n super(optsConnection, \"FileSpray\", \"1.26\");\n }\n\n AbortDFUWorkunit(request: Partial<FileSpray.AbortDFUWorkunit>): Promise<FileSpray.AbortDFUWorkunitResponse> {\n return this._connection.send(\"AbortDFUWorkunit\", request, \"json\", false, undefined, \"AbortDFUWorkunitResponse\");\n }\n\n Copy(request: Partial<FileSpray.Copy>): Promise<FileSpray.CopyResponse> {\n return this._connection.send(\"Copy\", request, \"json\", false, undefined, \"CopyResponse\");\n }\n\n CreateDFUPublisherWorkunit(request: Partial<FileSpray.CreateDFUPublisherWorkunit>): Promise<FileSpray.CreateDFUPublisherWorkunitResponse> {\n return this._connection.send(\"CreateDFUPublisherWorkunit\", request, \"json\", false, undefined, \"CreateDFUPublisherWorkunitResponse\");\n }\n\n CreateDFUWorkunit(request: Partial<FileSpray.CreateDFUWorkunit>): Promise<FileSpray.CreateDFUWorkunitResponse> {\n return this._connection.send(\"CreateDFUWorkunit\", request, \"json\", false, undefined, \"CreateDFUWorkunitResponse\");\n }\n\n DFUWUFile(request: Partial<FileSpray.DFUWUFileRequest>): Promise<FileSpray.DFUWUFileResponse> {\n return this._connection.send(\"DFUWUFile\", request, \"json\", false, undefined, \"DFUWUFileResponse\");\n }\n\n DFUWUSearch(request: Partial<FileSpray.DFUWUSearchRequest>): Promise<FileSpray.DFUWUSearchResponse> {\n return this._connection.send(\"DFUWUSearch\", request, \"json\", false, undefined, \"DFUWUSearchResponse\");\n }\n\n DFUWorkunitsAction(request: Partial<FileSpray.DFUWorkunitsActionRequest>): Promise<FileSpray.DFUWorkunitsActionResponse> {\n return this._connection.send(\"DFUWorkunitsAction\", request, \"json\", false, undefined, \"DFUWorkunitsActionResponse\");\n }\n\n DeleteDFUWorkunit(request: Partial<FileSpray.DeleteDFUWorkunit>): Promise<FileSpray.DeleteDFUWorkunitResponse> {\n return this._connection.send(\"DeleteDFUWorkunit\", request, \"json\", false, undefined, \"DeleteDFUWorkunitResponse\");\n }\n\n DeleteDFUWorkunits(request: Partial<FileSpray.DeleteDFUWorkunits>): Promise<FileSpray.DeleteDFUWorkunitsResponse> {\n return this._connection.send(\"DeleteDFUWorkunits\", request, \"json\", false, undefined, \"DeleteDFUWorkunitsResponse\");\n }\n\n DeleteDropZoneFiles(request: Partial<FileSpray.DeleteDropZoneFilesRequest>): Promise<FileSpray.DFUWorkunitsActionResponse> {\n return this._connection.send(\"DeleteDropZoneFiles\", request, \"json\", false, undefined, \"DFUWorkunitsActionResponse\");\n }\n\n Despray(request: Partial<FileSpray.Despray>): Promise<FileSpray.DesprayResponse> {\n return this._connection.send(\"Despray\", request, \"json\", false, undefined, \"DesprayResponse\");\n }\n\n DfuMonitor(request: Partial<FileSpray.DfuMonitorRequest>): Promise<FileSpray.DfuMonitorResponse> {\n return this._connection.send(\"DfuMonitor\", request, \"json\", false, undefined, \"DfuMonitorResponse\");\n }\n\n DropZoneFileSearch(request: Partial<FileSpray.DropZoneFileSearchRequest>): Promise<FileSpray.DropZoneFileSearchResponse> {\n return this._connection.send(\"DropZoneFileSearch\", request, \"json\", false, undefined, \"DropZoneFileSearchResponse\");\n }\n\n DropZoneFiles(request: Partial<FileSpray.DropZoneFilesRequest>): Promise<FileSpray.DropZoneFilesResponse> {\n return this._connection.send(\"DropZoneFiles\", request, \"json\", false, undefined, \"DropZoneFilesResponse\");\n }\n\n EchoDateTime(request: Partial<FileSpray.EchoDateTime>): Promise<FileSpray.EchoDateTimeResponse> {\n return this._connection.send(\"EchoDateTime\", request, \"json\", false, undefined, \"EchoDateTimeResponse\");\n }\n\n FileList(request: Partial<FileSpray.FileListRequest>): Promise<FileSpray.FileListResponse> {\n return this._connection.send(\"FileList\", request, \"json\", false, undefined, \"FileListResponse\");\n }\n\n GetDFUExceptions(request: Partial<FileSpray.GetDFUExceptions>): Promise<FileSpray.GetDFUExceptionsResponse> {\n return this._connection.send(\"GetDFUExceptions\", request, \"json\", false, undefined, \"GetDFUExceptionsResponse\");\n }\n\n GetDFUProgress(request: Partial<FileSpray.ProgressRequest>): Promise<FileSpray.ProgressResponse> {\n return this._connection.send(\"GetDFUProgress\", request, \"json\", false, undefined, \"ProgressResponse\");\n }\n\n GetDFUServerQueues(request: Partial<FileSpray.GetDFUServerQueuesRequest>): Promise<FileSpray.GetDFUServerQueuesResponse> {\n return this._connection.send(\"GetDFUServerQueues\", request, \"json\", false, undefined, \"GetDFUServerQueuesResponse\");\n }\n\n GetDFUWorkunit(request: Partial<FileSpray.GetDFUWorkunit>): Promise<FileSpray.GetDFUWorkunitResponse> {\n return this._connection.send(\"GetDFUWorkunit\", request, \"json\", false, undefined, \"GetDFUWorkunitResponse\");\n }\n\n GetDFUWorkunits(request: Partial<FileSpray.GetDFUWorkunits>): Promise<FileSpray.GetDFUWorkunitsResponse> {\n return this._connection.send(\"GetDFUWorkunits\", request, \"json\", false, undefined, \"GetDFUWorkunitsResponse\");\n }\n\n GetRemoteTargets(request: Partial<FileSpray.GetRemoteTargetsRequest>): Promise<FileSpray.GetRemoteTargetsResponse> {\n return this._connection.send(\"GetRemoteTargets\", request, \"json\", false, undefined, \"GetRemoteTargetsResponse\");\n }\n\n GetSprayTargets(request: Partial<FileSpray.GetSprayTargetsRequest>): Promise<FileSpray.GetSprayTargetsResponse> {\n return this._connection.send(\"GetSprayTargets\", request, \"json\", false, undefined, \"GetSprayTargetsResponse\");\n }\n\n OpenSave(request: Partial<FileSpray.OpenSaveRequest>): Promise<FileSpray.OpenSaveResponse> {\n return this._connection.send(\"OpenSave\", request, \"json\", false, undefined, \"OpenSaveResponse\");\n }\n\n Ping(request: Partial<FileSpray.FileSprayPingRequest>): Promise<FileSpray.FileSprayPingResponse> {\n return this._connection.send(\"Ping\", request, \"json\", false, undefined, \"FileSprayPingResponse\");\n }\n\n Rename(request: Partial<FileSpray.Rename>): Promise<FileSpray.RenameResponse> {\n return this._connection.send(\"Rename\", request, \"json\", false, undefined, \"RenameResponse\");\n }\n\n Replicate(request: Partial<FileSpray.Replicate>): Promise<FileSpray.ReplicateResponse> {\n return this._connection.send(\"Replicate\", request, \"json\", false, undefined, \"ReplicateResponse\");\n }\n\n ShowResult(request: Partial<FileSpray.ShowResultRequest>): Promise<FileSpray.ShowResultResponse> {\n return this._connection.send(\"ShowResult\", request, \"json\", false, undefined, \"ShowResultResponse\");\n }\n\n SprayFixed(request: Partial<FileSpray.SprayFixed>): Promise<FileSpray.SprayFixedResponse> {\n return this._connection.send(\"SprayFixed\", request, \"json\", false, undefined, \"SprayFixedResponse\");\n }\n\n SprayVariable(request: Partial<FileSpray.SprayVariable>): Promise<FileSpray.SprayResponse> {\n return this._connection.send(\"SprayVariable\", request, \"json\", false, undefined, \"SprayResponse\");\n }\n\n SubmitDFUWorkunit(request: Partial<FileSpray.SubmitDFUWorkunit>): Promise<FileSpray.SubmitDFUWorkunitResponse> {\n return this._connection.send(\"SubmitDFUWorkunit\", request, \"json\", false, undefined, \"SubmitDFUWorkunitResponse\");\n }\n\n UpdateDFUWorkunit(request: Partial<FileSpray.UpdateDFUWorkunit>): Promise<FileSpray.UpdateDFUWorkunitResponse> {\n return this._connection.send(\"UpdateDFUWorkunit\", request, \"json\", false, undefined, \"UpdateDFUWorkunitResponse\");\n }\n\n}\n","import { FileSprayServiceBase, FileSpray } from \"./wsdl/FileSpray/v1.26/FileSpray.ts\";\n\nexport {\n FileSpray\n};\n\ntype UpdateDFUWorkunitMinusWU = Omit<FileSpray.UpdateDFUWorkunit, \"wu\">;\ntype UpdateDFUWorkunitWU = FileSpray.UpdateDFUWorkunit[\"wu\"];\n\nexport enum FileSprayStates {\n unknown = 0,\n scheduled,\n queued,\n started,\n aborted,\n failed,\n finished,\n monitoring,\n aborting,\n notfound = 999\n}\n\nexport interface UpdateDFUWorkunitEx extends UpdateDFUWorkunitMinusWU {\n wu?: Partial<UpdateDFUWorkunitWU>\n}\n\nexport class FileSprayService extends FileSprayServiceBase {\n\n DFUWUFileEx(request: FileSpray.DFUWUFileRequest): Promise<string> {\n return this._connection.send(\"DFUWUFile\", request, \"text\");\n }\n\n SprayFixedEx(request: Partial<FileSpray.SprayFixed>): Promise<FileSpray.SprayFixedResponse> {\n return this._connection.send(\"SprayFixed\", request);\n }\n\n SprayVariableEx(request: Partial<FileSpray.SprayVariable>): Promise<FileSpray.SprayResponse> {\n return this._connection.send(\"SprayVariable\", request, \"json\", false, null, \"SprayResponse\");\n }\n\n DesprayEx(request: Partial<FileSpray.Despray>): Promise<FileSpray.DesprayResponse> {\n return this._connection.send(\"Despray\", request);\n }\n\n UpdateDFUWorkunitEx(r