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.cjs 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
  */
@@ -87,6 +87,16 @@ function _toPropertyKey(arg) {
87
87
  var key = _toPrimitive(arg, "string");
88
88
  return typeof key === "symbol" ? key : String(key);
89
89
  }
90
+ var id = 0;
91
+ function _classPrivateFieldLooseKey(name) {
92
+ return "__private_" + id++ + "_" + name;
93
+ }
94
+ function _classPrivateFieldLooseBase(receiver, privateKey) {
95
+ if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
96
+ throw new TypeError("attempted to use private field on non-instance");
97
+ }
98
+ return receiver;
99
+ }
90
100
 
91
101
  function getDefaults() {
92
102
  return {
@@ -927,7 +937,7 @@ var Tokenizer = /*#__PURE__*/function () {
927
937
  // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
928
938
  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;
929
939
  var nextChar = match[1] || match[2] || '';
930
- if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {
940
+ if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {
931
941
  var lLength = match[0].length - 1;
932
942
  var rDelim,
933
943
  rLength,
@@ -960,7 +970,7 @@ var Tokenizer = /*#__PURE__*/function () {
960
970
 
961
971
  // Remove extra characters. *a*** -> *a*
962
972
  rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
963
- var raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);
973
+ var raw = src.slice(0, lLength + match.index + rLength + 1);
964
974
 
965
975
  // Create `em` if smallest delimiter has odd char count. *a***
966
976
  if (Math.min(lLength, rLength) % 2) {
@@ -1201,36 +1211,34 @@ var inline = {
1201
1211
  nolink: /^!?\[(ref)\](?:\[\])?/,
1202
1212
  reflinkSearch: 'reflink|nolink(?!\\()',
1203
1213
  emStrong: {
1204
- lDelim: /^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,
1205
- // (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.
1206
- // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a
1207
- rDelimAst: /^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,
1208
- rDelimUnd: /^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/ // ^- Not allowed for _
1214
+ lDelim: /^(?:\*+(?:((?!\*)[punct])|[^\s*]))|^_+(?:((?!_)[punct])|([^\s_]))/,
1215
+ // (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.
1216
+ // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a
1217
+ rDelimAst: /^[^_*]*?__[^_*]*?\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\*)[punct](\*+)(?=[\s]|$)|[^punct\s](\*+)(?!\*)(?=[punct\s]|$)|(?!\*)[punct\s](\*+)(?=[^punct\s])|[\s](\*+)(?!\*)(?=[punct])|(?!\*)[punct](\*+)(?!\*)(?=[punct])|[^punct\s](\*+)(?=[^punct\s])/,
1218
+ rDelimUnd: /^[^_*]*?\*\*[^_*]*?_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\s]|$)|[^punct\s](_+)(?!_)(?=[punct\s]|$)|(?!_)[punct\s](_+)(?=[^punct\s])|[\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _
1209
1219
  },
1210
1220
 
1211
1221
  code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,
1212
1222
  br: /^( {2,}|\\)\n(?!\s*$)/,
1213
1223
  del: noopTest,
1214
1224
  text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,
1215
- punctuation: /^([\spunctuation])/
1225
+ punctuation: /^((?![*_])[\spunctuation])/
1216
1226
  };
1217
1227
 
1218
- // list of punctuation marks from CommonMark spec
1219
- // without * and _ to handle the different emphasis markers * and _
1220
- 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";
1221
- inline._punctuation = '!"#$%&\'()+\\-.,/:;<=>?@\\[\\]`^{|}~' + inline._uc_punctuation;
1222
- inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();
1228
+ // list of unicode punctuation marks, plus any missing characters from CommonMark spec
1229
+ inline._punctuation = '\\p{P}$+<=>`^|~';
1230
+ inline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();
1223
1231
 
1224
1232
  // sequences em should skip over [title](link), `code`, <html>
1225
1233
  inline.blockSkip = /\[[^[\]]*?\]\([^\(\)]*?\)|`[^`]*?`|<[^<>]*?>/g;
1226
- // lookbehind is not available on Safari as of version 16
1227
- // inline.escapedEmSt = /(?<=(?:^|[^\\)(?:\\[^])*)\\[*_]/g;
1228
- inline.escapedEmSt = /(?:^|[^\\])(?:\\\\)*\\[*_]/g;
1234
+ inline.anyPunctuation = /\\[punct]/g;
1235
+ inline._escapes = /\\([punct])/g;
1229
1236
  inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();
1230
- inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();
1231
- inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();
1232
- inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();
1233
- inline._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
1237
+ inline.emStrong.lDelim = edit(inline.emStrong.lDelim, 'u').replace(/punct/g, inline._punctuation).getRegex();
1238
+ inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'gu').replace(/punct/g, inline._punctuation).getRegex();
1239
+ inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'gu').replace(/punct/g, inline._punctuation).getRegex();
1240
+ inline.anyPunctuation = edit(inline.anyPunctuation, 'gu').replace(/punct/g, inline._punctuation).getRegex();
1241
+ inline._escapes = edit(inline._escapes, 'gu').replace(/punct/g, inline._punctuation).getRegex();
1234
1242
  inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
1235
1243
  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])?)+(?![-_])/;
1236
1244
  inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();
@@ -1642,10 +1650,9 @@ var Lexer = /*#__PURE__*/function () {
1642
1650
  maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
1643
1651
  }
1644
1652
 
1645
- // Mask out escaped em & strong delimiters
1646
- while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {
1647
- maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);
1648
- this.tokenizer.rules.inline.escapedEmSt.lastIndex--;
1653
+ // Mask out escaped characters
1654
+ while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {
1655
+ maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);
1649
1656
  }
1650
1657
  var _loop2 = function _loop2() {
1651
1658
  if (!keepPrevChar) {
@@ -2390,39 +2397,263 @@ var Hooks = /*#__PURE__*/function () {
2390
2397
  }();
2391
2398
  Hooks.passThroughHooks = new Set(['preprocess', 'postprocess']);
2392
2399
 
2393
- function onError(silent, async, callback) {
2394
- return function (e) {
2395
- e.message += '\nPlease report this to https://github.com/markedjs/marked.';
2396
- if (silent) {
2397
- var msg = '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
2398
- if (async) {
2399
- return Promise.resolve(msg);
2400
- }
2401
- if (callback) {
2402
- callback(null, msg);
2403
- return;
2400
+ var _parseMarkdown = /*#__PURE__*/_classPrivateFieldLooseKey("parseMarkdown");
2401
+ var _onError = /*#__PURE__*/_classPrivateFieldLooseKey("onError");
2402
+ var Marked = /*#__PURE__*/function () {
2403
+ function Marked() {
2404
+ Object.defineProperty(this, _onError, {
2405
+ value: _onError2
2406
+ });
2407
+ Object.defineProperty(this, _parseMarkdown, {
2408
+ value: _parseMarkdown2
2409
+ });
2410
+ this.defaults = getDefaults();
2411
+ this.options = this.setOptions;
2412
+ this.parse = _classPrivateFieldLooseBase(this, _parseMarkdown)[_parseMarkdown](Lexer.lex, Parser.parse);
2413
+ this.parseInline = _classPrivateFieldLooseBase(this, _parseMarkdown)[_parseMarkdown](Lexer.lexInline, Parser.parseInline);
2414
+ this.Parser = Parser;
2415
+ this.parser = Parser.parse;
2416
+ this.Renderer = Renderer;
2417
+ this.TextRenderer = TextRenderer;
2418
+ this.Lexer = Lexer;
2419
+ this.lexer = Lexer.lex;
2420
+ this.Tokenizer = Tokenizer;
2421
+ this.Slugger = Slugger;
2422
+ this.Hooks = Hooks;
2423
+ this.use.apply(this, arguments);
2424
+ }
2425
+ var _proto = Marked.prototype;
2426
+ _proto.walkTokens = function walkTokens(tokens, callback) {
2427
+ var _this = this;
2428
+ var values = [];
2429
+ var _loop = function _loop() {
2430
+ var token = _step.value;
2431
+ values = values.concat(callback.call(_this, token));
2432
+ switch (token.type) {
2433
+ case 'table':
2434
+ {
2435
+ for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {
2436
+ var cell = _step2.value;
2437
+ values = values.concat(_this.walkTokens(cell.tokens, callback));
2438
+ }
2439
+ for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {
2440
+ var row = _step3.value;
2441
+ for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {
2442
+ var _cell = _step4.value;
2443
+ values = values.concat(_this.walkTokens(_cell.tokens, callback));
2444
+ }
2445
+ }
2446
+ break;
2447
+ }
2448
+ case 'list':
2449
+ {
2450
+ values = values.concat(_this.walkTokens(token.items, callback));
2451
+ break;
2452
+ }
2453
+ default:
2454
+ {
2455
+ if (_this.defaults.extensions && _this.defaults.extensions.childTokens && _this.defaults.extensions.childTokens[token.type]) {
2456
+ // Walk any extensions
2457
+ _this.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {
2458
+ values = values.concat(_this.walkTokens(token[childTokens], callback));
2459
+ });
2460
+ } else if (token.tokens) {
2461
+ values = values.concat(_this.walkTokens(token.tokens, callback));
2462
+ }
2463
+ }
2404
2464
  }
2405
- return msg;
2406
- }
2407
- if (async) {
2408
- return Promise.reject(e);
2465
+ };
2466
+ for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
2467
+ _loop();
2409
2468
  }
2410
- if (callback) {
2411
- callback(e);
2412
- return;
2469
+ return values;
2470
+ };
2471
+ _proto.use = function use() {
2472
+ var _this2 = this;
2473
+ var extensions = this.defaults.extensions || {
2474
+ renderers: {},
2475
+ childTokens: {}
2476
+ };
2477
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2478
+ args[_key] = arguments[_key];
2413
2479
  }
2414
- throw e;
2480
+ args.forEach(function (pack) {
2481
+ // copy options to new object
2482
+ var opts = _extends({}, pack);
2483
+
2484
+ // set async to true if it was set to true before
2485
+ opts.async = _this2.defaults.async || opts.async || false;
2486
+
2487
+ // ==-- Parse "addon" extensions --== //
2488
+ if (pack.extensions) {
2489
+ pack.extensions.forEach(function (ext) {
2490
+ if (!ext.name) {
2491
+ throw new Error('extension name required');
2492
+ }
2493
+ if (ext.renderer) {
2494
+ // Renderer extensions
2495
+ var prevRenderer = extensions.renderers[ext.name];
2496
+ if (prevRenderer) {
2497
+ // Replace extension with func to run new extension but fall back if false
2498
+ extensions.renderers[ext.name] = function () {
2499
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
2500
+ args[_key2] = arguments[_key2];
2501
+ }
2502
+ var ret = ext.renderer.apply(this, args);
2503
+ if (ret === false) {
2504
+ ret = prevRenderer.apply(this, args);
2505
+ }
2506
+ return ret;
2507
+ };
2508
+ } else {
2509
+ extensions.renderers[ext.name] = ext.renderer;
2510
+ }
2511
+ }
2512
+ if (ext.tokenizer) {
2513
+ // Tokenizer Extensions
2514
+ if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {
2515
+ throw new Error("extension level must be 'block' or 'inline'");
2516
+ }
2517
+ if (extensions[ext.level]) {
2518
+ extensions[ext.level].unshift(ext.tokenizer);
2519
+ } else {
2520
+ extensions[ext.level] = [ext.tokenizer];
2521
+ }
2522
+ if (ext.start) {
2523
+ // Function to check for start of token
2524
+ if (ext.level === 'block') {
2525
+ if (extensions.startBlock) {
2526
+ extensions.startBlock.push(ext.start);
2527
+ } else {
2528
+ extensions.startBlock = [ext.start];
2529
+ }
2530
+ } else if (ext.level === 'inline') {
2531
+ if (extensions.startInline) {
2532
+ extensions.startInline.push(ext.start);
2533
+ } else {
2534
+ extensions.startInline = [ext.start];
2535
+ }
2536
+ }
2537
+ }
2538
+ }
2539
+ if (ext.childTokens) {
2540
+ // Child tokens to be visited by walkTokens
2541
+ extensions.childTokens[ext.name] = ext.childTokens;
2542
+ }
2543
+ });
2544
+ opts.extensions = extensions;
2545
+ }
2546
+
2547
+ // ==-- Parse "overwrite" extensions --== //
2548
+ if (pack.renderer) {
2549
+ var renderer = _this2.defaults.renderer || new Renderer(_this2.defaults);
2550
+ var _loop2 = function _loop2(prop) {
2551
+ var prevRenderer = renderer[prop];
2552
+ // Replace renderer with func to run extension, but fall back if false
2553
+ renderer[prop] = function () {
2554
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
2555
+ args[_key3] = arguments[_key3];
2556
+ }
2557
+ var ret = pack.renderer[prop].apply(renderer, args);
2558
+ if (ret === false) {
2559
+ ret = prevRenderer.apply(renderer, args);
2560
+ }
2561
+ return ret;
2562
+ };
2563
+ };
2564
+ for (var prop in pack.renderer) {
2565
+ _loop2(prop);
2566
+ }
2567
+ opts.renderer = renderer;
2568
+ }
2569
+ if (pack.tokenizer) {
2570
+ var tokenizer = _this2.defaults.tokenizer || new Tokenizer(_this2.defaults);
2571
+ var _loop3 = function _loop3(_prop) {
2572
+ var prevTokenizer = tokenizer[_prop];
2573
+ // Replace tokenizer with func to run extension, but fall back if false
2574
+ tokenizer[_prop] = function () {
2575
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
2576
+ args[_key4] = arguments[_key4];
2577
+ }
2578
+ var ret = pack.tokenizer[_prop].apply(tokenizer, args);
2579
+ if (ret === false) {
2580
+ ret = prevTokenizer.apply(tokenizer, args);
2581
+ }
2582
+ return ret;
2583
+ };
2584
+ };
2585
+ for (var _prop in pack.tokenizer) {
2586
+ _loop3(_prop);
2587
+ }
2588
+ opts.tokenizer = tokenizer;
2589
+ }
2590
+
2591
+ // ==-- Parse Hooks extensions --== //
2592
+ if (pack.hooks) {
2593
+ var hooks = _this2.defaults.hooks || new Hooks();
2594
+ var _loop4 = function _loop4(_prop2) {
2595
+ var prevHook = hooks[_prop2];
2596
+ if (Hooks.passThroughHooks.has(_prop2)) {
2597
+ hooks[_prop2] = function (arg) {
2598
+ if (_this2.defaults.async) {
2599
+ return Promise.resolve(pack.hooks[_prop2].call(hooks, arg)).then(function (ret) {
2600
+ return prevHook.call(hooks, ret);
2601
+ });
2602
+ }
2603
+ var ret = pack.hooks[_prop2].call(hooks, arg);
2604
+ return prevHook.call(hooks, ret);
2605
+ };
2606
+ } else {
2607
+ hooks[_prop2] = function () {
2608
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
2609
+ args[_key5] = arguments[_key5];
2610
+ }
2611
+ var ret = pack.hooks[_prop2].apply(hooks, args);
2612
+ if (ret === false) {
2613
+ ret = prevHook.apply(hooks, args);
2614
+ }
2615
+ return ret;
2616
+ };
2617
+ }
2618
+ };
2619
+ for (var _prop2 in pack.hooks) {
2620
+ _loop4(_prop2);
2621
+ }
2622
+ opts.hooks = hooks;
2623
+ }
2624
+
2625
+ // ==-- Parse WalkTokens extensions --== //
2626
+ if (pack.walkTokens) {
2627
+ var walkTokens = _this2.defaults.walkTokens;
2628
+ opts.walkTokens = function (token) {
2629
+ var values = [];
2630
+ values.push(pack.walkTokens.call(this, token));
2631
+ if (walkTokens) {
2632
+ values = values.concat(walkTokens.call(this, token));
2633
+ }
2634
+ return values;
2635
+ };
2636
+ }
2637
+ _this2.defaults = _extends({}, _this2.defaults, opts);
2638
+ });
2639
+ return this;
2415
2640
  };
2416
- }
2417
- function parseMarkdown(lexer, parser) {
2641
+ _proto.setOptions = function setOptions(opt) {
2642
+ this.defaults = _extends({}, this.defaults, opt);
2643
+ return this;
2644
+ };
2645
+ return Marked;
2646
+ }();
2647
+ function _parseMarkdown2(lexer, parser) {
2648
+ var _this3 = this;
2418
2649
  return function (src, opt, callback) {
2419
2650
  if (typeof opt === 'function') {
2420
2651
  callback = opt;
2421
2652
  opt = null;
2422
2653
  }
2423
2654
  var origOpt = _extends({}, opt);
2424
- opt = _extends({}, marked.defaults, origOpt);
2425
- var throwError = onError(opt.silent, opt.async, callback);
2655
+ opt = _extends({}, _this3.defaults, origOpt);
2656
+ var throwError = _classPrivateFieldLooseBase(_this3, _onError)[_onError](opt.silent, opt.async, callback);
2426
2657
 
2427
2658
  // throw error in case of non string input
2428
2659
  if (typeof src === 'undefined' || src === null) {
@@ -2451,7 +2682,7 @@ function parseMarkdown(lexer, parser) {
2451
2682
  if (!err) {
2452
2683
  try {
2453
2684
  if (opt.walkTokens) {
2454
- marked.walkTokens(tokens, opt.walkTokens);
2685
+ _this3.walkTokens(tokens, opt.walkTokens);
2455
2686
  }
2456
2687
  out = parser(tokens, opt);
2457
2688
  if (opt.hooks) {
@@ -2470,7 +2701,7 @@ function parseMarkdown(lexer, parser) {
2470
2701
  delete opt.highlight;
2471
2702
  if (!tokens.length) return done();
2472
2703
  var pending = 0;
2473
- marked.walkTokens(tokens, function (token) {
2704
+ _this3.walkTokens(tokens, function (token) {
2474
2705
  if (token.type === 'code') {
2475
2706
  pending++;
2476
2707
  setTimeout(function () {
@@ -2499,7 +2730,7 @@ function parseMarkdown(lexer, parser) {
2499
2730
  return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(function (src) {
2500
2731
  return lexer(src, opt);
2501
2732
  }).then(function (tokens) {
2502
- return opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(function () {
2733
+ return opt.walkTokens ? Promise.all(_this3.walkTokens(tokens, opt.walkTokens)).then(function () {
2503
2734
  return tokens;
2504
2735
  }) : tokens;
2505
2736
  }).then(function (tokens) {
@@ -2514,7 +2745,7 @@ function parseMarkdown(lexer, parser) {
2514
2745
  }
2515
2746
  var _tokens = lexer(src, opt);
2516
2747
  if (opt.walkTokens) {
2517
- marked.walkTokens(_tokens, opt.walkTokens);
2748
+ _this3.walkTokens(_tokens, opt.walkTokens);
2518
2749
  }
2519
2750
  var html = parser(_tokens, opt);
2520
2751
  if (opt.hooks) {
@@ -2526,12 +2757,38 @@ function parseMarkdown(lexer, parser) {
2526
2757
  }
2527
2758
  };
2528
2759
  }
2760
+ function _onError2(silent, async, callback) {
2761
+ return function (e) {
2762
+ e.message += '\nPlease report this to https://github.com/markedjs/this.';
2763
+ if (silent) {
2764
+ var msg = '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
2765
+ if (async) {
2766
+ return Promise.resolve(msg);
2767
+ }
2768
+ if (callback) {
2769
+ callback(null, msg);
2770
+ return;
2771
+ }
2772
+ return msg;
2773
+ }
2774
+ if (async) {
2775
+ return Promise.reject(e);
2776
+ }
2777
+ if (callback) {
2778
+ callback(e);
2779
+ return;
2780
+ }
2781
+ throw e;
2782
+ };
2783
+ }
2784
+
2785
+ var markedInstance = new Marked(exports.defaults);
2529
2786
 
2530
2787
  /**
2531
2788
  * Marked
2532
2789
  */
2533
2790
  function marked(src, opt, callback) {
2534
- return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);
2791
+ return markedInstance.parse(src, opt, callback);
2535
2792
  }
2536
2793
 
2537
2794
  /**
@@ -2539,7 +2796,8 @@ function marked(src, opt, callback) {
2539
2796
  */
2540
2797
 
2541
2798
  marked.options = marked.setOptions = function (opt) {
2542
- marked.defaults = _extends({}, marked.defaults, opt);
2799
+ markedInstance.setOptions(opt);
2800
+ marked.defaults = markedInstance.defaults;
2543
2801
  changeDefaults(marked.defaults);
2544
2802
  return marked;
2545
2803
  };
@@ -2551,172 +2809,10 @@ marked.defaults = exports.defaults;
2551
2809
  */
2552
2810
 
2553
2811
  marked.use = function () {
2554
- var extensions = marked.defaults.extensions || {
2555
- renderers: {},
2556
- childTokens: {}
2557
- };
2558
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2559
- args[_key] = arguments[_key];
2560
- }
2561
- args.forEach(function (pack) {
2562
- // copy options to new object
2563
- var opts = _extends({}, pack);
2564
-
2565
- // set async to true if it was set to true before
2566
- opts.async = marked.defaults.async || opts.async || false;
2567
-
2568
- // ==-- Parse "addon" extensions --== //
2569
- if (pack.extensions) {
2570
- pack.extensions.forEach(function (ext) {
2571
- if (!ext.name) {
2572
- throw new Error('extension name required');
2573
- }
2574
- if (ext.renderer) {
2575
- // Renderer extensions
2576
- var prevRenderer = extensions.renderers[ext.name];
2577
- if (prevRenderer) {
2578
- // Replace extension with func to run new extension but fall back if false
2579
- extensions.renderers[ext.name] = function () {
2580
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
2581
- args[_key2] = arguments[_key2];
2582
- }
2583
- var ret = ext.renderer.apply(this, args);
2584
- if (ret === false) {
2585
- ret = prevRenderer.apply(this, args);
2586
- }
2587
- return ret;
2588
- };
2589
- } else {
2590
- extensions.renderers[ext.name] = ext.renderer;
2591
- }
2592
- }
2593
- if (ext.tokenizer) {
2594
- // Tokenizer Extensions
2595
- if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {
2596
- throw new Error("extension level must be 'block' or 'inline'");
2597
- }
2598
- if (extensions[ext.level]) {
2599
- extensions[ext.level].unshift(ext.tokenizer);
2600
- } else {
2601
- extensions[ext.level] = [ext.tokenizer];
2602
- }
2603
- if (ext.start) {
2604
- // Function to check for start of token
2605
- if (ext.level === 'block') {
2606
- if (extensions.startBlock) {
2607
- extensions.startBlock.push(ext.start);
2608
- } else {
2609
- extensions.startBlock = [ext.start];
2610
- }
2611
- } else if (ext.level === 'inline') {
2612
- if (extensions.startInline) {
2613
- extensions.startInline.push(ext.start);
2614
- } else {
2615
- extensions.startInline = [ext.start];
2616
- }
2617
- }
2618
- }
2619
- }
2620
- if (ext.childTokens) {
2621
- // Child tokens to be visited by walkTokens
2622
- extensions.childTokens[ext.name] = ext.childTokens;
2623
- }
2624
- });
2625
- opts.extensions = extensions;
2626
- }
2627
-
2628
- // ==-- Parse "overwrite" extensions --== //
2629
- if (pack.renderer) {
2630
- var renderer = marked.defaults.renderer || new Renderer();
2631
- var _loop = function _loop(prop) {
2632
- var prevRenderer = renderer[prop];
2633
- // Replace renderer with func to run extension, but fall back if false
2634
- renderer[prop] = function () {
2635
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
2636
- args[_key3] = arguments[_key3];
2637
- }
2638
- var ret = pack.renderer[prop].apply(renderer, args);
2639
- if (ret === false) {
2640
- ret = prevRenderer.apply(renderer, args);
2641
- }
2642
- return ret;
2643
- };
2644
- };
2645
- for (var prop in pack.renderer) {
2646
- _loop(prop);
2647
- }
2648
- opts.renderer = renderer;
2649
- }
2650
- if (pack.tokenizer) {
2651
- var tokenizer = marked.defaults.tokenizer || new Tokenizer();
2652
- var _loop2 = function _loop2(_prop) {
2653
- var prevTokenizer = tokenizer[_prop];
2654
- // Replace tokenizer with func to run extension, but fall back if false
2655
- tokenizer[_prop] = function () {
2656
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
2657
- args[_key4] = arguments[_key4];
2658
- }
2659
- var ret = pack.tokenizer[_prop].apply(tokenizer, args);
2660
- if (ret === false) {
2661
- ret = prevTokenizer.apply(tokenizer, args);
2662
- }
2663
- return ret;
2664
- };
2665
- };
2666
- for (var _prop in pack.tokenizer) {
2667
- _loop2(_prop);
2668
- }
2669
- opts.tokenizer = tokenizer;
2670
- }
2671
-
2672
- // ==-- Parse Hooks extensions --== //
2673
- if (pack.hooks) {
2674
- var hooks = marked.defaults.hooks || new Hooks();
2675
- var _loop3 = function _loop3(_prop2) {
2676
- var prevHook = hooks[_prop2];
2677
- if (Hooks.passThroughHooks.has(_prop2)) {
2678
- hooks[_prop2] = function (arg) {
2679
- if (marked.defaults.async) {
2680
- return Promise.resolve(pack.hooks[_prop2].call(hooks, arg)).then(function (ret) {
2681
- return prevHook.call(hooks, ret);
2682
- });
2683
- }
2684
- var ret = pack.hooks[_prop2].call(hooks, arg);
2685
- return prevHook.call(hooks, ret);
2686
- };
2687
- } else {
2688
- hooks[_prop2] = function () {
2689
- for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
2690
- args[_key5] = arguments[_key5];
2691
- }
2692
- var ret = pack.hooks[_prop2].apply(hooks, args);
2693
- if (ret === false) {
2694
- ret = prevHook.apply(hooks, args);
2695
- }
2696
- return ret;
2697
- };
2698
- }
2699
- };
2700
- for (var _prop2 in pack.hooks) {
2701
- _loop3(_prop2);
2702
- }
2703
- opts.hooks = hooks;
2704
- }
2705
-
2706
- // ==-- Parse WalkTokens extensions --== //
2707
- if (pack.walkTokens) {
2708
- var _walkTokens = marked.defaults.walkTokens;
2709
- opts.walkTokens = function (token) {
2710
- var values = [];
2711
- values.push(pack.walkTokens.call(this, token));
2712
- if (_walkTokens) {
2713
- values = values.concat(_walkTokens.call(this, token));
2714
- }
2715
- return values;
2716
- };
2717
- }
2718
- marked.setOptions(opts);
2719
- });
2812
+ markedInstance.use.apply(markedInstance, arguments);
2813
+ marked.defaults = markedInstance.defaults;
2814
+ changeDefaults(marked.defaults);
2815
+ return marked;
2720
2816
  };
2721
2817
 
2722
2818
  /**
@@ -2724,55 +2820,14 @@ marked.use = function () {
2724
2820
  */
2725
2821
 
2726
2822
  marked.walkTokens = function (tokens, callback) {
2727
- var values = [];
2728
- var _loop4 = function _loop4() {
2729
- var token = _step.value;
2730
- values = values.concat(callback.call(marked, token));
2731
- switch (token.type) {
2732
- case 'table':
2733
- {
2734
- for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {
2735
- var cell = _step2.value;
2736
- values = values.concat(marked.walkTokens(cell.tokens, callback));
2737
- }
2738
- for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {
2739
- var row = _step3.value;
2740
- for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {
2741
- var _cell = _step4.value;
2742
- values = values.concat(marked.walkTokens(_cell.tokens, callback));
2743
- }
2744
- }
2745
- break;
2746
- }
2747
- case 'list':
2748
- {
2749
- values = values.concat(marked.walkTokens(token.items, callback));
2750
- break;
2751
- }
2752
- default:
2753
- {
2754
- if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {
2755
- // Walk any extensions
2756
- marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {
2757
- values = values.concat(marked.walkTokens(token[childTokens], callback));
2758
- });
2759
- } else if (token.tokens) {
2760
- values = values.concat(marked.walkTokens(token.tokens, callback));
2761
- }
2762
- }
2763
- }
2764
- };
2765
- for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
2766
- _loop4();
2767
- }
2768
- return values;
2823
+ return markedInstance.walkTokens(tokens, callback);
2769
2824
  };
2770
2825
 
2771
2826
  /**
2772
2827
  * Parse Inline
2773
2828
  * @param {string} src
2774
2829
  */
2775
- marked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);
2830
+ marked.parseInline = markedInstance.parseInline;
2776
2831
 
2777
2832
  /**
2778
2833
  * Expose
@@ -2798,6 +2853,7 @@ var lexer = Lexer.lex;
2798
2853
 
2799
2854
  exports.Hooks = Hooks;
2800
2855
  exports.Lexer = Lexer;
2856
+ exports.Marked = Marked;
2801
2857
  exports.Parser = Parser;
2802
2858
  exports.Renderer = Renderer;
2803
2859
  exports.Slugger = Slugger;