From 73e265d8fd050ae3daa67472b4465a5c49d68910 Mon Sep 17 00:00:00 2001 From: Lauri Ojansivu Date: Sat, 20 Apr 2019 15:18:33 +0300 Subject: Include to Wekan packages directory contents, so that meteor command would build all directly. This also simplifies build scripts. Thanks to xet7 ! --- packages/markdown/marked/docs/demo/worker.js | 105 +++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 packages/markdown/marked/docs/demo/worker.js (limited to 'packages/markdown/marked/docs/demo/worker.js') diff --git a/packages/markdown/marked/docs/demo/worker.js b/packages/markdown/marked/docs/demo/worker.js new file mode 100644 index 00000000..06b8befe --- /dev/null +++ b/packages/markdown/marked/docs/demo/worker.js @@ -0,0 +1,105 @@ +/* globals marked, unfetch, ES6Promise */ +if (!self.Promise) { + self.importScripts('https://cdn.jsdelivr.net/npm/es6-promise/dist/es6-promise.js'); + self.Promise = ES6Promise; +} +if (!self.fetch) { + self.importScripts('https://cdn.jsdelivr.net/npm/unfetch/dist/unfetch.umd.js'); + self.fetch = unfetch; +} + +var versionCache = {}; +var currentVersion; + +onunhandledrejection = function (e) { + throw e.reason; +}; + +onmessage = function (e) { + if (e.data.version === currentVersion) { + parse(e); + } else { + loadVersion(e.data.version).then(function () { + parse(e); + }); + } +}; + +function parse(e) { + switch (e.data.task) { + case 'defaults': + + var defaults = {}; + if (typeof marked.getDefaults === 'function') { + defaults = marked.getDefaults(); + delete defaults.renderer; + } else if ('defaults' in marked) { + for (var prop in marked.defaults) { + if (prop !== 'renderer') { + defaults[prop] = marked.defaults[prop]; + } + } + } + postMessage({ + task: e.data.task, + defaults: defaults + }); + break; + case 'parse': + var startTime = new Date(); + var lexed = marked.lexer(e.data.markdown, e.data.options); + var lexedList = []; + for (var i = 0; i < lexed.length; i++) { + var lexedLine = []; + for (var j in lexed[i]) { + lexedLine.push(j + ':' + jsonString(lexed[i][j])); + } + lexedList.push('{' + lexedLine.join(', ') + '}'); + } + var parsed = marked.parser(lexed, e.data.options); + var endTime = new Date(); + // setTimeout(function () { + postMessage({ + task: e.data.task, + lexed: lexedList.join('\n'), + parsed: parsed, + time: endTime - startTime + }); + // }, 10000); + break; + } +} + +function jsonString(input) { + var output = (input + '') + .replace(/\n/g, '\\n') + .replace(/\r/g, '\\r') + .replace(/\t/g, '\\t') + .replace(/\f/g, '\\f') + .replace(/[\\"']/g, '\\$&') + .replace(/\u0000/g, '\\0'); + return '"' + output + '"'; +}; + +function loadVersion(ver) { + var promise; + if (versionCache[ver]) { + promise = Promise.resolve(versionCache[ver]); + } else { + promise = fetch(ver) + .then(function (res) { return res.text(); }) + .then(function (text) { + versionCache[ver] = text; + return text; + }); + } + return promise.then(function (text) { + try { + // eslint-disable-next-line no-new-func + Function(text)(); + } catch (err) { + throw new Error('Cannot load that version of marked'); + } + currentVersion = ver; + }); +} -- cgit v1.2.3-1-g7c22