UNPKG

8.6 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/demo.js"],"names":["path","require","loadMeta","AggregateError","fromString","sander","unindent","stringHash","module","exports","demo","BUNDLE_PATH","RENDER_PATH","options","demoRoute","req","res","err","error","Array","isArray","console","status","send","message","config","entry","cwd","id","params","patterns","found","find","pattern","sendStatus","wait","queue","fs","getModule","fromFs","bundle","component","getComponent","context","getContext","render","Promise","resolve","content","html","observable","reject","type","payload","subscribe","components","data","fileId","artifact","split","sep","join","top","moduleId","source","dirname","filename","componentBundleSource","String","readFileSync","getExports","exportsCache","Map","hash","has","set","get","encodeURIComponent","JSON","stringify","head","css","before","after"],"mappings":"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","file":"demo.js","sourcesContent":["const path = require(\"path\");\nconst { loadMeta } = require(\"@patternplate/load-meta\");\nconst AggregateError = require(\"aggregate-error\");\nconst fromString = require(\"require-from-string\");\nconst sander = require(\"@marionebl/sander\");\nconst unindent = require(\"unindent\");\nconst stringHash = require(\"string-hash\");\n\nmodule.exports = demo;\n\nconst BUNDLE_PATH = \"/patternplate.node.components.js\";\nconst RENDER_PATH = \"/patternplate.node.render.js\";\n\nasync function demo(options) {\n return async function demoRoute(req, res) {\n try {\n const { entry = [] } = options.config;\n const { cwd } = options;\n\n const id = req.params[0];\n\n // TODO: Send errors to central observer\n const { patterns } = await loadMeta({\n cwd,\n entry\n });\n\n const found = patterns.find(pattern => pattern.id === id);\n\n if (!found) {\n return res.sendStatus(404);\n }\n\n const { fs } = await wait(options.queue);\n\n const getModule = fromFs(fs);\n const bundle = getModule(BUNDLE_PATH);\n const component = getComponent(bundle, found);\n const context = getContext(found);\n const render = component.render || getModule(RENDER_PATH);\n const content = await Promise.resolve(render(component, context));\n res.send(html(content, found));\n } catch (err) {\n const error = Array.isArray(err) ? new AggregateError(err) : err;\n console.error(error);\n res.status(500).send(error.message);\n }\n };\n}\n\n// Todo: Provide basic description\nfunction wait(observable) {\n return new Promise((resolve, reject) => {\n const [message = {}] = observable.queue;\n switch (message.type) {\n case 'done':\n return resolve(message.payload);\n case 'error':\n return reject(message.payload);\n }\n\n observable.subscribe(\n queue => {\n const [message] = queue;\n switch (message.type) {\n case 'done':\n return resolve(message.payload);\n case 'error':\n return reject(message.payload);\n }\n },\n reject\n )\n });\n}\n\nfunction getComponent(components, data) {\n const fileId = data.artifact.split(path.sep).join('/');\n const top = components[fileId];\n\n const moduleId = data.source.split(path.sep).join('/');\n if (top[moduleId]) {\n return top[moduleId];\n }\n\n return top;\n}\n\nfunction getContext(pattern) {\n return {\n dirname: path.dirname(pattern.path)\n };\n}\n\nfunction fromFs(fs) {\n return filename => {\n const componentBundleSource = String(fs.readFileSync(filename));\n return getExports(componentBundleSource, filename);\n };\n}\n\nconst exportsCache = new Map();\n\nfunction getExports(source, { filename }) {\n const hash = stringHash(source);\n\n if (!exportsCache.has(hash)) {\n exportsCache.set(hash, fromString(source, filename));\n }\n\n return exportsCache.get(hash);\n}\n\nfunction html(content, payload) {\n const data = encodeURIComponent(JSON.stringify(payload));\n\n return unindent(`\n <!doctype html>\n <html lang=\"en\">\n <head>\n <!-- content.head -->\n ${content.head || \"\"}\n <style>\n /* content.css */\n ${content.css || \"\"}\n </style>\n </head>\n <body>\n <textarea style=\"display: none;\" data-patternplate-vault=\"data-patternplate-vault\">${data}</textarea>\n <!-- content.before -->\n ${content.before || \"\"}\n <!-- content.html -->\n <div data-patternplate-mount=\"data-patternplate-mount\">${content.html || \"\"}</div>\n <!-- content.after -->\n ${content.after || \"\"}\n <!-- ../ -> /api/ -->\n <script src=\"../patternplate.web.components.js\"></script>\n <script src=\"../patternplate.web.probe.js\"></script>\n <script src=\"../patternplate.web.mount.js\"></script>\n <script src=\"../patternplate.web.demo.js\"></script>\n </body>\n </html>\n `);\n}\n\n"]}
\No newline at end of file