jsforce
Version:
Salesforce API Library for JavaScript
180 lines • 20.6 kB
JavaScript
import _Reflect$construct from "@babel/runtime-corejs3/core-js-stable/reflect/construct";
import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
import _Symbol from "@babel/runtime-corejs3/core-js-stable/symbol";
import _getIteratorMethod from "@babel/runtime-corejs3/core-js/get-iterator-method";
import _Array$isArray from "@babel/runtime-corejs3/core-js-stable/array/is-array";
import _asyncToGenerator from "@babel/runtime-corejs3/helpers/asyncToGenerator";
import _classCallCheck from "@babel/runtime-corejs3/helpers/classCallCheck";
import _createClass from "@babel/runtime-corejs3/helpers/createClass";
import _possibleConstructorReturn from "@babel/runtime-corejs3/helpers/possibleConstructorReturn";
import _getPrototypeOf from "@babel/runtime-corejs3/helpers/getPrototypeOf";
import _inherits from "@babel/runtime-corejs3/helpers/inherits";
import _regeneratorRuntime from "@babel/runtime-corejs3/regenerator";
import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
import _Date$now from "@babel/runtime-corejs3/core-js-stable/date/now";
import _Promise from "@babel/runtime-corejs3/core-js-stable/promise";
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof _Symbol && _getIteratorMethod(r) || r["@@iterator"]; if (!t) { if (_Array$isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
function _unsupportedIterableToArray(r, a) { if (r) { var _context2; if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = _sliceInstanceProperty(_context2 = {}.toString.call(r)).call(_context2, 8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? _Array$from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
import "core-js/modules/es.error.cause.js";
import "core-js/modules/es.array.push.js";
import "core-js/modules/es.function.name.js";
import "core-js/modules/es.regexp.exec.js";
import "core-js/modules/es.regexp.test.js";
import "core-js/modules/es.object.to-string.js";
import "core-js/modules/es.regexp.to-string.js";
import { Duplex, PassThrough, Writable } from 'stream';
import { getLogger } from './logger';
var logger = getLogger('stream');
export function createLazyStream() {
var ins = new PassThrough();
var outs = new PassThrough();
var stream = concatStreamsAsDuplex(ins, outs);
var piped = false;
var setStream = function setStream(str) {
if (piped) {
throw new Error('stream is already piped to actual stream');
}
piped = true;
ins.pipe(str).pipe(outs);
};
return {
stream: stream,
setStream: setStream
};
}
var MemoryWriteStream = /*#__PURE__*/function (_Writable) {
function MemoryWriteStream() {
var _this;
_classCallCheck(this, MemoryWriteStream);
_this = _callSuper(this, MemoryWriteStream);
_this._chunks = [];
_this._totalBytes = 0;
return _this;
}
_inherits(MemoryWriteStream, _Writable);
return _createClass(MemoryWriteStream, [{
key: "_write",
value: function _write(chunk, encoding, callback) {
this._chunks.push(chunk);
this._totalBytes += chunk.length;
callback();
}
}, {
key: "_writev",
value: function _writev(data, callback) {
var _iterator = _createForOfIteratorHelper(data),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var chunk = _step.value.chunk;
this._chunks.push(chunk);
this._totalBytes += chunk.length;
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
callback();
}
}, {
key: "toString",
value: function toString() {
var encoding = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'utf-8';
return _concatInstanceProperty(Buffer).call(Buffer, this._chunks).toString(encoding);
}
}]);
}(Writable);
export function readAll(_x) {
return _readAll.apply(this, arguments);
}
function _readAll() {
_readAll = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(rs) {
var encoding,
start,
_args = arguments;
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
encoding = _args.length > 1 && _args[1] !== undefined ? _args[1] : 'utf-8';
logger.debug('readAll: starting to read stream');
start = _Date$now();
return _context.abrupt("return", new _Promise(function (resolve, reject) {
var ws = new MemoryWriteStream();
rs.on('error', function (err) {
logger.error("readAll: stream error: ".concat(err.message));
reject(err);
}).pipe(ws).on('finish', function () {
logger.debug("readAll: stream finished in ".concat(_Date$now() - start, "ms"));
resolve(ws.toString(encoding));
});
}));
case 4:
case "end":
return _context.stop();
}
}, _callee);
}));
return _readAll.apply(this, arguments);
}
var DuplexifiedStream = /*#__PURE__*/function (_Duplex) {
function DuplexifiedStream(ws, rs) {
var _opts$writableObjectM, _opts$readableObjectM;
var _this2;
var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
_classCallCheck(this, DuplexifiedStream);
_this2 = _callSuper(this, DuplexifiedStream, [{
writableObjectMode: (_opts$writableObjectM = opts.writableObjectMode) !== null && _opts$writableObjectM !== void 0 ? _opts$writableObjectM : ws.writableObjectMode,
readableObjectMode: (_opts$readableObjectM = opts.readableObjectMode) !== null && _opts$readableObjectM !== void 0 ? _opts$readableObjectM : rs.readableObjectMode
}]);
_this2._writable = ws;
_this2._readable = rs;
ws.once('finish', function () {
_this2.end();
});
_this2.once('finish', function () {
ws.end();
});
rs.on('readable', function () {
_this2._readStream();
});
rs.once('end', function () {
_this2.push(null);
});
ws.on('error', function (err) {
return _this2.emit('error', err);
});
rs.on('error', function (err) {
return _this2.emit('error', err);
});
return _this2;
}
_inherits(DuplexifiedStream, _Duplex);
return _createClass(DuplexifiedStream, [{
key: "_write",
value: function _write(chunk, encoding, callback) {
this._writable.write(chunk, encoding, callback);
}
}, {
key: "_read",
value: function _read(n) {
this._readStream(n);
}
}, {
key: "_readStream",
value: function _readStream(n) {
var data;
while ((data = this._readable.read(n)) !== null) {
this.push(data);
}
}
}]);
}(Duplex);
export function concatStreamsAsDuplex(ws, rs, opts) {
return new DuplexifiedStream(ws, rs, opts);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEdXBsZXgiLCJQYXNzVGhyb3VnaCIsIldyaXRhYmxlIiwiZ2V0TG9nZ2VyIiwibG9nZ2VyIiwiY3JlYXRlTGF6eVN0cmVhbSIsImlucyIsIm91dHMiLCJzdHJlYW0iLCJjb25jYXRTdHJlYW1zQXNEdXBsZXgiLCJwaXBlZCIsInNldFN0cmVhbSIsInN0ciIsIkVycm9yIiwicGlwZSIsIk1lbW9yeVdyaXRlU3RyZWFtIiwiX1dyaXRhYmxlIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2siLCJfY2FsbFN1cGVyIiwiX2NodW5rcyIsIl90b3RhbEJ5dGVzIiwiX2luaGVyaXRzIiwiX2NyZWF0ZUNsYXNzIiwia2V5IiwidmFsdWUiLCJfd3JpdGUiLCJjaHVuayIsImVuY29kaW5nIiwiY2FsbGJhY2siLCJwdXNoIiwibGVuZ3RoIiwiX3dyaXRldiIsImRhdGEiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJkb25lIiwiZXJyIiwiZSIsImYiLCJ0b1N0cmluZyIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9jb25jYXRJbnN0YW5jZVByb3BlcnR5IiwiQnVmZmVyIiwiY2FsbCIsInJlYWRBbGwiLCJfeCIsIl9yZWFkQWxsIiwiYXBwbHkiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInJzIiwic3RhcnQiLCJfYXJncyIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJkZWJ1ZyIsIl9EYXRlJG5vdyIsImFicnVwdCIsIl9Qcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIndzIiwib24iLCJlcnJvciIsImNvbmNhdCIsIm1lc3NhZ2UiLCJzdG9wIiwiRHVwbGV4aWZpZWRTdHJlYW0iLCJfRHVwbGV4IiwiX29wdHMkd3JpdGFibGVPYmplY3RNIiwiX29wdHMkcmVhZGFibGVPYmplY3RNIiwiX3RoaXMyIiwib3B0cyIsIndyaXRhYmxlT2JqZWN0TW9kZSIsInJlYWRhYmxlT2JqZWN0TW9kZSIsIl93cml0YWJsZSIsIl9yZWFkYWJsZSIsIm9uY2UiLCJlbmQiLCJfcmVhZFN0cmVhbSIsImVtaXQiLCJ3cml0ZSIsIl9yZWFkIiwicmVhZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3N0cmVhbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXBsZXgsIFBhc3NUaHJvdWdoLCBSZWFkYWJsZSwgV3JpdGFibGUgfSBmcm9tICdzdHJlYW0nO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuXG5jb25zdCBsb2dnZXIgPSBnZXRMb2dnZXIoJ3N0cmVhbScpO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGF6eVN0cmVhbSgpIHtcbiAgY29uc3QgaW5zID0gbmV3IFBhc3NUaHJvdWdoKCk7XG4gIGNvbnN0IG91dHMgPSBuZXcgUGFzc1Rocm91Z2goKTtcbiAgY29uc3Qgc3RyZWFtID0gY29uY2F0U3RyZWFtc0FzRHVwbGV4KGlucywgb3V0cyk7XG4gIGxldCBwaXBlZCA9IGZhbHNlO1xuICBjb25zdCBzZXRTdHJlYW0gPSAoc3RyOiBEdXBsZXgpID0+IHtcbiAgICBpZiAocGlwZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignc3RyZWFtIGlzIGFscmVhZHkgcGlwZWQgdG8gYWN0dWFsIHN0cmVhbScpO1xuICAgIH1cbiAgICBwaXBlZCA9IHRydWU7XG4gICAgaW5zLnBpcGUoc3RyKS5waXBlKG91dHMpO1xuICB9O1xuICByZXR1cm4geyBzdHJlYW0sIHNldFN0cmVhbSB9O1xufVxuXG5jbGFzcyBNZW1vcnlXcml0ZVN0cmVhbSBleHRlbmRzIFdyaXRhYmxlIHtcbiAgX2NodW5rczogQnVmZmVyW107XG4gIF90b3RhbEJ5dGVzOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9jaHVua3MgPSBbXTtcbiAgICB0aGlzLl90b3RhbEJ5dGVzID0gMDtcbiAgfVxuXG4gIF93cml0ZShjaHVuazogQnVmZmVyLCBlbmNvZGluZzogc3RyaW5nLCBjYWxsYmFjazogRnVuY3Rpb24pIHtcbiAgICB0aGlzLl9jaHVua3MucHVzaChjaHVuayk7XG4gICAgdGhpcy5fdG90YWxCeXRlcyArPSBjaHVuay5sZW5ndGg7XG4gICAgY2FsbGJhY2soKTtcbiAgfVxuXG4gIF93cml0ZXYoXG4gICAgZGF0YTogQXJyYXk8eyBjaHVuazogQnVmZmVyOyBlbmNvZGluZzogc3RyaW5nIH0+LFxuICAgIGNhbGxiYWNrOiBGdW5jdGlvbixcbiAgKSB7XG4gICAgZm9yIChjb25zdCB7IGNodW5rIH0gb2YgZGF0YSkge1xuICAgICAgdGhpcy5fY2h1bmtzLnB1c2goY2h1bmspO1xuICAgICAgdGhpcy5fdG90YWxCeXRlcyArPSBjaHVuay5sZW5ndGg7XG4gICAgfVxuICAgIGNhbGxiYWNrKCk7XG4gIH1cblxuICB0b1N0cmluZyhlbmNvZGluZzogQnVmZmVyRW5jb2RpbmcgPSAndXRmLTgnKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5jb25jYXQodGhpcy5fY2h1bmtzKS50b1N0cmluZyhlbmNvZGluZyk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJlYWRBbGwoXG4gIHJzOiBSZWFkYWJsZSxcbiAgZW5jb2Rpbmc6IEJ1ZmZlckVuY29kaW5nID0gJ3V0Zi04Jyxcbikge1xuICBsb2dnZXIuZGVidWcoJ3JlYWRBbGw6IHN0YXJ0aW5nIHRvIHJlYWQgc3RyZWFtJyk7XG4gIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTtcblxuICByZXR1cm4gbmV3IFByb21pc2U8c3RyaW5nPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3Qgd3MgPSBuZXcgTWVtb3J5V3JpdGVTdHJlYW0oKTtcbiAgICBycy5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICBsb2dnZXIuZXJyb3IoYHJlYWRBbGw6IHN0cmVhbSBlcnJvcjogJHsoZXJyKS5tZXNzYWdlfWApO1xuICAgICAgcmVqZWN0KGVycik7XG4gICAgfSlcbiAgICAgIC5waXBlKHdzKVxuICAgICAgLm9uKCdmaW5pc2gnLCAoKSA9PiB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhgcmVhZEFsbDogc3RyZWFtIGZpbmlzaGVkIGluICR7RGF0ZS5ub3coKSAtIHN0YXJ0fW1zYCk7XG4gICAgICAgIHJlc29sdmUod3MudG9TdHJpbmcoZW5jb2RpbmcpKTtcbiAgICAgIH0pO1xuICB9KTtcbn1cblxuY2xhc3MgRHVwbGV4aWZpZWRTdHJlYW0gZXh0ZW5kcyBEdXBsZXgge1xuICBfd3JpdGFibGU6IFdyaXRhYmxlO1xuICBfcmVhZGFibGU6IFJlYWRhYmxlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHdzOiBXcml0YWJsZSxcbiAgICByczogUmVhZGFibGUsXG4gICAgb3B0czogeyB3cml0YWJsZU9iamVjdE1vZGU/OiBib29sZWFuOyByZWFkYWJsZU9iamVjdE1vZGU/OiBib29sZWFuIH0gPSB7fSxcbiAgKSB7XG4gICAgc3VwZXIoe1xuICAgICAgd3JpdGFibGVPYmplY3RNb2RlOiBvcHRzLndyaXRhYmxlT2JqZWN0TW9kZSA/PyB3cy53cml0YWJsZU9iamVjdE1vZGUsXG4gICAgICByZWFkYWJsZU9iamVjdE1vZGU6IG9wdHMucmVhZGFibGVPYmplY3RNb2RlID8/IHJzLnJlYWRhYmxlT2JqZWN0TW9kZSxcbiAgICB9KTtcbiAgICB0aGlzLl93cml0YWJsZSA9IHdzO1xuICAgIHRoaXMuX3JlYWRhYmxlID0gcnM7XG4gICAgd3Mub25jZSgnZmluaXNoJywgKCkgPT4ge1xuICAgICAgdGhpcy5lbmQoKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uY2UoJ2ZpbmlzaCcsICgpID0+IHtcbiAgICAgIHdzLmVuZCgpO1xuICAgIH0pO1xuICAgIHJzLm9uKCdyZWFkYWJsZScsICgpID0+IHtcbiAgICAgIHRoaXMuX3JlYWRTdHJlYW0oKTtcbiAgICB9KTtcbiAgICBycy5vbmNlKCdlbmQnLCAoKSA9PiB7XG4gICAgICB0aGlzLnB1c2gobnVsbCk7XG4gICAgfSk7XG4gICAgd3Mub24oJ2Vycm9yJywgKGVycikgPT4gdGhpcy5lbWl0KCdlcnJvcicsIGVycikpO1xuICAgIHJzLm9uKCdlcnJvcicsIChlcnIpID0+IHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpKTtcbiAgfVxuXG4gIF93cml0ZShjaHVuazogYW55LCBlbmNvZGluZzogYW55LCBjYWxsYmFjazogYW55KSB7XG4gICAgdGhpcy5fd3JpdGFibGUud3JpdGUoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjayk7XG4gIH1cblxuICBfcmVhZChuOiBudW1iZXIpIHtcbiAgICB0aGlzLl9yZWFkU3RyZWFtKG4pO1xuICB9XG5cbiAgX3JlYWRTdHJlYW0obj86IG51bWJlcikge1xuICAgIGxldCBkYXRhO1xuICAgIHdoaWxlICgoZGF0YSA9IHRoaXMuX3JlYWRhYmxlLnJlYWQobikpICE9PSBudWxsKSB7XG4gICAgICB0aGlzLnB1c2goZGF0YSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb25jYXRTdHJlYW1zQXNEdXBsZXgoXG4gIHdzOiBXcml0YWJsZSxcbiAgcnM6IFJlYWRhYmxlLFxuICBvcHRzPzogeyB3cml0YWJsZU9iamVjdE1vZGU/OiBib29sZWFuOyByZWFkYWJsZU9iamVjdE1vZGU/OiBib29sZWFuIH0sXG4pOiBEdXBsZXgge1xuICByZXR1cm4gbmV3IER1cGxleGlmaWVkU3RyZWFtKHdzLCBycywgb3B0cyk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxNQUFNLEVBQUVDLFdBQVcsRUFBWUMsUUFBUSxRQUFRLFFBQVE7QUFDaEUsU0FBU0MsU0FBUyxRQUFRLFVBQVU7QUFFcEMsSUFBTUMsTUFBTSxHQUFHRCxTQUFTLENBQUMsUUFBUSxDQUFDO0FBRWxDLE9BQU8sU0FBU0UsZ0JBQWdCQSxDQUFBLEVBQUc7RUFDakMsSUFBTUMsR0FBRyxHQUFHLElBQUlMLFdBQVcsQ0FB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