marked 7.0.1 → 7.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.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * marked v7.0.1 - a markdown parser
2
+ * marked v7.0.2 - a markdown parser
3
3
  * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)
4
4
  * https://github.com/markedjs/marked
5
5
  */
@@ -191,12 +191,14 @@ function splitCells(tableRow, count) {
191
191
  if (cells.length > 0 && !cells[cells.length - 1].trim()) {
192
192
  cells.pop();
193
193
  }
194
- if (cells.length > count) {
195
- cells.splice(count);
196
- }
197
- else {
198
- while (cells.length < count)
199
- cells.push('');
194
+ if (count) {
195
+ if (cells.length > count) {
196
+ cells.splice(count);
197
+ }
198
+ else {
199
+ while (cells.length < count)
200
+ cells.push('');
201
+ }
200
202
  }
201
203
  for (; i < cells.length; i++) {
202
204
  // leading or trailing whitespace is ignored per the gfm spec
@@ -629,8 +631,7 @@ class _Tokenizer {
629
631
  if (cap) {
630
632
  const item = {
631
633
  type: 'table',
632
- // splitCells expects a number as second argument
633
- // @ts-expect-error
634
+ raw: cap[0],
634
635
  header: splitCells(cap[1]).map(c => {
635
636
  return { text: c };
636
637
  }),
@@ -638,7 +639,6 @@ class _Tokenizer {
638
639
  rows: cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []
639
640
  };
640
641
  if (item.header.length === item.align.length) {
641
- item.raw = cap[0];
642
642
  let l = item.align.length;
643
643
  let i, j, k, row;
644
644
  for (i = 0; i < l; i++) {
@@ -1408,7 +1408,10 @@ class _Lexer {
1408
1408
  return leading + ' '.repeat(tabs.length);
1409
1409
  });
1410
1410
  }
1411
- let token, lastToken, cutSrc, lastParagraphClipped;
1411
+ let token;
1412
+ let lastToken;
1413
+ let cutSrc;
1414
+ let lastParagraphClipped;
1412
1415
  while (src) {
1413
1416
  if (this.options.extensions
1414
1417
  && this.options.extensions.block
@@ -2258,6 +2261,7 @@ class Marked {
2258
2261
  default: {
2259
2262
  if (this.defaults.extensions && this.defaults.extensions.childTokens && this.defaults.extensions.childTokens[token.type]) { // Walk any extensions
2260
2263
  this.defaults.extensions.childTokens[token.type].forEach((childTokens) => {
2264
+ // @ts-expect-error we assume token[childToken] is an array of tokens but we can't be sure
2261
2265
  values = values.concat(this.walkTokens(token[childTokens], callback));
2262
2266
  });
2263
2267
  }
@@ -2337,14 +2341,16 @@ class Marked {
2337
2341
  if (pack.renderer) {
2338
2342
  const renderer = this.defaults.renderer || new _Renderer(this.defaults);
2339
2343
  for (const prop in pack.renderer) {
2340
- const prevRenderer = renderer[prop];
2344
+ const rendererFunc = pack.renderer[prop];
2345
+ const rendererKey = prop;
2346
+ const prevRenderer = renderer[rendererKey];
2341
2347
  // Replace renderer with func to run extension, but fall back if false
2342
- renderer[prop] = (...args) => {
2343
- let ret = pack.renderer[prop].apply(renderer, args);
2348
+ renderer[rendererKey] = (...args) => {
2349
+ let ret = rendererFunc.apply(renderer, args);
2344
2350
  if (ret === false) {
2345
2351
  ret = prevRenderer.apply(renderer, args);
2346
2352
  }
2347
- return ret;
2353
+ return ret || '';
2348
2354
  };
2349
2355
  }
2350
2356
  opts.renderer = renderer;
@@ -2352,10 +2358,12 @@ class Marked {
2352
2358
  if (pack.tokenizer) {
2353
2359
  const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);
2354
2360
  for (const prop in pack.tokenizer) {
2355
- const prevTokenizer = tokenizer[prop];
2361
+ const tokenizerFunc = pack.tokenizer[prop];
2362
+ const tokenizerKey = prop;
2363
+ const prevTokenizer = tokenizer[tokenizerKey];
2356
2364
  // Replace tokenizer with func to run extension, but fall back if false
2357
- tokenizer[prop] = (...args) => {
2358
- let ret = pack.tokenizer[prop].apply(tokenizer, args);
2365
+ tokenizer[tokenizerKey] = (...args) => {
2366
+ let ret = tokenizerFunc.apply(tokenizer, args);
2359
2367
  if (ret === false) {
2360
2368
  ret = prevTokenizer.apply(tokenizer, args);
2361
2369
  }
@@ -2368,21 +2376,23 @@ class Marked {
2368
2376
  if (pack.hooks) {
2369
2377
  const hooks = this.defaults.hooks || new _Hooks();
2370
2378
  for (const prop in pack.hooks) {
2371
- const prevHook = hooks[prop];
2379
+ const hooksFunc = pack.hooks[prop];
2380
+ const hooksKey = prop;
2381
+ const prevHook = hooks[hooksKey];
2372
2382
  if (_Hooks.passThroughHooks.has(prop)) {
2373
- hooks[prop] = (arg) => {
2383
+ hooks[hooksKey] = (arg) => {
2374
2384
  if (this.defaults.async) {
2375
- return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(ret => {
2385
+ return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {
2376
2386
  return prevHook.call(hooks, ret);
2377
2387
  });
2378
2388
  }
2379
- const ret = pack.hooks[prop].call(hooks, arg);
2389
+ const ret = hooksFunc.call(hooks, arg);
2380
2390
  return prevHook.call(hooks, ret);
2381
2391
  };
2382
2392
  }
2383
2393
  else {
2384
- hooks[prop] = (...args) => {
2385
- let ret = pack.hooks[prop].apply(hooks, args);
2394
+ hooks[hooksKey] = (...args) => {
2395
+ let ret = hooksFunc.apply(hooks, args);
2386
2396
  if (ret === false) {
2387
2397
  ret = prevHook.apply(hooks, args);
2388
2398
  }