UNPKG

7.4 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/create-compiler.js"],"names":["os","require","fs","path","ARSON","fork","dargs","Observable","MemoryFilesystem","crypto","debug","debuglog","resolvePkg","OPTS","stdio","module","exports","createCompiler","config","cwd","target","worker","send","payload","connected","stringify","watching","queue","listeners","next","message","forEach","listener","start","workerPath","join","__dirname","cp","stderr","stdout","pipe","process","once","code","unshift","type","setInterval","onMessage","envelope","parse","Array","isArray","p","console","error","on","observable","observer","push","filter","stop"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,MAAMA,KAAKC,QAAQ,IAAR,CAAX;;AACA,MAAMC,KAAKD,QAAQ,IAAR,CAAX;;AACA,MAAME,OAAOF,QAAQ,MAAR,CAAb;;AACA,MAAMG,QAAQH,QAAQ,OAAR,CAAd;;iBACeA,QAAQ,eAAR,C;MAARI,I,YAAAA,I;;AACP,MAAMC,QAAQL,QAAQ,OAAR,CAAd;;AACA,MAAMM,aAAaN,QAAQ,gBAAR,CAAnB;;AACA,MAAMO,mBAAmBP,QAAQ,WAAR,CAAzB;;AACA,MAAMQ,SAASR,QAAQ,QAAR,CAAf;;AACA,MAAMS,QAAQT,QAAQ,MAAR,EAAgBU,QAAhB,CAAyB,cAAzB,CAAd;;AACA,MAAMC,aAAaX,QAAQ,aAAR,CAAnB;;AAEA,MAAMY,OAAO;AAAEC,SAAO,CAAC,MAAD,EAAS,MAAT,EAAiB,MAAjB,EAAyB,KAAzB;AAAT,CAAb;;AAEAC,OAAOC,OAAP,CAAeC,cAAf,GAAgC,SAAeA,cAAf,CAA8B;AAAEC,QAAF;AAAUC,KAAV;AAAeC,WAAS;AAAxB,CAA9B;AAAA;AAC9B,QAAIC,MAAJ;;AAEA,UAAMC,OAAOC,WAAW;AACtB,UAAI,CAACF,MAAD,IAAW,CAACA,OAAOC,IAAnB,IAA2B,CAACD,OAAOG,SAAvC,EAAkD;AAChD;AACD;;AACDH,aAAOC,IAAP,CAAYlB,MAAMqB,SAAN,CAAgBF,OAAhB,CAAZ;AACD,KALD;;AAOA,QAAIG,WAAW,KAAf;AAEA,UAAMC,QAAQ,EAAd;AACA,QAAIC,YAAY,EAAhB;;AAEA,UAAMC,OAAQC,OAAD,IAAaF,UAAUG,OAAV,CAAkBC,YAAYA,SAASH,IAAT,CAAcC,OAAd,CAA9B,CAA1B;;AAEA,UAAMG,QAAQ,MAAM;AAClB,YAAMC,aAAa/B,KAAKgC,IAAL,CAAUC,SAAV,EAAqB,oBAArB,CAAnB;AACA1B,YAAO,+BAA8BwB,UAAW,EAAhD;AACA,YAAMG,KAAKhC,KAAK6B,UAAL,EAAiB5B,MAAM;AAACa,WAAD;AAAMC,cAAN;AAAcF,gBAAQd,MAAMqB,SAAN,CAAgBP,MAAhB;AAAtB,OAAN,CAAjB,EAAwEL,IAAxE,CAAX;AAEA,UAAIyB,SAAU,EAAd;AACA,UAAIC,SAAU,EAAd;AAEAF,SAAGE,MAAH,CAAUC,IAAV,CAAeC,QAAQF,MAAvB;AACAF,SAAGC,MAAH,CAAUE,IAAV,CAAeC,QAAQH,MAAvB;AAEAD,SAAGK,IAAH,CAAQ,OAAR,EAAkBC,IAAD,IAAU;AACzB,YAAIA,SAAS,CAAb,EAAgB;AACdhB,gBAAMiB,OAAN,CAAc;AAACC,kBAAM,WAAP;AAAoBtB,qBAAS;AACzCoB,kBADyC;AAEzCJ,oBAFyC;AAGzCD,sBAAQ,CAAE,wCAAuClB,MAAO,GAAhD,EAAoDkB,MAApD,EAA4DH,IAA5D,CAAiE,IAAjE;AAHiC;AAA7B,WAAd;AAKAN,eAAKF,KAAL;AACD;AACF,OATD;AAWA,aAAOU,EAAP;AACD,KAvBD;;AAyBAhB,aAASY,OAAT;AAEAa,gBAAY,MAAMxB,KAAK;AAACuB,YAAM;AAAP,KAAL,CAAlB,EAA6C,GAA7C;;AAEA,UAAME,YAAYC,YAAY;AAAA,2BACM5C,MAAM6C,KAAN,CAAYD,QAAZ,CADN;AAAA,YACnBH,IADmB,gBACnBA,IADmB;AAAA,YACbzB,MADa,gBACbA,MADa;AAAA,YACLG,OADK,gBACLA,OADK;;AAG1B,cAAQsB,IAAR;AACE,aAAK,OAAL;AACE,iBAAOvB,KAAK;AAACuB,kBAAM;AAAP,WAAL,CAAP;;AAEF,aAAK,MAAL;AAAa;AACXnC,kBAAM;AAACmC,kBAAD;AAAOzB;AAAP,aAAN;AACA,kBAAMlB,KAAK,IAAIM,gBAAJ,CAAqBe,OAArB,CAAX;AACAI,kBAAMiB,OAAN,CAAc;AAACC,kBAAD;AAAOzB,oBAAP;AAAeG,uBAAS;AAACrB;AAAD;AAAxB,aAAd;AACA,mBAAO2B,KAAKF,KAAL,CAAP;AACD;;AACD,aAAK,OAAL;AACEjB,gBAAM;AAACmC,gBAAD;AAAOzB;AAAP,WAAN;AACAO,gBAAMiB,OAAN,CAAc;AAACC,gBAAD;AAAOzB,kBAAP;AAAeG;AAAf,WAAd;AACA,iBAAOM,KAAKF,KAAL,CAAP;;AAEF,aAAK,OAAL;AACE,cAAIuB,MAAMC,OAAN,CAAc5B,OAAd,CAAJ,EAA4B;AAC1B,mBAAOA,QAAQQ,OAAR,CAAgBqB,KAAKC,QAAQC,KAAR,CAAcF,EAAEtB,OAAhB,CAArB,CAAP;AACD;;AACD,iBAAOuB,QAAQC,KAAR,CAAc/B,QAAQO,OAAtB,CAAP;;AAEF,aAAK,UAAL;AACEpB,gBAAM;AAACmC,gBAAD;AAAOzB;AAAP,WAAN;AACAE,eAAK;AAACuB,kBAAM;AAAP,WAAL;AAEAxB,mBAASY,OAAT;AAEAZ,iBAAOkC,EAAP,CAAU,SAAV,EAAqBR,SAArB;;AAEA,cAAIrB,QAAJ,EAAc;AACZJ,iBAAK;AAACuB,oBAAM;AAAP,aAAL;AACD;;AA/BL;AAkCH,KArCD;;AAuCAxB,WAAOkC,EAAP,CAAU,SAAV,EAAqBR,SAArB;AAEA,UAAMS,aAAa,IAAIjD,UAAJ,CAAekD,YAAY;AAC5C,UAAI,CAAC/B,QAAL,EAAe;AACbA,mBAAW,IAAX;AACAJ,aAAK;AAACuB,gBAAM;AAAP,SAAL;AACD;;AAEDjB,gBAAU8B,IAAV,CAAeD,QAAf;AACA,aAAO,MAAM;AACX7B,oBAAYA,UAAU+B,MAAV,CAAiB3B,YAAYA,aAAayB,QAA1C,CAAZ;AACD,OAFD;AAGD,KAVkB,CAAnB;AAYAD,eAAW7B,KAAX,GAAmBA,KAAnB;;AACA6B,eAAWI,IAAX,GAAkB,MAAM;AACtBtC,WAAK;AAACuB,cAAM;AAAP,OAAL;AACD,KAFD;;AAGA,mBAAOW,UAAP;AAvG8B;AAAA,CAAhC","file":"create-compiler.js","sourcesContent":["const os = require(\"os\");\nconst fs = require(\"fs\");\nconst path = require(\"path\");\nconst ARSON = require(\"arson\");\nconst {fork} = require(\"child_process\");\nconst dargs = require(\"dargs\");\nconst Observable = require(\"zen-observable\");\nconst MemoryFilesystem = require(\"memory-fs\");\nconst crypto = require(\"crypto\");\nconst debug = require(\"util\").debuglog(\"PATTERNPLATE\");\nconst resolvePkg = require(\"resolve-pkg\");\n\nconst OPTS = { stdio: [\"pipe\", \"pipe\", \"pipe\", \"ipc\"] };\n\nmodule.exports.createCompiler = async function createCompiler({ config, cwd, target = \"\" }) {\n let worker;\n\n const send = payload => {\n if (!worker || !worker.send || !worker.connected) {\n return;\n }\n worker.send(ARSON.stringify(payload));\n }\n\n let watching = false;\n\n const queue = [];\n let listeners = [];\n\n const next = (message) => listeners.forEach(listener => listener.next(message));\n\n const start = () => {\n const workerPath = path.join(__dirname, \"compiler-worker.js\");\n debug(`starting compiler worker at ${workerPath}`);\n const cp = fork(workerPath, dargs({cwd, target, config: ARSON.stringify(config)}), OPTS);\n\n let stderr = ``;\n let stdout = ``;\n\n cp.stdout.pipe(process.stdout);\n cp.stderr.pipe(process.stderr);\n\n cp.once(\"close\", (code) => {\n if (code !== 0) {\n queue.unshift({type: \"exception\", payload: {\n code,\n stdout,\n stderr: [`Could not start compiler worker for \"${target}\"`, stderr].join(\"\\n\")\n }});\n next(queue);\n }\n });\n\n return cp;\n };\n\n worker = start();\n\n setInterval(() => send({type: \"heartbeat\"}), 500);\n\n const onMessage = envelope => {\n const {type, target, payload} = ARSON.parse(envelope);\n\n switch (type) {\n case \"ready\": {\n return send({type: \"start\"});\n }\n case \"done\": {\n debug({type, target});\n const fs = new MemoryFilesystem(payload);\n queue.unshift({type, target, payload: {fs}});\n return next(queue);\n }\n case \"start\": {\n debug({type, target});\n queue.unshift({type, target, payload});\n return next(queue);\n }\n case \"error\": {\n if (Array.isArray(payload)) {\n return payload.forEach(p => console.error(p.message))\n }\n return console.error(payload.message);\n }\n case \"shutdown\": {\n debug({type, target});\n send({type: \"stop\"});\n\n worker = start();\n\n worker.on(\"message\", onMessage);\n\n if (watching) {\n send({type: \"watch\"});\n }\n }\n }\n };\n\n worker.on(\"message\", onMessage);\n\n const observable = new Observable(observer => {\n if (!watching) {\n watching = true;\n send({type: \"watch\"});\n }\n\n listeners.push(observer);\n return () => {\n listeners = listeners.filter(listener => listener !== observer);\n }\n });\n\n observable.queue = queue;\n observable.stop = () => {\n send({type: \"stop\"});\n }\n return observable;\n}\n"]}
\No newline at end of file