UNPKG

6.35 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/create-subscription.js"],"names":["Path","require","ARSON","validate","WebSocket","loadConfig","createCompiler","debug","debuglog","module","exports","createSubscription","context","queues","config","cwd","wss","watcher","handler","on","ws","err","errno","console","error","send","getSender","client","subscribe","queue","message","type","payload","configError","contentType","loadedConfig","filepath","target","name","log","Object","assign","stop","server","Promise","all","clientQueue","serverQueue","catch","clients","forEach","readyState","OPEN","stringify"],"mappings":"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","file":"create-subscription.js","sourcesContent":["const Path = require(\"path\");\nconst ARSON = require(\"arson\");\nconst { validate } = require(\"@patternplate/validate-config\");\nconst WebSocket = require(\"ws\");\nconst { loadConfig } = require(\"@patternplate/load-config\");\n\nconst { createCompiler } = require(\"./create-compiler\");\n\nconst debug = require(\"util\").debuglog(\"PATTERNPLATE\");\n\nmodule.exports.createSubscription = function createSubscription(context) {\n const { queues, config, cwd, wss, watcher } = context;\n\n return handler => {\n debug(\"subscribing to webpack and fs events\");\n\n // Prevent client errors (frequently caused by Chrome disconnecting on reload)\n // from bubbling up and making the server fail, ref: https://github.com/websockets/ws/issues/1256\n wss.on(\"connection\", ws => {\n ws.on(\"error\", err => {\n if (err.errno === \"ECONNRESET\") {\n return;\n }\n console.error(err);\n });\n });\n\n const send = getSender(wss, handler);\n\n queues.client.subscribe(queue => {\n const [message] = queue;\n send({ type: message.type, payload: message.payload });\n });\n\n queues.client.subscribe(queue => {\n const [message] = queue;\n send({ type: message.type, payload: message.payload });\n });\n\n let configError = false;\n\n watcher.subscribe(message => {\n if (\n message.type === \"change\" &&\n message.payload.contentType === \"config\"\n ) {\n (async () => {\n const { config: loadedConfig, filepath } = await loadConfig({ cwd });\n const [error] = validate({ target: config, name: filepath });\n\n if (error) {\n configError = true;\n send({ type: \"error\", payload: error });\n return;\n }\n\n if (configError) {\n console.log(`Resolved config error, applying ${filepath}`);\n configError = false;\n }\n\n Object.assign(config, loadedConfig);\n\n queues.client.stop();\n queues.server.stop();\n\n const [clientQueue, serverQueue] = await Promise.all([\n createCompiler({ config, cwd, target: \"web\" }),\n createCompiler({ config, cwd, target: \"node\" })\n ]);\n\n queues.client = clientQueue;\n queues.server = serverQueue;\n })().catch(err => {\n configError = true;\n send({ type: \"error\", payload: err });\n });\n }\n\n send(message);\n });\n };\n};\n\nfunction getSender(wss, handler) {\n return message => {\n if (typeof handler === \"function\") {\n handler(message);\n }\n wss.clients.forEach(client => {\n if (client.readyState === WebSocket.OPEN) {\n client.send(ARSON.stringify(message));\n }\n });\n };\n}\n"]}
\No newline at end of file