| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | /* 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;  });}
 |