rsnext/packages/next/compiled/thread-loader/cjs.js

1 line
63 KiB
JavaScript
Raw Normal View History

module.exports=function(e,n){"use strict";var t={};function __webpack_require__(n){if(t[n]){return t[n].exports}var r=t[n]={i:n,l:false,exports:{}};e[n].call(r.exports,r,r.exports,__webpack_require__);r.l=true;return r.exports}__webpack_require__.ab=__dirname+"/";function startup(){return __webpack_require__(696)}return startup()}({87:function(e){e.exports=require("os")},129:function(e){e.exports=require("child_process")},399:function(e,n,t){"use strict";Object.defineProperty(n,"__esModule",{value:true});var r=t(129);var f=_interopRequireDefault(r);var u=t(457);var o=_interopRequireDefault(u);var a=t(633);var i=_interopRequireDefault(a);var l=t(584);var s=_interopRequireDefault(l);var h=t(711);var c=_interopRequireDefault(h);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}const y=t.ab+"worker.js";let v=0;class PoolWorker{constructor(e,n){this.disposed=false;this.nextJobId=0;this.jobs=Object.create(null);this.activeJobs=0;this.onJobDone=n;this.id=v;v+=1;const r=(e.nodeArgs||[]).filter(e=>!!e);this.worker=f.default.spawn(process.execPath,[].concat(r).concat(t.ab+"worker.js",e.parallelJobs),{detached:true,stdio:["ignore","pipe","pipe","pipe","pipe"]});this.worker.unref();if(!this.worker.stdio){throw new Error(`Failed to create the worker pool with workerId: ${v} and ${""}configuration: ${JSON.stringify(e)}. Please verify if you hit the OS open files limit.`)}const[,,,u,o]=this.worker.stdio;this.readPipe=u;this.writePipe=o;this.listenStdOutAndErrFromWorker(this.worker.stdout,this.worker.stderr);this.readNextMessage()}listenStdOutAndErrFromWorker(e,n){if(e){e.on("data",this.writeToStdout)}if(n){n.on("data",this.writeToStderr)}}ignoreStdOutAndErrFromWorker(e,n){if(e){e.removeListener("data",this.writeToStdout)}if(n){n.removeListener("data",this.writeToStderr)}}writeToStdout(e){if(!this.disposed){process.stdout.write(e)}}writeToStderr(e){if(!this.disposed){process.stderr.write(e)}}run(e,n){const t=this.nextJobId;this.nextJobId+=1;this.jobs[t]={data:e,callback:n};this.activeJobs+=1;this.writeJson({type:"job",id:t,data:e})}warmup(e){this.writeJson({type:"warmup",requires:e})}writeJson(e){const n=Buffer.alloc(4);const t=Buffer.from(JSON.stringify(e),"utf-8");n.writeInt32BE(t.length,0);this.writePipe.write(n);this.writePipe.write(t)}writeEnd(){const e=Buffer.alloc(4);e.writeInt32BE(0,0);this.writePipe.write(e)}readNextMessage(){this.state="read length";this.readBuffer(4,(e,n)=>{if(e){console.error(`Failed to communicate with worker (read length) ${e}`);return}this.state="length read";const t=n.readInt32BE(0);this.state="read message";this.readBuffer(t,(e,n)=>{if(e){console.error(`Failed to communicate with worker (read message) ${e}`);return}this.state="message read";const t=n.toString("utf-8");const r=JSON.parse(t);this.state="process message";this.onWorkerMessage(r,e=>{if(e){console.error(`Failed to communicate with worker (process message) ${e}`);return}this.state="soon next";setImmediate(()=>this.readNextMessage())})})})}onWorkerMessage(e,n){const{type:t,id:r}=e;switch(t){case"job":{const{data:t,error:f,result:u}=e;(0,i.default)(t,(e,n)=>this.readBuffer(e,n),(e,t)=>{const{callback:o}=this.jobs[r];const a=(e,t)=>{if(o){delete this.jobs[r];this.activeJobs-=1;this.onJobDone();if(e){o(e instanceof Error?e:new Error(e),t)}else{o(null,t)}}n()};if(e){a(e);return}let i=0;if(u.result){u.result=u.result.map(e=>{if(e.buffer){const n=t[i];i+=1;if(e.string){return n.toString("utf-8")}return n}return e.data})}if(f){a(this.fromErrorObj(f),u);return}a(null,u)});break}case"resolve":{const{context:t,request:f,questionId:u}=e;const{data:o}=this.jobs[r];o.resolve(t,f,(e,n)=>{this.writeJson({type:"result",id:u,error:e?{message:e.message,details:e.details,missing:e.missing}:null,result:n})});n();break}case"emitWarning":{const{data:t}=e;const{data:f}=this.jobs[r];f.emitWarning(this.fromErrorObj(t));n();break}case"emitError":{const{data:t}=e;const{data:f}=this.jobs[r];f.emitError(this.fromErrorObj(t));n();break}default:{console.error(`Unexpected worker message ${t} in WorkerPool.`);n();break}}}fromErrorObj(e){let n;if(typeof e