marked 5.0.4 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/marked.umd.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * marked v5.0.4 - a markdown parser
2
+ * marked v5.1.0 - a markdown parser
3
3
  * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)
4
4
  * https://github.com/markedjs/marked
5
5
  */
@@ -91,6 +91,16 @@
91
91
  var key = _toPrimitive(arg, "string");
92
92
  return typeof key === "symbol" ? key : String(key);
93
93
  }
94
+ var id = 0;
95
+ function _classPrivateFieldLooseKey(name) {
96
+ return "__private_" + id++ + "_" + name;
97
+ }
98
+ function _classPrivateFieldLooseBase(receiver, privateKey) {
99
+ if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
100
+ throw new TypeError("attempted to use private field on non-instance");
101
+ }
102
+ return receiver;
103
+ }
94
104
 
95
105
  function getDefaults() {
96
106
  return {
@@ -931,7 +941,7 @@
931
941
  // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
932
942
  if (match[3] && prevChar.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDF50-\uDF59\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD887][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDCD0-\uDCEB\uDCF0-\uDCF9\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF39\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD888[\uDC00-\uDFAF])/)) return;
933
943
  var nextChar = match[1] || match[2] || '';
934
- if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {
944
+ if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {
935
945
  var lLength = match[0].length - 1;
936
946
  var rDelim,
937
947
  rLength,
@@ -964,7 +974,7 @@
964
974
 
965
975
  // Remove extra characters. *a*** -> *a*
966
976
  rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
967
- var raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);
977
+ var raw = src.slice(0, lLength + match.index + rLength + 1);
968
978
 
969
979
  // Create `em` if smallest delimiter has odd char count. *a***
970
980
  if (Math.min(lLength, rLength) % 2) {
@@ -1205,36 +1215,34 @@
1205
1215
  nolink: /^!?\[(ref)\](?:\[\])?/,
1206
1216
  reflinkSearch: 'reflink|nolink(?!\\()',
1207
1217
  emStrong: {
1208
- lDelim: /^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,
1209
- // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.
1210
- // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a
1211
- rDelimAst: /^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,
1212
- rDelimUnd: /^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/ // ^- Not allowed for _
1218
+ lDelim: /^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,
1219
+ // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.
1220
+ // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a
1221
+ rDelimAst: /^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/,
1222
+ rDelimUnd: /^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _
1213
1223
  },
1214
1224
 
1215
1225
  code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,
1216
1226
  br: /^( {2,}|\\)\n(?!\s*$)/,
1217
1227
  del: noopTest,
1218
1228
  text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,
1219
- punctuation: /^([\spunctuation])/
1229
+ punctuation: /^((?![*_])[\spunctuation])/
1220
1230
  };
1221
1231
 
1222
- // list of punctuation marks from CommonMark spec
1223
- // without * and _ to handle the different emphasis markers * and _
1224
- inline._uc_punctuation = "\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E42\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65";
1225
- inline._punctuation = '!"#$%&\'()+\\-.,/:;<=>?@\\[\\]`^{|}~' + inline._uc_punctuation;
1226
- inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();
1232
+ // list of unicode punctuation marks, plus any missing characters from CommonMark spec
1233
+ inline._punctuation = '\\p{P}$+<=>`^|~';
1234
+ inline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();
1227
1235
 
1228
1236
  // sequences em should skip over [title](link), `code`, <html>
1229
1237
  inline.blockSkip = /\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g;
1230
- // lookbehind is not available on Safari as of version 16
1231
- // inline.escapedEmSt = /(?<=(?:^|[^\\)(?:\\[^])*)\\[*_]/g;
1232
- inline.escapedEmSt = /(?:^|[^\\])(?:\\\\)*\\[*_]/g;
1238
+ inline.anyPunctuation = /\\[punct]/g;
1239
+ inline._escapes = /\\([punct])/g;
1233
1240
  inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();
1234
- inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();
1235
- inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();
1236
- inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();
1237
- inline._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
1241
+ inline.emStrong.lDelim = edit(inline.emStrong.lDelim, 'u').replace(/punct/g, inline._punctuation).getRegex();
1242
+ inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'gu').replace(/punct/g, inline._punctuation).getRegex();
1243
+ inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'gu').replace(/punct/g, inline._punctuation).getRegex();
1244
+ inline.anyPunctuation = edit(inline.anyPunctuation, 'gu').replace(/punct/g, inline._punctuation).getRegex();
1245
+ inline._escapes = edit(inline._escapes, 'gu').replace(/punct/g, inline._punctuation).getRegex();
1238
1246
  inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
1239
1247
  inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;
1240
1248
  inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();
@@ -1646,10 +1654,9 @@
1646
1654
  maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
1647
1655
  }
1648
1656
 
1649
- // Mask out escaped em & strong delimiters
1650
- while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {
1651
- maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);
1652
- this.tokenizer.rules.inline.escapedEmSt.lastIndex--;
1657
+ // Mask out escaped characters
1658
+ while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {
1659
+ maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);
1653
1660
  }
1654
1661
  var _loop2 = function _loop2() {
1655
1662
  if (!keepPrevChar) {
@@ -2394,39 +2401,263 @@
2394
2401
  }();
2395
2402
  Hooks.passThroughHooks = new Set(['preprocess', 'postprocess']);
2396
2403
 
2397
- function onError(silent, async, callback) {
2398
- return function (e) {
2399
- e.message += '\nPlease report this to https://github.com/markedjs/marked.';
2400
- if (silent) {
2401
- var msg = '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
2402
- if (async) {
2403
- return Promise.resolve(msg);
2404
- }
2405
- if (callback) {
2406
- callback(null, msg);
2407
- return;
2404
+ var _parseMarkdown = /*#__PURE__*/_classPrivateFieldLooseKey("parseMarkdown");
2405
+ var _onError = /*#__PURE__*/_classPrivateFieldLooseKey("onError");
2406
+ var Marked = /*#__PURE__*/function () {
2407
+ function Marked() {
2408
+ Object.defineProperty(this, _onError, {
2409
+ value: _onError2
2410
+ });
2411
+ Object.defineProperty(this, _parseMarkdown, {
2412
+ value: _parseMarkdown2
2413
+ });
2414
+ this.defaults = getDefaults();
2415
+ this.options = this.setOptions;
2416
+ this.parse = _classPrivateFieldLooseBase(this, _parseMarkdown)[_parseMarkdown](Lexer.lex, Parser.parse);
2417
+ this.parseInline = _classPrivateFieldLooseBase(this, _parseMarkdown)[_parseMarkdown](Lexer.lexInline, Parser.parseInline);
2418
+ this.Parser = Parser;
2419
+ this.parser = Parser.parse;
2420
+ this.Renderer = Renderer;
2421
+ this.TextRenderer = TextRenderer;
2422
+ this.Lexer = Lexer;
2423
+ this.lexer = Lexer.lex;
2424
+ this.Tokenizer = Tokenizer;
2425
+ this.Slugger = Slugger;
2426
+ this.Hooks = Hooks;
2427
+ this.use.apply(this, arguments);
2428
+ }
2429
+ var _proto = Marked.prototype;
2430
+ _proto.walkTokens = function walkTokens(tokens, callback) {
2431
+ var _this = this;
2432
+ var values = [];
2433
+ var _loop = function _loop() {
2434
+ var token = _step.value;
2435
+ values = values.concat(callback.call(_this, token));
2436
+ switch (token.type) {
2437
+ case 'table':
2438
+ {
2439
+ for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {
2440
+ var cell = _step2.value;
2441
+ values = values.concat(_this.walkTokens(cell.tokens, callback));
2442
+ }
2443
+ for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {
2444
+ var row = _step3.value;
2445
+ for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {
2446
+ var _cell = _step4.value;
2447
+ values = values.concat(_this.walkTokens(_cell.tokens, callback));
2448
+ }
2449
+ }
2450
+ break;
2451
+ }
2452
+ case 'list':
2453
+ {
2454
+ values = values.concat(_this.walkTokens(token.items, callback));
2455
+ break;
2456
+ }
2457
+ default:
2458
+ {
2459
+ if (_this.defaults.extensions && _this.defaults.extensions.childTokens && _this.defaults.extensions.childTokens[token.type]) {
2460
+ // Walk any extensions
2461
+ _this.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {
2462
+ values = values.concat(_this.walkTokens(token[childTokens], callback));
2463
+ });
2464
+ } else if (token.tokens) {
2465
+ values = values.concat(_this.walkTokens(token.tokens, callback));
2466
+ }
2467
+ }
2408
2468
  }
2409
- return msg;
2410
- }
2411
- if (async) {
2412
- return Promise.reject(e);
2469
+ };
2470
+ for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
2471
+ _loop();
2413
2472
  }
2414
- if (callback) {
2415
- callback(e);
2416
- return;
2473
+ return values;
2474
+ };
2475
+ _proto.use = function use() {
2476
+ var _this2 = this;
2477
+ var extensions = this.defaults.extensions || {
2478
+ renderers: {},
2479
+ childTokens: {}
2480
+ };
2481
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2482
+ args[_key] = arguments[_key];
2417
2483
  }
2418
- throw e;
2484
+ args.forEach(function (pack) {
2485
+ // copy options to new object
2486
+ var opts = _extends({}, pack);
2487
+
2488
+ // set async to true if it was set to true before
2489
+ opts.async = _this2.defaults.async || opts.async || false;
2490
+
2491
+ // ==-- Parse "addon" extensions --== //
2492
+ if (pack.extensions) {
2493
+ pack.extensions.forEach(function (ext) {
2494
+ if (!ext.name) {
2495
+ throw new Error('extension name required');
2496
+ }
2497
+ if (ext.renderer) {
2498
+ // Renderer extensions
2499
+ var prevRenderer = extensions.renderers[ext.name];
2500
+ if (prevRenderer) {
2501
+ // Replace extension with func to run new extension but fall back if false
2502
+ extensions.renderers[ext.name] = function () {
2503
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
2504
+ args[_key2] = arguments[_key2];
2505
+ }
2506
+ var ret = ext.renderer.apply(this, args);
2507
+ if (ret === false) {
2508
+ ret = prevRenderer.apply(this, args);
2509
+ }
2510
+ return ret;
2511
+ };
2512
+ } else {
2513
+ extensions.renderers[ext.name] = ext.renderer;
2514
+ }
2515
+ }
2516
+ if (ext.tokenizer) {
2517
+ // Tokenizer Extensions
2518
+ if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {
2519
+ throw new Error("extension level must be 'block' or 'inline'");
2520
+ }
2521
+ if (extensions[ext.level]) {
2522
+ extensions[ext.level].unshift(ext.tokenizer);
2523
+ } else {
2524
+ extensions[ext.level] = [ext.tokenizer];
2525
+ }
2526
+ if (ext.start) {
2527
+ // Function to check for start of token
2528
+ if (ext.level === 'block') {
2529
+ if (extensions.startBlock) {
2530
+ extensions.startBlock.push(ext.start);
2531
+ } else {
2532
+ extensions.startBlock = [ext.start];
2533
+ }
2534
+ } else if (ext.level === 'inline') {
2535
+ if (extensions.startInline) {
2536
+ extensions.startInline.push(ext.start);
2537
+ } else {
2538
+ extensions.startInline = [ext.start];
2539
+ }
2540
+ }
2541
+ }
2542
+ }
2543
+ if (ext.childTokens) {
2544
+ // Child tokens to be visited by walkTokens
2545
+ extensions.childTokens[ext.name] = ext.childTokens;
2546
+ }
2547
+ });
2548
+ opts.extensions = extensions;
2549
+ }
2550
+
2551
+ // ==-- Parse "overwrite" extensions --== //
2552
+ if (pack.renderer) {
2553
+ var renderer = _this2.defaults.renderer || new Renderer(_this2.defaults);
2554
+ var _loop2 = function _loop2(prop) {
2555
+ var prevRenderer = renderer[prop];
2556
+ // Replace renderer with func to run extension, but fall back if false
2557
+ renderer[prop] = function () {
2558
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
2559
+ args[_key3] = arguments[_key3];
2560
+ }
2561
+ var ret = pack.renderer[prop].apply(renderer, args);
2562
+ if (ret === false) {
2563
+ ret = prevRenderer.apply(renderer, args);
2564
+ }
2565
+ return ret;
2566
+ };
2567
+ };
2568
+ for (var prop in pack.renderer) {
2569
+ _loop2(prop);
2570
+ }
2571
+ opts.renderer = renderer;
2572
+ }
2573
+ if (pack.tokenizer) {
2574
+ var tokenizer = _this2.defaults.tokenizer || new Tokenizer(_this2.defaults);
2575
+ var _loop3 = function _loop3(_prop) {
2576
+ var prevTokenizer = tokenizer[_prop];
2577
+ // Replace tokenizer with func to run extension, but fall back if false
2578
+ tokenizer[_prop] = function () {
2579
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
2580
+ args[_key4] = arguments[_key4];
2581
+ }
2582
+ var ret = pack.tokenizer[_prop].apply(tokenizer, args);
2583
+ if (ret === false) {
2584
+ ret = prevTokenizer.apply(tokenizer, args);
2585
+ }
2586
+ return ret;
2587
+ };
2588
+ };
2589
+ for (var _prop in pack.tokenizer) {
2590
+ _loop3(_prop);
2591
+ }
2592
+ opts.tokenizer = tokenizer;
2593
+ }
2594
+
2595
+ // ==-- Parse Hooks extensions --== //
2596
+ if (pack.hooks) {
2597
+ var hooks = _this2.defaults.hooks || new Hooks();
2598
+ var _loop4 = function _loop4(_prop2) {
2599
+ var prevHook = hooks[_prop2];
2600
+ if (Hooks.passThroughHooks.has(_prop2)) {
2601
+ hooks[_prop2] = function (arg) {
2602
+ if (_this2.defaults.async) {
2603
+ return Promise.resolve(pack.hooks[_prop2].call(hooks, arg)).then(function (ret) {
2604
+ return prevHook.call(hooks, ret);
2605
+ });
2606
+ }
2607
+ var ret = pack.hooks[_prop2].call(hooks, arg);
2608
+ return prevHook.call(hooks, ret);
2609
+ };
2610
+ } else {
2611
+ hooks[_prop2] = function () {
2612
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
2613
+ args[_key5] = arguments[_key5];
2614
+ }
2615
+ var ret = pack.hooks[_prop2].apply(hooks, args);
2616
+ if (ret === false) {
2617
+ ret = prevHook.apply(hooks, args);
2618
+ }
2619
+ return ret;
2620
+ };
2621
+ }
2622
+ };
2623
+ for (var _prop2 in pack.hooks) {
2624
+ _loop4(_prop2);
2625
+ }
2626
+ opts.hooks = hooks;
2627
+ }
2628
+
2629
+ // ==-- Parse WalkTokens extensions --== //
2630
+ if (pack.walkTokens) {
2631
+ var walkTokens = _this2.defaults.walkTokens;
2632
+ opts.walkTokens = function (token) {
2633
+ var values = [];
2634
+ values.push(pack.walkTokens.call(this, token));
2635
+ if (walkTokens) {
2636
+ values = values.concat(walkTokens.call(this, token));
2637
+ }
2638
+ return values;
2639
+ };
2640
+ }
2641
+ _this2.defaults = _extends({}, _this2.defaults, opts);
2642
+ });
2643
+ return this;
2419
2644
  };
2420
- }
2421
- function parseMarkdown(lexer, parser) {
2645
+ _proto.setOptions = function setOptions(opt) {
2646
+ this.defaults = _extends({}, this.defaults, opt);
2647
+ return this;
2648
+ };
2649
+ return Marked;
2650
+ }();
2651
+ function _parseMarkdown2(lexer, parser) {
2652
+ var _this3 = this;
2422
2653
  return function (src, opt, callback) {
2423
2654
  if (typeof opt === 'function') {
2424
2655
  callback = opt;
2425
2656
  opt = null;
2426
2657
  }
2427
2658
  var origOpt = _extends({}, opt);
2428
- opt = _extends({}, marked.defaults, origOpt);
2429
- var throwError = onError(opt.silent, opt.async, callback);
2659
+ opt = _extends({}, _this3.defaults, origOpt);
2660
+ var throwError = _classPrivateFieldLooseBase(_this3, _onError)[_onError](opt.silent, opt.async, callback);
2430
2661
 
2431
2662
  // throw error in case of non string input
2432
2663
  if (typeof src === 'undefined' || src === null) {
@@ -2455,7 +2686,7 @@
2455
2686
  if (!err) {
2456
2687
  try {
2457
2688
  if (opt.walkTokens) {
2458
- marked.walkTokens(tokens, opt.walkTokens);
2689
+ _this3.walkTokens(tokens, opt.walkTokens);
2459
2690
  }
2460
2691
  out = parser(tokens, opt);
2461
2692
  if (opt.hooks) {
@@ -2474,7 +2705,7 @@
2474
2705
  delete opt.highlight;
2475
2706
  if (!tokens.length) return done();
2476
2707
  var pending = 0;
2477
- marked.walkTokens(tokens, function (token) {
2708
+ _this3.walkTokens(tokens, function (token) {
2478
2709
  if (token.type === 'code') {
2479
2710
  pending++;
2480
2711
  setTimeout(function () {
@@ -2503,7 +2734,7 @@
2503
2734
  return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(function (src) {
2504
2735
  return lexer(src, opt);
2505
2736
  }).then(function (tokens) {
2506
- return opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(function () {
2737
+ return opt.walkTokens ? Promise.all(_this3.walkTokens(tokens, opt.walkTokens)).then(function () {
2507
2738
  return tokens;
2508
2739
  }) : tokens;
2509
2740
  }).then(function (tokens) {
@@ -2518,7 +2749,7 @@
2518
2749
  }
2519
2750
  var _tokens = lexer(src, opt);
2520
2751
  if (opt.walkTokens) {
2521
- marked.walkTokens(_tokens, opt.walkTokens);
2752
+ _this3.walkTokens(_tokens, opt.walkTokens);
2522
2753
  }
2523
2754
  var html = parser(_tokens, opt);
2524
2755
  if (opt.hooks) {
@@ -2530,12 +2761,38 @@
2530
2761
  }
2531
2762
  };
2532
2763
  }
2764
+ function _onError2(silent, async, callback) {
2765
+ return function (e) {
2766
+ e.message += '\nPlease report this to https://github.com/markedjs/this.';
2767
+ if (silent) {
2768
+ var msg = '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
2769
+ if (async) {
2770
+ return Promise.resolve(msg);
2771
+ }
2772
+ if (callback) {
2773
+ callback(null, msg);
2774
+ return;
2775
+ }
2776
+ return msg;
2777
+ }
2778
+ if (async) {
2779
+ return Promise.reject(e);
2780
+ }
2781
+ if (callback) {
2782
+ callback(e);
2783
+ return;
2784
+ }
2785
+ throw e;
2786
+ };
2787
+ }
2788
+
2789
+ var markedInstance = new Marked(exports.defaults);
2533
2790
 
2534
2791
  /**
2535
2792
  * Marked
2536
2793
  */
2537
2794
  function marked(src, opt, callback) {
2538
- return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);
2795
+ return markedInstance.parse(src, opt, callback);
2539
2796
  }
2540
2797
 
2541
2798
  /**
@@ -2543,7 +2800,8 @@
2543
2800
  */
2544
2801
 
2545
2802
  marked.options = marked.setOptions = function (opt) {
2546
- marked.defaults = _extends({}, marked.defaults, opt);
2803
+ markedInstance.setOptions(opt);
2804
+ marked.defaults = markedInstance.defaults;
2547
2805
  changeDefaults(marked.defaults);
2548
2806
  return marked;
2549
2807
  };
@@ -2555,172 +2813,10 @@
2555
2813
  */
2556
2814
 
2557
2815
  marked.use = function () {
2558
- var extensions = marked.defaults.extensions || {
2559
- renderers: {},
2560
- childTokens: {}
2561
- };
2562
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2563
- args[_key] = arguments[_key];
2564
- }
2565
- args.forEach(function (pack) {
2566
- // copy options to new object
2567
- var opts = _extends({}, pack);
2568
-
2569
- // set async to true if it was set to true before
2570
- opts.async = marked.defaults.async || opts.async || false;
2571
-
2572
- // ==-- Parse "addon" extensions --== //
2573
- if (pack.extensions) {
2574
- pack.extensions.forEach(function (ext) {
2575
- if (!ext.name) {
2576
- throw new Error('extension name required');
2577
- }
2578
- if (ext.renderer) {
2579
- // Renderer extensions
2580
- var prevRenderer = extensions.renderers[ext.name];
2581
- if (prevRenderer) {
2582
- // Replace extension with func to run new extension but fall back if false
2583
- extensions.renderers[ext.name] = function () {
2584
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
2585
- args[_key2] = arguments[_key2];
2586
- }
2587
- var ret = ext.renderer.apply(this, args);
2588
- if (ret === false) {
2589
- ret = prevRenderer.apply(this, args);
2590
- }
2591
- return ret;
2592
- };
2593
- } else {
2594
- extensions.renderers[ext.name] = ext.renderer;
2595
- }
2596
- }
2597
- if (ext.tokenizer) {
2598
- // Tokenizer Extensions
2599
- if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {
2600
- throw new Error("extension level must be 'block' or 'inline'");
2601
- }
2602
- if (extensions[ext.level]) {
2603
- extensions[ext.level].unshift(ext.tokenizer);
2604
- } else {
2605
- extensions[ext.level] = [ext.tokenizer];
2606
- }
2607
- if (ext.start) {
2608
- // Function to check for start of token
2609
- if (ext.level === 'block') {
2610
- if (extensions.startBlock) {
2611
- extensions.startBlock.push(ext.start);
2612
- } else {
2613
- extensions.startBlock = [ext.start];
2614
- }
2615
- } else if (ext.level === 'inline') {
2616
- if (extensions.startInline) {
2617
- extensions.startInline.push(ext.start);
2618
- } else {
2619
- extensions.startInline = [ext.start];
2620
- }
2621
- }
2622
- }
2623
- }
2624
- if (ext.childTokens) {
2625
- // Child tokens to be visited by walkTokens
2626
- extensions.childTokens[ext.name] = ext.childTokens;
2627
- }
2628
- });
2629
- opts.extensions = extensions;
2630
- }
2631
-
2632
- // ==-- Parse "overwrite" extensions --== //
2633
- if (pack.renderer) {
2634
- var renderer = marked.defaults.renderer || new Renderer();
2635
- var _loop = function _loop(prop) {
2636
- var prevRenderer = renderer[prop];
2637
- // Replace renderer with func to run extension, but fall back if false
2638
- renderer[prop] = function () {
2639
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
2640
- args[_key3] = arguments[_key3];
2641
- }
2642
- var ret = pack.renderer[prop].apply(renderer, args);
2643
- if (ret === false) {
2644
- ret = prevRenderer.apply(renderer, args);
2645
- }
2646
- return ret;
2647
- };
2648
- };
2649
- for (var prop in pack.renderer) {
2650
- _loop(prop);
2651
- }
2652
- opts.renderer = renderer;
2653
- }
2654
- if (pack.tokenizer) {
2655
- var tokenizer = marked.defaults.tokenizer || new Tokenizer();
2656
- var _loop2 = function _loop2(_prop) {
2657
- var prevTokenizer = tokenizer[_prop];
2658
- // Replace tokenizer with func to run extension, but fall back if false
2659
- tokenizer[_prop] = function () {
2660
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
2661
- args[_key4] = arguments[_key4];
2662
- }
2663
- var ret = pack.tokenizer[_prop].apply(tokenizer, args);
2664
- if (ret === false) {
2665
- ret = prevTokenizer.apply(tokenizer, args);
2666
- }
2667
- return ret;
2668
- };
2669
- };
2670
- for (var _prop in pack.tokenizer) {
2671
- _loop2(_prop);
2672
- }
2673
- opts.tokenizer = tokenizer;
2674
- }
2675
-
2676
- // ==-- Parse Hooks extensions --== //
2677
- if (pack.hooks) {
2678
- var hooks = marked.defaults.hooks || new Hooks();
2679
- var _loop3 = function _loop3(_prop2) {
2680
- var prevHook = hooks[_prop2];
2681
- if (Hooks.passThroughHooks.has(_prop2)) {
2682
- hooks[_prop2] = function (arg) {
2683
- if (marked.defaults.async) {
2684
- return Promise.resolve(pack.hooks[_prop2].call(hooks, arg)).then(function (ret) {
2685
- return prevHook.call(hooks, ret);
2686
- });
2687
- }
2688
- var ret = pack.hooks[_prop2].call(hooks, arg);
2689
- return prevHook.call(hooks, ret);
2690
- };
2691
- } else {
2692
- hooks[_prop2] = function () {
2693
- for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
2694
- args[_key5] = arguments[_key5];
2695
- }
2696
- var ret = pack.hooks[_prop2].apply(hooks, args);
2697
- if (ret === false) {
2698
- ret = prevHook.apply(hooks, args);
2699
- }
2700
- return ret;
2701
- };
2702
- }
2703
- };
2704
- for (var _prop2 in pack.hooks) {
2705
- _loop3(_prop2);
2706
- }
2707
- opts.hooks = hooks;
2708
- }
2709
-
2710
- // ==-- Parse WalkTokens extensions --== //
2711
- if (pack.walkTokens) {
2712
- var _walkTokens = marked.defaults.walkTokens;
2713
- opts.walkTokens = function (token) {
2714
- var values = [];
2715
- values.push(pack.walkTokens.call(this, token));
2716
- if (_walkTokens) {
2717
- values = values.concat(_walkTokens.call(this, token));
2718
- }
2719
- return values;
2720
- };
2721
- }
2722
- marked.setOptions(opts);
2723
- });
2816
+ markedInstance.use.apply(markedInstance, arguments);
2817
+ marked.defaults = markedInstance.defaults;
2818
+ changeDefaults(marked.defaults);
2819
+ return marked;
2724
2820
  };
2725
2821
 
2726
2822
  /**
@@ -2728,55 +2824,14 @@
2728
2824
  */
2729
2825
 
2730
2826
  marked.walkTokens = function (tokens, callback) {
2731
- var values = [];
2732
- var _loop4 = function _loop4() {
2733
- var token = _step.value;
2734
- values = values.concat(callback.call(marked, token));
2735
- switch (token.type) {
2736
- case 'table':
2737
- {
2738
- for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {
2739
- var cell = _step2.value;
2740
- values = values.concat(marked.walkTokens(cell.tokens, callback));
2741
- }
2742
- for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {
2743
- var row = _step3.value;
2744
- for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {
2745
- var _cell = _step4.value;
2746
- values = values.concat(marked.walkTokens(_cell.tokens, callback));
2747
- }
2748
- }
2749
- break;
2750
- }
2751
- case 'list':
2752
- {
2753
- values = values.concat(marked.walkTokens(token.items, callback));
2754
- break;
2755
- }
2756
- default:
2757
- {
2758
- if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {
2759
- // Walk any extensions
2760
- marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {
2761
- values = values.concat(marked.walkTokens(token[childTokens], callback));
2762
- });
2763
- } else if (token.tokens) {
2764
- values = values.concat(marked.walkTokens(token.tokens, callback));
2765
- }
2766
- }
2767
- }
2768
- };
2769
- for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
2770
- _loop4();
2771
- }
2772
- return values;
2827
+ return markedInstance.walkTokens(tokens, callback);
2773
2828
  };
2774
2829
 
2775
2830
  /**
2776
2831
  * Parse Inline
2777
2832
  * @param {string} src
2778
2833
  */
2779
- marked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);
2834
+ marked.parseInline = markedInstance.parseInline;
2780
2835
 
2781
2836
  /**
2782
2837
  * Expose
@@ -2802,6 +2857,7 @@
2802
2857
 
2803
2858
  exports.Hooks = Hooks;
2804
2859
  exports.Lexer = Lexer;
2860
+ exports.Marked = Marked;
2805
2861
  exports.Parser = Parser;
2806
2862
  exports.Renderer = Renderer;
2807
2863
  exports.Slugger = Slugger;