| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.MultipastaStream = exports.FileStream = void 0; | |
| Object.defineProperty(exports, "decodeField", { | |
| enumerable: true, | |
| get: function () { | |
| return MP.decodeField; | |
| } | |
| }); | |
| exports.make = void 0; | |
| var MP = /*#__PURE__*/_interopRequireWildcard(/*#__PURE__*/require("./index.js")); | |
| var _nodeStream = /*#__PURE__*/require("node:stream"); | |
| function _interopRequireWildcard(e, t) { | |
| if ("function" == typeof WeakMap) var r = new WeakMap(), | |
| n = new WeakMap(); | |
| return (_interopRequireWildcard = function (e, t) { | |
| if (!t && e && e.__esModule) return e; | |
| var o, | |
| i, | |
| f = { | |
| __proto__: null, | |
| default: e | |
| }; | |
| if (null === e || "object" != typeof e && "function" != typeof e) return f; | |
| if (o = t ? n : r) { | |
| if (o.has(e)) return o.get(e); | |
| o.set(e, f); | |
| } | |
| for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); | |
| return f; | |
| })(e, t); | |
| } | |
| class MultipastaStream extends _nodeStream.Duplex { | |
| _parser; | |
| _canWrite = true; | |
| _writeCallback; | |
| constructor(config) { | |
| super({ | |
| readableObjectMode: true | |
| }); | |
| let currentError; | |
| let currentFile; | |
| this._parser = MP.make({ | |
| ...config, | |
| onField: (info, value) => { | |
| if (currentError !== undefined) return; | |
| const field = { | |
| _tag: "Field", | |
| info, | |
| value | |
| }; | |
| this.push(field); | |
| this.emit("field", field); | |
| }, | |
| onFile: info => { | |
| if (currentError !== undefined) return _ => {}; | |
| const file = new FileStream(info, this); | |
| currentFile = file; | |
| this.push(file); | |
| this.emit("file", file); | |
| return chunk => { | |
| this._canWrite = file.push(chunk); | |
| if (chunk === null && !this._canWrite) { | |
| currentFile = undefined; | |
| this._resume(); | |
| } | |
| }; | |
| }, | |
| onError: error => { | |
| this.emit("error", error); | |
| currentFile?.emit("error", error); | |
| currentError = error; | |
| }, | |
| onDone: () => { | |
| this.push(null); | |
| } | |
| }); | |
| } | |
| _resume() { | |
| this._canWrite = true; | |
| if (this._writeCallback !== undefined) { | |
| const callback = this._writeCallback; | |
| this._writeCallback = undefined; | |
| callback(); | |
| } | |
| } | |
| _read(_size) {} | |
| _write(chunk, encoding, callback) { | |
| this._parser.write(chunk instanceof Uint8Array ? chunk : Buffer.from(chunk, encoding)); | |
| if (this._canWrite) { | |
| callback(); | |
| } else { | |
| this._writeCallback = callback; | |
| } | |
| } | |
| _final(callback) { | |
| this._parser.end(); | |
| callback(); | |
| } | |
| } | |
| exports.MultipastaStream = MultipastaStream; | |
| const make = config => new MultipastaStream(config); | |
| exports.make = make; | |
| class FileStream extends _nodeStream.Readable { | |
| info; | |
| _parent; | |
| _tag = "File"; | |
| filename; | |
| constructor(info, _parent) { | |
| super(); | |
| this.info = info; | |
| this._parent = _parent; | |
| this.filename = info.filename; | |
| } | |
| _read(_size) { | |
| if (this._parent._canWrite === false) { | |
| this._parent._resume(); | |
| } | |
| } | |
| } | |
| exports.FileStream = FileStream; | |
| //# sourceMappingURL=node.js.map |
Xet Storage Details
- Size:
- 3.31 kB
- Xet hash:
- ac2cc4e105789201bac300e2be12f8abd63ec2fe2bea7a82e521b619a02ff349
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.