marked 4.2.12 → 5.0.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 v4.2.12 - a markdown parser
2
+ * marked v5.0.0 - a markdown parser
3
3
  * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)
4
4
  * https://github.com/markedjs/marked
5
5
  */
@@ -28,6 +28,20 @@ function _createClass(Constructor, protoProps, staticProps) {
28
28
  });
29
29
  return Constructor;
30
30
  }
31
+ function _extends() {
32
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
33
+ for (var i = 1; i < arguments.length; i++) {
34
+ var source = arguments[i];
35
+ for (var key in source) {
36
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
37
+ target[key] = source[key];
38
+ }
39
+ }
40
+ }
41
+ return target;
42
+ };
43
+ return _extends.apply(this, arguments);
44
+ }
31
45
  function _unsupportedIterableToArray(o, minLen) {
32
46
  if (!o) return;
33
47
  if (typeof o === "string") return _arrayLikeToArray(o, minLen);
@@ -84,6 +98,7 @@ function getDefaults() {
84
98
  headerIds: true,
85
99
  headerPrefix: '',
86
100
  highlight: null,
101
+ hooks: null,
87
102
  langPrefix: 'language-',
88
103
  mangle: true,
89
104
  pedantic: false,
@@ -238,29 +253,13 @@ function resolveUrl(base, href) {
238
253
  var noopTest = {
239
254
  exec: function noopTest() {}
240
255
  };
241
- function merge(obj) {
242
- var i = 1,
243
- target,
244
- key;
245
- for (; i < arguments.length; i++) {
246
- target = arguments[i];
247
- for (key in target) {
248
- if (Object.prototype.hasOwnProperty.call(target, key)) {
249
- obj[key] = target[key];
250
- }
251
- }
252
- }
253
- return obj;
254
- }
255
256
  function splitCells(tableRow, count) {
256
257
  // ensure that every cell-delimiting pipe has a space
257
258
  // before it to distinguish it from an escaped pipe
258
259
  var row = tableRow.replace(/\|/g, function (match, offset, str) {
259
260
  var escaped = false,
260
261
  curr = offset;
261
- while (--curr >= 0 && str[curr] === '\\') {
262
- escaped = !escaped;
263
- }
262
+ while (--curr >= 0 && str[curr] === '\\') escaped = !escaped;
264
263
  if (escaped) {
265
264
  // odd number of slashes means | is escaped
266
265
  // so we leave it alone
@@ -283,9 +282,7 @@ function splitCells(tableRow, count) {
283
282
  if (cells.length > count) {
284
283
  cells.splice(count);
285
284
  } else {
286
- while (cells.length < count) {
287
- cells.push('');
288
- }
285
+ while (cells.length < count) cells.push('');
289
286
  }
290
287
  for (; i < cells.length; i++) {
291
288
  // leading or trailing whitespace is ignored per the gfm spec
@@ -345,10 +342,34 @@ function findClosingBracket(str, b) {
345
342
  }
346
343
  return -1;
347
344
  }
348
- function checkSanitizeDeprecation(opt) {
349
- if (opt && opt.sanitize && !opt.silent) {
345
+ function checkDeprecations(opt, callback) {
346
+ if (!opt || opt.silent) {
347
+ return;
348
+ }
349
+ if (callback) {
350
+ console.warn('marked(): callback is deprecated since version 5.0.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/using_pro#async');
351
+ }
352
+ if (opt.sanitize || opt.sanitizer) {
350
353
  console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');
351
354
  }
355
+ if (opt.highlight || opt.langPrefix) {
356
+ console.warn('marked(): highlight and langPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-highlight.');
357
+ }
358
+ if (opt.mangle) {
359
+ console.warn('marked(): mangle parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-mangle.');
360
+ }
361
+ if (opt.baseUrl) {
362
+ console.warn('marked(): baseUrl parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-base-url.');
363
+ }
364
+ if (opt.smartypants) {
365
+ console.warn('marked(): smartypants parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-smartypants.');
366
+ }
367
+ if (opt.xhtml) {
368
+ console.warn('marked(): xhtml parameter is deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-xhtml.');
369
+ }
370
+ if (opt.headerIds || opt.headerPrefix) {
371
+ console.warn('marked(): headerIds and headerPrefix parameters are deprecated since version 5.0.0, should not be used and will be removed in the future. Instead use https://www.npmjs.com/package/marked-gfm-heading-id.');
372
+ }
352
373
  }
353
374
 
354
375
  // copied from https://stackoverflow.com/a/5450113/806777
@@ -693,6 +714,7 @@ var Tokenizer = /*#__PURE__*/function () {
693
714
  if (cap) {
694
715
  var token = {
695
716
  type: 'html',
717
+ block: true,
696
718
  raw: cap[0],
697
719
  pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
698
720
  text: cap[0]
@@ -841,6 +863,7 @@ var Tokenizer = /*#__PURE__*/function () {
841
863
  raw: cap[0],
842
864
  inLink: this.lexer.state.inLink,
843
865
  inRawBlock: this.lexer.state.inRawBlock,
866
+ block: false,
844
867
  text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]
845
868
  };
846
869
  }
@@ -922,7 +945,7 @@ var Tokenizer = /*#__PURE__*/function () {
922
945
  if (!match) return;
923
946
 
924
947
  // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
925
- 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\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\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][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\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\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\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]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\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-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/)) return;
948
+ 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;
926
949
  var nextChar = match[1] || match[2] || '';
927
950
  if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {
928
951
  var lLength = match[0].length - 1;
@@ -1101,7 +1124,7 @@ var Tokenizer = /*#__PURE__*/function () {
1101
1124
  var block = {
1102
1125
  newline: /^(?: *(?:\n|$))+/,
1103
1126
  code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,
1104
- fences: /^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?=\n|$)|$)/,
1127
+ fences: /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,
1105
1128
  hr: /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,
1106
1129
  heading: /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,
1107
1130
  blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
@@ -1143,13 +1166,13 @@ block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).
1143
1166
  * Normal Block Grammar
1144
1167
  */
1145
1168
 
1146
- block.normal = merge({}, block);
1169
+ block.normal = _extends({}, block);
1147
1170
 
1148
1171
  /**
1149
1172
  * GFM Block Grammar
1150
1173
  */
1151
1174
 
1152
- block.gfm = merge({}, block.normal, {
1175
+ block.gfm = _extends({}, block.normal, {
1153
1176
  table: '^ *([^\\n ].*\\|.*)\\n' // Header
1154
1177
  + ' {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?' // Align
1155
1178
  + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)' // Cells
@@ -1167,7 +1190,7 @@ block.gfm.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('he
1167
1190
  * Pedantic grammar (original John Gruber's loose markdown specification)
1168
1191
  */
1169
1192
 
1170
- block.pedantic = merge({}, block.normal, {
1193
+ block.pedantic = _extends({}, block.normal, {
1171
1194
  html: edit('^ *(?:comment *(?:\\n|\\s*$)' + '|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)' // closed tag
1172
1195
  + '|<tag(?:"[^"]*"|\'[^\']*\'|\\s[^\'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b').getRegex(),
1173
1196
  def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
@@ -1242,13 +1265,13 @@ inline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline
1242
1265
  * Normal Inline Grammar
1243
1266
  */
1244
1267
 
1245
- inline.normal = merge({}, inline);
1268
+ inline.normal = _extends({}, inline);
1246
1269
 
1247
1270
  /**
1248
1271
  * Pedantic Inline Grammar
1249
1272
  */
1250
1273
 
1251
- inline.pedantic = merge({}, inline.normal, {
1274
+ inline.pedantic = _extends({}, inline.normal, {
1252
1275
  strong: {
1253
1276
  start: /^__|\*\*/,
1254
1277
  middle: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
@@ -1269,7 +1292,7 @@ inline.pedantic = merge({}, inline.normal, {
1269
1292
  * GFM Inline Grammar
1270
1293
  */
1271
1294
 
1272
- inline.gfm = merge({}, inline.normal, {
1295
+ inline.gfm = _extends({}, inline.normal, {
1273
1296
  escape: edit(inline.escape).replace('])', '~|])').getRegex(),
1274
1297
  _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,
1275
1298
  url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
@@ -1282,7 +1305,7 @@ inline.gfm.url = edit(inline.gfm.url, 'i').replace('email', inline.gfm._extended
1282
1305
  * GFM + Line Breaks Inline Grammar
1283
1306
  */
1284
1307
 
1285
- inline.breaks = merge({}, inline.gfm, {
1308
+ inline.breaks = _extends({}, inline.gfm, {
1286
1309
  br: edit(inline.br).replace('{2,}', '*').getRegex(),
1287
1310
  text: edit(inline.gfm.text).replace('\\b_', '\\b_| {2,}\\n').replace(/\{2,\}/g, '*').getRegex()
1288
1311
  });
@@ -1413,8 +1436,8 @@ var Lexer = /*#__PURE__*/function () {
1413
1436
  });
1414
1437
  }
1415
1438
  var token, lastToken, cutSrc, lastParagraphClipped;
1416
- while (src) {
1417
- if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {
1439
+ var _loop = function _loop() {
1440
+ if (_this.options.extensions && _this.options.extensions.block && _this.options.extensions.block.some(function (extTokenizer) {
1418
1441
  if (token = extTokenizer.call({
1419
1442
  lexer: _this
1420
1443
  }, src, tokens)) {
@@ -1424,11 +1447,11 @@ var Lexer = /*#__PURE__*/function () {
1424
1447
  }
1425
1448
  return false;
1426
1449
  })) {
1427
- continue;
1450
+ return "continue";
1428
1451
  }
1429
1452
 
1430
1453
  // newline
1431
- if (token = this.tokenizer.space(src)) {
1454
+ if (token = _this.tokenizer.space(src)) {
1432
1455
  src = src.substring(token.raw.length);
1433
1456
  if (token.raw.length === 1 && tokens.length > 0) {
1434
1457
  // if there's a single \n as a spacer, it's terminating the last line,
@@ -1437,156 +1460,159 @@ var Lexer = /*#__PURE__*/function () {
1437
1460
  } else {
1438
1461
  tokens.push(token);
1439
1462
  }
1440
- continue;
1463
+ return "continue";
1441
1464
  }
1442
1465
 
1443
1466
  // code
1444
- if (token = this.tokenizer.code(src)) {
1467
+ if (token = _this.tokenizer.code(src)) {
1445
1468
  src = src.substring(token.raw.length);
1446
1469
  lastToken = tokens[tokens.length - 1];
1447
1470
  // An indented code block cannot interrupt a paragraph.
1448
1471
  if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
1449
1472
  lastToken.raw += '\n' + token.raw;
1450
1473
  lastToken.text += '\n' + token.text;
1451
- this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
1474
+ _this.inlineQueue[_this.inlineQueue.length - 1].src = lastToken.text;
1452
1475
  } else {
1453
1476
  tokens.push(token);
1454
1477
  }
1455
- continue;
1478
+ return "continue";
1456
1479
  }
1457
1480
 
1458
1481
  // fences
1459
- if (token = this.tokenizer.fences(src)) {
1482
+ if (token = _this.tokenizer.fences(src)) {
1460
1483
  src = src.substring(token.raw.length);
1461
1484
  tokens.push(token);
1462
- continue;
1485
+ return "continue";
1463
1486
  }
1464
1487
 
1465
1488
  // heading
1466
- if (token = this.tokenizer.heading(src)) {
1489
+ if (token = _this.tokenizer.heading(src)) {
1467
1490
  src = src.substring(token.raw.length);
1468
1491
  tokens.push(token);
1469
- continue;
1492
+ return "continue";
1470
1493
  }
1471
1494
 
1472
1495
  // hr
1473
- if (token = this.tokenizer.hr(src)) {
1496
+ if (token = _this.tokenizer.hr(src)) {
1474
1497
  src = src.substring(token.raw.length);
1475
1498
  tokens.push(token);
1476
- continue;
1499
+ return "continue";
1477
1500
  }
1478
1501
 
1479
1502
  // blockquote
1480
- if (token = this.tokenizer.blockquote(src)) {
1503
+ if (token = _this.tokenizer.blockquote(src)) {
1481
1504
  src = src.substring(token.raw.length);
1482
1505
  tokens.push(token);
1483
- continue;
1506
+ return "continue";
1484
1507
  }
1485
1508
 
1486
1509
  // list
1487
- if (token = this.tokenizer.list(src)) {
1510
+ if (token = _this.tokenizer.list(src)) {
1488
1511
  src = src.substring(token.raw.length);
1489
1512
  tokens.push(token);
1490
- continue;
1513
+ return "continue";
1491
1514
  }
1492
1515
 
1493
1516
  // html
1494
- if (token = this.tokenizer.html(src)) {
1517
+ if (token = _this.tokenizer.html(src)) {
1495
1518
  src = src.substring(token.raw.length);
1496
1519
  tokens.push(token);
1497
- continue;
1520
+ return "continue";
1498
1521
  }
1499
1522
 
1500
1523
  // def
1501
- if (token = this.tokenizer.def(src)) {
1524
+ if (token = _this.tokenizer.def(src)) {
1502
1525
  src = src.substring(token.raw.length);
1503
1526
  lastToken = tokens[tokens.length - 1];
1504
1527
  if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
1505
1528
  lastToken.raw += '\n' + token.raw;
1506
1529
  lastToken.text += '\n' + token.raw;
1507
- this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
1508
- } else if (!this.tokens.links[token.tag]) {
1509
- this.tokens.links[token.tag] = {
1530
+ _this.inlineQueue[_this.inlineQueue.length - 1].src = lastToken.text;
1531
+ } else if (!_this.tokens.links[token.tag]) {
1532
+ _this.tokens.links[token.tag] = {
1510
1533
  href: token.href,
1511
1534
  title: token.title
1512
1535
  };
1513
1536
  }
1514
- continue;
1537
+ return "continue";
1515
1538
  }
1516
1539
 
1517
1540
  // table (gfm)
1518
- if (token = this.tokenizer.table(src)) {
1541
+ if (token = _this.tokenizer.table(src)) {
1519
1542
  src = src.substring(token.raw.length);
1520
1543
  tokens.push(token);
1521
- continue;
1544
+ return "continue";
1522
1545
  }
1523
1546
 
1524
1547
  // lheading
1525
- if (token = this.tokenizer.lheading(src)) {
1548
+ if (token = _this.tokenizer.lheading(src)) {
1526
1549
  src = src.substring(token.raw.length);
1527
1550
  tokens.push(token);
1528
- continue;
1551
+ return "continue";
1529
1552
  }
1530
1553
 
1531
1554
  // top-level paragraph
1532
1555
  // prevent paragraph consuming extensions by clipping 'src' to extension start
1533
1556
  cutSrc = src;
1534
- if (this.options.extensions && this.options.extensions.startBlock) {
1535
- (function () {
1536
- var startIndex = Infinity;
1537
- var tempSrc = src.slice(1);
1538
- var tempStart = void 0;
1539
- _this.options.extensions.startBlock.forEach(function (getStartIndex) {
1540
- tempStart = getStartIndex.call({
1541
- lexer: this
1542
- }, tempSrc);
1543
- if (typeof tempStart === 'number' && tempStart >= 0) {
1544
- startIndex = Math.min(startIndex, tempStart);
1545
- }
1546
- });
1547
- if (startIndex < Infinity && startIndex >= 0) {
1548
- cutSrc = src.substring(0, startIndex + 1);
1557
+ if (_this.options.extensions && _this.options.extensions.startBlock) {
1558
+ var startIndex = Infinity;
1559
+ var tempSrc = src.slice(1);
1560
+ var tempStart;
1561
+ _this.options.extensions.startBlock.forEach(function (getStartIndex) {
1562
+ tempStart = getStartIndex.call({
1563
+ lexer: this
1564
+ }, tempSrc);
1565
+ if (typeof tempStart === 'number' && tempStart >= 0) {
1566
+ startIndex = Math.min(startIndex, tempStart);
1549
1567
  }
1550
- })();
1568
+ });
1569
+ if (startIndex < Infinity && startIndex >= 0) {
1570
+ cutSrc = src.substring(0, startIndex + 1);
1571
+ }
1551
1572
  }
1552
- if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {
1573
+ if (_this.state.top && (token = _this.tokenizer.paragraph(cutSrc))) {
1553
1574
  lastToken = tokens[tokens.length - 1];
1554
1575
  if (lastParagraphClipped && lastToken.type === 'paragraph') {
1555
1576
  lastToken.raw += '\n' + token.raw;
1556
1577
  lastToken.text += '\n' + token.text;
1557
- this.inlineQueue.pop();
1558
- this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
1578
+ _this.inlineQueue.pop();
1579
+ _this.inlineQueue[_this.inlineQueue.length - 1].src = lastToken.text;
1559
1580
  } else {
1560
1581
  tokens.push(token);
1561
1582
  }
1562
1583
  lastParagraphClipped = cutSrc.length !== src.length;
1563
1584
  src = src.substring(token.raw.length);
1564
- continue;
1585
+ return "continue";
1565
1586
  }
1566
1587
 
1567
1588
  // text
1568
- if (token = this.tokenizer.text(src)) {
1589
+ if (token = _this.tokenizer.text(src)) {
1569
1590
  src = src.substring(token.raw.length);
1570
1591
  lastToken = tokens[tokens.length - 1];
1571
1592
  if (lastToken && lastToken.type === 'text') {
1572
1593
  lastToken.raw += '\n' + token.raw;
1573
1594
  lastToken.text += '\n' + token.text;
1574
- this.inlineQueue.pop();
1575
- this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
1595
+ _this.inlineQueue.pop();
1596
+ _this.inlineQueue[_this.inlineQueue.length - 1].src = lastToken.text;
1576
1597
  } else {
1577
1598
  tokens.push(token);
1578
1599
  }
1579
- continue;
1600
+ return "continue";
1580
1601
  }
1581
1602
  if (src) {
1582
1603
  var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
1583
- if (this.options.silent) {
1604
+ if (_this.options.silent) {
1584
1605
  console.error(errMsg);
1585
- break;
1606
+ return "break";
1586
1607
  } else {
1587
1608
  throw new Error(errMsg);
1588
1609
  }
1589
1610
  }
1611
+ };
1612
+ while (src) {
1613
+ var _ret = _loop();
1614
+ if (_ret === "continue") continue;
1615
+ if (_ret === "break") break;
1590
1616
  }
1591
1617
  this.state.top = true;
1592
1618
  return tokens;
@@ -1638,14 +1664,14 @@ var Lexer = /*#__PURE__*/function () {
1638
1664
  maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);
1639
1665
  this.tokenizer.rules.inline.escapedEmSt.lastIndex--;
1640
1666
  }
1641
- while (src) {
1667
+ var _loop2 = function _loop2() {
1642
1668
  if (!keepPrevChar) {
1643
1669
  prevChar = '';
1644
1670
  }
1645
1671
  keepPrevChar = false;
1646
1672
 
1647
1673
  // extensions
1648
- if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {
1674
+ if (_this2.options.extensions && _this2.options.extensions.inline && _this2.options.extensions.inline.some(function (extTokenizer) {
1649
1675
  if (token = extTokenizer.call({
1650
1676
  lexer: _this2
1651
1677
  }, src, tokens)) {
@@ -1655,18 +1681,18 @@ var Lexer = /*#__PURE__*/function () {
1655
1681
  }
1656
1682
  return false;
1657
1683
  })) {
1658
- continue;
1684
+ return "continue";
1659
1685
  }
1660
1686
 
1661
1687
  // escape
1662
- if (token = this.tokenizer.escape(src)) {
1688
+ if (token = _this2.tokenizer.escape(src)) {
1663
1689
  src = src.substring(token.raw.length);
1664
1690
  tokens.push(token);
1665
- continue;
1691
+ return "continue";
1666
1692
  }
1667
1693
 
1668
1694
  // tag
1669
- if (token = this.tokenizer.tag(src)) {
1695
+ if (token = _this2.tokenizer.tag(src)) {
1670
1696
  src = src.substring(token.raw.length);
1671
1697
  lastToken = tokens[tokens.length - 1];
1672
1698
  if (lastToken && token.type === 'text' && lastToken.type === 'text') {
@@ -1675,18 +1701,18 @@ var Lexer = /*#__PURE__*/function () {
1675
1701
  } else {
1676
1702
  tokens.push(token);
1677
1703
  }
1678
- continue;
1704
+ return "continue";
1679
1705
  }
1680
1706
 
1681
1707
  // link
1682
- if (token = this.tokenizer.link(src)) {
1708
+ if (token = _this2.tokenizer.link(src)) {
1683
1709
  src = src.substring(token.raw.length);
1684
1710
  tokens.push(token);
1685
- continue;
1711
+ return "continue";
1686
1712
  }
1687
1713
 
1688
1714
  // reflink, nolink
1689
- if (token = this.tokenizer.reflink(src, this.tokens.links)) {
1715
+ if (token = _this2.tokenizer.reflink(src, _this2.tokens.links)) {
1690
1716
  src = src.substring(token.raw.length);
1691
1717
  lastToken = tokens[tokens.length - 1];
1692
1718
  if (lastToken && token.type === 'text' && lastToken.type === 'text') {
@@ -1695,73 +1721,71 @@ var Lexer = /*#__PURE__*/function () {
1695
1721
  } else {
1696
1722
  tokens.push(token);
1697
1723
  }
1698
- continue;
1724
+ return "continue";
1699
1725
  }
1700
1726
 
1701
1727
  // em & strong
1702
- if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {
1728
+ if (token = _this2.tokenizer.emStrong(src, maskedSrc, prevChar)) {
1703
1729
  src = src.substring(token.raw.length);
1704
1730
  tokens.push(token);
1705
- continue;
1731
+ return "continue";
1706
1732
  }
1707
1733
 
1708
1734
  // code
1709
- if (token = this.tokenizer.codespan(src)) {
1735
+ if (token = _this2.tokenizer.codespan(src)) {
1710
1736
  src = src.substring(token.raw.length);
1711
1737
  tokens.push(token);
1712
- continue;
1738
+ return "continue";
1713
1739
  }
1714
1740
 
1715
1741
  // br
1716
- if (token = this.tokenizer.br(src)) {
1742
+ if (token = _this2.tokenizer.br(src)) {
1717
1743
  src = src.substring(token.raw.length);
1718
1744
  tokens.push(token);
1719
- continue;
1745
+ return "continue";
1720
1746
  }
1721
1747
 
1722
1748
  // del (gfm)
1723
- if (token = this.tokenizer.del(src)) {
1749
+ if (token = _this2.tokenizer.del(src)) {
1724
1750
  src = src.substring(token.raw.length);
1725
1751
  tokens.push(token);
1726
- continue;
1752
+ return "continue";
1727
1753
  }
1728
1754
 
1729
1755
  // autolink
1730
- if (token = this.tokenizer.autolink(src, mangle)) {
1756
+ if (token = _this2.tokenizer.autolink(src, mangle)) {
1731
1757
  src = src.substring(token.raw.length);
1732
1758
  tokens.push(token);
1733
- continue;
1759
+ return "continue";
1734
1760
  }
1735
1761
 
1736
1762
  // url (gfm)
1737
- if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {
1763
+ if (!_this2.state.inLink && (token = _this2.tokenizer.url(src, mangle))) {
1738
1764
  src = src.substring(token.raw.length);
1739
1765
  tokens.push(token);
1740
- continue;
1766
+ return "continue";
1741
1767
  }
1742
1768
 
1743
1769
  // text
1744
1770
  // prevent inlineText consuming extensions by clipping 'src' to extension start
1745
1771
  cutSrc = src;
1746
- if (this.options.extensions && this.options.extensions.startInline) {
1747
- (function () {
1748
- var startIndex = Infinity;
1749
- var tempSrc = src.slice(1);
1750
- var tempStart = void 0;
1751
- _this2.options.extensions.startInline.forEach(function (getStartIndex) {
1752
- tempStart = getStartIndex.call({
1753
- lexer: this
1754
- }, tempSrc);
1755
- if (typeof tempStart === 'number' && tempStart >= 0) {
1756
- startIndex = Math.min(startIndex, tempStart);
1757
- }
1758
- });
1759
- if (startIndex < Infinity && startIndex >= 0) {
1760
- cutSrc = src.substring(0, startIndex + 1);
1772
+ if (_this2.options.extensions && _this2.options.extensions.startInline) {
1773
+ var startIndex = Infinity;
1774
+ var tempSrc = src.slice(1);
1775
+ var tempStart;
1776
+ _this2.options.extensions.startInline.forEach(function (getStartIndex) {
1777
+ tempStart = getStartIndex.call({
1778
+ lexer: this
1779
+ }, tempSrc);
1780
+ if (typeof tempStart === 'number' && tempStart >= 0) {
1781
+ startIndex = Math.min(startIndex, tempStart);
1761
1782
  }
1762
- })();
1783
+ });
1784
+ if (startIndex < Infinity && startIndex >= 0) {
1785
+ cutSrc = src.substring(0, startIndex + 1);
1786
+ }
1763
1787
  }
1764
- if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {
1788
+ if (token = _this2.tokenizer.inlineText(cutSrc, smartypants)) {
1765
1789
  src = src.substring(token.raw.length);
1766
1790
  if (token.raw.slice(-1) !== '_') {
1767
1791
  // Track prevChar before string of ____ started
@@ -1775,17 +1799,22 @@ var Lexer = /*#__PURE__*/function () {
1775
1799
  } else {
1776
1800
  tokens.push(token);
1777
1801
  }
1778
- continue;
1802
+ return "continue";
1779
1803
  }
1780
1804
  if (src) {
1781
1805
  var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
1782
- if (this.options.silent) {
1806
+ if (_this2.options.silent) {
1783
1807
  console.error(errMsg);
1784
- break;
1808
+ return "break";
1785
1809
  } else {
1786
1810
  throw new Error(errMsg);
1787
1811
  }
1788
1812
  }
1813
+ };
1814
+ while (src) {
1815
+ var _ret2 = _loop2();
1816
+ if (_ret2 === "continue") continue;
1817
+ if (_ret2 === "break") break;
1789
1818
  }
1790
1819
  return tokens;
1791
1820
  };
@@ -1831,7 +1860,7 @@ var Renderer = /*#__PURE__*/function () {
1831
1860
  _proto.blockquote = function blockquote(quote) {
1832
1861
  return "<blockquote>\n" + quote + "</blockquote>\n";
1833
1862
  };
1834
- _proto.html = function html(_html) {
1863
+ _proto.html = function html(_html, block) {
1835
1864
  return _html;
1836
1865
  }
1837
1866
 
@@ -2232,8 +2261,7 @@ var Parser = /*#__PURE__*/function () {
2232
2261
  }
2233
2262
  case 'html':
2234
2263
  {
2235
- // TODO parse inline content if parameter markdown=1
2236
- out += this.renderer.html(token.text);
2264
+ out += this.renderer.html(token.text, token.block);
2237
2265
  continue;
2238
2266
  }
2239
2267
  case 'paragraph':
@@ -2357,98 +2385,170 @@ var Parser = /*#__PURE__*/function () {
2357
2385
  return Parser;
2358
2386
  }();
2359
2387
 
2360
- /**
2361
- * Marked
2362
- */
2363
- function marked(src, opt, callback) {
2364
- // throw error in case of non string input
2365
- if (typeof src === 'undefined' || src === null) {
2366
- throw new Error('marked(): input parameter is undefined or null');
2367
- }
2368
- if (typeof src !== 'string') {
2369
- throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');
2388
+ var Hooks = /*#__PURE__*/function () {
2389
+ function Hooks(options) {
2390
+ this.options = options || exports.defaults;
2370
2391
  }
2371
- if (typeof opt === 'function') {
2372
- callback = opt;
2373
- opt = null;
2392
+ var _proto = Hooks.prototype;
2393
+ /**
2394
+ * Process markdown before marked
2395
+ */
2396
+ _proto.preprocess = function preprocess(markdown) {
2397
+ return markdown;
2374
2398
  }
2375
- opt = merge({}, marked.defaults, opt || {});
2376
- checkSanitizeDeprecation(opt);
2377
- if (callback) {
2378
- var highlight = opt.highlight;
2379
- var tokens;
2380
- try {
2381
- tokens = Lexer.lex(src, opt);
2382
- } catch (e) {
2383
- return callback(e);
2384
- }
2385
- var done = function done(err) {
2386
- var out;
2387
- if (!err) {
2388
- try {
2389
- if (opt.walkTokens) {
2390
- marked.walkTokens(tokens, opt.walkTokens);
2391
- }
2392
- out = Parser.parse(tokens, opt);
2393
- } catch (e) {
2394
- err = e;
2399
+
2400
+ /**
2401
+ * Process HTML after marked is finished
2402
+ */;
2403
+ _proto.postprocess = function postprocess(html) {
2404
+ return html;
2405
+ };
2406
+ return Hooks;
2407
+ }();
2408
+ Hooks.passThroughHooks = new Set(['preprocess', 'postprocess']);
2409
+
2410
+ function onError(silent, async, callback) {
2411
+ return function (e) {
2412
+ e.message += '\nPlease report this to https://github.com/markedjs/marked.';
2413
+ if (silent) {
2414
+ var msg = '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
2415
+ if (async) {
2416
+ return Promise.resolve(msg);
2417
+ }
2418
+ if (callback) {
2419
+ callback(null, msg);
2420
+ return;
2421
+ }
2422
+ return msg;
2423
+ }
2424
+ if (async) {
2425
+ return Promise.reject(e);
2426
+ }
2427
+ if (callback) {
2428
+ callback(e);
2429
+ return;
2430
+ }
2431
+ throw e;
2432
+ };
2433
+ }
2434
+ function parseMarkdown(lexer, parser) {
2435
+ return function (src, opt, callback) {
2436
+ if (typeof opt === 'function') {
2437
+ callback = opt;
2438
+ opt = null;
2439
+ }
2440
+ var origOpt = _extends({}, opt);
2441
+ opt = _extends({}, marked.defaults, origOpt);
2442
+ var throwError = onError(opt.silent, opt.async, callback);
2443
+
2444
+ // throw error in case of non string input
2445
+ if (typeof src === 'undefined' || src === null) {
2446
+ return throwError(new Error('marked(): input parameter is undefined or null'));
2447
+ }
2448
+ if (typeof src !== 'string') {
2449
+ return throwError(new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected'));
2450
+ }
2451
+ checkDeprecations(opt, callback);
2452
+ if (opt.hooks) {
2453
+ opt.hooks.options = opt;
2454
+ }
2455
+ if (callback) {
2456
+ var highlight = opt.highlight;
2457
+ var tokens;
2458
+ try {
2459
+ if (opt.hooks) {
2460
+ src = opt.hooks.preprocess(src);
2395
2461
  }
2462
+ tokens = lexer(src, opt);
2463
+ } catch (e) {
2464
+ return throwError(e);
2396
2465
  }
2397
- opt.highlight = highlight;
2398
- return err ? callback(err) : callback(null, out);
2399
- };
2400
- if (!highlight || highlight.length < 3) {
2401
- return done();
2402
- }
2403
- delete opt.highlight;
2404
- if (!tokens.length) return done();
2405
- var pending = 0;
2406
- marked.walkTokens(tokens, function (token) {
2407
- if (token.type === 'code') {
2408
- pending++;
2409
- setTimeout(function () {
2410
- highlight(token.text, token.lang, function (err, code) {
2411
- if (err) {
2412
- return done(err);
2466
+ var done = function done(err) {
2467
+ var out;
2468
+ if (!err) {
2469
+ try {
2470
+ if (opt.walkTokens) {
2471
+ marked.walkTokens(tokens, opt.walkTokens);
2413
2472
  }
2414
- if (code != null && code !== token.text) {
2415
- token.text = code;
2416
- token.escaped = true;
2473
+ out = parser(tokens, opt);
2474
+ if (opt.hooks) {
2475
+ out = opt.hooks.postprocess(out);
2417
2476
  }
2418
- pending--;
2419
- if (pending === 0) {
2420
- done();
2421
- }
2422
- });
2423
- }, 0);
2477
+ } catch (e) {
2478
+ err = e;
2479
+ }
2480
+ }
2481
+ opt.highlight = highlight;
2482
+ return err ? throwError(err) : callback(null, out);
2483
+ };
2484
+ if (!highlight || highlight.length < 3) {
2485
+ return done();
2424
2486
  }
2425
- });
2426
- if (pending === 0) {
2427
- done();
2428
- }
2429
- return;
2430
- }
2431
- function onError(e) {
2432
- e.message += '\nPlease report this to https://github.com/markedjs/marked.';
2433
- if (opt.silent) {
2434
- return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
2487
+ delete opt.highlight;
2488
+ if (!tokens.length) return done();
2489
+ var pending = 0;
2490
+ marked.walkTokens(tokens, function (token) {
2491
+ if (token.type === 'code') {
2492
+ pending++;
2493
+ setTimeout(function () {
2494
+ highlight(token.text, token.lang, function (err, code) {
2495
+ if (err) {
2496
+ return done(err);
2497
+ }
2498
+ if (code != null && code !== token.text) {
2499
+ token.text = code;
2500
+ token.escaped = true;
2501
+ }
2502
+ pending--;
2503
+ if (pending === 0) {
2504
+ done();
2505
+ }
2506
+ });
2507
+ }, 0);
2508
+ }
2509
+ });
2510
+ if (pending === 0) {
2511
+ done();
2512
+ }
2513
+ return;
2514
+ }
2515
+ if (opt.async) {
2516
+ return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(function (src) {
2517
+ return lexer(src, opt);
2518
+ }).then(function (tokens) {
2519
+ return opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(function () {
2520
+ return tokens;
2521
+ }) : tokens;
2522
+ }).then(function (tokens) {
2523
+ return parser(tokens, opt);
2524
+ }).then(function (html) {
2525
+ return opt.hooks ? opt.hooks.postprocess(html) : html;
2526
+ })["catch"](throwError);
2435
2527
  }
2436
- throw e;
2437
- }
2438
- try {
2439
- var _tokens = Lexer.lex(src, opt);
2440
- if (opt.walkTokens) {
2441
- if (opt.async) {
2442
- return Promise.all(marked.walkTokens(_tokens, opt.walkTokens)).then(function () {
2443
- return Parser.parse(_tokens, opt);
2444
- })["catch"](onError);
2528
+ try {
2529
+ if (opt.hooks) {
2530
+ src = opt.hooks.preprocess(src);
2445
2531
  }
2446
- marked.walkTokens(_tokens, opt.walkTokens);
2532
+ var _tokens = lexer(src, opt);
2533
+ if (opt.walkTokens) {
2534
+ marked.walkTokens(_tokens, opt.walkTokens);
2535
+ }
2536
+ var html = parser(_tokens, opt);
2537
+ if (opt.hooks) {
2538
+ html = opt.hooks.postprocess(html);
2539
+ }
2540
+ return html;
2541
+ } catch (e) {
2542
+ return throwError(e);
2447
2543
  }
2448
- return Parser.parse(_tokens, opt);
2449
- } catch (e) {
2450
- onError(e);
2451
- }
2544
+ };
2545
+ }
2546
+
2547
+ /**
2548
+ * Marked
2549
+ */
2550
+ function marked(src, opt, callback) {
2551
+ return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);
2452
2552
  }
2453
2553
 
2454
2554
  /**
@@ -2456,7 +2556,7 @@ function marked(src, opt, callback) {
2456
2556
  */
2457
2557
 
2458
2558
  marked.options = marked.setOptions = function (opt) {
2459
- merge(marked.defaults, opt);
2559
+ marked.defaults = _extends({}, marked.defaults, opt);
2460
2560
  changeDefaults(marked.defaults);
2461
2561
  return marked;
2462
2562
  };
@@ -2477,10 +2577,10 @@ marked.use = function () {
2477
2577
  }
2478
2578
  args.forEach(function (pack) {
2479
2579
  // copy options to new object
2480
- var opts = merge({}, pack);
2580
+ var opts = _extends({}, pack);
2481
2581
 
2482
2582
  // set async to true if it was set to true before
2483
- opts.async = marked.defaults.async || opts.async;
2583
+ opts.async = marked.defaults.async || opts.async || false;
2484
2584
 
2485
2585
  // ==-- Parse "addon" extensions --== //
2486
2586
  if (pack.extensions) {
@@ -2544,50 +2644,80 @@ marked.use = function () {
2544
2644
 
2545
2645
  // ==-- Parse "overwrite" extensions --== //
2546
2646
  if (pack.renderer) {
2547
- (function () {
2548
- var renderer = marked.defaults.renderer || new Renderer();
2549
- var _loop = function _loop(prop) {
2550
- var prevRenderer = renderer[prop];
2551
- // Replace renderer with func to run extension, but fall back if false
2552
- renderer[prop] = function () {
2553
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
2554
- args[_key3] = arguments[_key3];
2555
- }
2556
- var ret = pack.renderer[prop].apply(renderer, args);
2557
- if (ret === false) {
2558
- ret = prevRenderer.apply(renderer, args);
2559
- }
2560
- return ret;
2561
- };
2647
+ var renderer = marked.defaults.renderer || new Renderer();
2648
+ var _loop = function _loop(prop) {
2649
+ var prevRenderer = renderer[prop];
2650
+ // Replace renderer with func to run extension, but fall back if false
2651
+ renderer[prop] = function () {
2652
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
2653
+ args[_key3] = arguments[_key3];
2654
+ }
2655
+ var ret = pack.renderer[prop].apply(renderer, args);
2656
+ if (ret === false) {
2657
+ ret = prevRenderer.apply(renderer, args);
2658
+ }
2659
+ return ret;
2562
2660
  };
2563
- for (var prop in pack.renderer) {
2564
- _loop(prop);
2565
- }
2566
- opts.renderer = renderer;
2567
- })();
2661
+ };
2662
+ for (var prop in pack.renderer) {
2663
+ _loop(prop);
2664
+ }
2665
+ opts.renderer = renderer;
2568
2666
  }
2569
2667
  if (pack.tokenizer) {
2570
- (function () {
2571
- var tokenizer = marked.defaults.tokenizer || new Tokenizer();
2572
- var _loop2 = function _loop2(prop) {
2573
- var prevTokenizer = tokenizer[prop];
2574
- // Replace tokenizer with func to run extension, but fall back if false
2575
- tokenizer[prop] = function () {
2576
- for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
2577
- args[_key4] = arguments[_key4];
2668
+ var tokenizer = marked.defaults.tokenizer || new Tokenizer();
2669
+ var _loop2 = function _loop2(_prop) {
2670
+ var prevTokenizer = tokenizer[_prop];
2671
+ // Replace tokenizer with func to run extension, but fall back if false
2672
+ tokenizer[_prop] = function () {
2673
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
2674
+ args[_key4] = arguments[_key4];
2675
+ }
2676
+ var ret = pack.tokenizer[_prop].apply(tokenizer, args);
2677
+ if (ret === false) {
2678
+ ret = prevTokenizer.apply(tokenizer, args);
2679
+ }
2680
+ return ret;
2681
+ };
2682
+ };
2683
+ for (var _prop in pack.tokenizer) {
2684
+ _loop2(_prop);
2685
+ }
2686
+ opts.tokenizer = tokenizer;
2687
+ }
2688
+
2689
+ // ==-- Parse Hooks extensions --== //
2690
+ if (pack.hooks) {
2691
+ var hooks = marked.defaults.hooks || new Hooks();
2692
+ var _loop3 = function _loop3(_prop2) {
2693
+ var prevHook = hooks[_prop2];
2694
+ if (Hooks.passThroughHooks.has(_prop2)) {
2695
+ hooks[_prop2] = function (arg) {
2696
+ if (marked.defaults.async) {
2697
+ return Promise.resolve(pack.hooks[_prop2].call(hooks, arg)).then(function (ret) {
2698
+ return prevHook.call(hooks, ret);
2699
+ });
2578
2700
  }
2579
- var ret = pack.tokenizer[prop].apply(tokenizer, args);
2701
+ var ret = pack.hooks[_prop2].call(hooks, arg);
2702
+ return prevHook.call(hooks, ret);
2703
+ };
2704
+ } else {
2705
+ hooks[_prop2] = function () {
2706
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
2707
+ args[_key5] = arguments[_key5];
2708
+ }
2709
+ var ret = pack.hooks[_prop2].apply(hooks, args);
2580
2710
  if (ret === false) {
2581
- ret = prevTokenizer.apply(tokenizer, args);
2711
+ ret = prevHook.apply(hooks, args);
2582
2712
  }
2583
2713
  return ret;
2584
2714
  };
2585
- };
2586
- for (var prop in pack.tokenizer) {
2587
- _loop2(prop);
2588
2715
  }
2589
- opts.tokenizer = tokenizer;
2590
- })();
2716
+ };
2717
+ for (var _prop2 in pack.hooks) {
2718
+ _loop3(_prop2);
2719
+ }
2720
+ opts.hooks = hooks;
2591
2721
  }
2592
2722
 
2593
2723
  // ==-- Parse WalkTokens extensions --== //
@@ -2612,7 +2742,7 @@ marked.use = function () {
2612
2742
 
2613
2743
  marked.walkTokens = function (tokens, callback) {
2614
2744
  var values = [];
2615
- var _loop3 = function _loop3() {
2745
+ var _loop4 = function _loop4() {
2616
2746
  var token = _step.value;
2617
2747
  values = values.concat(callback.call(marked, token));
2618
2748
  switch (token.type) {
@@ -2650,7 +2780,7 @@ marked.walkTokens = function (tokens, callback) {
2650
2780
  }
2651
2781
  };
2652
2782
  for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
2653
- _loop3();
2783
+ _loop4();
2654
2784
  }
2655
2785
  return values;
2656
2786
  };
@@ -2659,30 +2789,7 @@ marked.walkTokens = function (tokens, callback) {
2659
2789
  * Parse Inline
2660
2790
  * @param {string} src
2661
2791
  */
2662
- marked.parseInline = function (src, opt) {
2663
- // throw error in case of non string input
2664
- if (typeof src === 'undefined' || src === null) {
2665
- throw new Error('marked.parseInline(): input parameter is undefined or null');
2666
- }
2667
- if (typeof src !== 'string') {
2668
- throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');
2669
- }
2670
- opt = merge({}, marked.defaults, opt || {});
2671
- checkSanitizeDeprecation(opt);
2672
- try {
2673
- var tokens = Lexer.lexInline(src, opt);
2674
- if (opt.walkTokens) {
2675
- marked.walkTokens(tokens, opt.walkTokens);
2676
- }
2677
- return Parser.parseInline(tokens, opt);
2678
- } catch (e) {
2679
- e.message += '\nPlease report this to https://github.com/markedjs/marked.';
2680
- if (opt.silent) {
2681
- return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
2682
- }
2683
- throw e;
2684
- }
2685
- };
2792
+ marked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);
2686
2793
 
2687
2794
  /**
2688
2795
  * Expose
@@ -2695,6 +2802,7 @@ marked.Lexer = Lexer;
2695
2802
  marked.lexer = Lexer.lex;
2696
2803
  marked.Tokenizer = Tokenizer;
2697
2804
  marked.Slugger = Slugger;
2805
+ marked.Hooks = Hooks;
2698
2806
  marked.parse = marked;
2699
2807
  var options = marked.options;
2700
2808
  var setOptions = marked.setOptions;
@@ -2705,6 +2813,7 @@ var parse = marked;
2705
2813
  var parser = Parser.parse;
2706
2814
  var lexer = Lexer.lex;
2707
2815
 
2816
+ exports.Hooks = Hooks;
2708
2817
  exports.Lexer = Lexer;
2709
2818
  exports.Parser = Parser;
2710
2819
  exports.Renderer = Renderer;