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