marked 5.0.5 → 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.5 - 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,
@@ -1201,35 +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
- inline.escapedPunct = /\\[punct_*]/g;
1234
+ inline.anyPunctuation = /\\[punct]/g;
1235
+ inline._escapes = /\\([punct])/g;
1227
1236
  inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();
1228
- inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();
1229
- inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();
1230
- inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();
1231
- inline.escapedPunct = edit(inline.escapedPunct, 'g').replace(/punct/g, inline._punctuation).getRegex();
1232
- 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();
1233
1242
  inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
1234
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])?)+(?![-_])/;
1235
1244
  inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();
@@ -1642,8 +1651,8 @@ var Lexer = /*#__PURE__*/function () {
1642
1651
  }
1643
1652
 
1644
1653
  // Mask out escaped characters
1645
- while ((match = this.tokenizer.rules.inline.escapedPunct.exec(maskedSrc)) != null) {
1646
- maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedPunct.lastIndex);
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);
1647
1656
  }
1648
1657
  var _loop2 = function _loop2() {
1649
1658
  if (!keepPrevChar) {
@@ -2388,39 +2397,263 @@ var Hooks = /*#__PURE__*/function () {
2388
2397
  }();
2389
2398
  Hooks.passThroughHooks = new Set(['preprocess', 'postprocess']);
2390
2399
 
2391
- function onError(silent, async, callback) {
2392
- return function (e) {
2393
- e.message += '\nPlease report this to https://github.com/markedjs/marked.';
2394
- if (silent) {
2395
- var msg = '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
2396
- if (async) {
2397
- return Promise.resolve(msg);
2398
- }
2399
- if (callback) {
2400
- callback(null, msg);
2401
- 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
+ }
2402
2464
  }
2403
- return msg;
2404
- }
2405
- if (async) {
2406
- return Promise.reject(e);
2465
+ };
2466
+ for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
2467
+ _loop();
2407
2468
  }
2408
- if (callback) {
2409
- callback(e);
2410
- 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];
2411
2479
  }
2412
- 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;
2413
2640
  };
2414
- }
2415
- 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;
2416
2649
  return function (src, opt, callback) {
2417
2650
  if (typeof opt === 'function') {
2418
2651
  callback = opt;
2419
2652
  opt = null;
2420
2653
  }
2421
2654
  var origOpt = _extends({}, opt);
2422
- opt = _extends({}, marked.defaults, origOpt);
2423
- 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);
2424
2657
 
2425
2658
  // throw error in case of non string input
2426
2659
  if (typeof src === 'undefined' || src === null) {
@@ -2449,7 +2682,7 @@ function parseMarkdown(lexer, parser) {
2449
2682
  if (!err) {
2450
2683
  try {
2451
2684
  if (opt.walkTokens) {
2452
- marked.walkTokens(tokens, opt.walkTokens);
2685
+ _this3.walkTokens(tokens, opt.walkTokens);
2453
2686
  }
2454
2687
  out = parser(tokens, opt);
2455
2688
  if (opt.hooks) {
@@ -2468,7 +2701,7 @@ function parseMarkdown(lexer, parser) {
2468
2701
  delete opt.highlight;
2469
2702
  if (!tokens.length) return done();
2470
2703
  var pending = 0;
2471
- marked.walkTokens(tokens, function (token) {
2704
+ _this3.walkTokens(tokens, function (token) {
2472
2705
  if (token.type === 'code') {
2473
2706
  pending++;
2474
2707
  setTimeout(function () {
@@ -2497,7 +2730,7 @@ function parseMarkdown(lexer, parser) {
2497
2730
  return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(function (src) {
2498
2731
  return lexer(src, opt);
2499
2732
  }).then(function (tokens) {
2500
- 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 () {
2501
2734
  return tokens;
2502
2735
  }) : tokens;
2503
2736
  }).then(function (tokens) {
@@ -2512,7 +2745,7 @@ function parseMarkdown(lexer, parser) {
2512
2745
  }
2513
2746
  var _tokens = lexer(src, opt);
2514
2747
  if (opt.walkTokens) {
2515
- marked.walkTokens(_tokens, opt.walkTokens);
2748
+ _this3.walkTokens(_tokens, opt.walkTokens);
2516
2749
  }
2517
2750
  var html = parser(_tokens, opt);
2518
2751
  if (opt.hooks) {
@@ -2524,12 +2757,38 @@ function parseMarkdown(lexer, parser) {
2524
2757
  }
2525
2758
  };
2526
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);
2527
2786
 
2528
2787
  /**
2529
2788
  * Marked
2530
2789
  */
2531
2790
  function marked(src, opt, callback) {
2532
- return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);
2791
+ return markedInstance.parse(src, opt, callback);
2533
2792
  }
2534
2793
 
2535
2794
  /**
@@ -2537,7 +2796,8 @@ function marked(src, opt, callback) {
2537
2796
  */
2538
2797
 
2539
2798
  marked.options = marked.setOptions = function (opt) {
2540
- marked.defaults = _extends({}, marked.defaults, opt);
2799
+ markedInstance.setOptions(opt);
2800
+ marked.defaults = markedInstance.defaults;
2541
2801
  changeDefaults(marked.defaults);
2542
2802
  return marked;
2543
2803
  };
@@ -2549,172 +2809,10 @@ marked.defaults = exports.defaults;
2549
2809
  */
2550
2810
 
2551
2811
  marked.use = function () {
2552
- var extensions = marked.defaults.extensions || {
2553
- renderers: {},
2554
- childTokens: {}
2555
- };
2556
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2557
- args[_key] = arguments[_key];
2558
- }
2559
- args.forEach(function (pack) {
2560
- // copy options to new object
2561
- var opts = _extends({}, pack);
2562
-
2563
- // set async to true if it was set to true before
2564
- opts.async = marked.defaults.async || opts.async || false;
2565
-
2566
- // ==-- Parse "addon" extensions --== //
2567
- if (pack.extensions) {
2568
- pack.extensions.forEach(function (ext) {
2569
- if (!ext.name) {
2570
- throw new Error('extension name required');
2571
- }
2572
- if (ext.renderer) {
2573
- // Renderer extensions
2574
- var prevRenderer = extensions.renderers[ext.name];
2575
- if (prevRenderer) {
2576
- // Replace extension with func to run new extension but fall back if false
2577
- extensions.renderers[ext.name] = function () {
2578
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
2579
- args[_key2] = arguments[_key2];
2580
- }
2581
- var ret = ext.renderer.apply(this, args);
2582
- if (ret === false) {
2583
- ret = prevRenderer.apply(this, args);
2584
- }
2585
- return ret;
2586
- };
2587
- } else {
2588
- extensions.renderers[ext.name] = ext.renderer;
2589
- }
2590
- }
2591
- if (ext.tokenizer) {
2592
- // Tokenizer Extensions
2593
- if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {
2594
- throw new Error("extension level must be 'block' or 'inline'");
2595
- }
2596
- if (extensions[ext.level]) {
2597
- extensions[ext.level].unshift(ext.tokenizer);
2598
- } else {
2599
- extensions[ext.level] = [ext.tokenizer];
2600
- }
2601
- if (ext.start) {
2602
- // Function to check for start of token
2603
- if (ext.level === 'block') {
2604
- if (extensions.startBlock) {
2605
- extensions.startBlock.push(ext.start);
2606
- } else {
2607
- extensions.startBlock = [ext.start];
2608
- }
2609
- } else if (ext.level === 'inline') {
2610
- if (extensions.startInline) {
2611
- extensions.startInline.push(ext.start);
2612
- } else {
2613
- extensions.startInline = [ext.start];
2614
- }
2615
- }
2616
- }
2617
- }
2618
- if (ext.childTokens) {
2619
- // Child tokens to be visited by walkTokens
2620
- extensions.childTokens[ext.name] = ext.childTokens;
2621
- }
2622
- });
2623
- opts.extensions = extensions;
2624
- }
2625
-
2626
- // ==-- Parse "overwrite" extensions --== //
2627
- if (pack.renderer) {
2628
- var renderer = marked.defaults.renderer || new Renderer();
2629
- var _loop = function _loop(prop) {
2630
- var prevRenderer = renderer[prop];
2631
- // Replace renderer with func to run extension, but fall back if false
2632
- renderer[prop] = function () {
2633
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
2634
- args[_key3] = arguments[_key3];
2635
- }
2636
- var ret = pack.renderer[prop].apply(renderer, args);
2637
- if (ret === false) {
2638
- ret = prevRenderer.apply(renderer, args);
2639
- }
2640
- return ret;
2641
- };
2642
- };
2643
- for (var prop in pack.renderer) {
2644
- _loop(prop);
2645
- }
2646
- opts.renderer = renderer;
2647
- }
2648
- if (pack.tokenizer) {
2649
- var tokenizer = marked.defaults.tokenizer || new Tokenizer();
2650
- var _loop2 = function _loop2(_prop) {
2651
- var prevTokenizer = tokenizer[_prop];
2652
- // Replace tokenizer with func to run extension, but fall back if false
2653
- tokenizer[_prop] = function () {
2654
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
2655
- args[_key4] = arguments[_key4];
2656
- }
2657
- var ret = pack.tokenizer[_prop].apply(tokenizer, args);
2658
- if (ret === false) {
2659
- ret = prevTokenizer.apply(tokenizer, args);
2660
- }
2661
- return ret;
2662
- };
2663
- };
2664
- for (var _prop in pack.tokenizer) {
2665
- _loop2(_prop);
2666
- }
2667
- opts.tokenizer = tokenizer;
2668
- }
2669
-
2670
- // ==-- Parse Hooks extensions --== //
2671
- if (pack.hooks) {
2672
- var hooks = marked.defaults.hooks || new Hooks();
2673
- var _loop3 = function _loop3(_prop2) {
2674
- var prevHook = hooks[_prop2];
2675
- if (Hooks.passThroughHooks.has(_prop2)) {
2676
- hooks[_prop2] = function (arg) {
2677
- if (marked.defaults.async) {
2678
- return Promise.resolve(pack.hooks[_prop2].call(hooks, arg)).then(function (ret) {
2679
- return prevHook.call(hooks, ret);
2680
- });
2681
- }
2682
- var ret = pack.hooks[_prop2].call(hooks, arg);
2683
- return prevHook.call(hooks, ret);
2684
- };
2685
- } else {
2686
- hooks[_prop2] = function () {
2687
- for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
2688
- args[_key5] = arguments[_key5];
2689
- }
2690
- var ret = pack.hooks[_prop2].apply(hooks, args);
2691
- if (ret === false) {
2692
- ret = prevHook.apply(hooks, args);
2693
- }
2694
- return ret;
2695
- };
2696
- }
2697
- };
2698
- for (var _prop2 in pack.hooks) {
2699
- _loop3(_prop2);
2700
- }
2701
- opts.hooks = hooks;
2702
- }
2703
-
2704
- // ==-- Parse WalkTokens extensions --== //
2705
- if (pack.walkTokens) {
2706
- var _walkTokens = marked.defaults.walkTokens;
2707
- opts.walkTokens = function (token) {
2708
- var values = [];
2709
- values.push(pack.walkTokens.call(this, token));
2710
- if (_walkTokens) {
2711
- values = values.concat(_walkTokens.call(this, token));
2712
- }
2713
- return values;
2714
- };
2715
- }
2716
- marked.setOptions(opts);
2717
- });
2812
+ markedInstance.use.apply(markedInstance, arguments);
2813
+ marked.defaults = markedInstance.defaults;
2814
+ changeDefaults(marked.defaults);
2815
+ return marked;
2718
2816
  };
2719
2817
 
2720
2818
  /**
@@ -2722,55 +2820,14 @@ marked.use = function () {
2722
2820
  */
2723
2821
 
2724
2822
  marked.walkTokens = function (tokens, callback) {
2725
- var values = [];
2726
- var _loop4 = function _loop4() {
2727
- var token = _step.value;
2728
- values = values.concat(callback.call(marked, token));
2729
- switch (token.type) {
2730
- case 'table':
2731
- {
2732
- for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {
2733
- var cell = _step2.value;
2734
- values = values.concat(marked.walkTokens(cell.tokens, callback));
2735
- }
2736
- for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {
2737
- var row = _step3.value;
2738
- for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {
2739
- var _cell = _step4.value;
2740
- values = values.concat(marked.walkTokens(_cell.tokens, callback));
2741
- }
2742
- }
2743
- break;
2744
- }
2745
- case 'list':
2746
- {
2747
- values = values.concat(marked.walkTokens(token.items, callback));
2748
- break;
2749
- }
2750
- default:
2751
- {
2752
- if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {
2753
- // Walk any extensions
2754
- marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {
2755
- values = values.concat(marked.walkTokens(token[childTokens], callback));
2756
- });
2757
- } else if (token.tokens) {
2758
- values = values.concat(marked.walkTokens(token.tokens, callback));
2759
- }
2760
- }
2761
- }
2762
- };
2763
- for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
2764
- _loop4();
2765
- }
2766
- return values;
2823
+ return markedInstance.walkTokens(tokens, callback);
2767
2824
  };
2768
2825
 
2769
2826
  /**
2770
2827
  * Parse Inline
2771
2828
  * @param {string} src
2772
2829
  */
2773
- marked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);
2830
+ marked.parseInline = markedInstance.parseInline;
2774
2831
 
2775
2832
  /**
2776
2833
  * Expose
@@ -2796,6 +2853,7 @@ var lexer = Lexer.lex;
2796
2853
 
2797
2854
  exports.Hooks = Hooks;
2798
2855
  exports.Lexer = Lexer;
2856
+ exports.Marked = Marked;
2799
2857
  exports.Parser = Parser;
2800
2858
  exports.Renderer = Renderer;
2801
2859
  exports.Slugger = Slugger;