marked 4.1.1 → 4.2.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
@@ -22,7 +22,6 @@ function _defineProperties(target, props) {
22
22
  Object.defineProperty(target, descriptor.key, descriptor);
23
23
  }
24
24
  }
25
-
26
25
  function _createClass(Constructor, protoProps, staticProps) {
27
26
  if (protoProps) _defineProperties(Constructor.prototype, protoProps);
28
27
  if (staticProps) _defineProperties(Constructor, staticProps);
@@ -31,7 +30,6 @@ function _createClass(Constructor, protoProps, staticProps) {
31
30
  });
32
31
  return Constructor;
33
32
  }
34
-
35
33
  function _unsupportedIterableToArray(o, minLen) {
36
34
  if (!o) return;
37
35
  if (typeof o === "string") return _arrayLikeToArray(o, minLen);
@@ -40,19 +38,14 @@ function _unsupportedIterableToArray(o, minLen) {
40
38
  if (n === "Map" || n === "Set") return Array.from(o);
41
39
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
42
40
  }
43
-
44
41
  function _arrayLikeToArray(arr, len) {
45
42
  if (len == null || len > arr.length) len = arr.length;
46
-
47
43
  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
48
-
49
44
  return arr2;
50
45
  }
51
-
52
46
  function _createForOfIteratorHelperLoose(o, allowArrayLike) {
53
47
  var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
54
48
  if (it) return (it = it.call(o)).next.bind(it);
55
-
56
49
  if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
57
50
  if (it) o = it;
58
51
  var i = 0;
@@ -66,7 +59,6 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
66
59
  };
67
60
  };
68
61
  }
69
-
70
62
  throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
71
63
  }
72
64
 
@@ -112,11 +104,9 @@ var escapeReplacements = {
112
104
  '"': '&quot;',
113
105
  "'": '&#39;'
114
106
  };
115
-
116
107
  var getEscapeReplacement = function getEscapeReplacement(ch) {
117
108
  return escapeReplacements[ch];
118
109
  };
119
-
120
110
  function escape(html, encode) {
121
111
  if (encode) {
122
112
  if (escapeTest.test(html)) {
@@ -127,33 +117,30 @@ function escape(html, encode) {
127
117
  return html.replace(escapeReplaceNoEncode, getEscapeReplacement);
128
118
  }
129
119
  }
130
-
131
120
  return html;
132
121
  }
133
122
  var unescapeTest = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;
123
+
134
124
  /**
135
125
  * @param {string} html
136
126
  */
137
-
138
127
  function unescape(html) {
139
128
  // explicitly match decimal, hex, and named HTML entities
140
129
  return html.replace(unescapeTest, function (_, n) {
141
130
  n = n.toLowerCase();
142
131
  if (n === 'colon') return ':';
143
-
144
132
  if (n.charAt(0) === '#') {
145
133
  return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));
146
134
  }
147
-
148
135
  return '';
149
136
  });
150
137
  }
151
138
  var caret = /(^|[^\[])\^/g;
139
+
152
140
  /**
153
141
  * @param {string | RegExp} regex
154
142
  * @param {string} opt
155
143
  */
156
-
157
144
  function edit(regex, opt) {
158
145
  regex = typeof regex === 'string' ? regex : regex.source;
159
146
  opt = opt || '';
@@ -172,48 +159,43 @@ function edit(regex, opt) {
172
159
  }
173
160
  var nonWordAndColonTest = /[^\w:]/g;
174
161
  var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
162
+
175
163
  /**
176
164
  * @param {boolean} sanitize
177
165
  * @param {string} base
178
166
  * @param {string} href
179
167
  */
180
-
181
168
  function cleanUrl(sanitize, base, href) {
182
169
  if (sanitize) {
183
170
  var prot;
184
-
185
171
  try {
186
172
  prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();
187
173
  } catch (e) {
188
174
  return null;
189
175
  }
190
-
191
176
  if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {
192
177
  return null;
193
178
  }
194
179
  }
195
-
196
180
  if (base && !originIndependentUrl.test(href)) {
197
181
  href = resolveUrl(base, href);
198
182
  }
199
-
200
183
  try {
201
184
  href = encodeURI(href).replace(/%25/g, '%');
202
185
  } catch (e) {
203
186
  return null;
204
187
  }
205
-
206
188
  return href;
207
189
  }
208
190
  var baseUrls = {};
209
191
  var justDomain = /^[^:]+:\/*[^/]*$/;
210
192
  var protocol = /^([^:]+:)[\s\S]*$/;
211
193
  var domain = /^([^:]+:\/*[^/]*)[\s\S]*$/;
194
+
212
195
  /**
213
196
  * @param {string} base
214
197
  * @param {string} href
215
198
  */
216
-
217
199
  function resolveUrl(base, href) {
218
200
  if (!baseUrls[' ' + base]) {
219
201
  // we can ignore everything in base after the last slash of its path component,
@@ -225,21 +207,17 @@ function resolveUrl(base, href) {
225
207
  baseUrls[' ' + base] = rtrim(base, '/', true);
226
208
  }
227
209
  }
228
-
229
210
  base = baseUrls[' ' + base];
230
211
  var relativeBase = base.indexOf(':') === -1;
231
-
232
212
  if (href.substring(0, 2) === '//') {
233
213
  if (relativeBase) {
234
214
  return href;
235
215
  }
236
-
237
216
  return base.replace(protocol, '$1') + href;
238
217
  } else if (href.charAt(0) === '/') {
239
218
  if (relativeBase) {
240
219
  return href;
241
220
  }
242
-
243
221
  return base.replace(domain, '$1') + href;
244
222
  } else {
245
223
  return base + href;
@@ -250,52 +228,46 @@ var noopTest = {
250
228
  };
251
229
  function merge(obj) {
252
230
  var i = 1,
253
- target,
254
- key;
255
-
231
+ target,
232
+ key;
256
233
  for (; i < arguments.length; i++) {
257
234
  target = arguments[i];
258
-
259
235
  for (key in target) {
260
236
  if (Object.prototype.hasOwnProperty.call(target, key)) {
261
237
  obj[key] = target[key];
262
238
  }
263
239
  }
264
240
  }
265
-
266
241
  return obj;
267
242
  }
268
243
  function splitCells(tableRow, count) {
269
244
  // ensure that every cell-delimiting pipe has a space
270
245
  // before it to distinguish it from an escaped pipe
271
246
  var row = tableRow.replace(/\|/g, function (match, offset, str) {
272
- var escaped = false,
247
+ var escaped = false,
273
248
  curr = offset;
249
+ while (--curr >= 0 && str[curr] === '\\') {
250
+ escaped = !escaped;
251
+ }
252
+ if (escaped) {
253
+ // odd number of slashes means | is escaped
254
+ // so we leave it alone
255
+ return '|';
256
+ } else {
257
+ // add space before unescaped |
258
+ return ' |';
259
+ }
260
+ }),
261
+ cells = row.split(/ \|/);
262
+ var i = 0;
274
263
 
275
- while (--curr >= 0 && str[curr] === '\\') {
276
- escaped = !escaped;
277
- }
278
-
279
- if (escaped) {
280
- // odd number of slashes means | is escaped
281
- // so we leave it alone
282
- return '|';
283
- } else {
284
- // add space before unescaped |
285
- return ' |';
286
- }
287
- }),
288
- cells = row.split(/ \|/);
289
- var i = 0; // First/last cell in a row cannot be empty if it has no leading/trailing pipe
290
-
264
+ // First/last cell in a row cannot be empty if it has no leading/trailing pipe
291
265
  if (!cells[0].trim()) {
292
266
  cells.shift();
293
267
  }
294
-
295
268
  if (cells.length > 0 && !cells[cells.length - 1].trim()) {
296
269
  cells.pop();
297
270
  }
298
-
299
271
  if (cells.length > count) {
300
272
  cells.splice(count);
301
273
  } else {
@@ -303,14 +275,13 @@ function splitCells(tableRow, count) {
303
275
  cells.push('');
304
276
  }
305
277
  }
306
-
307
278
  for (; i < cells.length; i++) {
308
279
  // leading or trailing whitespace is ignored per the gfm spec
309
280
  cells[i] = cells[i].trim().replace(/\\\|/g, '|');
310
281
  }
311
-
312
282
  return cells;
313
283
  }
284
+
314
285
  /**
315
286
  * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').
316
287
  * /c*$/ is vulnerable to REDOS.
@@ -319,20 +290,18 @@ function splitCells(tableRow, count) {
319
290
  * @param {string} c
320
291
  * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.
321
292
  */
322
-
323
293
  function rtrim(str, c, invert) {
324
294
  var l = str.length;
325
-
326
295
  if (l === 0) {
327
296
  return '';
328
- } // Length of suffix matching the invert condition.
329
-
297
+ }
330
298
 
331
- var suffLen = 0; // Step left until we fail to match the invert condition.
299
+ // Length of suffix matching the invert condition.
300
+ var suffLen = 0;
332
301
 
302
+ // Step left until we fail to match the invert condition.
333
303
  while (suffLen < l) {
334
304
  var currChar = str.charAt(l - suffLen - 1);
335
-
336
305
  if (currChar === c && !invert) {
337
306
  suffLen++;
338
307
  } else if (currChar !== c && invert) {
@@ -341,18 +310,15 @@ function rtrim(str, c, invert) {
341
310
  break;
342
311
  }
343
312
  }
344
-
345
313
  return str.slice(0, l - suffLen);
346
314
  }
347
315
  function findClosingBracket(str, b) {
348
316
  if (str.indexOf(b[1]) === -1) {
349
317
  return -1;
350
318
  }
351
-
352
319
  var l = str.length;
353
320
  var level = 0,
354
- i = 0;
355
-
321
+ i = 0;
356
322
  for (; i < l; i++) {
357
323
  if (str[i] === '\\') {
358
324
  i++;
@@ -360,42 +326,36 @@ function findClosingBracket(str, b) {
360
326
  level++;
361
327
  } else if (str[i] === b[1]) {
362
328
  level--;
363
-
364
329
  if (level < 0) {
365
330
  return i;
366
331
  }
367
332
  }
368
333
  }
369
-
370
334
  return -1;
371
335
  }
372
336
  function checkSanitizeDeprecation(opt) {
373
337
  if (opt && opt.sanitize && !opt.silent) {
374
338
  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');
375
339
  }
376
- } // copied from https://stackoverflow.com/a/5450113/806777
340
+ }
377
341
 
342
+ // copied from https://stackoverflow.com/a/5450113/806777
378
343
  /**
379
344
  * @param {string} pattern
380
345
  * @param {number} count
381
346
  */
382
-
383
347
  function repeatString(pattern, count) {
384
348
  if (count < 1) {
385
349
  return '';
386
350
  }
387
-
388
351
  var result = '';
389
-
390
352
  while (count > 1) {
391
353
  if (count & 1) {
392
354
  result += pattern;
393
355
  }
394
-
395
356
  count >>= 1;
396
357
  pattern += pattern;
397
358
  }
398
-
399
359
  return result + pattern;
400
360
  }
401
361
 
@@ -403,7 +363,6 @@ function outputLink(cap, link, raw, lexer) {
403
363
  var href = link.href;
404
364
  var title = link.title ? escape(link.title) : null;
405
365
  var text = cap[1].replace(/\\([\[\]])/g, '$1');
406
-
407
366
  if (cap[0].charAt(0) !== '!') {
408
367
  lexer.state.inLink = true;
409
368
  var token = {
@@ -417,7 +376,6 @@ function outputLink(cap, link, raw, lexer) {
417
376
  lexer.state.inLink = false;
418
377
  return token;
419
378
  }
420
-
421
379
  return {
422
380
  type: 'image',
423
381
  raw: raw,
@@ -426,46 +384,35 @@ function outputLink(cap, link, raw, lexer) {
426
384
  text: escape(text)
427
385
  };
428
386
  }
429
-
430
387
  function indentCodeCompensation(raw, text) {
431
388
  var matchIndentToCode = raw.match(/^(\s+)(?:```)/);
432
-
433
389
  if (matchIndentToCode === null) {
434
390
  return text;
435
391
  }
436
-
437
392
  var indentToCode = matchIndentToCode[1];
438
393
  return text.split('\n').map(function (node) {
439
394
  var matchIndentInNode = node.match(/^\s+/);
440
-
441
395
  if (matchIndentInNode === null) {
442
396
  return node;
443
397
  }
444
-
445
398
  var indentInNode = matchIndentInNode[0];
446
-
447
399
  if (indentInNode.length >= indentToCode.length) {
448
400
  return node.slice(indentToCode.length);
449
401
  }
450
-
451
402
  return node;
452
403
  }).join('\n');
453
404
  }
405
+
454
406
  /**
455
407
  * Tokenizer
456
408
  */
457
-
458
-
459
409
  var Tokenizer = /*#__PURE__*/function () {
460
410
  function Tokenizer(options) {
461
411
  this.options = options || exports.defaults;
462
412
  }
463
-
464
413
  var _proto = Tokenizer.prototype;
465
-
466
414
  _proto.space = function space(src) {
467
415
  var cap = this.rules.block.newline.exec(src);
468
-
469
416
  if (cap && cap[0].length > 0) {
470
417
  return {
471
418
  type: 'space',
@@ -473,10 +420,8 @@ var Tokenizer = /*#__PURE__*/function () {
473
420
  };
474
421
  }
475
422
  };
476
-
477
423
  _proto.code = function code(src) {
478
424
  var cap = this.rules.block.code.exec(src);
479
-
480
425
  if (cap) {
481
426
  var text = cap[0].replace(/^ {1,4}/gm, '');
482
427
  return {
@@ -487,10 +432,8 @@ var Tokenizer = /*#__PURE__*/function () {
487
432
  };
488
433
  }
489
434
  };
490
-
491
435
  _proto.fences = function fences(src) {
492
436
  var cap = this.rules.block.fences.exec(src);
493
-
494
437
  if (cap) {
495
438
  var raw = cap[0];
496
439
  var text = indentCodeCompensation(raw, cap[3] || '');
@@ -502,16 +445,14 @@ var Tokenizer = /*#__PURE__*/function () {
502
445
  };
503
446
  }
504
447
  };
505
-
506
448
  _proto.heading = function heading(src) {
507
449
  var cap = this.rules.block.heading.exec(src);
508
-
509
450
  if (cap) {
510
- var text = cap[2].trim(); // remove trailing #s
451
+ var text = cap[2].trim();
511
452
 
453
+ // remove trailing #s
512
454
  if (/#$/.test(text)) {
513
455
  var trimmed = rtrim(text, '#');
514
-
515
456
  if (this.options.pedantic) {
516
457
  text = trimmed.trim();
517
458
  } else if (!trimmed || / $/.test(trimmed)) {
@@ -519,7 +460,6 @@ var Tokenizer = /*#__PURE__*/function () {
519
460
  text = trimmed.trim();
520
461
  }
521
462
  }
522
-
523
463
  return {
524
464
  type: 'heading',
525
465
  raw: cap[0],
@@ -529,10 +469,8 @@ var Tokenizer = /*#__PURE__*/function () {
529
469
  };
530
470
  }
531
471
  };
532
-
533
472
  _proto.hr = function hr(src) {
534
473
  var cap = this.rules.block.hr.exec(src);
535
-
536
474
  if (cap) {
537
475
  return {
538
476
  type: 'hr',
@@ -540,10 +478,8 @@ var Tokenizer = /*#__PURE__*/function () {
540
478
  };
541
479
  }
542
480
  };
543
-
544
481
  _proto.blockquote = function blockquote(src) {
545
482
  var cap = this.rules.block.blockquote.exec(src);
546
-
547
483
  if (cap) {
548
484
  var text = cap[0].replace(/^ *>[ \t]?/gm, '');
549
485
  return {
@@ -554,10 +490,8 @@ var Tokenizer = /*#__PURE__*/function () {
554
490
  };
555
491
  }
556
492
  };
557
-
558
493
  _proto.list = function list(src) {
559
494
  var cap = this.rules.block.list.exec(src);
560
-
561
495
  if (cap) {
562
496
  var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;
563
497
  var bull = cap[1].trim();
@@ -571,86 +505,78 @@ var Tokenizer = /*#__PURE__*/function () {
571
505
  items: []
572
506
  };
573
507
  bull = isordered ? "\\d{1,9}\\" + bull.slice(-1) : "\\" + bull;
574
-
575
508
  if (this.options.pedantic) {
576
509
  bull = isordered ? bull : '[*+-]';
577
- } // Get next list item
578
-
510
+ }
579
511
 
580
- var itemRegex = new RegExp("^( {0,3}" + bull + ")((?:[\t ][^\\n]*)?(?:\\n|$))"); // Check if current bullet point can start a new List Item
512
+ // Get next list item
513
+ var itemRegex = new RegExp("^( {0,3}" + bull + ")((?:[\t ][^\\n]*)?(?:\\n|$))");
581
514
 
515
+ // Check if current bullet point can start a new List Item
582
516
  while (src) {
583
517
  endEarly = false;
584
-
585
518
  if (!(cap = itemRegex.exec(src))) {
586
519
  break;
587
520
  }
588
-
589
521
  if (this.rules.block.hr.test(src)) {
590
522
  // End list if bullet was actually HR (possibly move into itemRegex?)
591
523
  break;
592
524
  }
593
-
594
525
  raw = cap[0];
595
526
  src = src.substring(raw.length);
596
527
  line = cap[2].split('\n', 1)[0];
597
528
  nextLine = src.split('\n', 1)[0];
598
-
599
529
  if (this.options.pedantic) {
600
530
  indent = 2;
601
531
  itemContents = line.trimLeft();
602
532
  } else {
603
533
  indent = cap[2].search(/[^ ]/); // Find first non-space char
604
-
605
534
  indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent
606
-
607
535
  itemContents = line.slice(indent);
608
536
  indent += cap[1].length;
609
537
  }
610
-
611
538
  blankLine = false;
612
-
613
539
  if (!line && /^ *$/.test(nextLine)) {
614
540
  // Items begin with at most one blank line
615
541
  raw += nextLine + '\n';
616
542
  src = src.substring(nextLine.length + 1);
617
543
  endEarly = true;
618
544
  }
619
-
620
545
  if (!endEarly) {
621
546
  var nextBulletRegex = new RegExp("^ {0," + Math.min(3, indent - 1) + "}(?:[*+-]|\\d{1,9}[.)])((?: [^\\n]*)?(?:\\n|$))");
622
547
  var hrRegex = new RegExp("^ {0," + Math.min(3, indent - 1) + "}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)");
623
548
  var fencesBeginRegex = new RegExp("^ {0," + Math.min(3, indent - 1) + "}(?:```|~~~)");
624
- var headingBeginRegex = new RegExp("^ {0," + Math.min(3, indent - 1) + "}#"); // Check if following lines should be included in List Item
549
+ var headingBeginRegex = new RegExp("^ {0," + Math.min(3, indent - 1) + "}#");
625
550
 
551
+ // Check if following lines should be included in List Item
626
552
  while (src) {
627
553
  rawLine = src.split('\n', 1)[0];
628
- line = rawLine; // Re-align to follow commonmark nesting rules
554
+ line = rawLine;
629
555
 
556
+ // Re-align to follow commonmark nesting rules
630
557
  if (this.options.pedantic) {
631
558
  line = line.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');
632
- } // End list item if found code fences
633
-
559
+ }
634
560
 
561
+ // End list item if found code fences
635
562
  if (fencesBeginRegex.test(line)) {
636
563
  break;
637
- } // End list item if found start of new heading
638
-
564
+ }
639
565
 
566
+ // End list item if found start of new heading
640
567
  if (headingBeginRegex.test(line)) {
641
568
  break;
642
- } // End list item if found start of new bullet
643
-
569
+ }
644
570
 
571
+ // End list item if found start of new bullet
645
572
  if (nextBulletRegex.test(line)) {
646
573
  break;
647
- } // Horizontal rule found
648
-
574
+ }
649
575
 
576
+ // Horizontal rule found
650
577
  if (hrRegex.test(src)) {
651
578
  break;
652
579
  }
653
-
654
580
  if (line.search(/[^ ]/) >= indent || !line.trim()) {
655
581
  // Dedent if possible
656
582
  itemContents += '\n' + line.slice(indent);
@@ -661,17 +587,14 @@ var Tokenizer = /*#__PURE__*/function () {
661
587
  // Otherwise, improper indentation ends this item
662
588
  break;
663
589
  }
664
-
665
590
  if (!blankLine && !line.trim()) {
666
591
  // Check if current line is blank
667
592
  blankLine = true;
668
593
  }
669
-
670
594
  raw += rawLine + '\n';
671
595
  src = src.substring(rawLine.length + 1);
672
596
  }
673
597
  }
674
-
675
598
  if (!list.loose) {
676
599
  // If the previous item ended with a blank line, the list is loose
677
600
  if (endsWithBlankLine) {
@@ -679,18 +602,16 @@ var Tokenizer = /*#__PURE__*/function () {
679
602
  } else if (/\n *\n *$/.test(raw)) {
680
603
  endsWithBlankLine = true;
681
604
  }
682
- } // Check for task list items
683
-
605
+ }
684
606
 
607
+ // Check for task list items
685
608
  if (this.options.gfm) {
686
609
  istask = /^\[[ xX]\] /.exec(itemContents);
687
-
688
610
  if (istask) {
689
611
  ischecked = istask[0] !== '[ ] ';
690
612
  itemContents = itemContents.replace(/^\[[ xX]\] +/, '');
691
613
  }
692
614
  }
693
-
694
615
  list.items.push({
695
616
  type: 'list_item',
696
617
  raw: raw,
@@ -700,14 +621,15 @@ var Tokenizer = /*#__PURE__*/function () {
700
621
  text: itemContents
701
622
  });
702
623
  list.raw += raw;
703
- } // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic
704
-
624
+ }
705
625
 
626
+ // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic
706
627
  list.items[list.items.length - 1].raw = raw.trimRight();
707
628
  list.items[list.items.length - 1].text = itemContents.trimRight();
708
629
  list.raw = list.raw.trimRight();
709
- var l = list.items.length; // Item child tokens handled here at end because we needed to have the final item to trim it first
630
+ var l = list.items.length;
710
631
 
632
+ // Item child tokens handled here at end because we needed to have the final item to trim it first
711
633
  for (i = 0; i < l; i++) {
712
634
  this.lexer.state.top = false;
713
635
  list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);
@@ -717,36 +639,28 @@ var Tokenizer = /*#__PURE__*/function () {
717
639
  var hasMultipleLineBreaks = spacers.every(function (t) {
718
640
  var chars = t.raw.split('');
719
641
  var lineBreaks = 0;
720
-
721
642
  for (var _iterator = _createForOfIteratorHelperLoose(chars), _step; !(_step = _iterator()).done;) {
722
643
  var _char = _step.value;
723
-
724
644
  if (_char === '\n') {
725
645
  lineBreaks += 1;
726
646
  }
727
-
728
647
  if (lineBreaks > 1) {
729
648
  return true;
730
649
  }
731
650
  }
732
-
733
651
  return false;
734
652
  });
735
-
736
653
  if (!list.loose && spacers.length && hasMultipleLineBreaks) {
737
654
  // Having a single line break doesn't mean a list is loose. A single line break is terminating the last list item
738
655
  list.loose = true;
739
656
  list.items[i].loose = true;
740
657
  }
741
658
  }
742
-
743
659
  return list;
744
660
  }
745
661
  };
746
-
747
662
  _proto.html = function html(src) {
748
663
  var cap = this.rules.block.html.exec(src);
749
-
750
664
  if (cap) {
751
665
  var token = {
752
666
  type: 'html',
@@ -754,21 +668,17 @@ var Tokenizer = /*#__PURE__*/function () {
754
668
  pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
755
669
  text: cap[0]
756
670
  };
757
-
758
671
  if (this.options.sanitize) {
759
672
  var text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);
760
673
  token.type = 'paragraph';
761
674
  token.text = text;
762
675
  token.tokens = this.lexer.inline(text);
763
676
  }
764
-
765
677
  return token;
766
678
  }
767
679
  };
768
-
769
680
  _proto.def = function def(src) {
770
681
  var cap = this.rules.block.def.exec(src);
771
-
772
682
  if (cap) {
773
683
  if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);
774
684
  var tag = cap[1].toLowerCase().replace(/\s+/g, ' ');
@@ -781,10 +691,8 @@ var Tokenizer = /*#__PURE__*/function () {
781
691
  };
782
692
  }
783
693
  };
784
-
785
694
  _proto.table = function table(src) {
786
695
  var cap = this.rules.block.table.exec(src);
787
-
788
696
  if (cap) {
789
697
  var item = {
790
698
  type: 'table',
@@ -796,12 +704,10 @@ var Tokenizer = /*#__PURE__*/function () {
796
704
  align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
797
705
  rows: cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []
798
706
  };
799
-
800
707
  if (item.header.length === item.align.length) {
801
708
  item.raw = cap[0];
802
709
  var l = item.align.length;
803
710
  var i, j, k, row;
804
-
805
711
  for (i = 0; i < l; i++) {
806
712
  if (/^ *-+: *$/.test(item.align[i])) {
807
713
  item.align[i] = 'right';
@@ -813,44 +719,37 @@ var Tokenizer = /*#__PURE__*/function () {
813
719
  item.align[i] = null;
814
720
  }
815
721
  }
816
-
817
722
  l = item.rows.length;
818
-
819
723
  for (i = 0; i < l; i++) {
820
724
  item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {
821
725
  return {
822
726
  text: c
823
727
  };
824
728
  });
825
- } // parse child tokens inside headers and cells
826
- // header child tokens
729
+ }
827
730
 
731
+ // parse child tokens inside headers and cells
828
732
 
733
+ // header child tokens
829
734
  l = item.header.length;
830
-
831
735
  for (j = 0; j < l; j++) {
832
736
  item.header[j].tokens = this.lexer.inline(item.header[j].text);
833
- } // cell child tokens
834
-
737
+ }
835
738
 
739
+ // cell child tokens
836
740
  l = item.rows.length;
837
-
838
741
  for (j = 0; j < l; j++) {
839
742
  row = item.rows[j];
840
-
841
743
  for (k = 0; k < row.length; k++) {
842
744
  row[k].tokens = this.lexer.inline(row[k].text);
843
745
  }
844
746
  }
845
-
846
747
  return item;
847
748
  }
848
749
  }
849
750
  };
850
-
851
751
  _proto.lheading = function lheading(src) {
852
752
  var cap = this.rules.block.lheading.exec(src);
853
-
854
753
  if (cap) {
855
754
  return {
856
755
  type: 'heading',
@@ -861,10 +760,8 @@ var Tokenizer = /*#__PURE__*/function () {
861
760
  };
862
761
  }
863
762
  };
864
-
865
763
  _proto.paragraph = function paragraph(src) {
866
764
  var cap = this.rules.block.paragraph.exec(src);
867
-
868
765
  if (cap) {
869
766
  var text = cap[1].charAt(cap[1].length - 1) === '\n' ? cap[1].slice(0, -1) : cap[1];
870
767
  return {
@@ -875,10 +772,8 @@ var Tokenizer = /*#__PURE__*/function () {
875
772
  };
876
773
  }
877
774
  };
878
-
879
775
  _proto.text = function text(src) {
880
776
  var cap = this.rules.block.text.exec(src);
881
-
882
777
  if (cap) {
883
778
  return {
884
779
  type: 'text',
@@ -888,10 +783,8 @@ var Tokenizer = /*#__PURE__*/function () {
888
783
  };
889
784
  }
890
785
  };
891
-
892
786
  _proto.escape = function escape$1(src) {
893
787
  var cap = this.rules.inline.escape.exec(src);
894
-
895
788
  if (cap) {
896
789
  return {
897
790
  type: 'escape',
@@ -900,23 +793,19 @@ var Tokenizer = /*#__PURE__*/function () {
900
793
  };
901
794
  }
902
795
  };
903
-
904
796
  _proto.tag = function tag(src) {
905
797
  var cap = this.rules.inline.tag.exec(src);
906
-
907
798
  if (cap) {
908
799
  if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {
909
800
  this.lexer.state.inLink = true;
910
801
  } else if (this.lexer.state.inLink && /^<\/a>/i.test(cap[0])) {
911
802
  this.lexer.state.inLink = false;
912
803
  }
913
-
914
804
  if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
915
805
  this.lexer.state.inRawBlock = true;
916
806
  } else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
917
807
  this.lexer.state.inRawBlock = false;
918
808
  }
919
-
920
809
  return {
921
810
  type: this.options.sanitize ? 'text' : 'html',
922
811
  raw: cap[0],
@@ -926,29 +815,24 @@ var Tokenizer = /*#__PURE__*/function () {
926
815
  };
927
816
  }
928
817
  };
929
-
930
818
  _proto.link = function link(src) {
931
819
  var cap = this.rules.inline.link.exec(src);
932
-
933
820
  if (cap) {
934
821
  var trimmedUrl = cap[2].trim();
935
-
936
822
  if (!this.options.pedantic && /^</.test(trimmedUrl)) {
937
823
  // commonmark requires matching angle brackets
938
824
  if (!/>$/.test(trimmedUrl)) {
939
825
  return;
940
- } // ending angle bracket cannot be escaped
941
-
826
+ }
942
827
 
828
+ // ending angle bracket cannot be escaped
943
829
  var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\');
944
-
945
830
  if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {
946
831
  return;
947
832
  }
948
833
  } else {
949
834
  // find closing parenthesis
950
835
  var lastParenIndex = findClosingBracket(cap[2], '()');
951
-
952
836
  if (lastParenIndex > -1) {
953
837
  var start = cap[0].indexOf('!') === 0 ? 5 : 4;
954
838
  var linkLen = start + cap[1].length + lastParenIndex;
@@ -957,14 +841,11 @@ var Tokenizer = /*#__PURE__*/function () {
957
841
  cap[3] = '';
958
842
  }
959
843
  }
960
-
961
844
  var href = cap[2];
962
845
  var title = '';
963
-
964
846
  if (this.options.pedantic) {
965
847
  // split pedantic href and title
966
848
  var link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href);
967
-
968
849
  if (link) {
969
850
  href = link[1];
970
851
  title = link[3];
@@ -972,9 +853,7 @@ var Tokenizer = /*#__PURE__*/function () {
972
853
  } else {
973
854
  title = cap[3] ? cap[3].slice(1, -1) : '';
974
855
  }
975
-
976
856
  href = href.trim();
977
-
978
857
  if (/^</.test(href)) {
979
858
  if (this.options.pedantic && !/>$/.test(trimmedUrl)) {
980
859
  // pedantic allows starting angle bracket without ending angle bracket
@@ -983,21 +862,17 @@ var Tokenizer = /*#__PURE__*/function () {
983
862
  href = href.slice(1, -1);
984
863
  }
985
864
  }
986
-
987
865
  return outputLink(cap, {
988
866
  href: href ? href.replace(this.rules.inline._escapes, '$1') : href,
989
867
  title: title ? title.replace(this.rules.inline._escapes, '$1') : title
990
868
  }, cap[0], this.lexer);
991
869
  }
992
870
  };
993
-
994
871
  _proto.reflink = function reflink(src, links) {
995
872
  var cap;
996
-
997
873
  if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {
998
874
  var link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
999
875
  link = links[link.toLowerCase()];
1000
-
1001
876
  if (!link || !link.href) {
1002
877
  var text = cap[0].charAt(0);
1003
878
  return {
@@ -1006,39 +881,35 @@ var Tokenizer = /*#__PURE__*/function () {
1006
881
  text: text
1007
882
  };
1008
883
  }
1009
-
1010
884
  return outputLink(cap, link, cap[0], this.lexer);
1011
885
  }
1012
886
  };
1013
-
1014
887
  _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {
1015
888
  if (prevChar === void 0) {
1016
889
  prevChar = '';
1017
890
  }
1018
-
1019
891
  var match = this.rules.inline.emStrong.lDelim.exec(src);
1020
- if (!match) return; // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
892
+ if (!match) return;
1021
893
 
894
+ // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
1022
895
  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;
1023
896
  var nextChar = match[1] || match[2] || '';
1024
-
1025
897
  if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {
1026
898
  var lLength = match[0].length - 1;
1027
899
  var rDelim,
1028
- rLength,
1029
- delimTotal = lLength,
1030
- midDelimTotal = 0;
900
+ rLength,
901
+ delimTotal = lLength,
902
+ midDelimTotal = 0;
1031
903
  var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;
1032
- endReg.lastIndex = 0; // Clip maskedSrc to same section of string as src (move to lexer?)
904
+ endReg.lastIndex = 0;
1033
905
 
906
+ // Clip maskedSrc to same section of string as src (move to lexer?)
1034
907
  maskedSrc = maskedSrc.slice(-1 * src.length + lLength);
1035
-
1036
908
  while ((match = endReg.exec(maskedSrc)) != null) {
1037
909
  rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];
1038
910
  if (!rDelim) continue; // skip single * in __abc*abc__
1039
911
 
1040
912
  rLength = rDelim.length;
1041
-
1042
913
  if (match[3] || match[4]) {
1043
914
  // found another Left Delim
1044
915
  delimTotal += rLength;
@@ -1053,22 +924,22 @@ var Tokenizer = /*#__PURE__*/function () {
1053
924
 
1054
925
  delimTotal -= rLength;
1055
926
  if (delimTotal > 0) continue; // Haven't found enough closing delimiters
1056
- // Remove extra characters. *a*** -> *a*
1057
927
 
1058
- rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal); // Create `em` if smallest delimiter has odd char count. *a***
928
+ // Remove extra characters. *a*** -> *a*
929
+ rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
1059
930
 
931
+ // Create `em` if smallest delimiter has odd char count. *a***
1060
932
  if (Math.min(lLength, rLength) % 2) {
1061
933
  var _text = src.slice(1, lLength + match.index + rLength);
1062
-
1063
934
  return {
1064
935
  type: 'em',
1065
936
  raw: src.slice(0, lLength + match.index + rLength + 1),
1066
937
  text: _text,
1067
938
  tokens: this.lexer.inlineTokens(_text)
1068
939
  };
1069
- } // Create 'strong' if smallest delimiter has even char count. **a***
1070
-
940
+ }
1071
941
 
942
+ // Create 'strong' if smallest delimiter has even char count. **a***
1072
943
  var text = src.slice(2, lLength + match.index + rLength - 1);
1073
944
  return {
1074
945
  type: 'strong',
@@ -1079,19 +950,15 @@ var Tokenizer = /*#__PURE__*/function () {
1079
950
  }
1080
951
  }
1081
952
  };
1082
-
1083
953
  _proto.codespan = function codespan(src) {
1084
954
  var cap = this.rules.inline.code.exec(src);
1085
-
1086
955
  if (cap) {
1087
956
  var text = cap[2].replace(/\n/g, ' ');
1088
957
  var hasNonSpaceChars = /[^ ]/.test(text);
1089
958
  var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);
1090
-
1091
959
  if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {
1092
960
  text = text.substring(1, text.length - 1);
1093
961
  }
1094
-
1095
962
  text = escape(text, true);
1096
963
  return {
1097
964
  type: 'codespan',
@@ -1100,10 +967,8 @@ var Tokenizer = /*#__PURE__*/function () {
1100
967
  };
1101
968
  }
1102
969
  };
1103
-
1104
970
  _proto.br = function br(src) {
1105
971
  var cap = this.rules.inline.br.exec(src);
1106
-
1107
972
  if (cap) {
1108
973
  return {
1109
974
  type: 'br',
@@ -1111,10 +976,8 @@ var Tokenizer = /*#__PURE__*/function () {
1111
976
  };
1112
977
  }
1113
978
  };
1114
-
1115
979
  _proto.del = function del(src) {
1116
980
  var cap = this.rules.inline.del.exec(src);
1117
-
1118
981
  if (cap) {
1119
982
  return {
1120
983
  type: 'del',
@@ -1124,13 +987,10 @@ var Tokenizer = /*#__PURE__*/function () {
1124
987
  };
1125
988
  }
1126
989
  };
1127
-
1128
990
  _proto.autolink = function autolink(src, mangle) {
1129
991
  var cap = this.rules.inline.autolink.exec(src);
1130
-
1131
992
  if (cap) {
1132
993
  var text, href;
1133
-
1134
994
  if (cap[2] === '@') {
1135
995
  text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);
1136
996
  href = 'mailto:' + text;
@@ -1138,7 +998,6 @@ var Tokenizer = /*#__PURE__*/function () {
1138
998
  text = escape(cap[1]);
1139
999
  href = text;
1140
1000
  }
1141
-
1142
1001
  return {
1143
1002
  type: 'link',
1144
1003
  raw: cap[0],
@@ -1152,34 +1011,27 @@ var Tokenizer = /*#__PURE__*/function () {
1152
1011
  };
1153
1012
  }
1154
1013
  };
1155
-
1156
1014
  _proto.url = function url(src, mangle) {
1157
1015
  var cap;
1158
-
1159
1016
  if (cap = this.rules.inline.url.exec(src)) {
1160
1017
  var text, href;
1161
-
1162
1018
  if (cap[2] === '@') {
1163
1019
  text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);
1164
1020
  href = 'mailto:' + text;
1165
1021
  } else {
1166
1022
  // do extended autolink path validation
1167
1023
  var prevCapZero;
1168
-
1169
1024
  do {
1170
1025
  prevCapZero = cap[0];
1171
1026
  cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];
1172
1027
  } while (prevCapZero !== cap[0]);
1173
-
1174
1028
  text = escape(cap[0]);
1175
-
1176
1029
  if (cap[1] === 'www.') {
1177
1030
  href = 'http://' + text;
1178
1031
  } else {
1179
1032
  href = text;
1180
1033
  }
1181
1034
  }
1182
-
1183
1035
  return {
1184
1036
  type: 'link',
1185
1037
  raw: cap[0],
@@ -1193,19 +1045,15 @@ var Tokenizer = /*#__PURE__*/function () {
1193
1045
  };
1194
1046
  }
1195
1047
  };
1196
-
1197
1048
  _proto.inlineText = function inlineText(src, smartypants) {
1198
1049
  var cap = this.rules.inline.text.exec(src);
1199
-
1200
1050
  if (cap) {
1201
1051
  var text;
1202
-
1203
1052
  if (this.lexer.state.inRawBlock) {
1204
1053
  text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];
1205
1054
  } else {
1206
1055
  text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);
1207
1056
  }
1208
-
1209
1057
  return {
1210
1058
  type: 'text',
1211
1059
  raw: cap[0],
@@ -1213,14 +1061,12 @@ var Tokenizer = /*#__PURE__*/function () {
1213
1061
  };
1214
1062
  }
1215
1063
  };
1216
-
1217
1064
  return Tokenizer;
1218
1065
  }();
1219
1066
 
1220
1067
  /**
1221
1068
  * Block-Level Grammar
1222
1069
  */
1223
-
1224
1070
  var block = {
1225
1071
  newline: /^(?: *(?:\n|$))+/,
1226
1072
  code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,
@@ -1261,11 +1107,13 @@ block.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('headin
1261
1107
  .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks
1262
1108
  .getRegex();
1263
1109
  block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();
1110
+
1264
1111
  /**
1265
1112
  * Normal Block Grammar
1266
1113
  */
1267
1114
 
1268
1115
  block.normal = merge({}, block);
1116
+
1269
1117
  /**
1270
1118
  * GFM Block Grammar
1271
1119
  */
@@ -1274,8 +1122,8 @@ block.gfm = merge({}, block.normal, {
1274
1122
  table: '^ *([^\\n ].*\\|.*)\\n' // Header
1275
1123
  + ' {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?' // Align
1276
1124
  + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)' // Cells
1277
-
1278
1125
  });
1126
+
1279
1127
  block.gfm.table = edit(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
1280
1128
  .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks
1281
1129
  .getRegex();
@@ -1297,10 +1145,10 @@ block.pedantic = merge({}, block.normal, {
1297
1145
  // fences not supported
1298
1146
  paragraph: edit(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()
1299
1147
  });
1148
+
1300
1149
  /**
1301
1150
  * Inline-Level Grammar
1302
1151
  */
1303
-
1304
1152
  var inline = {
1305
1153
  escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,
1306
1154
  autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/,
@@ -1321,19 +1169,21 @@ var inline = {
1321
1169
  // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a
1322
1170
  rDelimAst: /^[^_*]*?\_\_[^_*]*?\*[^_*]*?(?=\_\_)|[^*]+(?=[^*])|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,
1323
1171
  rDelimUnd: /^[^_*]*?\*\*[^_*]*?\_[^_*]*?(?=\*\*)|[^_]+(?=[^_])|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/ // ^- Not allowed for _
1324
-
1325
1172
  },
1173
+
1326
1174
  code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,
1327
1175
  br: /^( {2,}|\\)\n(?!\s*$)/,
1328
1176
  del: noopTest,
1329
1177
  text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,
1330
1178
  punctuation: /^([\spunctuation])/
1331
- }; // list of punctuation marks from CommonMark spec
1332
- // without * and _ to handle the different emphasis markers * and _
1179
+ };
1333
1180
 
1181
+ // list of punctuation marks from CommonMark spec
1182
+ // without * and _ to handle the different emphasis markers * and _
1334
1183
  inline._punctuation = '!"#$%&\'()+\\-.,/:;<=>?@\\[\\]`^{|}~';
1335
- inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, <html>
1184
+ inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();
1336
1185
 
1186
+ // sequences em should skip over [title](link), `code`, <html>
1337
1187
  inline.blockSkip = /\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;
1338
1188
  inline.escapedEmSt = /\\\*|\\_/g;
1339
1189
  inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();
@@ -1353,11 +1203,13 @@ inline.link = edit(inline.link).replace('label', inline._label).replace('href',
1353
1203
  inline.reflink = edit(inline.reflink).replace('label', inline._label).replace('ref', block._label).getRegex();
1354
1204
  inline.nolink = edit(inline.nolink).replace('ref', block._label).getRegex();
1355
1205
  inline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();
1206
+
1356
1207
  /**
1357
1208
  * Normal Inline Grammar
1358
1209
  */
1359
1210
 
1360
1211
  inline.normal = merge({}, inline);
1212
+
1361
1213
  /**
1362
1214
  * Pedantic Inline Grammar
1363
1215
  */
@@ -1378,6 +1230,7 @@ inline.pedantic = merge({}, inline.normal, {
1378
1230
  link: edit(/^!?\[(label)\]\((.*?)\)/).replace('label', inline._label).getRegex(),
1379
1231
  reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace('label', inline._label).getRegex()
1380
1232
  });
1233
+
1381
1234
  /**
1382
1235
  * GFM Inline Grammar
1383
1236
  */
@@ -1404,46 +1257,46 @@ inline.breaks = merge({}, inline.gfm, {
1404
1257
  * smartypants text replacement
1405
1258
  * @param {string} text
1406
1259
  */
1407
-
1408
1260
  function smartypants(text) {
1409
- return text // em-dashes
1410
- .replace(/---/g, "\u2014") // en-dashes
1411
- .replace(/--/g, "\u2013") // opening singles
1412
- .replace(/(^|[-\u2014/(\[{"\s])'/g, "$1\u2018") // closing singles & apostrophes
1413
- .replace(/'/g, "\u2019") // opening doubles
1414
- .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, "$1\u201C") // closing doubles
1415
- .replace(/"/g, "\u201D") // ellipses
1261
+ return text
1262
+ // em-dashes
1263
+ .replace(/---/g, "\u2014")
1264
+ // en-dashes
1265
+ .replace(/--/g, "\u2013")
1266
+ // opening singles
1267
+ .replace(/(^|[-\u2014/(\[{"\s])'/g, "$1\u2018")
1268
+ // closing singles & apostrophes
1269
+ .replace(/'/g, "\u2019")
1270
+ // opening doubles
1271
+ .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, "$1\u201C")
1272
+ // closing doubles
1273
+ .replace(/"/g, "\u201D")
1274
+ // ellipses
1416
1275
  .replace(/\.{3}/g, "\u2026");
1417
1276
  }
1277
+
1418
1278
  /**
1419
1279
  * mangle email addresses
1420
1280
  * @param {string} text
1421
1281
  */
1422
-
1423
-
1424
1282
  function mangle(text) {
1425
1283
  var out = '',
1426
- i,
1427
- ch;
1284
+ i,
1285
+ ch;
1428
1286
  var l = text.length;
1429
-
1430
1287
  for (i = 0; i < l; i++) {
1431
1288
  ch = text.charCodeAt(i);
1432
-
1433
1289
  if (Math.random() > 0.5) {
1434
1290
  ch = 'x' + ch.toString(16);
1435
1291
  }
1436
-
1437
1292
  out += '&#' + ch + ';';
1438
1293
  }
1439
-
1440
1294
  return out;
1441
1295
  }
1296
+
1442
1297
  /**
1443
1298
  * Block Lexer
1444
1299
  */
1445
-
1446
-
1447
1300
  var Lexer = /*#__PURE__*/function () {
1448
1301
  function Lexer(options) {
1449
1302
  this.tokens = [];
@@ -1463,27 +1316,23 @@ var Lexer = /*#__PURE__*/function () {
1463
1316
  block: block.normal,
1464
1317
  inline: inline.normal
1465
1318
  };
1466
-
1467
1319
  if (this.options.pedantic) {
1468
1320
  rules.block = block.pedantic;
1469
1321
  rules.inline = inline.pedantic;
1470
1322
  } else if (this.options.gfm) {
1471
1323
  rules.block = block.gfm;
1472
-
1473
1324
  if (this.options.breaks) {
1474
1325
  rules.inline = inline.breaks;
1475
1326
  } else {
1476
1327
  rules.inline = inline.gfm;
1477
1328
  }
1478
1329
  }
1479
-
1480
1330
  this.tokenizer.rules = rules;
1481
1331
  }
1332
+
1482
1333
  /**
1483
1334
  * Expose Rules
1484
1335
  */
1485
-
1486
-
1487
1336
  /**
1488
1337
  * Static Lex Method
1489
1338
  */
@@ -1491,45 +1340,37 @@ var Lexer = /*#__PURE__*/function () {
1491
1340
  var lexer = new Lexer(options);
1492
1341
  return lexer.lex(src);
1493
1342
  }
1343
+
1494
1344
  /**
1495
1345
  * Static Lex Inline Method
1496
- */
1497
- ;
1498
-
1346
+ */;
1499
1347
  Lexer.lexInline = function lexInline(src, options) {
1500
1348
  var lexer = new Lexer(options);
1501
1349
  return lexer.inlineTokens(src);
1502
1350
  }
1351
+
1503
1352
  /**
1504
1353
  * Preprocessing
1505
- */
1506
- ;
1507
-
1354
+ */;
1508
1355
  var _proto = Lexer.prototype;
1509
-
1510
1356
  _proto.lex = function lex(src) {
1511
1357
  src = src.replace(/\r\n|\r/g, '\n');
1512
1358
  this.blockTokens(src, this.tokens);
1513
1359
  var next;
1514
-
1515
1360
  while (next = this.inlineQueue.shift()) {
1516
1361
  this.inlineTokens(next.src, next.tokens);
1517
1362
  }
1518
-
1519
1363
  return this.tokens;
1520
1364
  }
1365
+
1521
1366
  /**
1522
1367
  * Lexing
1523
- */
1524
- ;
1525
-
1368
+ */;
1526
1369
  _proto.blockTokens = function blockTokens(src, tokens) {
1527
1370
  var _this = this;
1528
-
1529
1371
  if (tokens === void 0) {
1530
1372
  tokens = [];
1531
1373
  }
1532
-
1533
1374
  if (this.options.pedantic) {
1534
1375
  src = src.replace(/\t/g, ' ').replace(/^ +$/gm, '');
1535
1376
  } else {
@@ -1537,9 +1378,7 @@ var Lexer = /*#__PURE__*/function () {
1537
1378
  return leading + ' '.repeat(tabs.length);
1538
1379
  });
1539
1380
  }
1540
-
1541
1381
  var token, lastToken, cutSrc, lastParagraphClipped;
1542
-
1543
1382
  while (src) {
1544
1383
  if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {
1545
1384
  if (token = extTokenizer.call({
@@ -1549,16 +1388,14 @@ var Lexer = /*#__PURE__*/function () {
1549
1388
  tokens.push(token);
1550
1389
  return true;
1551
1390
  }
1552
-
1553
1391
  return false;
1554
1392
  })) {
1555
1393
  continue;
1556
- } // newline
1557
-
1394
+ }
1558
1395
 
1396
+ // newline
1559
1397
  if (token = this.tokenizer.space(src)) {
1560
1398
  src = src.substring(token.raw.length);
1561
-
1562
1399
  if (token.raw.length === 1 && tokens.length > 0) {
1563
1400
  // if there's a single \n as a spacer, it's terminating the last line,
1564
1401
  // so move it there so that we don't get unecessary paragraph tags
@@ -1566,15 +1403,14 @@ var Lexer = /*#__PURE__*/function () {
1566
1403
  } else {
1567
1404
  tokens.push(token);
1568
1405
  }
1569
-
1570
1406
  continue;
1571
- } // code
1572
-
1407
+ }
1573
1408
 
1409
+ // code
1574
1410
  if (token = this.tokenizer.code(src)) {
1575
1411
  src = src.substring(token.raw.length);
1576
- lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.
1577
-
1412
+ lastToken = tokens[tokens.length - 1];
1413
+ // An indented code block cannot interrupt a paragraph.
1578
1414
  if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
1579
1415
  lastToken.raw += '\n' + token.raw;
1580
1416
  lastToken.text += '\n' + token.text;
@@ -1582,57 +1418,55 @@ var Lexer = /*#__PURE__*/function () {
1582
1418
  } else {
1583
1419
  tokens.push(token);
1584
1420
  }
1585
-
1586
1421
  continue;
1587
- } // fences
1588
-
1422
+ }
1589
1423
 
1424
+ // fences
1590
1425
  if (token = this.tokenizer.fences(src)) {
1591
1426
  src = src.substring(token.raw.length);
1592
1427
  tokens.push(token);
1593
1428
  continue;
1594
- } // heading
1595
-
1429
+ }
1596
1430
 
1431
+ // heading
1597
1432
  if (token = this.tokenizer.heading(src)) {
1598
1433
  src = src.substring(token.raw.length);
1599
1434
  tokens.push(token);
1600
1435
  continue;
1601
- } // hr
1602
-
1436
+ }
1603
1437
 
1438
+ // hr
1604
1439
  if (token = this.tokenizer.hr(src)) {
1605
1440
  src = src.substring(token.raw.length);
1606
1441
  tokens.push(token);
1607
1442
  continue;
1608
- } // blockquote
1609
-
1443
+ }
1610
1444
 
1445
+ // blockquote
1611
1446
  if (token = this.tokenizer.blockquote(src)) {
1612
1447
  src = src.substring(token.raw.length);
1613
1448
  tokens.push(token);
1614
1449
  continue;
1615
- } // list
1616
-
1450
+ }
1617
1451
 
1452
+ // list
1618
1453
  if (token = this.tokenizer.list(src)) {
1619
1454
  src = src.substring(token.raw.length);
1620
1455
  tokens.push(token);
1621
1456
  continue;
1622
- } // html
1623
-
1457
+ }
1624
1458
 
1459
+ // html
1625
1460
  if (token = this.tokenizer.html(src)) {
1626
1461
  src = src.substring(token.raw.length);
1627
1462
  tokens.push(token);
1628
1463
  continue;
1629
- } // def
1630
-
1464
+ }
1631
1465
 
1466
+ // def
1632
1467
  if (token = this.tokenizer.def(src)) {
1633
1468
  src = src.substring(token.raw.length);
1634
1469
  lastToken = tokens[tokens.length - 1];
1635
-
1636
1470
  if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
1637
1471
  lastToken.raw += '\n' + token.raw;
1638
1472
  lastToken.text += '\n' + token.raw;
@@ -1643,53 +1477,46 @@ var Lexer = /*#__PURE__*/function () {
1643
1477
  title: token.title
1644
1478
  };
1645
1479
  }
1646
-
1647
1480
  continue;
1648
- } // table (gfm)
1649
-
1481
+ }
1650
1482
 
1483
+ // table (gfm)
1651
1484
  if (token = this.tokenizer.table(src)) {
1652
1485
  src = src.substring(token.raw.length);
1653
1486
  tokens.push(token);
1654
1487
  continue;
1655
- } // lheading
1656
-
1488
+ }
1657
1489
 
1490
+ // lheading
1658
1491
  if (token = this.tokenizer.lheading(src)) {
1659
1492
  src = src.substring(token.raw.length);
1660
1493
  tokens.push(token);
1661
1494
  continue;
1662
- } // top-level paragraph
1663
- // prevent paragraph consuming extensions by clipping 'src' to extension start
1664
-
1495
+ }
1665
1496
 
1497
+ // top-level paragraph
1498
+ // prevent paragraph consuming extensions by clipping 'src' to extension start
1666
1499
  cutSrc = src;
1667
-
1668
1500
  if (this.options.extensions && this.options.extensions.startBlock) {
1669
1501
  (function () {
1670
1502
  var startIndex = Infinity;
1671
1503
  var tempSrc = src.slice(1);
1672
1504
  var tempStart = void 0;
1673
-
1674
1505
  _this.options.extensions.startBlock.forEach(function (getStartIndex) {
1675
1506
  tempStart = getStartIndex.call({
1676
1507
  lexer: this
1677
1508
  }, tempSrc);
1678
-
1679
1509
  if (typeof tempStart === 'number' && tempStart >= 0) {
1680
1510
  startIndex = Math.min(startIndex, tempStart);
1681
1511
  }
1682
1512
  });
1683
-
1684
1513
  if (startIndex < Infinity && startIndex >= 0) {
1685
1514
  cutSrc = src.substring(0, startIndex + 1);
1686
1515
  }
1687
1516
  })();
1688
1517
  }
1689
-
1690
1518
  if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {
1691
1519
  lastToken = tokens[tokens.length - 1];
1692
-
1693
1520
  if (lastParagraphClipped && lastToken.type === 'paragraph') {
1694
1521
  lastToken.raw += '\n' + token.raw;
1695
1522
  lastToken.text += '\n' + token.text;
@@ -1698,17 +1525,15 @@ var Lexer = /*#__PURE__*/function () {
1698
1525
  } else {
1699
1526
  tokens.push(token);
1700
1527
  }
1701
-
1702
1528
  lastParagraphClipped = cutSrc.length !== src.length;
1703
1529
  src = src.substring(token.raw.length);
1704
1530
  continue;
1705
- } // text
1706
-
1531
+ }
1707
1532
 
1533
+ // text
1708
1534
  if (token = this.tokenizer.text(src)) {
1709
1535
  src = src.substring(token.raw.length);
1710
1536
  lastToken = tokens[tokens.length - 1];
1711
-
1712
1537
  if (lastToken && lastToken.type === 'text') {
1713
1538
  lastToken.raw += '\n' + token.raw;
1714
1539
  lastToken.text += '\n' + token.text;
@@ -1717,13 +1542,10 @@ var Lexer = /*#__PURE__*/function () {
1717
1542
  } else {
1718
1543
  tokens.push(token);
1719
1544
  }
1720
-
1721
1545
  continue;
1722
1546
  }
1723
-
1724
1547
  if (src) {
1725
1548
  var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
1726
-
1727
1549
  if (this.options.silent) {
1728
1550
  console.error(errMsg);
1729
1551
  break;
@@ -1732,43 +1554,38 @@ var Lexer = /*#__PURE__*/function () {
1732
1554
  }
1733
1555
  }
1734
1556
  }
1735
-
1736
1557
  this.state.top = true;
1737
1558
  return tokens;
1738
1559
  };
1739
-
1740
1560
  _proto.inline = function inline(src, tokens) {
1741
1561
  if (tokens === void 0) {
1742
1562
  tokens = [];
1743
1563
  }
1744
-
1745
1564
  this.inlineQueue.push({
1746
1565
  src: src,
1747
1566
  tokens: tokens
1748
1567
  });
1749
1568
  return tokens;
1750
1569
  }
1570
+
1751
1571
  /**
1752
1572
  * Lexing/Compiling
1753
- */
1754
- ;
1755
-
1573
+ */;
1756
1574
  _proto.inlineTokens = function inlineTokens(src, tokens) {
1757
1575
  var _this2 = this;
1758
-
1759
1576
  if (tokens === void 0) {
1760
1577
  tokens = [];
1761
1578
  }
1579
+ var token, lastToken, cutSrc;
1762
1580
 
1763
- var token, lastToken, cutSrc; // String with links masked to avoid interference with em and strong
1764
-
1581
+ // String with links masked to avoid interference with em and strong
1765
1582
  var maskedSrc = src;
1766
1583
  var match;
1767
- var keepPrevChar, prevChar; // Mask out reflinks
1584
+ var keepPrevChar, prevChar;
1768
1585
 
1586
+ // Mask out reflinks
1769
1587
  if (this.tokens.links) {
1770
1588
  var links = Object.keys(this.tokens.links);
1771
-
1772
1589
  if (links.length > 0) {
1773
1590
  while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {
1774
1591
  if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {
@@ -1776,25 +1593,23 @@ var Lexer = /*#__PURE__*/function () {
1776
1593
  }
1777
1594
  }
1778
1595
  }
1779
- } // Mask out other blocks
1780
-
1781
-
1596
+ }
1597
+ // Mask out other blocks
1782
1598
  while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {
1783
1599
  maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
1784
- } // Mask out escaped em & strong delimiters
1785
-
1600
+ }
1786
1601
 
1602
+ // Mask out escaped em & strong delimiters
1787
1603
  while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {
1788
1604
  maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);
1789
1605
  }
1790
-
1791
1606
  while (src) {
1792
1607
  if (!keepPrevChar) {
1793
1608
  prevChar = '';
1794
1609
  }
1610
+ keepPrevChar = false;
1795
1611
 
1796
- keepPrevChar = false; // extensions
1797
-
1612
+ // extensions
1798
1613
  if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {
1799
1614
  if (token = extTokenizer.call({
1800
1615
  lexer: _this2
@@ -1803,148 +1618,132 @@ var Lexer = /*#__PURE__*/function () {
1803
1618
  tokens.push(token);
1804
1619
  return true;
1805
1620
  }
1806
-
1807
1621
  return false;
1808
1622
  })) {
1809
1623
  continue;
1810
- } // escape
1811
-
1624
+ }
1812
1625
 
1626
+ // escape
1813
1627
  if (token = this.tokenizer.escape(src)) {
1814
1628
  src = src.substring(token.raw.length);
1815
1629
  tokens.push(token);
1816
1630
  continue;
1817
- } // tag
1818
-
1631
+ }
1819
1632
 
1633
+ // tag
1820
1634
  if (token = this.tokenizer.tag(src)) {
1821
1635
  src = src.substring(token.raw.length);
1822
1636
  lastToken = tokens[tokens.length - 1];
1823
-
1824
1637
  if (lastToken && token.type === 'text' && lastToken.type === 'text') {
1825
1638
  lastToken.raw += token.raw;
1826
1639
  lastToken.text += token.text;
1827
1640
  } else {
1828
1641
  tokens.push(token);
1829
1642
  }
1830
-
1831
1643
  continue;
1832
- } // link
1833
-
1644
+ }
1834
1645
 
1646
+ // link
1835
1647
  if (token = this.tokenizer.link(src)) {
1836
1648
  src = src.substring(token.raw.length);
1837
1649
  tokens.push(token);
1838
1650
  continue;
1839
- } // reflink, nolink
1840
-
1651
+ }
1841
1652
 
1653
+ // reflink, nolink
1842
1654
  if (token = this.tokenizer.reflink(src, this.tokens.links)) {
1843
1655
  src = src.substring(token.raw.length);
1844
1656
  lastToken = tokens[tokens.length - 1];
1845
-
1846
1657
  if (lastToken && token.type === 'text' && lastToken.type === 'text') {
1847
1658
  lastToken.raw += token.raw;
1848
1659
  lastToken.text += token.text;
1849
1660
  } else {
1850
1661
  tokens.push(token);
1851
1662
  }
1852
-
1853
1663
  continue;
1854
- } // em & strong
1855
-
1664
+ }
1856
1665
 
1666
+ // em & strong
1857
1667
  if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {
1858
1668
  src = src.substring(token.raw.length);
1859
1669
  tokens.push(token);
1860
1670
  continue;
1861
- } // code
1862
-
1671
+ }
1863
1672
 
1673
+ // code
1864
1674
  if (token = this.tokenizer.codespan(src)) {
1865
1675
  src = src.substring(token.raw.length);
1866
1676
  tokens.push(token);
1867
1677
  continue;
1868
- } // br
1869
-
1678
+ }
1870
1679
 
1680
+ // br
1871
1681
  if (token = this.tokenizer.br(src)) {
1872
1682
  src = src.substring(token.raw.length);
1873
1683
  tokens.push(token);
1874
1684
  continue;
1875
- } // del (gfm)
1876
-
1685
+ }
1877
1686
 
1687
+ // del (gfm)
1878
1688
  if (token = this.tokenizer.del(src)) {
1879
1689
  src = src.substring(token.raw.length);
1880
1690
  tokens.push(token);
1881
1691
  continue;
1882
- } // autolink
1883
-
1692
+ }
1884
1693
 
1694
+ // autolink
1885
1695
  if (token = this.tokenizer.autolink(src, mangle)) {
1886
1696
  src = src.substring(token.raw.length);
1887
1697
  tokens.push(token);
1888
1698
  continue;
1889
- } // url (gfm)
1890
-
1699
+ }
1891
1700
 
1701
+ // url (gfm)
1892
1702
  if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {
1893
1703
  src = src.substring(token.raw.length);
1894
1704
  tokens.push(token);
1895
1705
  continue;
1896
- } // text
1897
- // prevent inlineText consuming extensions by clipping 'src' to extension start
1898
-
1706
+ }
1899
1707
 
1708
+ // text
1709
+ // prevent inlineText consuming extensions by clipping 'src' to extension start
1900
1710
  cutSrc = src;
1901
-
1902
1711
  if (this.options.extensions && this.options.extensions.startInline) {
1903
1712
  (function () {
1904
1713
  var startIndex = Infinity;
1905
1714
  var tempSrc = src.slice(1);
1906
1715
  var tempStart = void 0;
1907
-
1908
1716
  _this2.options.extensions.startInline.forEach(function (getStartIndex) {
1909
1717
  tempStart = getStartIndex.call({
1910
1718
  lexer: this
1911
1719
  }, tempSrc);
1912
-
1913
1720
  if (typeof tempStart === 'number' && tempStart >= 0) {
1914
1721
  startIndex = Math.min(startIndex, tempStart);
1915
1722
  }
1916
1723
  });
1917
-
1918
1724
  if (startIndex < Infinity && startIndex >= 0) {
1919
1725
  cutSrc = src.substring(0, startIndex + 1);
1920
1726
  }
1921
1727
  })();
1922
1728
  }
1923
-
1924
1729
  if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {
1925
1730
  src = src.substring(token.raw.length);
1926
-
1927
1731
  if (token.raw.slice(-1) !== '_') {
1928
1732
  // Track prevChar before string of ____ started
1929
1733
  prevChar = token.raw.slice(-1);
1930
1734
  }
1931
-
1932
1735
  keepPrevChar = true;
1933
1736
  lastToken = tokens[tokens.length - 1];
1934
-
1935
1737
  if (lastToken && lastToken.type === 'text') {
1936
1738
  lastToken.raw += token.raw;
1937
1739
  lastToken.text += token.text;
1938
1740
  } else {
1939
1741
  tokens.push(token);
1940
1742
  }
1941
-
1942
1743
  continue;
1943
1744
  }
1944
-
1945
1745
  if (src) {
1946
1746
  var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
1947
-
1948
1747
  if (this.options.silent) {
1949
1748
  console.error(errMsg);
1950
1749
  break;
@@ -1953,10 +1752,8 @@ var Lexer = /*#__PURE__*/function () {
1953
1752
  }
1954
1753
  }
1955
1754
  }
1956
-
1957
1755
  return tokens;
1958
1756
  };
1959
-
1960
1757
  _createClass(Lexer, null, [{
1961
1758
  key: "rules",
1962
1759
  get: function get() {
@@ -1966,212 +1763,175 @@ var Lexer = /*#__PURE__*/function () {
1966
1763
  };
1967
1764
  }
1968
1765
  }]);
1969
-
1970
1766
  return Lexer;
1971
1767
  }();
1972
1768
 
1973
1769
  /**
1974
1770
  * Renderer
1975
1771
  */
1976
-
1977
1772
  var Renderer = /*#__PURE__*/function () {
1978
1773
  function Renderer(options) {
1979
1774
  this.options = options || exports.defaults;
1980
1775
  }
1981
-
1982
1776
  var _proto = Renderer.prototype;
1983
-
1984
1777
  _proto.code = function code(_code, infostring, escaped) {
1985
1778
  var lang = (infostring || '').match(/\S*/)[0];
1986
-
1987
1779
  if (this.options.highlight) {
1988
1780
  var out = this.options.highlight(_code, lang);
1989
-
1990
1781
  if (out != null && out !== _code) {
1991
1782
  escaped = true;
1992
1783
  _code = out;
1993
1784
  }
1994
1785
  }
1995
-
1996
1786
  _code = _code.replace(/\n$/, '') + '\n';
1997
-
1998
1787
  if (!lang) {
1999
1788
  return '<pre><code>' + (escaped ? _code : escape(_code, true)) + '</code></pre>\n';
2000
1789
  }
2001
-
2002
1790
  return '<pre><code class="' + this.options.langPrefix + escape(lang, true) + '">' + (escaped ? _code : escape(_code, true)) + '</code></pre>\n';
2003
1791
  }
1792
+
2004
1793
  /**
2005
1794
  * @param {string} quote
2006
- */
2007
- ;
2008
-
1795
+ */;
2009
1796
  _proto.blockquote = function blockquote(quote) {
2010
1797
  return "<blockquote>\n" + quote + "</blockquote>\n";
2011
1798
  };
2012
-
2013
1799
  _proto.html = function html(_html) {
2014
1800
  return _html;
2015
1801
  }
1802
+
2016
1803
  /**
2017
1804
  * @param {string} text
2018
1805
  * @param {string} level
2019
1806
  * @param {string} raw
2020
1807
  * @param {any} slugger
2021
- */
2022
- ;
2023
-
1808
+ */;
2024
1809
  _proto.heading = function heading(text, level, raw, slugger) {
2025
1810
  if (this.options.headerIds) {
2026
1811
  var id = this.options.headerPrefix + slugger.slug(raw);
2027
1812
  return "<h" + level + " id=\"" + id + "\">" + text + "</h" + level + ">\n";
2028
- } // ignore IDs
2029
-
1813
+ }
2030
1814
 
1815
+ // ignore IDs
2031
1816
  return "<h" + level + ">" + text + "</h" + level + ">\n";
2032
1817
  };
2033
-
2034
1818
  _proto.hr = function hr() {
2035
1819
  return this.options.xhtml ? '<hr/>\n' : '<hr>\n';
2036
1820
  };
2037
-
2038
1821
  _proto.list = function list(body, ordered, start) {
2039
1822
  var type = ordered ? 'ol' : 'ul',
2040
- startatt = ordered && start !== 1 ? ' start="' + start + '"' : '';
1823
+ startatt = ordered && start !== 1 ? ' start="' + start + '"' : '';
2041
1824
  return '<' + type + startatt + '>\n' + body + '</' + type + '>\n';
2042
1825
  }
1826
+
2043
1827
  /**
2044
1828
  * @param {string} text
2045
- */
2046
- ;
2047
-
1829
+ */;
2048
1830
  _proto.listitem = function listitem(text) {
2049
1831
  return "<li>" + text + "</li>\n";
2050
1832
  };
2051
-
2052
1833
  _proto.checkbox = function checkbox(checked) {
2053
1834
  return '<input ' + (checked ? 'checked="" ' : '') + 'disabled="" type="checkbox"' + (this.options.xhtml ? ' /' : '') + '> ';
2054
1835
  }
1836
+
2055
1837
  /**
2056
1838
  * @param {string} text
2057
- */
2058
- ;
2059
-
1839
+ */;
2060
1840
  _proto.paragraph = function paragraph(text) {
2061
1841
  return "<p>" + text + "</p>\n";
2062
1842
  }
1843
+
2063
1844
  /**
2064
1845
  * @param {string} header
2065
1846
  * @param {string} body
2066
- */
2067
- ;
2068
-
1847
+ */;
2069
1848
  _proto.table = function table(header, body) {
2070
1849
  if (body) body = "<tbody>" + body + "</tbody>";
2071
1850
  return '<table>\n' + '<thead>\n' + header + '</thead>\n' + body + '</table>\n';
2072
1851
  }
1852
+
2073
1853
  /**
2074
1854
  * @param {string} content
2075
- */
2076
- ;
2077
-
1855
+ */;
2078
1856
  _proto.tablerow = function tablerow(content) {
2079
1857
  return "<tr>\n" + content + "</tr>\n";
2080
1858
  };
2081
-
2082
1859
  _proto.tablecell = function tablecell(content, flags) {
2083
1860
  var type = flags.header ? 'th' : 'td';
2084
1861
  var tag = flags.align ? "<" + type + " align=\"" + flags.align + "\">" : "<" + type + ">";
2085
1862
  return tag + content + ("</" + type + ">\n");
2086
1863
  }
1864
+
2087
1865
  /**
2088
1866
  * span level renderer
2089
1867
  * @param {string} text
2090
- */
2091
- ;
2092
-
1868
+ */;
2093
1869
  _proto.strong = function strong(text) {
2094
1870
  return "<strong>" + text + "</strong>";
2095
1871
  }
1872
+
2096
1873
  /**
2097
1874
  * @param {string} text
2098
- */
2099
- ;
2100
-
1875
+ */;
2101
1876
  _proto.em = function em(text) {
2102
1877
  return "<em>" + text + "</em>";
2103
1878
  }
1879
+
2104
1880
  /**
2105
1881
  * @param {string} text
2106
- */
2107
- ;
2108
-
1882
+ */;
2109
1883
  _proto.codespan = function codespan(text) {
2110
1884
  return "<code>" + text + "</code>";
2111
1885
  };
2112
-
2113
1886
  _proto.br = function br() {
2114
1887
  return this.options.xhtml ? '<br/>' : '<br>';
2115
1888
  }
1889
+
2116
1890
  /**
2117
1891
  * @param {string} text
2118
- */
2119
- ;
2120
-
1892
+ */;
2121
1893
  _proto.del = function del(text) {
2122
1894
  return "<del>" + text + "</del>";
2123
1895
  }
1896
+
2124
1897
  /**
2125
1898
  * @param {string} href
2126
1899
  * @param {string} title
2127
1900
  * @param {string} text
2128
- */
2129
- ;
2130
-
1901
+ */;
2131
1902
  _proto.link = function link(href, title, text) {
2132
1903
  href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
2133
-
2134
1904
  if (href === null) {
2135
1905
  return text;
2136
1906
  }
2137
-
2138
1907
  var out = '<a href="' + escape(href) + '"';
2139
-
2140
1908
  if (title) {
2141
1909
  out += ' title="' + title + '"';
2142
1910
  }
2143
-
2144
1911
  out += '>' + text + '</a>';
2145
1912
  return out;
2146
1913
  }
1914
+
2147
1915
  /**
2148
1916
  * @param {string} href
2149
1917
  * @param {string} title
2150
1918
  * @param {string} text
2151
- */
2152
- ;
2153
-
1919
+ */;
2154
1920
  _proto.image = function image(href, title, text) {
2155
1921
  href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
2156
-
2157
1922
  if (href === null) {
2158
1923
  return text;
2159
1924
  }
2160
-
2161
1925
  var out = "<img src=\"" + href + "\" alt=\"" + text + "\"";
2162
-
2163
1926
  if (title) {
2164
1927
  out += " title=\"" + title + "\"";
2165
1928
  }
2166
-
2167
1929
  out += this.options.xhtml ? '/>' : '>';
2168
1930
  return out;
2169
1931
  };
2170
-
2171
1932
  _proto.text = function text(_text) {
2172
1933
  return _text;
2173
1934
  };
2174
-
2175
1935
  return Renderer;
2176
1936
  }();
2177
1937
 
@@ -2181,46 +1941,35 @@ var Renderer = /*#__PURE__*/function () {
2181
1941
  */
2182
1942
  var TextRenderer = /*#__PURE__*/function () {
2183
1943
  function TextRenderer() {}
2184
-
2185
1944
  var _proto = TextRenderer.prototype;
2186
-
2187
1945
  // no need for block level renderers
2188
1946
  _proto.strong = function strong(text) {
2189
1947
  return text;
2190
1948
  };
2191
-
2192
1949
  _proto.em = function em(text) {
2193
1950
  return text;
2194
1951
  };
2195
-
2196
1952
  _proto.codespan = function codespan(text) {
2197
1953
  return text;
2198
1954
  };
2199
-
2200
1955
  _proto.del = function del(text) {
2201
1956
  return text;
2202
1957
  };
2203
-
2204
1958
  _proto.html = function html(text) {
2205
1959
  return text;
2206
1960
  };
2207
-
2208
1961
  _proto.text = function text(_text) {
2209
1962
  return _text;
2210
1963
  };
2211
-
2212
1964
  _proto.link = function link(href, title, text) {
2213
1965
  return '' + text;
2214
1966
  };
2215
-
2216
1967
  _proto.image = function image(href, title, text) {
2217
1968
  return '' + text;
2218
1969
  };
2219
-
2220
1970
  _proto.br = function br() {
2221
1971
  return '';
2222
1972
  };
2223
-
2224
1973
  return TextRenderer;
2225
1974
  }();
2226
1975
 
@@ -2231,69 +1980,60 @@ var Slugger = /*#__PURE__*/function () {
2231
1980
  function Slugger() {
2232
1981
  this.seen = {};
2233
1982
  }
1983
+
2234
1984
  /**
2235
1985
  * @param {string} value
2236
1986
  */
2237
-
2238
-
2239
1987
  var _proto = Slugger.prototype;
2240
-
2241
1988
  _proto.serialize = function serialize(value) {
2242
- return value.toLowerCase().trim() // remove html tags
2243
- .replace(/<[!\/a-z].*?>/ig, '') // remove unwanted chars
1989
+ return value.toLowerCase().trim()
1990
+ // remove html tags
1991
+ .replace(/<[!\/a-z].*?>/ig, '')
1992
+ // remove unwanted chars
2244
1993
  .replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g, '').replace(/\s/g, '-');
2245
1994
  }
1995
+
2246
1996
  /**
2247
1997
  * Finds the next safe (unique) slug to use
2248
1998
  * @param {string} originalSlug
2249
1999
  * @param {boolean} isDryRun
2250
- */
2251
- ;
2252
-
2000
+ */;
2253
2001
  _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {
2254
2002
  var slug = originalSlug;
2255
2003
  var occurenceAccumulator = 0;
2256
-
2257
2004
  if (this.seen.hasOwnProperty(slug)) {
2258
2005
  occurenceAccumulator = this.seen[originalSlug];
2259
-
2260
2006
  do {
2261
2007
  occurenceAccumulator++;
2262
2008
  slug = originalSlug + '-' + occurenceAccumulator;
2263
2009
  } while (this.seen.hasOwnProperty(slug));
2264
2010
  }
2265
-
2266
2011
  if (!isDryRun) {
2267
2012
  this.seen[originalSlug] = occurenceAccumulator;
2268
2013
  this.seen[slug] = 0;
2269
2014
  }
2270
-
2271
2015
  return slug;
2272
2016
  }
2017
+
2273
2018
  /**
2274
2019
  * Convert string to unique id
2275
2020
  * @param {object} [options]
2276
2021
  * @param {boolean} [options.dryrun] Generates the next unique slug without
2277
2022
  * updating the internal accumulator.
2278
- */
2279
- ;
2280
-
2023
+ */;
2281
2024
  _proto.slug = function slug(value, options) {
2282
2025
  if (options === void 0) {
2283
2026
  options = {};
2284
2027
  }
2285
-
2286
2028
  var slug = this.serialize(value);
2287
2029
  return this.getNextSafeSlug(slug, options.dryrun);
2288
2030
  };
2289
-
2290
2031
  return Slugger;
2291
2032
  }();
2292
2033
 
2293
2034
  /**
2294
2035
  * Parsing & Compiling
2295
2036
  */
2296
-
2297
2037
  var Parser = /*#__PURE__*/function () {
2298
2038
  function Parser(options) {
2299
2039
  this.options = options || exports.defaults;
@@ -2303,140 +2043,122 @@ var Parser = /*#__PURE__*/function () {
2303
2043
  this.textRenderer = new TextRenderer();
2304
2044
  this.slugger = new Slugger();
2305
2045
  }
2046
+
2306
2047
  /**
2307
2048
  * Static Parse Method
2308
2049
  */
2309
-
2310
-
2311
2050
  Parser.parse = function parse(tokens, options) {
2312
2051
  var parser = new Parser(options);
2313
2052
  return parser.parse(tokens);
2314
2053
  }
2054
+
2315
2055
  /**
2316
2056
  * Static Parse Inline Method
2317
- */
2318
- ;
2319
-
2057
+ */;
2320
2058
  Parser.parseInline = function parseInline(tokens, options) {
2321
2059
  var parser = new Parser(options);
2322
2060
  return parser.parseInline(tokens);
2323
2061
  }
2062
+
2324
2063
  /**
2325
2064
  * Parse Loop
2326
- */
2327
- ;
2328
-
2065
+ */;
2329
2066
  var _proto = Parser.prototype;
2330
-
2331
2067
  _proto.parse = function parse(tokens, top) {
2332
2068
  if (top === void 0) {
2333
2069
  top = true;
2334
2070
  }
2335
-
2336
2071
  var out = '',
2337
- i,
2338
- j,
2339
- k,
2340
- l2,
2341
- l3,
2342
- row,
2343
- cell,
2344
- header,
2345
- body,
2346
- token,
2347
- ordered,
2348
- start,
2349
- loose,
2350
- itemBody,
2351
- item,
2352
- checked,
2353
- task,
2354
- checkbox,
2355
- ret;
2072
+ i,
2073
+ j,
2074
+ k,
2075
+ l2,
2076
+ l3,
2077
+ row,
2078
+ cell,
2079
+ header,
2080
+ body,
2081
+ token,
2082
+ ordered,
2083
+ start,
2084
+ loose,
2085
+ itemBody,
2086
+ item,
2087
+ checked,
2088
+ task,
2089
+ checkbox,
2090
+ ret;
2356
2091
  var l = tokens.length;
2357
-
2358
2092
  for (i = 0; i < l; i++) {
2359
- token = tokens[i]; // Run any renderer extensions
2093
+ token = tokens[i];
2360
2094
 
2095
+ // Run any renderer extensions
2361
2096
  if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
2362
2097
  ret = this.options.extensions.renderers[token.type].call({
2363
2098
  parser: this
2364
2099
  }, token);
2365
-
2366
2100
  if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {
2367
2101
  out += ret || '';
2368
2102
  continue;
2369
2103
  }
2370
2104
  }
2371
-
2372
2105
  switch (token.type) {
2373
2106
  case 'space':
2374
2107
  {
2375
2108
  continue;
2376
2109
  }
2377
-
2378
2110
  case 'hr':
2379
2111
  {
2380
2112
  out += this.renderer.hr();
2381
2113
  continue;
2382
2114
  }
2383
-
2384
2115
  case 'heading':
2385
2116
  {
2386
2117
  out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);
2387
2118
  continue;
2388
2119
  }
2389
-
2390
2120
  case 'code':
2391
2121
  {
2392
2122
  out += this.renderer.code(token.text, token.lang, token.escaped);
2393
2123
  continue;
2394
2124
  }
2395
-
2396
2125
  case 'table':
2397
2126
  {
2398
- header = ''; // header
2127
+ header = '';
2399
2128
 
2129
+ // header
2400
2130
  cell = '';
2401
2131
  l2 = token.header.length;
2402
-
2403
2132
  for (j = 0; j < l2; j++) {
2404
2133
  cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {
2405
2134
  header: true,
2406
2135
  align: token.align[j]
2407
2136
  });
2408
2137
  }
2409
-
2410
2138
  header += this.renderer.tablerow(cell);
2411
2139
  body = '';
2412
2140
  l2 = token.rows.length;
2413
-
2414
2141
  for (j = 0; j < l2; j++) {
2415
2142
  row = token.rows[j];
2416
2143
  cell = '';
2417
2144
  l3 = row.length;
2418
-
2419
2145
  for (k = 0; k < l3; k++) {
2420
2146
  cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {
2421
2147
  header: false,
2422
2148
  align: token.align[k]
2423
2149
  });
2424
2150
  }
2425
-
2426
2151
  body += this.renderer.tablerow(cell);
2427
2152
  }
2428
-
2429
2153
  out += this.renderer.table(header, body);
2430
2154
  continue;
2431
2155
  }
2432
-
2433
2156
  case 'blockquote':
2434
2157
  {
2435
2158
  body = this.parse(token.tokens);
2436
2159
  out += this.renderer.blockquote(body);
2437
2160
  continue;
2438
2161
  }
2439
-
2440
2162
  case 'list':
2441
2163
  {
2442
2164
  ordered = token.ordered;
@@ -2444,20 +2166,16 @@ var Parser = /*#__PURE__*/function () {
2444
2166
  loose = token.loose;
2445
2167
  l2 = token.items.length;
2446
2168
  body = '';
2447
-
2448
2169
  for (j = 0; j < l2; j++) {
2449
2170
  item = token.items[j];
2450
2171
  checked = item.checked;
2451
2172
  task = item.task;
2452
2173
  itemBody = '';
2453
-
2454
2174
  if (item.task) {
2455
2175
  checkbox = this.renderer.checkbox(checked);
2456
-
2457
2176
  if (loose) {
2458
2177
  if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {
2459
2178
  item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;
2460
-
2461
2179
  if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {
2462
2180
  item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;
2463
2181
  }
@@ -2471,45 +2189,36 @@ var Parser = /*#__PURE__*/function () {
2471
2189
  itemBody += checkbox;
2472
2190
  }
2473
2191
  }
2474
-
2475
2192
  itemBody += this.parse(item.tokens, loose);
2476
2193
  body += this.renderer.listitem(itemBody, task, checked);
2477
2194
  }
2478
-
2479
2195
  out += this.renderer.list(body, ordered, start);
2480
2196
  continue;
2481
2197
  }
2482
-
2483
2198
  case 'html':
2484
2199
  {
2485
2200
  // TODO parse inline content if parameter markdown=1
2486
2201
  out += this.renderer.html(token.text);
2487
2202
  continue;
2488
2203
  }
2489
-
2490
2204
  case 'paragraph':
2491
2205
  {
2492
2206
  out += this.renderer.paragraph(this.parseInline(token.tokens));
2493
2207
  continue;
2494
2208
  }
2495
-
2496
2209
  case 'text':
2497
2210
  {
2498
2211
  body = token.tokens ? this.parseInline(token.tokens) : token.text;
2499
-
2500
2212
  while (i + 1 < l && tokens[i + 1].type === 'text') {
2501
2213
  token = tokens[++i];
2502
2214
  body += '\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);
2503
2215
  }
2504
-
2505
2216
  out += top ? this.renderer.paragraph(body) : body;
2506
2217
  continue;
2507
2218
  }
2508
-
2509
2219
  default:
2510
2220
  {
2511
2221
  var errMsg = 'Token with "' + token.type + '" type was not found.';
2512
-
2513
2222
  if (this.options.silent) {
2514
2223
  console.error(errMsg);
2515
2224
  return;
@@ -2519,101 +2228,86 @@ var Parser = /*#__PURE__*/function () {
2519
2228
  }
2520
2229
  }
2521
2230
  }
2522
-
2523
2231
  return out;
2524
2232
  }
2233
+
2525
2234
  /**
2526
2235
  * Parse Inline Tokens
2527
- */
2528
- ;
2529
-
2236
+ */;
2530
2237
  _proto.parseInline = function parseInline(tokens, renderer) {
2531
2238
  renderer = renderer || this.renderer;
2532
2239
  var out = '',
2533
- i,
2534
- token,
2535
- ret;
2240
+ i,
2241
+ token,
2242
+ ret;
2536
2243
  var l = tokens.length;
2537
-
2538
2244
  for (i = 0; i < l; i++) {
2539
- token = tokens[i]; // Run any renderer extensions
2245
+ token = tokens[i];
2540
2246
 
2247
+ // Run any renderer extensions
2541
2248
  if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
2542
2249
  ret = this.options.extensions.renderers[token.type].call({
2543
2250
  parser: this
2544
2251
  }, token);
2545
-
2546
2252
  if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {
2547
2253
  out += ret || '';
2548
2254
  continue;
2549
2255
  }
2550
2256
  }
2551
-
2552
2257
  switch (token.type) {
2553
2258
  case 'escape':
2554
2259
  {
2555
2260
  out += renderer.text(token.text);
2556
2261
  break;
2557
2262
  }
2558
-
2559
2263
  case 'html':
2560
2264
  {
2561
2265
  out += renderer.html(token.text);
2562
2266
  break;
2563
2267
  }
2564
-
2565
2268
  case 'link':
2566
2269
  {
2567
2270
  out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));
2568
2271
  break;
2569
2272
  }
2570
-
2571
2273
  case 'image':
2572
2274
  {
2573
2275
  out += renderer.image(token.href, token.title, token.text);
2574
2276
  break;
2575
2277
  }
2576
-
2577
2278
  case 'strong':
2578
2279
  {
2579
2280
  out += renderer.strong(this.parseInline(token.tokens, renderer));
2580
2281
  break;
2581
2282
  }
2582
-
2583
2283
  case 'em':
2584
2284
  {
2585
2285
  out += renderer.em(this.parseInline(token.tokens, renderer));
2586
2286
  break;
2587
2287
  }
2588
-
2589
2288
  case 'codespan':
2590
2289
  {
2591
2290
  out += renderer.codespan(token.text);
2592
2291
  break;
2593
2292
  }
2594
-
2595
2293
  case 'br':
2596
2294
  {
2597
2295
  out += renderer.br();
2598
2296
  break;
2599
2297
  }
2600
-
2601
2298
  case 'del':
2602
2299
  {
2603
2300
  out += renderer.del(this.parseInline(token.tokens, renderer));
2604
2301
  break;
2605
2302
  }
2606
-
2607
2303
  case 'text':
2608
2304
  {
2609
2305
  out += renderer.text(token.text);
2610
2306
  break;
2611
2307
  }
2612
-
2613
2308
  default:
2614
2309
  {
2615
2310
  var errMsg = 'Token with "' + token.type + '" type was not found.';
2616
-
2617
2311
  if (this.options.silent) {
2618
2312
  console.error(errMsg);
2619
2313
  return;
@@ -2623,68 +2317,54 @@ var Parser = /*#__PURE__*/function () {
2623
2317
  }
2624
2318
  }
2625
2319
  }
2626
-
2627
2320
  return out;
2628
2321
  };
2629
-
2630
2322
  return Parser;
2631
2323
  }();
2632
2324
 
2633
2325
  /**
2634
2326
  * Marked
2635
2327
  */
2636
-
2637
2328
  function marked(src, opt, callback) {
2638
2329
  // throw error in case of non string input
2639
2330
  if (typeof src === 'undefined' || src === null) {
2640
2331
  throw new Error('marked(): input parameter is undefined or null');
2641
2332
  }
2642
-
2643
2333
  if (typeof src !== 'string') {
2644
2334
  throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');
2645
2335
  }
2646
-
2647
2336
  if (typeof opt === 'function') {
2648
2337
  callback = opt;
2649
2338
  opt = null;
2650
2339
  }
2651
-
2652
2340
  opt = merge({}, marked.defaults, opt || {});
2653
2341
  checkSanitizeDeprecation(opt);
2654
-
2655
2342
  if (callback) {
2656
2343
  var highlight = opt.highlight;
2657
2344
  var tokens;
2658
-
2659
2345
  try {
2660
2346
  tokens = Lexer.lex(src, opt);
2661
2347
  } catch (e) {
2662
2348
  return callback(e);
2663
2349
  }
2664
-
2665
2350
  var done = function done(err) {
2666
2351
  var out;
2667
-
2668
2352
  if (!err) {
2669
2353
  try {
2670
2354
  if (opt.walkTokens) {
2671
2355
  marked.walkTokens(tokens, opt.walkTokens);
2672
2356
  }
2673
-
2674
2357
  out = Parser.parse(tokens, opt);
2675
2358
  } catch (e) {
2676
2359
  err = e;
2677
2360
  }
2678
2361
  }
2679
-
2680
2362
  opt.highlight = highlight;
2681
2363
  return err ? callback(err) : callback(null, out);
2682
2364
  };
2683
-
2684
2365
  if (!highlight || highlight.length < 3) {
2685
2366
  return done();
2686
2367
  }
2687
-
2688
2368
  delete opt.highlight;
2689
2369
  if (!tokens.length) return done();
2690
2370
  var pending = 0;
@@ -2696,14 +2376,11 @@ function marked(src, opt, callback) {
2696
2376
  if (err) {
2697
2377
  return done(err);
2698
2378
  }
2699
-
2700
2379
  if (code != null && code !== token.text) {
2701
2380
  token.text = code;
2702
2381
  token.escaped = true;
2703
2382
  }
2704
-
2705
2383
  pending--;
2706
-
2707
2384
  if (pending === 0) {
2708
2385
  done();
2709
2386
  }
@@ -2711,42 +2388,34 @@ function marked(src, opt, callback) {
2711
2388
  }, 0);
2712
2389
  }
2713
2390
  });
2714
-
2715
2391
  if (pending === 0) {
2716
2392
  done();
2717
2393
  }
2718
-
2719
2394
  return;
2720
2395
  }
2721
-
2722
2396
  function onError(e) {
2723
2397
  e.message += '\nPlease report this to https://github.com/markedjs/marked.';
2724
-
2725
2398
  if (opt.silent) {
2726
2399
  return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
2727
2400
  }
2728
-
2729
2401
  throw e;
2730
2402
  }
2731
-
2732
2403
  try {
2733
2404
  var _tokens = Lexer.lex(src, opt);
2734
-
2735
2405
  if (opt.walkTokens) {
2736
2406
  if (opt.async) {
2737
2407
  return Promise.all(marked.walkTokens(_tokens, opt.walkTokens)).then(function () {
2738
2408
  return Parser.parse(_tokens, opt);
2739
2409
  })["catch"](onError);
2740
2410
  }
2741
-
2742
2411
  marked.walkTokens(_tokens, opt.walkTokens);
2743
2412
  }
2744
-
2745
2413
  return Parser.parse(_tokens, opt);
2746
2414
  } catch (e) {
2747
2415
  onError(e);
2748
2416
  }
2749
2417
  }
2418
+
2750
2419
  /**
2751
2420
  * Options
2752
2421
  */
@@ -2756,9 +2425,9 @@ marked.options = marked.setOptions = function (opt) {
2756
2425
  changeDefaults(marked.defaults);
2757
2426
  return marked;
2758
2427
  };
2759
-
2760
2428
  marked.getDefaults = getDefaults;
2761
2429
  marked.defaults = exports.defaults;
2430
+
2762
2431
  /**
2763
2432
  * Use Extension
2764
2433
  */
@@ -2767,7 +2436,6 @@ marked.use = function () {
2767
2436
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2768
2437
  args[_key] = arguments[_key];
2769
2438
  }
2770
-
2771
2439
  var opts = merge.apply(void 0, [{}].concat(args));
2772
2440
  var extensions = marked.defaults.extensions || {
2773
2441
  renderers: {},
@@ -2782,43 +2450,35 @@ marked.use = function () {
2782
2450
  if (!ext.name) {
2783
2451
  throw new Error('extension name required');
2784
2452
  }
2785
-
2786
2453
  if (ext.renderer) {
2787
2454
  // Renderer extensions
2788
2455
  var prevRenderer = extensions.renderers ? extensions.renderers[ext.name] : null;
2789
-
2790
2456
  if (prevRenderer) {
2791
2457
  // Replace extension with func to run new extension but fall back if false
2792
2458
  extensions.renderers[ext.name] = function () {
2793
2459
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
2794
2460
  args[_key2] = arguments[_key2];
2795
2461
  }
2796
-
2797
2462
  var ret = ext.renderer.apply(this, args);
2798
-
2799
2463
  if (ret === false) {
2800
2464
  ret = prevRenderer.apply(this, args);
2801
2465
  }
2802
-
2803
2466
  return ret;
2804
2467
  };
2805
2468
  } else {
2806
2469
  extensions.renderers[ext.name] = ext.renderer;
2807
2470
  }
2808
2471
  }
2809
-
2810
2472
  if (ext.tokenizer) {
2811
2473
  // Tokenizer Extensions
2812
2474
  if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {
2813
2475
  throw new Error("extension level must be 'block' or 'inline'");
2814
2476
  }
2815
-
2816
2477
  if (extensions[ext.level]) {
2817
2478
  extensions[ext.level].unshift(ext.tokenizer);
2818
2479
  } else {
2819
2480
  extensions[ext.level] = [ext.tokenizer];
2820
2481
  }
2821
-
2822
2482
  if (ext.start) {
2823
2483
  // Function to check for start of token
2824
2484
  if (ext.level === 'block') {
@@ -2836,110 +2496,89 @@ marked.use = function () {
2836
2496
  }
2837
2497
  }
2838
2498
  }
2839
-
2840
2499
  if (ext.childTokens) {
2841
2500
  // Child tokens to be visited by walkTokens
2842
2501
  extensions.childTokens[ext.name] = ext.childTokens;
2843
2502
  }
2844
2503
  });
2845
- } // ==-- Parse "overwrite" extensions --== //
2846
-
2504
+ }
2847
2505
 
2506
+ // ==-- Parse "overwrite" extensions --== //
2848
2507
  if (pack.renderer) {
2849
2508
  (function () {
2850
2509
  var renderer = marked.defaults.renderer || new Renderer();
2851
-
2852
2510
  var _loop = function _loop(prop) {
2853
- var prevRenderer = renderer[prop]; // Replace renderer with func to run extension, but fall back if false
2854
-
2511
+ var prevRenderer = renderer[prop];
2512
+ // Replace renderer with func to run extension, but fall back if false
2855
2513
  renderer[prop] = function () {
2856
2514
  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
2857
2515
  args[_key3] = arguments[_key3];
2858
2516
  }
2859
-
2860
2517
  var ret = pack.renderer[prop].apply(renderer, args);
2861
-
2862
2518
  if (ret === false) {
2863
2519
  ret = prevRenderer.apply(renderer, args);
2864
2520
  }
2865
-
2866
2521
  return ret;
2867
2522
  };
2868
2523
  };
2869
-
2870
2524
  for (var prop in pack.renderer) {
2871
2525
  _loop(prop);
2872
2526
  }
2873
-
2874
2527
  opts.renderer = renderer;
2875
2528
  })();
2876
2529
  }
2877
-
2878
2530
  if (pack.tokenizer) {
2879
2531
  (function () {
2880
2532
  var tokenizer = marked.defaults.tokenizer || new Tokenizer();
2881
-
2882
2533
  var _loop2 = function _loop2(prop) {
2883
- var prevTokenizer = tokenizer[prop]; // Replace tokenizer with func to run extension, but fall back if false
2884
-
2534
+ var prevTokenizer = tokenizer[prop];
2535
+ // Replace tokenizer with func to run extension, but fall back if false
2885
2536
  tokenizer[prop] = function () {
2886
2537
  for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
2887
2538
  args[_key4] = arguments[_key4];
2888
2539
  }
2889
-
2890
2540
  var ret = pack.tokenizer[prop].apply(tokenizer, args);
2891
-
2892
2541
  if (ret === false) {
2893
2542
  ret = prevTokenizer.apply(tokenizer, args);
2894
2543
  }
2895
-
2896
2544
  return ret;
2897
2545
  };
2898
2546
  };
2899
-
2900
2547
  for (var prop in pack.tokenizer) {
2901
2548
  _loop2(prop);
2902
2549
  }
2903
-
2904
2550
  opts.tokenizer = tokenizer;
2905
2551
  })();
2906
- } // ==-- Parse WalkTokens extensions --== //
2907
-
2552
+ }
2908
2553
 
2554
+ // ==-- Parse WalkTokens extensions --== //
2909
2555
  if (pack.walkTokens) {
2910
2556
  var _walkTokens = marked.defaults.walkTokens;
2911
-
2912
2557
  opts.walkTokens = function (token) {
2913
2558
  var values = [];
2914
2559
  values.push(pack.walkTokens.call(this, token));
2915
-
2916
2560
  if (_walkTokens) {
2917
2561
  values = values.concat(_walkTokens.call(this, token));
2918
2562
  }
2919
-
2920
2563
  return values;
2921
2564
  };
2922
2565
  }
2923
-
2924
2566
  if (hasExtensions) {
2925
2567
  opts.extensions = extensions;
2926
2568
  }
2927
-
2928
2569
  marked.setOptions(opts);
2929
2570
  });
2930
2571
  };
2572
+
2931
2573
  /**
2932
2574
  * Run callback for every token
2933
2575
  */
2934
2576
 
2935
-
2936
2577
  marked.walkTokens = function (tokens, callback) {
2937
2578
  var values = [];
2938
-
2939
2579
  var _loop3 = function _loop3() {
2940
2580
  var token = _step.value;
2941
2581
  values = values.concat(callback.call(marked, token));
2942
-
2943
2582
  switch (token.type) {
2944
2583
  case 'table':
2945
2584
  {
@@ -2947,25 +2586,20 @@ marked.walkTokens = function (tokens, callback) {
2947
2586
  var cell = _step2.value;
2948
2587
  values = values.concat(marked.walkTokens(cell.tokens, callback));
2949
2588
  }
2950
-
2951
2589
  for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {
2952
2590
  var row = _step3.value;
2953
-
2954
2591
  for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {
2955
2592
  var _cell = _step4.value;
2956
2593
  values = values.concat(marked.walkTokens(_cell.tokens, callback));
2957
2594
  }
2958
2595
  }
2959
-
2960
2596
  break;
2961
2597
  }
2962
-
2963
2598
  case 'list':
2964
2599
  {
2965
2600
  values = values.concat(marked.walkTokens(token.items, callback));
2966
2601
  break;
2967
2602
  }
2968
-
2969
2603
  default:
2970
2604
  {
2971
2605
  if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {
@@ -2979,55 +2613,44 @@ marked.walkTokens = function (tokens, callback) {
2979
2613
  }
2980
2614
  }
2981
2615
  };
2982
-
2983
2616
  for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
2984
2617
  _loop3();
2985
2618
  }
2986
-
2987
2619
  return values;
2988
2620
  };
2621
+
2989
2622
  /**
2990
2623
  * Parse Inline
2991
2624
  * @param {string} src
2992
2625
  */
2993
-
2994
-
2995
2626
  marked.parseInline = function (src, opt) {
2996
2627
  // throw error in case of non string input
2997
2628
  if (typeof src === 'undefined' || src === null) {
2998
2629
  throw new Error('marked.parseInline(): input parameter is undefined or null');
2999
2630
  }
3000
-
3001
2631
  if (typeof src !== 'string') {
3002
2632
  throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');
3003
2633
  }
3004
-
3005
2634
  opt = merge({}, marked.defaults, opt || {});
3006
2635
  checkSanitizeDeprecation(opt);
3007
-
3008
2636
  try {
3009
2637
  var tokens = Lexer.lexInline(src, opt);
3010
-
3011
2638
  if (opt.walkTokens) {
3012
2639
  marked.walkTokens(tokens, opt.walkTokens);
3013
2640
  }
3014
-
3015
2641
  return Parser.parseInline(tokens, opt);
3016
2642
  } catch (e) {
3017
2643
  e.message += '\nPlease report this to https://github.com/markedjs/marked.';
3018
-
3019
2644
  if (opt.silent) {
3020
2645
  return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
3021
2646
  }
3022
-
3023
2647
  throw e;
3024
2648
  }
3025
2649
  };
2650
+
3026
2651
  /**
3027
2652
  * Expose
3028
2653
  */
3029
-
3030
-
3031
2654
  marked.Parser = Parser;
3032
2655
  marked.parser = Parser.parse;
3033
2656
  marked.Renderer = Renderer;