@hpcc-js/comms
Version:
hpcc-js - Communications
1,293 lines (1,199 loc) • 437 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@hpcc-js/util')) :
typeof define === 'function' && define.amd ? define(['exports', '@hpcc-js/util'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["@hpcc-js/comms"] = {}, global["@hpcc-js/util"]));
})(this, (function (exports, util) { 'use strict';
/* eslint-disable no-prototype-builtins */
var g =
(typeof globalThis !== 'undefined' && globalThis) ||
(typeof self !== 'undefined' && self) ||
// eslint-disable-next-line no-undef
(typeof global !== 'undefined' && global) ||
{};
var support = {
searchParams: 'URLSearchParams' in g,
iterable: 'Symbol' in g && 'iterator' in Symbol,
blob:
'FileReader' in g &&
'Blob' in g &&
(function() {
try {
new Blob();
return true
} catch (e) {
return false
}
})(),
formData: 'FormData' in g,
arrayBuffer: 'ArrayBuffer' in g
};
function isDataView(obj) {
return obj && DataView.prototype.isPrototypeOf(obj)
}
if (support.arrayBuffer) {
var viewClasses = [
'[object Int8Array]',
'[object Uint8Array]',
'[object Uint8ClampedArray]',
'[object Int16Array]',
'[object Uint16Array]',
'[object Int32Array]',
'[object Uint32Array]',
'[object Float32Array]',
'[object Float64Array]'
];
var isArrayBufferView =
ArrayBuffer.isView ||
function(obj) {
return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1
};
}
function normalizeName(name) {
if (typeof name !== 'string') {
name = String(name);
}
if (/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {
throw new TypeError('Invalid character in header field name: "' + name + '"')
}
return name.toLowerCase()
}
function normalizeValue(value) {
if (typeof value !== 'string') {
value = String(value);
}
return value
}
// Build a destructive iterator for the value list
function iteratorFor(items) {
var iterator = {
next: function() {
var value = items.shift();
return {done: value === undefined, value: value}
}
};
if (support.iterable) {
iterator[Symbol.iterator] = function() {
return iterator
};
}
return iterator
}
function Headers(headers) {
this.map = {};
if (headers instanceof Headers) {
headers.forEach(function(value, name) {
this.append(name, value);
}, this);
} else if (Array.isArray(headers)) {
headers.forEach(function(header) {
if (header.length != 2) {
throw new TypeError('Headers constructor: expected name/value pair to be length 2, found' + header.length)
}
this.append(header[0], header[1]);
}, this);
} else if (headers) {
Object.getOwnPropertyNames(headers).forEach(function(name) {
this.append(name, headers[name]);
}, this);
}
}
Headers.prototype.append = function(name, value) {
name = normalizeName(name);
value = normalizeValue(value);
var oldValue = this.map[name];
this.map[name] = oldValue ? oldValue + ', ' + value : value;
};
Headers.prototype['delete'] = function(name) {
delete this.map[normalizeName(name)];
};
Headers.prototype.get = function(name) {
name = normalizeName(name);
return this.has(name) ? this.map[name] : null
};
Headers.prototype.has = function(name) {
return this.map.hasOwnProperty(normalizeName(name))
};
Headers.prototype.set = function(name, value) {
this.map[normalizeName(name)] = normalizeValue(value);
};
Headers.prototype.forEach = function(callback, thisArg) {
for (var name in this.map) {
if (this.map.hasOwnProperty(name)) {
callback.call(thisArg, this.map[name], name, this);
}
}
};
Headers.prototype.keys = function() {
var items = [];
this.forEach(function(value, name) {
items.push(name);
});
return iteratorFor(items)
};
Headers.prototype.values = function() {
var items = [];
this.forEach(function(value) {
items.push(value);
});
return iteratorFor(items)
};
Headers.prototype.entries = function() {
var items = [];
this.forEach(function(value, name) {
items.push([name, value]);
});
return iteratorFor(items)
};
if (support.iterable) {
Headers.prototype[Symbol.iterator] = Headers.prototype.entries;
}
function consumed(body) {
if (body._noBody) return
if (body.bodyUsed) {
return Promise.reject(new TypeError('Already read'))
}
body.bodyUsed = true;
}
function fileReaderReady(reader) {
return new Promise(function(resolve, reject) {
reader.onload = function() {
resolve(reader.result);
};
reader.onerror = function() {
reject(reader.error);
};
})
}
function readBlobAsArrayBuffer(blob) {
var reader = new FileReader();
var promise = fileReaderReady(reader);
reader.readAsArrayBuffer(blob);
return promise
}
function readBlobAsText(blob) {
var reader = new FileReader();
var promise = fileReaderReady(reader);
var match = /charset=([A-Za-z0-9_-]+)/.exec(blob.type);
var encoding = match ? match[1] : 'utf-8';
reader.readAsText(blob, encoding);
return promise
}
function readArrayBufferAsText(buf) {
var view = new Uint8Array(buf);
var chars = new Array(view.length);
for (var i = 0; i < view.length; i++) {
chars[i] = String.fromCharCode(view[i]);
}
return chars.join('')
}
function bufferClone(buf) {
if (buf.slice) {
return buf.slice(0)
} else {
var view = new Uint8Array(buf.byteLength);
view.set(new Uint8Array(buf));
return view.buffer
}
}
function Body() {
this.bodyUsed = false;
this._initBody = function(body) {
/*
fetch-mock wraps the Response object in an ES6 Proxy to
provide useful test harness features such as flush. However, on
ES5 browsers without fetch or Proxy support pollyfills must be used;
the proxy-pollyfill is unable to proxy an attribute unless it exists
on the object before the Proxy is created. This change ensures
Response.bodyUsed exists on the instance, while maintaining the
semantic of setting Request.bodyUsed in the constructor before
_initBody is called.
*/
// eslint-disable-next-line no-self-assign
this.bodyUsed = this.bodyUsed;
this._bodyInit = body;
if (!body) {
this._noBody = true;
this._bodyText = '';
} else if (typeof body === 'string') {
this._bodyText = body;
} else if (support.blob && Blob.prototype.isPrototypeOf(body)) {
this._bodyBlob = body;
} else if (support.formData && FormData.prototype.isPrototypeOf(body)) {
this._bodyFormData = body;
} else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
this._bodyText = body.toString();
} else if (support.arrayBuffer && support.blob && isDataView(body)) {
this._bodyArrayBuffer = bufferClone(body.buffer);
// IE 10-11 can't handle a DataView body.
this._bodyInit = new Blob([this._bodyArrayBuffer]);
} else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {
this._bodyArrayBuffer = bufferClone(body);
} else {
this._bodyText = body = Object.prototype.toString.call(body);
}
if (!this.headers.get('content-type')) {
if (typeof body === 'string') {
this.headers.set('content-type', 'text/plain;charset=UTF-8');
} else if (this._bodyBlob && this._bodyBlob.type) {
this.headers.set('content-type', this._bodyBlob.type);
} else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {
this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');
}
}
};
if (support.blob) {
this.blob = function() {
var rejected = consumed(this);
if (rejected) {
return rejected
}
if (this._bodyBlob) {
return Promise.resolve(this._bodyBlob)
} else if (this._bodyArrayBuffer) {
return Promise.resolve(new Blob([this._bodyArrayBuffer]))
} else if (this._bodyFormData) {
throw new Error('could not read FormData body as blob')
} else {
return Promise.resolve(new Blob([this._bodyText]))
}
};
}
this.arrayBuffer = function() {
if (this._bodyArrayBuffer) {
var isConsumed = consumed(this);
if (isConsumed) {
return isConsumed
} else if (ArrayBuffer.isView(this._bodyArrayBuffer)) {
return Promise.resolve(
this._bodyArrayBuffer.buffer.slice(
this._bodyArrayBuffer.byteOffset,
this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength
)
)
} else {
return Promise.resolve(this._bodyArrayBuffer)
}
} else if (support.blob) {
return this.blob().then(readBlobAsArrayBuffer)
} else {
throw new Error('could not read as ArrayBuffer')
}
};
this.text = function() {
var rejected = consumed(this);
if (rejected) {
return rejected
}
if (this._bodyBlob) {
return readBlobAsText(this._bodyBlob)
} else if (this._bodyArrayBuffer) {
return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))
} else if (this._bodyFormData) {
throw new Error('could not read FormData body as text')
} else {
return Promise.resolve(this._bodyText)
}
};
if (support.formData) {
this.formData = function() {
return this.text().then(decode)
};
}
this.json = function() {
return this.text().then(JSON.parse)
};
return this
}
// HTTP methods whose capitalization should be normalized
var methods = ['CONNECT', 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PATCH', 'POST', 'PUT', 'TRACE'];
function normalizeMethod(method) {
var upcased = method.toUpperCase();
return methods.indexOf(upcased) > -1 ? upcased : method
}
function Request(input, options) {
if (!(this instanceof Request)) {
throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.')
}
options = options || {};
var body = options.body;
if (input instanceof Request) {
if (input.bodyUsed) {
throw new TypeError('Already read')
}
this.url = input.url;
this.credentials = input.credentials;
if (!options.headers) {
this.headers = new Headers(input.headers);
}
this.method = input.method;
this.mode = input.mode;
this.signal = input.signal;
if (!body && input._bodyInit != null) {
body = input._bodyInit;
input.bodyUsed = true;
}
} else {
this.url = String(input);
}
this.credentials = options.credentials || this.credentials || 'same-origin';
if (options.headers || !this.headers) {
this.headers = new Headers(options.headers);
}
this.method = normalizeMethod(options.method || this.method || 'GET');
this.mode = options.mode || this.mode || null;
this.signal = options.signal || this.signal || (function () {
if ('AbortController' in g) {
var ctrl = new AbortController();
return ctrl.signal;
}
}());
this.referrer = null;
if ((this.method === 'GET' || this.method === 'HEAD') && body) {
throw new TypeError('Body not allowed for GET or HEAD requests')
}
this._initBody(body);
if (this.method === 'GET' || this.method === 'HEAD') {
if (options.cache === 'no-store' || options.cache === 'no-cache') {
// Search for a '_' parameter in the query string
var reParamSearch = /([?&])_=[^&]*/;
if (reParamSearch.test(this.url)) {
// If it already exists then set the value with the current time
this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime());
} else {
// Otherwise add a new '_' parameter to the end with the current time
var reQueryString = /\?/;
this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime();
}
}
}
}
Request.prototype.clone = function() {
return new Request(this, {body: this._bodyInit})
};
function decode(body) {
var form = new FormData();
body
.trim()
.split('&')
.forEach(function(bytes) {
if (bytes) {
var split = bytes.split('=');
var name = split.shift().replace(/\+/g, ' ');
var value = split.join('=').replace(/\+/g, ' ');
form.append(decodeURIComponent(name), decodeURIComponent(value));
}
});
return form
}
function parseHeaders(rawHeaders) {
var headers = new Headers();
// Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space
// https://tools.ietf.org/html/rfc7230#section-3.2
var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' ');
// Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill
// https://github.com/github/fetch/issues/748
// https://github.com/zloirock/core-js/issues/751
preProcessedHeaders
.split('\r')
.map(function(header) {
return header.indexOf('\n') === 0 ? header.substr(1, header.length) : header
})
.forEach(function(line) {
var parts = line.split(':');
var key = parts.shift().trim();
if (key) {
var value = parts.join(':').trim();
try {
headers.append(key, value);
} catch (error) {
console.warn('Response ' + error.message);
}
}
});
return headers
}
Body.call(Request.prototype);
function Response(bodyInit, options) {
if (!(this instanceof Response)) {
throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.')
}
if (!options) {
options = {};
}
this.type = 'default';
this.status = options.status === undefined ? 200 : options.status;
if (this.status < 200 || this.status > 599) {
throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].")
}
this.ok = this.status >= 200 && this.status < 300;
this.statusText = options.statusText === undefined ? '' : '' + options.statusText;
this.headers = new Headers(options.headers);
this.url = options.url || '';
this._initBody(bodyInit);
}
Body.call(Response.prototype);
Response.prototype.clone = function() {
return new Response(this._bodyInit, {
status: this.status,
statusText: this.statusText,
headers: new Headers(this.headers),
url: this.url
})
};
Response.error = function() {
var response = new Response(null, {status: 200, statusText: ''});
response.ok = false;
response.status = 0;
response.type = 'error';
return response
};
var redirectStatuses = [301, 302, 303, 307, 308];
Response.redirect = function(url, status) {
if (redirectStatuses.indexOf(status) === -1) {
throw new RangeError('Invalid status code')
}
return new Response(null, {status: status, headers: {location: url}})
};
var DOMException = g.DOMException;
try {
new DOMException();
} catch (err) {
DOMException = function(message, name) {
this.message = message;
this.name = name;
var error = Error(message);
this.stack = error.stack;
};
DOMException.prototype = Object.create(Error.prototype);
DOMException.prototype.constructor = DOMException;
}
function fetch$1(input, init) {
return new Promise(function(resolve, reject) {
var request = new Request(input, init);
if (request.signal && request.signal.aborted) {
return reject(new DOMException('Aborted', 'AbortError'))
}
var xhr = new XMLHttpRequest();
function abortXhr() {
xhr.abort();
}
xhr.onload = function() {
var options = {
statusText: xhr.statusText,
headers: parseHeaders(xhr.getAllResponseHeaders() || '')
};
// This check if specifically for when a user fetches a file locally from the file system
// Only if the status is out of a normal range
if (request.url.indexOf('file://') === 0 && (xhr.status < 200 || xhr.status > 599)) {
options.status = 200;
} else {
options.status = xhr.status;
}
options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');
var body = 'response' in xhr ? xhr.response : xhr.responseText;
setTimeout(function() {
resolve(new Response(body, options));
}, 0);
};
xhr.onerror = function() {
setTimeout(function() {
reject(new TypeError('Network request failed'));
}, 0);
};
xhr.ontimeout = function() {
setTimeout(function() {
reject(new TypeError('Network request timed out'));
}, 0);
};
xhr.onabort = function() {
setTimeout(function() {
reject(new DOMException('Aborted', 'AbortError'));
}, 0);
};
function fixUrl(url) {
try {
return url === '' && g.location.href ? g.location.href : url
} catch (e) {
return url
}
}
xhr.open(request.method, fixUrl(request.url), true);
if (request.credentials === 'include') {
xhr.withCredentials = true;
} else if (request.credentials === 'omit') {
xhr.withCredentials = false;
}
if ('responseType' in xhr) {
if (support.blob) {
xhr.responseType = 'blob';
} else if (
support.arrayBuffer
) {
xhr.responseType = 'arraybuffer';
}
}
if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers || (g.Headers && init.headers instanceof g.Headers))) {
var names = [];
Object.getOwnPropertyNames(init.headers).forEach(function(name) {
names.push(normalizeName(name));
xhr.setRequestHeader(name, normalizeValue(init.headers[name]));
});
request.headers.forEach(function(value, name) {
if (names.indexOf(name) === -1) {
xhr.setRequestHeader(name, value);
}
});
} else {
request.headers.forEach(function(value, name) {
xhr.setRequestHeader(name, value);
});
}
if (request.signal) {
request.signal.addEventListener('abort', abortXhr);
xhr.onreadystatechange = function() {
// DONE (success or failure)
if (xhr.readyState === 4) {
request.signal.removeEventListener('abort', abortXhr);
}
};
}
xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);
})
}
fetch$1.polyfill = true;
if (!g.fetch) {
g.fetch = fetch$1;
g.Headers = Headers;
g.Request = Request;
g.Response = Response;
}
var PKG_NAME = "@hpcc-js/comms";
var PKG_VERSION = "2.99.1";
var BUILD_VERSION = "2.107.3";
/******************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise, SuppressedError, Symbol, Iterator */
var extendStatics = function(d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
function __extends(d, b) {
if (typeof b !== "function" && b !== null)
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}
var __assign = function() {
__assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
function __generator(thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (g && (g = 0, op[0] && (_ = 0)), _) try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
}
function __spreadArray(to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
}
typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
var e = new Error(message);
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
};
var logger$5 = util.scopedLogger("comms/connection.ts");
function instanceOfIOptions(object) {
return "baseUrl" in object;
}
var DefaultOptions = {
type: "post",
baseUrl: "",
userID: "",
password: "",
rejectUnauthorized: true,
timeoutSecs: 60
};
function instanceOfIConnection(object) {
return typeof object.opts === "function" &&
typeof object.send === "function" &&
typeof object.clone === "function";
}
// comms ---
function encode(uriComponent, encodeRequest) {
return (encodeRequest === undefined || encodeRequest === true) ? encodeURIComponent(uriComponent) : "" + uriComponent;
}
function serializeRequest(obj, encodeRequest, prefix) {
if (encodeRequest === void 0) { encodeRequest = true; }
if (prefix === void 0) { prefix = ""; }
if (prefix) {
prefix += ".";
}
if (typeof obj !== "object") {
return encode(obj, encodeRequest);
}
var str = [];
var _loop_1 = function (key) {
if (obj.hasOwnProperty(key)) {
if (obj[key] instanceof Array) {
// Specific to ESP - but no REST standard exists...
var includeItemCount_1 = false;
obj[key].forEach(function (row, i) {
if (typeof row === "object") {
includeItemCount_1 = true;
str.push(serializeRequest(row, encodeRequest, prefix + encode("".concat(key, ".").concat(i), encodeRequest)));
}
else {
str.push(prefix + encode("".concat(key, "_i").concat(i), encodeRequest) + "=" + serializeRequest(row, encodeRequest));
}
});
if (includeItemCount_1) {
str.push(prefix + encode("".concat(key, ".itemcount"), encodeRequest) + "=" + obj[key].length);
}
}
else if (typeof obj[key] === "object") {
if (obj[key] && obj[key]["Item"] instanceof Array) { // Specific to ws_machine.GetTargetClusterInfo?
str.push(serializeRequest(obj[key]["Item"], encodeRequest, prefix + encode(key, encodeRequest)));
str.push(prefix + encode("".concat(key, ".itemcount"), encodeRequest) + "=" + obj[key]["Item"].length);
}
else {
str.push(serializeRequest(obj[key], encodeRequest, prefix + encode(key, encodeRequest)));
}
}
else if (obj[key] !== undefined) {
str.push(prefix + encode(key, encodeRequest) + "=" + encode(obj[key], encodeRequest));
}
else {
str.push(prefix + encode(key, encodeRequest));
}
}
};
for (var key in obj) {
_loop_1(key);
}
return str.join("&");
}
function deserializeResponse(body) {
return JSON.parse(body);
}
function jsonp(opts, action, request, responseType, header) {
if (request === void 0) { request = {}; }
if (responseType === void 0) { responseType = "json"; }
if (header) {
console.warn("Header attributes ignored for JSONP connections");
}
return new Promise(function (resolve, reject) {
var respondedTimeout = opts.timeoutSecs * 1000;
var respondedTick = 5000;
var callbackName = "jsonp_callback_" + Math.round(Math.random() * 999999);
window[callbackName] = function (response) {
respondedTimeout = 0;
doCallback();
resolve(responseType === "json" && typeof response === "string" ? deserializeResponse(response) : response);
};
var script = document.createElement("script");
var url = util.join(opts.baseUrl, action);
url += url.indexOf("?") >= 0 ? "&" : "?";
script.src = url + "jsonp=" + callbackName + "&" + serializeRequest(request, opts.encodeRequest);
document.body.appendChild(script);
var progress = setInterval(function () {
if (respondedTimeout <= 0) {
clearInterval(progress);
}
else {
respondedTimeout -= respondedTick;
if (respondedTimeout <= 0) {
clearInterval(progress);
logger$5.error("Request timeout: " + script.src);
doCallback();
reject(Error("Request timeout: " + script.src));
}
else {
logger$5.debug("Request pending (" + respondedTimeout / 1000 + " sec): " + script.src);
}
}
}, respondedTick);
function doCallback() {
delete window[callbackName];
document.body.removeChild(script);
}
});
}
function authHeader(opts) {
return opts.userID ? { Authorization: "Basic ".concat(btoa("".concat(opts.userID, ":").concat(opts.password))) } : {};
}
// _omitMap is a workaround for older HPCC-Platform instances without credentials ---
var _omitMap = {};
function doFetch(opts, action, requestInit, headersInit, responseType) {
headersInit = __assign(__assign({}, authHeader(opts)), headersInit);
requestInit = __assign(__assign({ credentials: _omitMap[opts.baseUrl] ? "omit" : "include" }, requestInit), { headers: headersInit });
if (fetch["__setGlobalDispatcher"]) {
fetch["__setGlobalDispatcher"](fetch["__defaultAgent"]);
}
if (opts.baseUrl.indexOf("https:") === 0) {
// NodeJS / node-fetch only ---
if (opts.rejectUnauthorized === false && fetch["__rejectUnauthorizedAgent"]) {
if (fetch["__setGlobalDispatcher"]) {
fetch["__setGlobalDispatcher"](fetch["__rejectUnauthorizedAgent"]);
}
else {
requestInit["agent"] = fetch["__rejectUnauthorizedAgent"];
}
}
else if (fetch["__trustwaveAgent"]) {
requestInit["agent"] = fetch["__trustwaveAgent"];
}
}
function handleResponse(response) {
if (response.ok) {
return responseType === "json" ? response.json() : response.text();
}
throw new Error(response.statusText);
}
return util.promiseTimeout(opts.timeoutSecs * 1000, fetch(util.join(opts.baseUrl, action), requestInit)
.then(handleResponse)
.catch(function (e) {
// Try again with the opposite credentials mode ---
requestInit.credentials = !_omitMap[opts.baseUrl] ? "omit" : "include";
return fetch(util.join(opts.baseUrl, action), requestInit)
.then(handleResponse)
.then(function (responseBody) {
_omitMap[opts.baseUrl] = !_omitMap[opts.baseUrl]; // The "opposite" credentials mode is known to work ---
return responseBody;
});
}));
}
function post(opts, action, request, responseType, header) {
if (responseType === void 0) { responseType = "json"; }
if (request.upload_) {
delete request.upload_;
action += "?upload_";
}
var abortSignal;
if (request.abortSignal_) {
abortSignal = request.abortSignal_;
delete request.abortSignal_;
}
return doFetch(opts, action, {
method: "post",
body: serializeRequest(request, opts.encodeRequest),
signal: abortSignal
}, __assign({ "Content-Type": "application/x-www-form-urlencoded" }, header), responseType);
}
function get(opts, action, request, responseType, header) {
if (responseType === void 0) { responseType = "json"; }
var abortSignal;
if (request.abortSignal_) {
abortSignal = request.abortSignal_;
delete request.abortSignal_;
}
return doFetch(opts, "".concat(action, "?").concat(serializeRequest(request, opts.encodeRequest)), {
method: "get",
signal: abortSignal
}, __assign({}, header), responseType);
}
function send(opts, action, request, responseType, header) {
if (responseType === void 0) { responseType = "json"; }
var retVal;
switch (opts.type) {
case "jsonp":
retVal = jsonp(opts, action, request, responseType, header);
break;
case "get":
retVal = get(opts, action, request, responseType, header);
break;
case "post":
default:
retVal = post(opts, action, request, responseType, header);
break;
}
return retVal;
}
var hookedSend = send;
function hookSend(newSend) {
var retVal = hookedSend;
if (newSend) {
hookedSend = newSend;
}
return retVal;
}
var Connection = /** @class */ (function () {
function Connection(opts) {
this.opts(opts);
}
Object.defineProperty(Connection.prototype, "baseUrl", {
get: function () { return this._opts.baseUrl; },
enumerable: false,
configurable: true
});
Connection.prototype.opts = function (_) {
if (arguments.length === 0)
return this._opts;
this._opts = __assign(__assign({}, DefaultOptions), _);
return this;
};
Connection.prototype.send = function (action, request, responseType, header) {
if (responseType === void 0) { responseType = "json"; }
if (this._opts.hookSend) {
return this._opts.hookSend(this._opts, action, request, responseType, hookedSend, header);
}
return hookedSend(this._opts, action, request, responseType, header);
};
Connection.prototype.clone = function () {
return new Connection(this.opts());
};
return Connection;
}());
exports.createConnection = function (opts) {
return new Connection(opts);
};
function setTransportFactory(newFunc) {
var retVal = exports.createConnection;
exports.createConnection = newFunc;
return retVal;
}
function isArray(arg) {
return Object.prototype.toString.call(arg) === "[object Array]";
}
var ESPExceptions = /** @class */ (function (_super) {
__extends(ESPExceptions, _super);
function ESPExceptions(action, request, exceptions) {
var _this = _super.call(this, "ESPException: " + exceptions.Source) || this;
_this.isESPExceptions = true;
_this.action = action;
_this.request = request;
_this.Source = exceptions.Source;
_this.Exception = exceptions.Exception;
if (exceptions.Exception.length) {
_this.message = "".concat(exceptions.Exception[0].Code, ": ").concat(exceptions.Exception[0].Message);
}
else {
_this.message = "";
}
return _this;
}
return ESPExceptions;
}(Error));
function isExceptions(err) {
return err instanceof ESPExceptions || (err.isESPExceptions && Array.isArray(err.Exception));
}
function isConnection(optsConnection) {
return optsConnection.send !== undefined;
}
var ESPConnection = /** @class */ (function () {
function ESPConnection(optsConnection, service, version) {
this._connection = isConnection(optsConnection) ? optsConnection : exports.createConnection(optsConnection);
this._service = service;
this._version = version;
}
Object.defineProperty(ESPConnection.prototype, "baseUrl", {
get: function () { return this._connection.opts().baseUrl; },
enumerable: false,
configurable: true
});
ESPConnection.prototype.service = function (_) {
if (_ === void 0)
return this._service;
this._service = _;
return this;
};
ESPConnection.prototype.version = function (_) {
if (_ === void 0)
return this._version;
this._version = _;
return this;
};
ESPConnection.prototype.toESPStringArray = function (target, arrayName) {
if (isArray(target[arrayName])) {
for (var i = 0; i < target[arrayName].length; ++i) {
target[arrayName + "_i" + i] = target[arrayName][i];
}
delete target[arrayName];
}
return target;
};
ESPConnection.prototype.opts = function (_) {
if (_ === void 0)
return this._connection.opts();
this._connection.opts(_);
return this;
};
ESPConnection.prototype.send = function (action, _request, espResponseType, largeUpload, abortSignal, espResponseField) {
if (_request === void 0) { _request = {}; }
if (espResponseType === void 0) { espResponseType = "json"; }
if (largeUpload === void 0) { largeUpload = false; }
var request = __assign(__assign({}, _request), { ver_: this._version });
if (largeUpload) {
request["upload_"] = true;
}
if (abortSignal) {
request["abortSignal_"] = abortSignal;
}
var serviceAction;
var responseType = "json";
switch (espResponseType) {
case "text":
serviceAction = util.join(this._service, action);
responseType = "text";
break;
case "xsd":
serviceAction = util.join(this._service, action + ".xsd");
responseType = "text";
break;
case "json2":
serviceAction = util.join(this._service, action + "/json");
espResponseType = "json";
var actionParts = action.split("/");
action = actionParts.pop();
break;
default:
serviceAction = util.join(this._service, action + ".json");
}
return this._connection.send(serviceAction, request, responseType).then(function (response) {
if (espResponseType === "json") {
var retVal = void 0;
if (response && response.Exceptions) {
throw new ESPExceptions(action, request, response.Exceptions);
}
else if (response) {
retVal = response[espResponseField || (action + "Response")];
}
if (!retVal) {
throw new ESPExceptions(action, request, {
Source: "ESPConnection.send",
Exception: [{ Code: 0, Message: "Missing Response" }]
});
}
return retVal;
}
return response;
}).catch(function (e) {
if (e.isESPExceptions) {
throw e;
}
throw new ESPExceptions(action, request, {
Source: "ESPConnection.send",
Exception: [{ Code: 0, Message: e.message }]
});
});
};
ESPConnection.prototype.clone = function () {
return new ESPConnection(this._connection.clone(), this._service, this._version);
};
return ESPConnection;
}());
var Service = /** @class */ (function () {
function Service(optsConnection, service, version) {
this._connection = new ESPConnection(optsConnection, service, version);
}
Object.defineProperty(Service.prototype, "baseUrl", {
get: function () { return this._connection.opts().baseUrl; },
enumerable: false,
configurable: true
});
Service.prototype.opts = function () {
return this._connection.opts();
};
Service.prototype.connection = function () {
return this._connection.clone();
};
return Service;
}());
exports.FileSpray = void 0;
(function (FileSpray) {
(function (DFUWUActions) {
DFUWUActions["Delete"] = "Delete";
DFUWUActions["Protect"] = "Protect";
DFUWUActions["Unprotect"] = "Unprotect";
DFUWUActions["Restore"] = "Restore";
DFUWUActions["SetToFailed"] = "SetToFailed";
DFUWUActions["Archive"] = "Archive";
})(FileSpray.DFUWUActions || (FileSpray.DFUWUActions = {}));
})(exports.FileSpray || (exports.FileSpray = {}));
var FileSprayServiceBase = /** @class */ (function (_super) {
__extends(FileSprayServiceBase, _super);
function FileSprayServiceBase(optsConnection) {
return _super.call(this, optsConnection, "FileSpray", "1.26") || this;
}
FileSprayServiceBase.prototype.AbortDFUWorkunit = function (request) {
return this._connection.send("AbortDFUWorkunit", request, "json", false, undefined, "AbortDFUWorkunitResponse");
};
FileSprayServiceBase.prototype.Copy = function (request) {
return this._connection.send("Copy", request, "json", false, undefined, "CopyResponse");
};
FileSprayServiceBase.prototype.CreateDFUPublisherWorkunit = function (request) {
return this._connection.send("CreateDFUPublisherWorkunit", request, "json", false, undefined, "CreateDFUPublisherWorkunitResponse");
};
FileSprayServiceBase.prototype.CreateDFUWorkunit = function (request) {
return this._connection.send("CreateDFUWorkunit", request, "json", false, undefined, "CreateDFUWorkunitResponse");
};
FileSprayServiceBase.prototype.DFUWUFile = function (request) {
return this._connection.send("DFUWUFile", request, "json", false, undefined, "DFUWUFileResponse");
};
FileSprayServiceBase.prototype.DFUWUSearch = function (request) {
return this._connection.send("DFUWUSearch", request, "json", false, undefined, "DFUWUSearchResponse");
};
FileSprayServiceBase.prototype.DFUWorkunitsAction = function (request) {
return this._connection.send("DFUWorkunitsAction", request, "json", false, undefined, "DFUWorkunitsActionResponse");
};
FileSprayServiceBase.prototype.DeleteDFUWorkunit = function (request) {
return this._connection.send("DeleteDFUWorkunit", request, "json", false, undefined, "DeleteDFUWorkunitResponse");
};
FileSprayServiceBase.prototype.DeleteDFUWorkunits = function (request) {
return this._connection.send("DeleteDFUWorkunits", request, "json", false, undefined, "DeleteDFUWorkunitsResponse");
};
FileSprayServiceBase.prototype.DeleteDropZoneFiles = function (request) {
return this._connection.send("DeleteDropZoneFiles", request, "json", false, undefined, "DFUWorkunitsActionResponse");
};
FileSprayServiceBase.prototype.Despray = function (request) {
return this._connection.send("Despray", request, "json", false, undefined, "DesprayResponse");
};
FileSprayServiceBase.prototype.DfuMonitor = function (request) {
return this._connection.send("DfuMonitor", request, "json", false, undefined, "DfuMonitorResponse");
};
FileSprayServiceBase.prototype.DropZoneFileSearch = function (request) {
return this._connection.send("DropZoneFileSearch", request, "json", false, undefined, "DropZoneFileSearchResponse");
};
FileSprayServiceBase.prototype.DropZoneFiles = function (request) {
return this._connection.send("DropZoneFiles", request, "json", false, undefined, "DropZoneFilesResponse");
};
FileSprayServiceBase.prototype.EchoDateTime = function (request) {
return this._connection.send("EchoDateTime", request, "json", false, undefined, "EchoDateTimeResponse");
};
FileSprayServiceBase.prototype.FileList = function (request) {
return this._connection.send("FileList", request, "json", false, undefined, "FileListResponse");
};
FileSprayServiceBase.prototype.GetDFUExceptions = function (request) {
return this._connection.send("GetDFUExceptions", request, "json", false, undefined, "GetDFUExceptionsResponse");
};
FileSprayServiceBase.prototype.GetDFUProgress = function (request) {
return this._connection.send("GetDFUProgress", request, "json", false, undefined, "ProgressResponse");
};
FileSprayServiceBase.prototype.GetDFUServerQueues = function (request) {
return this._connection.send("GetDFUServerQueues", request, "json", false, undefined, "GetDFUServerQueuesResponse");
};
FileSprayServiceBase.prototype.GetDFUWorkunit = function (request) {
return this._connection.send("GetDFUWorkunit", request, "json", false, undefined, "GetDFUWorkunitResponse");
};
FileSprayServiceBase.prototype.GetDFUWorkunits = function (request) {
return this._connection.send("GetDFUWorkunits", request, "json", false, undefined, "GetDFUWorkunitsResponse");
};
FileSprayServiceBase.prototype.GetRemoteTargets = function (request) {
return this._connection.send("GetRemoteTargets", request, "json", false, undefined, "GetRemoteTargetsResponse");
};
FileSprayServiceBase.prototype.GetSprayTargets = function (request) {
return this._connection.send("GetSprayTargets", request, "json", false, undefined, "GetSprayTargetsResponse");
};
FileSprayServiceBase.prototype.OpenSave = function (request) {
return this._connection.send("OpenSave", request, "json", false, undefined, "OpenSaveResponse");
};
FileSprayServiceBase.prototype.Ping = function (request) {
return this._connection.send("Ping", request, "json", false, undefined, "FileSprayPingResponse");
};
FileSprayServiceBase.prototype.Rename = function (request) {
return this._connection.send("Rename", request, "json", false, undefined, "RenameResponse");
};
FileSprayServiceBase.prototype.Replicate = function (request) {
return this._connection.send("Replicate", request, "json", false, undefined, "ReplicateResponse");
};
FileSprayServiceBase.prototype.ShowResult = function (request) {
return this._connection.send("ShowResult", request, "json", false, undefined, "ShowResultResponse");
};
FileSprayServiceBase.prototype.SprayFixed = function (request) {
return this._connection.send("SprayFixed", request, "json", false, undefined, "SprayFixedResponse");
};
FileSprayServiceBase.prototype.SprayVariable = function (request) {
return this._connection.send("SprayVariable", request, "json", false, undefined, "SprayResponse");
};
FileSprayServiceBase.prototype.SubmitDFUWorkunit = function (request) {
return this._connection.send("SubmitDFUWorkunit", request, "json", false, undefined, "SubmitDFUWorkunitResponse");
};
FileSprayServiceBase.prototype.UpdateDFUWorkunit = function (request) {
return this._connection.send("UpdateDFUWorkunit", request, "json", false, undefined, "UpdateDFUWorkunitResponse");
};
return FileSprayServiceBase;
}(Service));
exports.FileSprayStates = void 0;
(function (FileSprayStates) {
FileSprayStates[FileSprayStates["unknown"] = 0] = "unknown";
FileSprayStates[FileSprayStates["scheduled"] = 1] = "scheduled";
FileSprayStates[FileSprayStates["queued"] = 2] = "queued";
FileSprayStates[FileSprayStates["started"] = 3] = "started";
FileSprayStates[FileSprayStates["aborted"] = 4] = "aborted";
FileSprayStates[FileSprayStates["failed"] = 5] = "failed";
FileSprayStates[FileSprayStates["finished"] = 6] = "finished";
FileSprayStates[FileSprayStates["monitoring"] = 7] = "monitoring";
FileSprayStates[FileSprayStates["aborting"] = 8] = "aborting";
FileSprayStates[FileSprayStates["notfound"] = 999] = "notfound";
})(exports.FileSprayStates || (exports.FileSprayStates = {}));
var FileSprayService = /** @class */ (function (_super) {
__extends(FileSprayService, _super);
function FileSprayService() {
return _super !== null && _super.apply(this, arguments) || this;
}
FileSprayService.prototype.DFUWUFileEx = function (request) {
return this._connection.send("DFUWUFile", request, "text");
};
FileSprayService.prototype.SprayFixedEx = function (request) {
return this._connection.send("SprayFixed", request);
};
FileSprayService.prototype.SprayVariableEx = function (request) {
return this._connection.send("SprayVariable", request, "json", false, null, "SprayResponse");
};
FileSprayService.prototype.DesprayEx = function (request) {
return this._connection.send("Despray", request);
};
FileSprayService.prototype.Upd