marked 13.0.0 → 13.0.2

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.d.cts CHANGED
@@ -396,15 +396,15 @@ export interface RendererExtension {
396
396
  export type TokenizerAndRendererExtension = TokenizerExtension | RendererExtension | (TokenizerExtension & RendererExtension);
397
397
  export type HooksApi = Omit<_Hooks, "constructor" | "options">;
398
398
  export type HooksObject = {
399
- [K in keyof HooksApi]?: (...args: Parameters<HooksApi[K]>) => ReturnType<HooksApi[K]> | Promise<ReturnType<HooksApi[K]>>;
399
+ [K in keyof HooksApi]?: (this: _Hooks, ...args: Parameters<HooksApi[K]>) => ReturnType<HooksApi[K]> | Promise<ReturnType<HooksApi[K]>>;
400
400
  };
401
401
  export type RendererApi = Omit<_Renderer, "constructor" | "options" | "parser">;
402
402
  export type RendererObject = {
403
- [K in keyof RendererApi]?: (...args: Parameters<RendererApi[K]>) => ReturnType<RendererApi[K]> | false;
403
+ [K in keyof RendererApi]?: (this: _Renderer, ...args: Parameters<RendererApi[K]>) => ReturnType<RendererApi[K]> | false;
404
404
  };
405
405
  export type TokenizerApi = Omit<_Tokenizer, "constructor" | "options" | "rules" | "lexer">;
406
406
  export type TokenizerObject = {
407
- [K in keyof TokenizerApi]?: (...args: Parameters<TokenizerApi[K]>) => ReturnType<TokenizerApi[K]> | false;
407
+ [K in keyof TokenizerApi]?: (this: _Tokenizer, ...args: Parameters<TokenizerApi[K]>) => ReturnType<TokenizerApi[K]> | false;
408
408
  };
409
409
  export interface MarkedExtension {
410
410
  /**
@@ -636,7 +636,7 @@ export declare namespace marked {
636
636
  var defaults: MarkedOptions;
637
637
  var use: (...args: MarkedExtension[]) => typeof marked;
638
638
  var walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[];
639
- var parseInline: (src: string, options?: MarkedOptions | null | undefined) => string | Promise<string>;
639
+ var parseInline: (src: string, options?: MarkedOptions | undefined | null) => string | Promise<string>;
640
640
  var Parser: typeof _Parser;
641
641
  var parser: typeof _Parser.parse;
642
642
  var Renderer: typeof _Renderer;
@@ -651,7 +651,7 @@ export declare const options: (options: MarkedOptions) => typeof marked;
651
651
  export declare const setOptions: (options: MarkedOptions) => typeof marked;
652
652
  export declare const use: (...args: MarkedExtension[]) => typeof marked;
653
653
  export declare const walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[];
654
- export declare const parseInline: (src: string, options?: MarkedOptions | null | undefined) => string | Promise<string>;
654
+ export declare const parseInline: (src: string, options?: MarkedOptions | undefined | null) => string | Promise<string>;
655
655
  export declare const parse: typeof marked;
656
656
  export declare const parser: typeof _Parser.parse;
657
657
  export declare const lexer: typeof _Lexer.lex;
package/lib/marked.d.ts CHANGED
@@ -396,15 +396,15 @@ export interface RendererExtension {
396
396
  export type TokenizerAndRendererExtension = TokenizerExtension | RendererExtension | (TokenizerExtension & RendererExtension);
397
397
  export type HooksApi = Omit<_Hooks, "constructor" | "options">;
398
398
  export type HooksObject = {
399
- [K in keyof HooksApi]?: (...args: Parameters<HooksApi[K]>) => ReturnType<HooksApi[K]> | Promise<ReturnType<HooksApi[K]>>;
399
+ [K in keyof HooksApi]?: (this: _Hooks, ...args: Parameters<HooksApi[K]>) => ReturnType<HooksApi[K]> | Promise<ReturnType<HooksApi[K]>>;
400
400
  };
401
401
  export type RendererApi = Omit<_Renderer, "constructor" | "options" | "parser">;
402
402
  export type RendererObject = {
403
- [K in keyof RendererApi]?: (...args: Parameters<RendererApi[K]>) => ReturnType<RendererApi[K]> | false;
403
+ [K in keyof RendererApi]?: (this: _Renderer, ...args: Parameters<RendererApi[K]>) => ReturnType<RendererApi[K]> | false;
404
404
  };
405
405
  export type TokenizerApi = Omit<_Tokenizer, "constructor" | "options" | "rules" | "lexer">;
406
406
  export type TokenizerObject = {
407
- [K in keyof TokenizerApi]?: (...args: Parameters<TokenizerApi[K]>) => ReturnType<TokenizerApi[K]> | false;
407
+ [K in keyof TokenizerApi]?: (this: _Tokenizer, ...args: Parameters<TokenizerApi[K]>) => ReturnType<TokenizerApi[K]> | false;
408
408
  };
409
409
  export interface MarkedExtension {
410
410
  /**
@@ -636,7 +636,7 @@ export declare namespace marked {
636
636
  var defaults: MarkedOptions;
637
637
  var use: (...args: MarkedExtension[]) => typeof marked;
638
638
  var walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[];
639
- var parseInline: (src: string, options?: MarkedOptions | null | undefined) => string | Promise<string>;
639
+ var parseInline: (src: string, options?: MarkedOptions | undefined | null) => string | Promise<string>;
640
640
  var Parser: typeof _Parser;
641
641
  var parser: typeof _Parser.parse;
642
642
  var Renderer: typeof _Renderer;
@@ -651,7 +651,7 @@ export declare const options: (options: MarkedOptions) => typeof marked;
651
651
  export declare const setOptions: (options: MarkedOptions) => typeof marked;
652
652
  export declare const use: (...args: MarkedExtension[]) => typeof marked;
653
653
  export declare const walkTokens: (tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) => MaybePromise[];
654
- export declare const parseInline: (src: string, options?: MarkedOptions | null | undefined) => string | Promise<string>;
654
+ export declare const parseInline: (src: string, options?: MarkedOptions | undefined | null) => string | Promise<string>;
655
655
  export declare const parse: typeof marked;
656
656
  export declare const parser: typeof _Parser.parse;
657
657
  export declare const lexer: typeof _Lexer.lex;
package/lib/marked.esm.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * marked v13.0.0 - a markdown parser
2
+ * marked v13.0.2 - a markdown parser
3
3
  * Copyright (c) 2011-2024, Christopher Jeffrey. (MIT Licensed)
4
4
  * https://github.com/markedjs/marked
5
5
  */
@@ -415,12 +415,12 @@ class _Tokenizer {
415
415
  }
416
416
  // Get next list item
417
417
  const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`);
418
- let raw = '';
419
- let itemContents = '';
420
418
  let endsWithBlankLine = false;
421
419
  // Check if current bullet point can start a new List Item
422
420
  while (src) {
423
421
  let endEarly = false;
422
+ let raw = '';
423
+ let itemContents = '';
424
424
  if (!(cap = itemRegex.exec(src))) {
425
425
  break;
426
426
  }
@@ -431,19 +431,22 @@ class _Tokenizer {
431
431
  src = src.substring(raw.length);
432
432
  let line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t) => ' '.repeat(3 * t.length));
433
433
  let nextLine = src.split('\n', 1)[0];
434
+ let blankLine = !line.trim();
434
435
  let indent = 0;
435
436
  if (this.options.pedantic) {
436
437
  indent = 2;
437
438
  itemContents = line.trimStart();
438
439
  }
440
+ else if (blankLine) {
441
+ indent = cap[1].length + 1;
442
+ }
439
443
  else {
440
444
  indent = cap[2].search(/[^ ]/); // Find first non-space char
441
445
  indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent
442
446
  itemContents = line.slice(indent);
443
447
  indent += cap[1].length;
444
448
  }
445
- let blankLine = false;
446
- if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line
449
+ if (blankLine && /^ *$/.test(nextLine)) { // Items begin with at most one blank line
447
450
  raw += nextLine + '\n';
448
451
  src = src.substring(nextLine.length + 1);
449
452
  endEarly = true;
@@ -539,8 +542,8 @@ class _Tokenizer {
539
542
  list.raw += raw;
540
543
  }
541
544
  // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic
542
- list.items[list.items.length - 1].raw = raw.trimEnd();
543
- (list.items[list.items.length - 1]).text = itemContents.trimEnd();
545
+ list.items[list.items.length - 1].raw = list.items[list.items.length - 1].raw.trimEnd();
546
+ list.items[list.items.length - 1].text = list.items[list.items.length - 1].text.trimEnd();
544
547
  list.raw = list.raw.trimEnd();
545
548
  // Item child tokens handled here at end because we needed to have the final item to trim it first
546
549
  for (let i = 0; i < list.items.length; i++) {
@@ -2356,7 +2359,7 @@ class Marked {
2356
2359
  // eslint-disable-next-line prefer-rest-params
2357
2360
  return func.apply(this, arguments);
2358
2361
  }
2359
- return func(renderer.parser.parseInline(token.tokens), token.depth, unescape(renderer.parser.parseInline(token.tokens, renderer.parser.textRenderer)));
2362
+ return func.call(this, renderer.parser.parseInline(token.tokens), token.depth, unescape(renderer.parser.parseInline(token.tokens, renderer.parser.textRenderer)));
2360
2363
  };
2361
2364
  case 'code':
2362
2365
  return function (token) {
@@ -2365,7 +2368,7 @@ class Marked {
2365
2368
  // eslint-disable-next-line prefer-rest-params
2366
2369
  return func.apply(this, arguments);
2367
2370
  }
2368
- return func(token.text, token.lang, !!token.escaped);
2371
+ return func.call(this, token.text, token.lang, !!token.escaped);
2369
2372
  };
2370
2373
  case 'table':
2371
2374
  return function (token) {
@@ -2400,7 +2403,7 @@ class Marked {
2400
2403
  }
2401
2404
  body += this.tablerow({ text: cell });
2402
2405
  }
2403
- return func(header, body);
2406
+ return func.call(this, header, body);
2404
2407
  };
2405
2408
  case 'blockquote':
2406
2409
  return function (token) {
@@ -2410,7 +2413,7 @@ class Marked {
2410
2413
  return func.apply(this, arguments);
2411
2414
  }
2412
2415
  const body = this.parser.parse(token.tokens);
2413
- return func(body);
2416
+ return func.call(this, body);
2414
2417
  };
2415
2418
  case 'list':
2416
2419
  return function (token) {
@@ -2459,7 +2462,7 @@ class Marked {
2459
2462
  tokens: item.tokens
2460
2463
  });
2461
2464
  }
2462
- return func(body, ordered, start);
2465
+ return func.call(this, body, ordered, start);
2463
2466
  };
2464
2467
  case 'html':
2465
2468
  return function (token) {
@@ -2468,7 +2471,7 @@ class Marked {
2468
2471
  // eslint-disable-next-line prefer-rest-params
2469
2472
  return func.apply(this, arguments);
2470
2473
  }
2471
- return func(token.text, token.block);
2474
+ return func.call(this, token.text, token.block);
2472
2475
  };
2473
2476
  case 'paragraph':
2474
2477
  return function (token) {
@@ -2477,7 +2480,7 @@ class Marked {
2477
2480
  // eslint-disable-next-line prefer-rest-params
2478
2481
  return func.apply(this, arguments);
2479
2482
  }
2480
- return func(this.parser.parseInline(token.tokens));
2483
+ return func.call(this, this.parser.parseInline(token.tokens));
2481
2484
  };
2482
2485
  case 'escape':
2483
2486
  return function (token) {
@@ -2486,7 +2489,7 @@ class Marked {
2486
2489
  // eslint-disable-next-line prefer-rest-params
2487
2490
  return func.apply(this, arguments);
2488
2491
  }
2489
- return func(token.text);
2492
+ return func.call(this, token.text);
2490
2493
  };
2491
2494
  case 'link':
2492
2495
  return function (token) {
@@ -2495,7 +2498,7 @@ class Marked {
2495
2498
  // eslint-disable-next-line prefer-rest-params
2496
2499
  return func.apply(this, arguments);
2497
2500
  }
2498
- return func(token.href, token.title, this.parser.parseInline(token.tokens));
2501
+ return func.call(this, token.href, token.title, this.parser.parseInline(token.tokens));
2499
2502
  };
2500
2503
  case 'image':
2501
2504
  return function (token) {
@@ -2504,7 +2507,7 @@ class Marked {
2504
2507
  // eslint-disable-next-line prefer-rest-params
2505
2508
  return func.apply(this, arguments);
2506
2509
  }
2507
- return func(token.href, token.title, token.text);
2510
+ return func.call(this, token.href, token.title, token.text);
2508
2511
  };
2509
2512
  case 'strong':
2510
2513
  return function (token) {
@@ -2513,7 +2516,7 @@ class Marked {
2513
2516
  // eslint-disable-next-line prefer-rest-params
2514
2517
  return func.apply(this, arguments);
2515
2518
  }
2516
- return func(this.parser.parseInline(token.tokens));
2519
+ return func.call(this, this.parser.parseInline(token.tokens));
2517
2520
  };
2518
2521
  case 'em':
2519
2522
  return function (token) {
@@ -2522,7 +2525,7 @@ class Marked {
2522
2525
  // eslint-disable-next-line prefer-rest-params
2523
2526
  return func.apply(this, arguments);
2524
2527
  }
2525
- return func(this.parser.parseInline(token.tokens));
2528
+ return func.call(this, this.parser.parseInline(token.tokens));
2526
2529
  };
2527
2530
  case 'codespan':
2528
2531
  return function (token) {
@@ -2531,7 +2534,7 @@ class Marked {
2531
2534
  // eslint-disable-next-line prefer-rest-params
2532
2535
  return func.apply(this, arguments);
2533
2536
  }
2534
- return func(token.text);
2537
+ return func.call(this, token.text);
2535
2538
  };
2536
2539
  case 'del':
2537
2540
  return function (token) {
@@ -2540,7 +2543,7 @@ class Marked {
2540
2543
  // eslint-disable-next-line prefer-rest-params
2541
2544
  return func.apply(this, arguments);
2542
2545
  }
2543
- return func(this.parser.parseInline(token.tokens));
2546
+ return func.call(this, this.parser.parseInline(token.tokens));
2544
2547
  };
2545
2548
  case 'text':
2546
2549
  return function (token) {
@@ -2549,7 +2552,7 @@ class Marked {
2549
2552
  // eslint-disable-next-line prefer-rest-params
2550
2553
  return func.apply(this, arguments);
2551
2554
  }
2552
- return func(token.text);
2555
+ return func.call(this, token.text);
2553
2556
  };
2554
2557
  // do nothing
2555
2558
  }