/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/dicer@0.3.1/lib/Dicer.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";const{Writable:Writable}=require("stream"),StreamSearch=require("streamsearch"),PartStream=require("./PartStream"),HeaderParser=require("./HeaderParser"),DASH=45,B_ONEDASH=Buffer.from("-"),B_CRLF=Buffer.from("\r\n"),EMPTY_FN=()=>{};class Dicer extends Writable{constructor(t){if(super(t),!t||!t.headerFirst&&"string"!=typeof t.boundary)throw new TypeError("Boundary required");"string"==typeof t.boundary?this.setBoundary(t.boundary):this._bparser=void 0,this._headerFirst=t.headerFirst,this._dashes=0,this._parts=0,this._finished=!1,this._realFinish=!1,this._isPreamble=!0,this._justMatched=!1,this._firstWrite=!0,this._inHeader=!0,this._part=void 0,this._cb=void 0,this._ignoreData=!1,this._partOpts="number"==typeof t.partHwm?{highWaterMark:t.partHwm}:{},this._pause=!1,this._hparser=new HeaderParser(t),this._hparser.on("header",(t=>{this._inHeader=!1,this._part.emit("header",t)})),this._hparser.on("error",(t=>{this._part&&!this._ignoreData&&(this._part.emit("error",t),this._part.push(null))}))}emit(t){"finish"!==t||this._realFinish?Writable.prototype.emit.apply(this,arguments):this._finished||process.nextTick((()=>{if(this.emit("error",new Error("Unexpected end of multipart data")),this._part&&!this._ignoreData){const t=this._isPreamble?"Preamble":"Part";return this._part.emit("error",new Error(`${t} terminated early due to unexpected end of multipart data`)),this._part.push(null),void process.nextTick((()=>{this._realFinish=!0,this.emit("finish"),this._realFinish=!1}))}this._realFinish=!0,this.emit("finish"),this._realFinish=!1}))}_write(t,i,s){if(!this._hparser&&!this._bparser)return s();if(this._headerFirst&&this._isPreamble){this._part||(this._part=new PartStream(this._partOpts),this._events.preamble?this.emit("preamble",this._part):ignore(this));const i=this._hparser.push(t);if(this._inHeader||void 0===i||!(i<t.length))return s();t=t.slice(i)}this._firstWrite&&(this._bparser.push(B_CRLF),this._firstWrite=!1),this._bparser.push(t),this._pause?this._cb=s:s()}reset(){this._part=void 0,this._bparser=void 0,this._hparser=void 0}setBoundary(t){this._bparser=new StreamSearch(`\r\n--${t}`,onInfo.bind(this))}}function onInfo(t,i,s,e){let r,h,a,_=0,n=!0;if(!this._part&&this._justMatched&&i){for(;this._dashes<2&&s+_<e;){if(45!==i[s+_]){this._dashes&&(r=B_ONEDASH),this._dashes=0;break}++_,++this._dashes}if(2===this._dashes&&(s+_<e&&this._events.trailer&&this.emit("trailer",i.slice(s+_,e)),this.reset(),this._finished=!0,0===this._parts&&(this._realFinish=!0,this.emit("finish"),this._realFinish=!1)),this._dashes)return}this._justMatched&&(this._justMatched=!1),this._part||(this._part=new PartStream(this._partOpts),this._part._read=t=>{unpause(this)},a=this._isPreamble?"preamble":"part",this._events[a]?this.emit(a,this._part):ignore(this),this._isPreamble||(this._inHeader=!0)),i&&s<e&&!this._ignoreData&&(this._isPreamble||!this._inHeader?(r&&(n=this._part.push(r)),n=this._part.push(i.slice(s,e)),n||(this._pause=!0)):!this._isPreamble&&this._inHeader&&(r&&this._hparser.push(r),h=this._hparser.push(i.slice(s,e)),!this._inHeader&&void 0!==h&&h<e&&onInfo.call(this,!1,i,s+h,e))),t&&(this._hparser.reset(),this._isPreamble?this._isPreamble=!1:(++this._parts,this._part.on("end",(()=>{0==--this._parts&&(this._finished?(this._realFinish=!0,this.emit("finish"),this._realFinish=!1):unpause(this))}))),this._part.push(null),this._part=void 0,this._ignoreData=!1,this._justMatched=!0,this._dashes=0)}function ignore(t){t._part&&!t._ignoreData&&(t._ignoreData=!0,t._part.on("error",EMPTY_FN),t._part.resume())}function unpause(t){if(t._pause&&(t._pause=!1,t._cb)){const i=t._cb;t._cb=void 0,i()}}module.exports=Dicer;
//# sourceMappingURL=/sm/11e5f5d45ba837988f1fa36335c689fb7e023bd199eed37301f7e7b24ff55a77.map