This commit is contained in:
parent
fa2be029a2
commit
724d70e58b
3339 changed files with 1075535 additions and 0 deletions
73
frontend/node_modules/tus-js-client/lib.es5/node/sources/BufferSource.js
generated
vendored
Normal file
73
frontend/node_modules/tus-js-client/lib.es5/node/sources/BufferSource.js
generated
vendored
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
function _typeof(o) {
|
||||
"@babel/helpers - typeof";
|
||||
|
||||
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
|
||||
return typeof o;
|
||||
} : function (o) {
|
||||
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
||||
}, _typeof(o);
|
||||
}
|
||||
function _classCallCheck(instance, Constructor) {
|
||||
if (!(instance instanceof Constructor)) {
|
||||
throw new TypeError("Cannot call a class as a function");
|
||||
}
|
||||
}
|
||||
function _defineProperties(target, props) {
|
||||
for (var i = 0; i < props.length; i++) {
|
||||
var descriptor = props[i];
|
||||
descriptor.enumerable = descriptor.enumerable || false;
|
||||
descriptor.configurable = true;
|
||||
if ("value" in descriptor) descriptor.writable = true;
|
||||
Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
|
||||
}
|
||||
}
|
||||
function _createClass(Constructor, protoProps, staticProps) {
|
||||
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
||||
if (staticProps) _defineProperties(Constructor, staticProps);
|
||||
Object.defineProperty(Constructor, "prototype", {
|
||||
writable: false
|
||||
});
|
||||
return Constructor;
|
||||
}
|
||||
function _toPropertyKey(t) {
|
||||
var i = _toPrimitive(t, "string");
|
||||
return "symbol" == _typeof(i) ? i : i + "";
|
||||
}
|
||||
function _toPrimitive(t, r) {
|
||||
if ("object" != _typeof(t) || !t) return t;
|
||||
var e = t[Symbol.toPrimitive];
|
||||
if (void 0 !== e) {
|
||||
var i = e.call(t, r || "default");
|
||||
if ("object" != _typeof(i)) return i;
|
||||
throw new TypeError("@@toPrimitive must return a primitive value.");
|
||||
}
|
||||
return ("string" === r ? String : Number)(t);
|
||||
}
|
||||
var BufferSource = exports.default = /*#__PURE__*/function () {
|
||||
function BufferSource(buffer) {
|
||||
_classCallCheck(this, BufferSource);
|
||||
this._buffer = buffer;
|
||||
this.size = buffer.length;
|
||||
}
|
||||
return _createClass(BufferSource, [{
|
||||
key: "slice",
|
||||
value: function slice(start, end) {
|
||||
var value = this._buffer.slice(start, end);
|
||||
value.size = value.length;
|
||||
var done = end >= this.size;
|
||||
return Promise.resolve({
|
||||
value: value,
|
||||
done: done
|
||||
});
|
||||
}
|
||||
}, {
|
||||
key: "close",
|
||||
value: function close() {}
|
||||
}]);
|
||||
}();
|
||||
465
frontend/node_modules/tus-js-client/lib.es5/node/sources/FileSource.js
generated
vendored
Normal file
465
frontend/node_modules/tus-js-client/lib.es5/node/sources/FileSource.js
generated
vendored
Normal file
|
|
@ -0,0 +1,465 @@
|
|||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = getFileSource;
|
||||
var _fs = require("fs");
|
||||
function _typeof(o) {
|
||||
"@babel/helpers - typeof";
|
||||
|
||||
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
|
||||
return typeof o;
|
||||
} : function (o) {
|
||||
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
||||
}, _typeof(o);
|
||||
}
|
||||
function _regeneratorRuntime() {
|
||||
"use strict";
|
||||
|
||||
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
|
||||
_regeneratorRuntime = function _regeneratorRuntime() {
|
||||
return e;
|
||||
};
|
||||
var t,
|
||||
e = {},
|
||||
r = Object.prototype,
|
||||
n = r.hasOwnProperty,
|
||||
o = Object.defineProperty || function (t, e, r) {
|
||||
t[e] = r.value;
|
||||
},
|
||||
i = "function" == typeof Symbol ? Symbol : {},
|
||||
a = i.iterator || "@@iterator",
|
||||
c = i.asyncIterator || "@@asyncIterator",
|
||||
u = i.toStringTag || "@@toStringTag";
|
||||
function define(t, e, r) {
|
||||
return Object.defineProperty(t, e, {
|
||||
value: r,
|
||||
enumerable: !0,
|
||||
configurable: !0,
|
||||
writable: !0
|
||||
}), t[e];
|
||||
}
|
||||
try {
|
||||
define({}, "");
|
||||
} catch (t) {
|
||||
define = function define(t, e, r) {
|
||||
return t[e] = r;
|
||||
};
|
||||
}
|
||||
function wrap(t, e, r, n) {
|
||||
var i = e && e.prototype instanceof Generator ? e : Generator,
|
||||
a = Object.create(i.prototype),
|
||||
c = new Context(n || []);
|
||||
return o(a, "_invoke", {
|
||||
value: makeInvokeMethod(t, r, c)
|
||||
}), a;
|
||||
}
|
||||
function tryCatch(t, e, r) {
|
||||
try {
|
||||
return {
|
||||
type: "normal",
|
||||
arg: t.call(e, r)
|
||||
};
|
||||
} catch (t) {
|
||||
return {
|
||||
type: "throw",
|
||||
arg: t
|
||||
};
|
||||
}
|
||||
}
|
||||
e.wrap = wrap;
|
||||
var h = "suspendedStart",
|
||||
l = "suspendedYield",
|
||||
f = "executing",
|
||||
s = "completed",
|
||||
y = {};
|
||||
function Generator() {}
|
||||
function GeneratorFunction() {}
|
||||
function GeneratorFunctionPrototype() {}
|
||||
var p = {};
|
||||
define(p, a, function () {
|
||||
return this;
|
||||
});
|
||||
var d = Object.getPrototypeOf,
|
||||
v = d && d(d(values([])));
|
||||
v && v !== r && n.call(v, a) && (p = v);
|
||||
var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
|
||||
function defineIteratorMethods(t) {
|
||||
["next", "throw", "return"].forEach(function (e) {
|
||||
define(t, e, function (t) {
|
||||
return this._invoke(e, t);
|
||||
});
|
||||
});
|
||||
}
|
||||
function AsyncIterator(t, e) {
|
||||
function invoke(r, o, i, a) {
|
||||
var c = tryCatch(t[r], t, o);
|
||||
if ("throw" !== c.type) {
|
||||
var u = c.arg,
|
||||
h = u.value;
|
||||
return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
|
||||
invoke("next", t, i, a);
|
||||
}, function (t) {
|
||||
invoke("throw", t, i, a);
|
||||
}) : e.resolve(h).then(function (t) {
|
||||
u.value = t, i(u);
|
||||
}, function (t) {
|
||||
return invoke("throw", t, i, a);
|
||||
});
|
||||
}
|
||||
a(c.arg);
|
||||
}
|
||||
var r;
|
||||
o(this, "_invoke", {
|
||||
value: function value(t, n) {
|
||||
function callInvokeWithMethodAndArg() {
|
||||
return new e(function (e, r) {
|
||||
invoke(t, n, e, r);
|
||||
});
|
||||
}
|
||||
return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
|
||||
}
|
||||
});
|
||||
}
|
||||
function makeInvokeMethod(e, r, n) {
|
||||
var o = h;
|
||||
return function (i, a) {
|
||||
if (o === f) throw Error("Generator is already running");
|
||||
if (o === s) {
|
||||
if ("throw" === i) throw a;
|
||||
return {
|
||||
value: t,
|
||||
done: !0
|
||||
};
|
||||
}
|
||||
for (n.method = i, n.arg = a;;) {
|
||||
var c = n.delegate;
|
||||
if (c) {
|
||||
var u = maybeInvokeDelegate(c, n);
|
||||
if (u) {
|
||||
if (u === y) continue;
|
||||
return u;
|
||||
}
|
||||
}
|
||||
if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
|
||||
if (o === h) throw o = s, n.arg;
|
||||
n.dispatchException(n.arg);
|
||||
} else "return" === n.method && n.abrupt("return", n.arg);
|
||||
o = f;
|
||||
var p = tryCatch(e, r, n);
|
||||
if ("normal" === p.type) {
|
||||
if (o = n.done ? s : l, p.arg === y) continue;
|
||||
return {
|
||||
value: p.arg,
|
||||
done: n.done
|
||||
};
|
||||
}
|
||||
"throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
|
||||
}
|
||||
};
|
||||
}
|
||||
function maybeInvokeDelegate(e, r) {
|
||||
var n = r.method,
|
||||
o = e.iterator[n];
|
||||
if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
|
||||
var i = tryCatch(o, e.iterator, r.arg);
|
||||
if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
|
||||
var a = i.arg;
|
||||
return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
|
||||
}
|
||||
function pushTryEntry(t) {
|
||||
var e = {
|
||||
tryLoc: t[0]
|
||||
};
|
||||
1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
|
||||
}
|
||||
function resetTryEntry(t) {
|
||||
var e = t.completion || {};
|
||||
e.type = "normal", delete e.arg, t.completion = e;
|
||||
}
|
||||
function Context(t) {
|
||||
this.tryEntries = [{
|
||||
tryLoc: "root"
|
||||
}], t.forEach(pushTryEntry, this), this.reset(!0);
|
||||
}
|
||||
function values(e) {
|
||||
if (e || "" === e) {
|
||||
var r = e[a];
|
||||
if (r) return r.call(e);
|
||||
if ("function" == typeof e.next) return e;
|
||||
if (!isNaN(e.length)) {
|
||||
var o = -1,
|
||||
i = function next() {
|
||||
for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
|
||||
return next.value = t, next.done = !0, next;
|
||||
};
|
||||
return i.next = i;
|
||||
}
|
||||
}
|
||||
throw new TypeError(_typeof(e) + " is not iterable");
|
||||
}
|
||||
return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
|
||||
value: GeneratorFunctionPrototype,
|
||||
configurable: !0
|
||||
}), o(GeneratorFunctionPrototype, "constructor", {
|
||||
value: GeneratorFunction,
|
||||
configurable: !0
|
||||
}), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
|
||||
var e = "function" == typeof t && t.constructor;
|
||||
return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
|
||||
}, e.mark = function (t) {
|
||||
return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
|
||||
}, e.awrap = function (t) {
|
||||
return {
|
||||
__await: t
|
||||
};
|
||||
}, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
|
||||
return this;
|
||||
}), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
|
||||
void 0 === i && (i = Promise);
|
||||
var a = new AsyncIterator(wrap(t, r, n, o), i);
|
||||
return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
|
||||
return t.done ? t.value : a.next();
|
||||
});
|
||||
}, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
|
||||
return this;
|
||||
}), define(g, "toString", function () {
|
||||
return "[object Generator]";
|
||||
}), e.keys = function (t) {
|
||||
var e = Object(t),
|
||||
r = [];
|
||||
for (var n in e) r.push(n);
|
||||
return r.reverse(), function next() {
|
||||
for (; r.length;) {
|
||||
var t = r.pop();
|
||||
if (t in e) return next.value = t, next.done = !1, next;
|
||||
}
|
||||
return next.done = !0, next;
|
||||
};
|
||||
}, e.values = values, Context.prototype = {
|
||||
constructor: Context,
|
||||
reset: function reset(e) {
|
||||
if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
|
||||
},
|
||||
stop: function stop() {
|
||||
this.done = !0;
|
||||
var t = this.tryEntries[0].completion;
|
||||
if ("throw" === t.type) throw t.arg;
|
||||
return this.rval;
|
||||
},
|
||||
dispatchException: function dispatchException(e) {
|
||||
if (this.done) throw e;
|
||||
var r = this;
|
||||
function handle(n, o) {
|
||||
return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
|
||||
}
|
||||
for (var o = this.tryEntries.length - 1; o >= 0; --o) {
|
||||
var i = this.tryEntries[o],
|
||||
a = i.completion;
|
||||
if ("root" === i.tryLoc) return handle("end");
|
||||
if (i.tryLoc <= this.prev) {
|
||||
var c = n.call(i, "catchLoc"),
|
||||
u = n.call(i, "finallyLoc");
|
||||
if (c && u) {
|
||||
if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
|
||||
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
|
||||
} else if (c) {
|
||||
if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
|
||||
} else {
|
||||
if (!u) throw Error("try statement without catch or finally");
|
||||
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
abrupt: function abrupt(t, e) {
|
||||
for (var r = this.tryEntries.length - 1; r >= 0; --r) {
|
||||
var o = this.tryEntries[r];
|
||||
if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
|
||||
var i = o;
|
||||
break;
|
||||
}
|
||||
}
|
||||
i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
|
||||
var a = i ? i.completion : {};
|
||||
return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
|
||||
},
|
||||
complete: function complete(t, e) {
|
||||
if ("throw" === t.type) throw t.arg;
|
||||
return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
|
||||
},
|
||||
finish: function finish(t) {
|
||||
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
|
||||
var r = this.tryEntries[e];
|
||||
if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
|
||||
}
|
||||
},
|
||||
"catch": function _catch(t) {
|
||||
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
|
||||
var r = this.tryEntries[e];
|
||||
if (r.tryLoc === t) {
|
||||
var n = r.completion;
|
||||
if ("throw" === n.type) {
|
||||
var o = n.arg;
|
||||
resetTryEntry(r);
|
||||
}
|
||||
return o;
|
||||
}
|
||||
}
|
||||
throw Error("illegal catch attempt");
|
||||
},
|
||||
delegateYield: function delegateYield(e, r, n) {
|
||||
return this.delegate = {
|
||||
iterator: values(e),
|
||||
resultName: r,
|
||||
nextLoc: n
|
||||
}, "next" === this.method && (this.arg = t), y;
|
||||
}
|
||||
}, e;
|
||||
}
|
||||
function _classCallCheck(instance, Constructor) {
|
||||
if (!(instance instanceof Constructor)) {
|
||||
throw new TypeError("Cannot call a class as a function");
|
||||
}
|
||||
}
|
||||
function _defineProperties(target, props) {
|
||||
for (var i = 0; i < props.length; i++) {
|
||||
var descriptor = props[i];
|
||||
descriptor.enumerable = descriptor.enumerable || false;
|
||||
descriptor.configurable = true;
|
||||
if ("value" in descriptor) descriptor.writable = true;
|
||||
Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
|
||||
}
|
||||
}
|
||||
function _createClass(Constructor, protoProps, staticProps) {
|
||||
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
||||
if (staticProps) _defineProperties(Constructor, staticProps);
|
||||
Object.defineProperty(Constructor, "prototype", {
|
||||
writable: false
|
||||
});
|
||||
return Constructor;
|
||||
}
|
||||
function _toPropertyKey(t) {
|
||||
var i = _toPrimitive(t, "string");
|
||||
return "symbol" == _typeof(i) ? i : i + "";
|
||||
}
|
||||
function _toPrimitive(t, r) {
|
||||
if ("object" != _typeof(t) || !t) return t;
|
||||
var e = t[Symbol.toPrimitive];
|
||||
if (void 0 !== e) {
|
||||
var i = e.call(t, r || "default");
|
||||
if ("object" != _typeof(i)) return i;
|
||||
throw new TypeError("@@toPrimitive must return a primitive value.");
|
||||
}
|
||||
return ("string" === r ? String : Number)(t);
|
||||
}
|
||||
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
||||
try {
|
||||
var info = gen[key](arg);
|
||||
var value = info.value;
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
return;
|
||||
}
|
||||
if (info.done) {
|
||||
resolve(value);
|
||||
} else {
|
||||
Promise.resolve(value).then(_next, _throw);
|
||||
}
|
||||
}
|
||||
function _asyncToGenerator(fn) {
|
||||
return function () {
|
||||
var self = this,
|
||||
args = arguments;
|
||||
return new Promise(function (resolve, reject) {
|
||||
var gen = fn.apply(self, args);
|
||||
function _next(value) {
|
||||
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
||||
}
|
||||
function _throw(err) {
|
||||
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
||||
}
|
||||
_next(undefined);
|
||||
});
|
||||
};
|
||||
}
|
||||
function getFileSource(_x) {
|
||||
return _getFileSource.apply(this, arguments);
|
||||
}
|
||||
function _getFileSource() {
|
||||
_getFileSource = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(stream) {
|
||||
var _stream$start;
|
||||
var path, _yield$fsPromises$sta, size, start, end, actualSize;
|
||||
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
||||
while (1) switch (_context.prev = _context.next) {
|
||||
case 0:
|
||||
path = stream.path.toString();
|
||||
_context.next = 3;
|
||||
return _fs.promises.stat(path);
|
||||
case 3:
|
||||
_yield$fsPromises$sta = _context.sent;
|
||||
size = _yield$fsPromises$sta.size;
|
||||
// The fs.ReadStream might be configured to not read from the beginning
|
||||
// to the end, but instead from a slice in between. In this case, we consider
|
||||
// that range to indicate the actual uploadable size.
|
||||
// This happens, for example, if a fs.ReadStream is used with the `parallelUploads`
|
||||
// option. There, the ReadStream is sliced into multiple ReadStreams to fit the number
|
||||
// of number of `parallelUploads`. Each ReadStream has `start` and `end` set.
|
||||
// Note: `stream.end` is Infinity by default, so we need the check `isFinite`.
|
||||
// Note: `stream.end` is treated inclusively, so we need to add 1 here.
|
||||
// See the comment in slice() for more context.
|
||||
start = (_stream$start = stream.start) !== null && _stream$start !== void 0 ? _stream$start : 0;
|
||||
end = Number.isFinite(stream.end) ? stream.end + 1 : size;
|
||||
actualSize = end - start;
|
||||
return _context.abrupt("return", new FileSource(stream, path, actualSize));
|
||||
case 9:
|
||||
case "end":
|
||||
return _context.stop();
|
||||
}
|
||||
}, _callee);
|
||||
}));
|
||||
return _getFileSource.apply(this, arguments);
|
||||
}
|
||||
var FileSource = /*#__PURE__*/function () {
|
||||
function FileSource(stream, path, size) {
|
||||
_classCallCheck(this, FileSource);
|
||||
this._stream = stream;
|
||||
this._path = path;
|
||||
this.size = size;
|
||||
}
|
||||
return _createClass(FileSource, [{
|
||||
key: "slice",
|
||||
value: function slice(start, end) {
|
||||
var _this$_stream$start;
|
||||
// The fs.ReadStream might be configured to not read from the beginning,
|
||||
// but instead start at a different offset. The start value from the caller
|
||||
// does not include the offset, so we need to add this offset to our range later.
|
||||
// This happens, for example, if a fs.ReadStream is used with the `parallelUploads`
|
||||
// option. First, the ReadStream is sliced into multiple ReadStreams to fit the number
|
||||
// of number of `parallelUploads`. Each ReadStream has `start` set.
|
||||
var offset = (_this$_stream$start = this._stream.start) !== null && _this$_stream$start !== void 0 ? _this$_stream$start : 0;
|
||||
var stream = (0, _fs.createReadStream)(this._path, {
|
||||
start: offset + start,
|
||||
// The `end` option for createReadStream is treated inclusively
|
||||
// (see https://nodejs.org/api/fs.html#fs_fs_createreadstream_path_options).
|
||||
// However, the Buffer#slice(start, end) and also our Source#slice(start, end)
|
||||
// method treat the end range exclusively, so we have to subtract 1.
|
||||
// This prevents an off-by-one error when reporting upload progress.
|
||||
end: offset + end - 1,
|
||||
autoClose: true
|
||||
});
|
||||
stream.size = Math.min(end - start, this.size);
|
||||
var done = stream.size >= this.size;
|
||||
return Promise.resolve({
|
||||
value: stream,
|
||||
done: done
|
||||
});
|
||||
}
|
||||
}, {
|
||||
key: "close",
|
||||
value: function close() {
|
||||
this._stream.destroy();
|
||||
}
|
||||
}]);
|
||||
}();
|
||||
546
frontend/node_modules/tus-js-client/lib.es5/node/sources/StreamSource.js
generated
vendored
Normal file
546
frontend/node_modules/tus-js-client/lib.es5/node/sources/StreamSource.js
generated
vendored
Normal file
|
|
@ -0,0 +1,546 @@
|
|||
"use strict";
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.default = void 0;
|
||||
function _typeof(o) {
|
||||
"@babel/helpers - typeof";
|
||||
|
||||
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
|
||||
return typeof o;
|
||||
} : function (o) {
|
||||
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
|
||||
}, _typeof(o);
|
||||
}
|
||||
function _regeneratorRuntime() {
|
||||
"use strict";
|
||||
|
||||
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
|
||||
_regeneratorRuntime = function _regeneratorRuntime() {
|
||||
return e;
|
||||
};
|
||||
var t,
|
||||
e = {},
|
||||
r = Object.prototype,
|
||||
n = r.hasOwnProperty,
|
||||
o = Object.defineProperty || function (t, e, r) {
|
||||
t[e] = r.value;
|
||||
},
|
||||
i = "function" == typeof Symbol ? Symbol : {},
|
||||
a = i.iterator || "@@iterator",
|
||||
c = i.asyncIterator || "@@asyncIterator",
|
||||
u = i.toStringTag || "@@toStringTag";
|
||||
function define(t, e, r) {
|
||||
return Object.defineProperty(t, e, {
|
||||
value: r,
|
||||
enumerable: !0,
|
||||
configurable: !0,
|
||||
writable: !0
|
||||
}), t[e];
|
||||
}
|
||||
try {
|
||||
define({}, "");
|
||||
} catch (t) {
|
||||
define = function define(t, e, r) {
|
||||
return t[e] = r;
|
||||
};
|
||||
}
|
||||
function wrap(t, e, r, n) {
|
||||
var i = e && e.prototype instanceof Generator ? e : Generator,
|
||||
a = Object.create(i.prototype),
|
||||
c = new Context(n || []);
|
||||
return o(a, "_invoke", {
|
||||
value: makeInvokeMethod(t, r, c)
|
||||
}), a;
|
||||
}
|
||||
function tryCatch(t, e, r) {
|
||||
try {
|
||||
return {
|
||||
type: "normal",
|
||||
arg: t.call(e, r)
|
||||
};
|
||||
} catch (t) {
|
||||
return {
|
||||
type: "throw",
|
||||
arg: t
|
||||
};
|
||||
}
|
||||
}
|
||||
e.wrap = wrap;
|
||||
var h = "suspendedStart",
|
||||
l = "suspendedYield",
|
||||
f = "executing",
|
||||
s = "completed",
|
||||
y = {};
|
||||
function Generator() {}
|
||||
function GeneratorFunction() {}
|
||||
function GeneratorFunctionPrototype() {}
|
||||
var p = {};
|
||||
define(p, a, function () {
|
||||
return this;
|
||||
});
|
||||
var d = Object.getPrototypeOf,
|
||||
v = d && d(d(values([])));
|
||||
v && v !== r && n.call(v, a) && (p = v);
|
||||
var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
|
||||
function defineIteratorMethods(t) {
|
||||
["next", "throw", "return"].forEach(function (e) {
|
||||
define(t, e, function (t) {
|
||||
return this._invoke(e, t);
|
||||
});
|
||||
});
|
||||
}
|
||||
function AsyncIterator(t, e) {
|
||||
function invoke(r, o, i, a) {
|
||||
var c = tryCatch(t[r], t, o);
|
||||
if ("throw" !== c.type) {
|
||||
var u = c.arg,
|
||||
h = u.value;
|
||||
return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
|
||||
invoke("next", t, i, a);
|
||||
}, function (t) {
|
||||
invoke("throw", t, i, a);
|
||||
}) : e.resolve(h).then(function (t) {
|
||||
u.value = t, i(u);
|
||||
}, function (t) {
|
||||
return invoke("throw", t, i, a);
|
||||
});
|
||||
}
|
||||
a(c.arg);
|
||||
}
|
||||
var r;
|
||||
o(this, "_invoke", {
|
||||
value: function value(t, n) {
|
||||
function callInvokeWithMethodAndArg() {
|
||||
return new e(function (e, r) {
|
||||
invoke(t, n, e, r);
|
||||
});
|
||||
}
|
||||
return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
|
||||
}
|
||||
});
|
||||
}
|
||||
function makeInvokeMethod(e, r, n) {
|
||||
var o = h;
|
||||
return function (i, a) {
|
||||
if (o === f) throw Error("Generator is already running");
|
||||
if (o === s) {
|
||||
if ("throw" === i) throw a;
|
||||
return {
|
||||
value: t,
|
||||
done: !0
|
||||
};
|
||||
}
|
||||
for (n.method = i, n.arg = a;;) {
|
||||
var c = n.delegate;
|
||||
if (c) {
|
||||
var u = maybeInvokeDelegate(c, n);
|
||||
if (u) {
|
||||
if (u === y) continue;
|
||||
return u;
|
||||
}
|
||||
}
|
||||
if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
|
||||
if (o === h) throw o = s, n.arg;
|
||||
n.dispatchException(n.arg);
|
||||
} else "return" === n.method && n.abrupt("return", n.arg);
|
||||
o = f;
|
||||
var p = tryCatch(e, r, n);
|
||||
if ("normal" === p.type) {
|
||||
if (o = n.done ? s : l, p.arg === y) continue;
|
||||
return {
|
||||
value: p.arg,
|
||||
done: n.done
|
||||
};
|
||||
}
|
||||
"throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
|
||||
}
|
||||
};
|
||||
}
|
||||
function maybeInvokeDelegate(e, r) {
|
||||
var n = r.method,
|
||||
o = e.iterator[n];
|
||||
if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
|
||||
var i = tryCatch(o, e.iterator, r.arg);
|
||||
if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
|
||||
var a = i.arg;
|
||||
return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
|
||||
}
|
||||
function pushTryEntry(t) {
|
||||
var e = {
|
||||
tryLoc: t[0]
|
||||
};
|
||||
1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
|
||||
}
|
||||
function resetTryEntry(t) {
|
||||
var e = t.completion || {};
|
||||
e.type = "normal", delete e.arg, t.completion = e;
|
||||
}
|
||||
function Context(t) {
|
||||
this.tryEntries = [{
|
||||
tryLoc: "root"
|
||||
}], t.forEach(pushTryEntry, this), this.reset(!0);
|
||||
}
|
||||
function values(e) {
|
||||
if (e || "" === e) {
|
||||
var r = e[a];
|
||||
if (r) return r.call(e);
|
||||
if ("function" == typeof e.next) return e;
|
||||
if (!isNaN(e.length)) {
|
||||
var o = -1,
|
||||
i = function next() {
|
||||
for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
|
||||
return next.value = t, next.done = !0, next;
|
||||
};
|
||||
return i.next = i;
|
||||
}
|
||||
}
|
||||
throw new TypeError(_typeof(e) + " is not iterable");
|
||||
}
|
||||
return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
|
||||
value: GeneratorFunctionPrototype,
|
||||
configurable: !0
|
||||
}), o(GeneratorFunctionPrototype, "constructor", {
|
||||
value: GeneratorFunction,
|
||||
configurable: !0
|
||||
}), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
|
||||
var e = "function" == typeof t && t.constructor;
|
||||
return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
|
||||
}, e.mark = function (t) {
|
||||
return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
|
||||
}, e.awrap = function (t) {
|
||||
return {
|
||||
__await: t
|
||||
};
|
||||
}, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
|
||||
return this;
|
||||
}), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
|
||||
void 0 === i && (i = Promise);
|
||||
var a = new AsyncIterator(wrap(t, r, n, o), i);
|
||||
return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
|
||||
return t.done ? t.value : a.next();
|
||||
});
|
||||
}, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
|
||||
return this;
|
||||
}), define(g, "toString", function () {
|
||||
return "[object Generator]";
|
||||
}), e.keys = function (t) {
|
||||
var e = Object(t),
|
||||
r = [];
|
||||
for (var n in e) r.push(n);
|
||||
return r.reverse(), function next() {
|
||||
for (; r.length;) {
|
||||
var t = r.pop();
|
||||
if (t in e) return next.value = t, next.done = !1, next;
|
||||
}
|
||||
return next.done = !0, next;
|
||||
};
|
||||
}, e.values = values, Context.prototype = {
|
||||
constructor: Context,
|
||||
reset: function reset(e) {
|
||||
if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
|
||||
},
|
||||
stop: function stop() {
|
||||
this.done = !0;
|
||||
var t = this.tryEntries[0].completion;
|
||||
if ("throw" === t.type) throw t.arg;
|
||||
return this.rval;
|
||||
},
|
||||
dispatchException: function dispatchException(e) {
|
||||
if (this.done) throw e;
|
||||
var r = this;
|
||||
function handle(n, o) {
|
||||
return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
|
||||
}
|
||||
for (var o = this.tryEntries.length - 1; o >= 0; --o) {
|
||||
var i = this.tryEntries[o],
|
||||
a = i.completion;
|
||||
if ("root" === i.tryLoc) return handle("end");
|
||||
if (i.tryLoc <= this.prev) {
|
||||
var c = n.call(i, "catchLoc"),
|
||||
u = n.call(i, "finallyLoc");
|
||||
if (c && u) {
|
||||
if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
|
||||
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
|
||||
} else if (c) {
|
||||
if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
|
||||
} else {
|
||||
if (!u) throw Error("try statement without catch or finally");
|
||||
if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
abrupt: function abrupt(t, e) {
|
||||
for (var r = this.tryEntries.length - 1; r >= 0; --r) {
|
||||
var o = this.tryEntries[r];
|
||||
if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
|
||||
var i = o;
|
||||
break;
|
||||
}
|
||||
}
|
||||
i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
|
||||
var a = i ? i.completion : {};
|
||||
return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
|
||||
},
|
||||
complete: function complete(t, e) {
|
||||
if ("throw" === t.type) throw t.arg;
|
||||
return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
|
||||
},
|
||||
finish: function finish(t) {
|
||||
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
|
||||
var r = this.tryEntries[e];
|
||||
if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
|
||||
}
|
||||
},
|
||||
"catch": function _catch(t) {
|
||||
for (var e = this.tryEntries.length - 1; e >= 0; --e) {
|
||||
var r = this.tryEntries[e];
|
||||
if (r.tryLoc === t) {
|
||||
var n = r.completion;
|
||||
if ("throw" === n.type) {
|
||||
var o = n.arg;
|
||||
resetTryEntry(r);
|
||||
}
|
||||
return o;
|
||||
}
|
||||
}
|
||||
throw Error("illegal catch attempt");
|
||||
},
|
||||
delegateYield: function delegateYield(e, r, n) {
|
||||
return this.delegate = {
|
||||
iterator: values(e),
|
||||
resultName: r,
|
||||
nextLoc: n
|
||||
}, "next" === this.method && (this.arg = t), y;
|
||||
}
|
||||
}, e;
|
||||
}
|
||||
function _classCallCheck(instance, Constructor) {
|
||||
if (!(instance instanceof Constructor)) {
|
||||
throw new TypeError("Cannot call a class as a function");
|
||||
}
|
||||
}
|
||||
function _defineProperties(target, props) {
|
||||
for (var i = 0; i < props.length; i++) {
|
||||
var descriptor = props[i];
|
||||
descriptor.enumerable = descriptor.enumerable || false;
|
||||
descriptor.configurable = true;
|
||||
if ("value" in descriptor) descriptor.writable = true;
|
||||
Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
|
||||
}
|
||||
}
|
||||
function _createClass(Constructor, protoProps, staticProps) {
|
||||
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
||||
if (staticProps) _defineProperties(Constructor, staticProps);
|
||||
Object.defineProperty(Constructor, "prototype", {
|
||||
writable: false
|
||||
});
|
||||
return Constructor;
|
||||
}
|
||||
function _toPropertyKey(t) {
|
||||
var i = _toPrimitive(t, "string");
|
||||
return "symbol" == _typeof(i) ? i : i + "";
|
||||
}
|
||||
function _toPrimitive(t, r) {
|
||||
if ("object" != _typeof(t) || !t) return t;
|
||||
var e = t[Symbol.toPrimitive];
|
||||
if (void 0 !== e) {
|
||||
var i = e.call(t, r || "default");
|
||||
if ("object" != _typeof(i)) return i;
|
||||
throw new TypeError("@@toPrimitive must return a primitive value.");
|
||||
}
|
||||
return ("string" === r ? String : Number)(t);
|
||||
}
|
||||
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
||||
try {
|
||||
var info = gen[key](arg);
|
||||
var value = info.value;
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
return;
|
||||
}
|
||||
if (info.done) {
|
||||
resolve(value);
|
||||
} else {
|
||||
Promise.resolve(value).then(_next, _throw);
|
||||
}
|
||||
}
|
||||
function _asyncToGenerator(fn) {
|
||||
return function () {
|
||||
var self = this,
|
||||
args = arguments;
|
||||
return new Promise(function (resolve, reject) {
|
||||
var gen = fn.apply(self, args);
|
||||
function _next(value) {
|
||||
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
||||
}
|
||||
function _throw(err) {
|
||||
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
||||
}
|
||||
_next(undefined);
|
||||
});
|
||||
};
|
||||
}
|
||||
/**
|
||||
* readChunk reads a chunk with the given size from the given
|
||||
* stream. It will wait until enough data is available to satisfy
|
||||
* the size requirement before resolving.
|
||||
* Only if the stream ends, the function may resolve with a buffer
|
||||
* smaller than the size argument.
|
||||
* Note that we rely on the stream behaving as Node.js documents:
|
||||
* https://nodejs.org/api/stream.html#readablereadsize
|
||||
*/
|
||||
function readChunk(_x, _x2) {
|
||||
return _readChunk.apply(this, arguments);
|
||||
}
|
||||
/**
|
||||
* StreamSource provides an interface to obtain slices of a Readable stream for
|
||||
* various ranges.
|
||||
* It will buffer read data, to allow for following pattern:
|
||||
* - Call slice(startA, endA) will buffer the data of the requested range
|
||||
* - Call slice(startB, endB) will return data from the buffer if startA <= startB <= endA.
|
||||
* If endB > endA, it will also consume new data from the stream.
|
||||
* Note that it is forbidden to call with startB < startA or startB > endA. In other words,
|
||||
* the slice calls cannot seek back and must not skip data from the stream.
|
||||
*/
|
||||
function _readChunk() {
|
||||
_readChunk = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(stream, size) {
|
||||
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
||||
while (1) switch (_context2.prev = _context2.next) {
|
||||
case 0:
|
||||
return _context2.abrupt("return", new Promise(function (resolve, reject) {
|
||||
var onError = function onError(err) {
|
||||
stream.off('readable', onReadable);
|
||||
reject(err);
|
||||
};
|
||||
var onReadable = function onReadable() {
|
||||
// TODO: Node requires size to be less than 1GB. Add a validation for that
|
||||
var chunk = stream.read(size);
|
||||
if (chunk !== null) {
|
||||
stream.off('error', onError);
|
||||
stream.off('readable', onReadable);
|
||||
resolve(chunk);
|
||||
}
|
||||
};
|
||||
stream.once('error', onError);
|
||||
stream.on('readable', onReadable);
|
||||
}));
|
||||
case 1:
|
||||
case "end":
|
||||
return _context2.stop();
|
||||
}
|
||||
}, _callee2);
|
||||
}));
|
||||
return _readChunk.apply(this, arguments);
|
||||
}
|
||||
var StreamSource = exports.default = /*#__PURE__*/function () {
|
||||
function StreamSource(stream) {
|
||||
var _this = this;
|
||||
_classCallCheck(this, StreamSource);
|
||||
this._stream = stream;
|
||||
|
||||
// Setting the size to null indicates that we have no calculation available
|
||||
// for how much data this stream will emit requiring the user to specify
|
||||
// it manually (see the `uploadSize` option).
|
||||
this.size = null;
|
||||
this._buf = Buffer.alloc(0);
|
||||
this._bufPos = 0;
|
||||
this._ended = false;
|
||||
this._error = null;
|
||||
stream.pause();
|
||||
stream.on('end', function () {
|
||||
_this._ended = true;
|
||||
});
|
||||
stream.on('error', function (err) {
|
||||
_this._error = err;
|
||||
});
|
||||
}
|
||||
return _createClass(StreamSource, [{
|
||||
key: "slice",
|
||||
value: function () {
|
||||
var _slice = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(start, end) {
|
||||
var returnBuffer, bufStart, bufEnd, requestedSize, newChunk;
|
||||
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
||||
while (1) switch (_context.prev = _context.next) {
|
||||
case 0:
|
||||
if (!(start < this._bufPos)) {
|
||||
_context.next = 2;
|
||||
break;
|
||||
}
|
||||
throw new Error('cannot slice from position which we already seeked away');
|
||||
case 2:
|
||||
if (!(start > this._bufPos + this._buf.length)) {
|
||||
_context.next = 4;
|
||||
break;
|
||||
}
|
||||
throw new Error('slice start is outside of buffer (currently not implemented)');
|
||||
case 4:
|
||||
if (!this._error) {
|
||||
_context.next = 6;
|
||||
break;
|
||||
}
|
||||
throw this._error;
|
||||
case 6:
|
||||
// Always attempt to drain the buffer first, even if this means that we
|
||||
// return less data than the caller requested.
|
||||
if (start < this._bufPos + this._buf.length) {
|
||||
bufStart = start - this._bufPos;
|
||||
bufEnd = Math.min(this._buf.length, end - this._bufPos);
|
||||
returnBuffer = this._buf.slice(bufStart, bufEnd);
|
||||
} else {
|
||||
returnBuffer = Buffer.alloc(0);
|
||||
}
|
||||
|
||||
// If the stream has ended already, read calls would not finish, so return early here.
|
||||
if (!this._ended) {
|
||||
_context.next = 10;
|
||||
break;
|
||||
}
|
||||
returnBuffer.size = returnBuffer.length;
|
||||
return _context.abrupt("return", {
|
||||
value: returnBuffer,
|
||||
done: true
|
||||
});
|
||||
case 10:
|
||||
// If we could not satisfy the slice request from the buffer only, read more data from
|
||||
// the stream and add it to the buffer.
|
||||
requestedSize = end - start;
|
||||
if (!(requestedSize > returnBuffer.length)) {
|
||||
_context.next = 16;
|
||||
break;
|
||||
}
|
||||
_context.next = 14;
|
||||
return readChunk(this._stream, requestedSize - returnBuffer.length);
|
||||
case 14:
|
||||
newChunk = _context.sent;
|
||||
// Append the new chunk to the buffer
|
||||
returnBuffer = Buffer.concat([returnBuffer, newChunk]);
|
||||
case 16:
|
||||
// Important: Store the read data, so consecutive slice calls can access the same data.
|
||||
this._buf = returnBuffer;
|
||||
this._bufPos = start;
|
||||
returnBuffer.size = returnBuffer.length;
|
||||
return _context.abrupt("return", {
|
||||
value: returnBuffer,
|
||||
done: this._ended
|
||||
});
|
||||
case 20:
|
||||
case "end":
|
||||
return _context.stop();
|
||||
}
|
||||
}, _callee, this);
|
||||
}));
|
||||
function slice(_x3, _x4) {
|
||||
return _slice.apply(this, arguments);
|
||||
}
|
||||
return slice;
|
||||
}()
|
||||
}, {
|
||||
key: "close",
|
||||
value: function close() {
|
||||
this._stream.destroy();
|
||||
}
|
||||
}]);
|
||||
}();
|
||||
Reference in a new issue