stream-markdown-parser 0.0.25 → 0.0.26

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/factory.ts","../src/types.ts","../src/parser/inline-parsers/index.ts","../src/parser/index.ts","../src/config.ts","../src/findMatchingClose.ts","../src/parser/inline-parsers/fence-parser.ts","../src/plugins/containers.ts","../src/plugins/isMathLike.ts","../src/plugins/math.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/factory.ts","../src/types.ts","../src/parser/inline-parsers/index.ts","../src/parser/index.ts","../src/config.ts","../src/findMatchingClose.ts","../src/parser/inline-parsers/fence-parser.ts","../src/plugins/containers.ts","../src/plugins/isMathLike.ts","../src/plugins/math.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -250,6 +250,76 @@ function applyFixLinkInline(md) {
250
250
 
251
251
  //#endregion
252
252
  //#region src/plugins/fixLinkTokens.ts
253
+ function textToken(content) {
254
+ return {
255
+ type: "text",
256
+ content,
257
+ raw: content
258
+ };
259
+ }
260
+ function pushEmOpen(arr, type) {
261
+ if (type === 1) arr.push({
262
+ type: "em_open",
263
+ tag: "em",
264
+ nesting: 1
265
+ });
266
+ else if (type === 2) arr.push({
267
+ type: "strong_open",
268
+ tag: "strong",
269
+ nesting: 1
270
+ });
271
+ else if (type === 3) {
272
+ arr.push({
273
+ type: "strong_open",
274
+ tag: "strong",
275
+ nesting: 1
276
+ });
277
+ arr.push({
278
+ type: "em_open",
279
+ tag: "em",
280
+ nesting: 1
281
+ });
282
+ }
283
+ }
284
+ function pushEmClose(arr, type) {
285
+ if (type === 1) arr.push({
286
+ type: "em_close",
287
+ tag: "em",
288
+ nesting: -1
289
+ });
290
+ else if (type === 2) arr.push({
291
+ type: "strong_close",
292
+ tag: "strong",
293
+ nesting: -1
294
+ });
295
+ else if (type === 3) {
296
+ arr.push({
297
+ type: "em_close",
298
+ tag: "em",
299
+ nesting: -1
300
+ });
301
+ arr.push({
302
+ type: "strong_close",
303
+ tag: "strong",
304
+ nesting: -1
305
+ });
306
+ }
307
+ }
308
+ function createLinkToken(text, href, loading) {
309
+ return {
310
+ type: "link",
311
+ loading,
312
+ href,
313
+ title: "",
314
+ text,
315
+ children: [{
316
+ type: "text",
317
+ content: text,
318
+ raw: text
319
+ }],
320
+ raw: String(`[${text}](${href})`)
321
+ };
322
+ }
253
323
  function applyFixLinkTokens(md) {
254
324
  md.core.ruler.after("inline", "fix_link_tokens", (state) => {
255
325
  const toks = state.tokens ?? [];
@@ -266,7 +336,15 @@ function applyFixLinkTokens(md) {
266
336
  function fixLinkToken(tokens) {
267
337
  if (tokens.length < 4) return tokens;
268
338
  for (let i = 0; i <= tokens.length - 1; i++) {
339
+ if (i < 0) i = 0;
269
340
  if (!tokens[i]) break;
341
+ if (tokens[i]?.type === "em_open" && tokens[i - 1]?.type === "text" && tokens[i - 1].content?.endsWith("*")) {
342
+ const beforeText = tokens[i - 1].content?.replace(/(\*+)$/, "") || "";
343
+ tokens[i - 1].content = beforeText;
344
+ tokens[i].type = "strong_open";
345
+ tokens[i].tag = "strong";
346
+ tokens[i].markup = "**";
347
+ }
270
348
  if (tokens[i]?.type === "text" && tokens[i].content?.endsWith("(") && tokens[i + 1]?.type === "link_open") {
271
349
  const match = tokens[i].content.match(/\[([^\]]+)\]/);
272
350
  if (match) {
@@ -275,116 +353,55 @@ function fixLinkToken(tokens) {
275
353
  const replacerTokens = [];
276
354
  if (emphasisMatch) {
277
355
  beforeText = beforeText.slice(0, emphasisMatch.index);
278
- if (beforeText) replacerTokens.push({
279
- type: "text",
280
- content: beforeText,
281
- raw: beforeText
282
- });
356
+ if (beforeText) replacerTokens.push(textToken(beforeText));
283
357
  const text = match[1];
284
358
  const type = emphasisMatch[1].length;
285
- if (type === 1) replacerTokens.push({
286
- type: "em_open",
287
- tag: "em",
288
- nesting: 1
289
- });
290
- else if (type === 2) replacerTokens.push({
291
- type: "strong_open",
292
- tag: "strong",
293
- nesting: 1
294
- });
295
- else if (type === 3) {
296
- replacerTokens.push({
297
- type: "strong_open",
298
- tag: "strong",
299
- nesting: 1
300
- });
301
- replacerTokens.push({
302
- type: "em_open",
303
- tag: "em",
304
- nesting: 1
305
- });
306
- }
359
+ pushEmOpen(replacerTokens, type);
307
360
  let href = tokens[i + 2]?.content || "";
308
361
  if (tokens[i + 4]?.type === "text" && !tokens[i + 4].content?.startsWith(")")) {
309
362
  href += tokens[i + 4]?.content || "";
310
363
  tokens[i + 4].content = "";
311
364
  }
312
- replacerTokens.push({
313
- type: "link",
314
- loading: !tokens[i + 4]?.content?.startsWith(")"),
315
- href,
316
- title: "",
317
- text,
318
- children: [{
319
- type: "text",
320
- content: text,
321
- raw: text
322
- }],
323
- raw: String(`[${text}](${href})`)
324
- });
325
- if (type === 1) replacerTokens.push({
326
- type: "em_close",
327
- tag: "em",
328
- nesting: -1
329
- });
330
- else if (type === 2) replacerTokens.push({
331
- type: "strong_close",
332
- tag: "strong",
333
- nesting: -1
334
- });
335
- else if (type === 3) {
336
- replacerTokens.push({
337
- type: "em_close",
338
- tag: "em",
339
- nesting: -1
340
- });
341
- replacerTokens.push({
342
- type: "strong_close",
343
- tag: "strong",
344
- nesting: -1
345
- });
346
- }
365
+ replacerTokens.push(createLinkToken(text, href, !tokens[i + 4]?.content?.startsWith(")")));
366
+ pushEmClose(replacerTokens, type);
347
367
  if (tokens[i + 4]?.type === "text") {
348
368
  const afterText = tokens[i + 4].content?.replace(/^\)\**/, "");
349
- if (afterText) replacerTokens.push({
350
- type: "text",
351
- content: afterText,
352
- raw: afterText
353
- });
369
+ if (afterText) replacerTokens.push(textToken(afterText));
354
370
  tokens.splice(i, 5, ...replacerTokens);
355
371
  } else tokens.splice(i, 4, ...replacerTokens);
356
372
  } else {
357
- if (beforeText) replacerTokens.push({
358
- type: "text",
359
- content: beforeText,
360
- raw: beforeText
361
- });
362
- const text = match[1];
373
+ if (beforeText) replacerTokens.push(textToken(beforeText));
374
+ let text = match[1];
375
+ const emphasisMatch$1 = text.match(/^\*+/);
376
+ if (emphasisMatch$1) {
377
+ const type = emphasisMatch$1[0].length;
378
+ text = text.replace(/^\*+/, "").replace(/\*+$/, "");
379
+ let href$1 = tokens[i + 2]?.content || "";
380
+ if (tokens[i + 4]?.type === "text" && !tokens[i + 4].content?.startsWith(")")) {
381
+ href$1 += tokens[i + 4]?.content || "";
382
+ tokens[i + 4].content = "";
383
+ }
384
+ pushEmOpen(replacerTokens, type);
385
+ replacerTokens.push(createLinkToken(text, href$1, !tokens[i + 4]?.content?.startsWith(")")));
386
+ pushEmClose(replacerTokens, type);
387
+ if (tokens[i + 4]?.type === "text") {
388
+ const afterText = tokens[i + 4].content?.replace(/^\)/, "");
389
+ if (afterText) replacerTokens.push(textToken(afterText));
390
+ tokens.splice(i, 5, ...replacerTokens);
391
+ } else tokens.splice(i, 4, ...replacerTokens);
392
+ if (i === 0) i = replacerTokens.length - 1;
393
+ else i -= replacerTokens.length - 1;
394
+ continue;
395
+ }
363
396
  let href = tokens[i + 2]?.content || "";
364
397
  if (tokens[i + 4]?.type === "text" && !tokens[i + 4].content?.startsWith(")")) {
365
398
  href += tokens[i + 4]?.content || "";
366
399
  tokens[i + 4].content = "";
367
400
  }
368
- replacerTokens.push(...[{
369
- type: "link",
370
- loading: !tokens[i + 4]?.content?.startsWith(")"),
371
- href,
372
- title: "",
373
- text,
374
- children: [{
375
- type: "text",
376
- content: text,
377
- raw: text
378
- }],
379
- raw: String(`[${text}](${href})`)
380
- }]);
401
+ replacerTokens.push(createLinkToken(text, href, !tokens[i + 4]?.content?.startsWith(")")));
381
402
  if (tokens[i + 4]?.type === "text") {
382
403
  const afterText = tokens[i + 4].content?.replace(/^\)/, "");
383
- if (afterText) replacerTokens.push({
384
- type: "text",
385
- content: afterText,
386
- raw: afterText
387
- });
404
+ if (afterText) replacerTokens.push(textToken(afterText));
388
405
  tokens.splice(i, 5, ...replacerTokens);
389
406
  } else tokens.splice(i, 4, ...replacerTokens);
390
407
  }
@@ -403,25 +420,9 @@ function fixLinkToken(tokens) {
403
420
  href += tokens[i + 3]?.content?.slice(0, m) || "";
404
421
  tokens[i + 3].content = "";
405
422
  }
406
- replacerTokens.push({
407
- type: "link",
408
- loading,
409
- href,
410
- title: "",
411
- text,
412
- children: [{
413
- type: "text",
414
- content: text,
415
- raw: text
416
- }],
417
- raw: String(`[${text}](${href})`)
418
- });
423
+ replacerTokens.push(createLinkToken(text, href, loading));
419
424
  const afterText = tokens[i + 3].content?.replace(/^\)\**/, "");
420
- if (afterText) replacerTokens.push({
421
- type: "text",
422
- content: afterText,
423
- raw: afterText
424
- });
425
+ if (afterText) replacerTokens.push(textToken(afterText));
425
426
  tokens.splice(i - 4, 8, ...replacerTokens);
426
427
  } else {
427
428
  replacerTokens.push({
@@ -440,24 +441,67 @@ function fixLinkToken(tokens) {
440
441
  tokens.splice(i - 4, 7, ...replacerTokens);
441
442
  }
442
443
  continue;
444
+ } else if (tokens[i - 1].content === "](" && tokens[i - 3]?.type === "text" && tokens[i - 3].content?.endsWith(")")) if (tokens[i - 2]?.type === "strong_open") {
445
+ const [beforeText, linText] = tokens[i - 3].content?.split("[**") || [];
446
+ tokens[i + 1].content = linText || "";
447
+ tokens[i - 3].content = beforeText || "";
448
+ tokens[i - 1].content = "";
449
+ } else if (tokens[i - 2]?.type === "em_open") {
450
+ const [beforeText, linText] = tokens[i - 3].content?.split("[*") || [];
451
+ tokens[i + 1].content = linText || "";
452
+ tokens[i - 3].content = beforeText || "";
453
+ tokens[i - 1].content = "";
454
+ } else {
455
+ const [beforeText, linText] = tokens[i - 3].content?.split("[") || [];
456
+ tokens[i + 1].content = linText || "";
457
+ tokens[i - 3].content = beforeText || "";
458
+ tokens[i - 1].content = "";
443
459
  }
444
460
  }
445
- if (tokens[i].type === "link_close" && tokens[i].nesting === -1 && tokens[i + 1]?.type === "text" && tokens[i - 1]?.type === "text" && tokens[i + 2]?.type !== "link_open") {
446
- tokens[i - 2].loading = true;
461
+ if (tokens[i].type === "link_close" && tokens[i].nesting === -1 && tokens[i + 1]?.type === "text" && tokens[i - 1]?.type === "text") {
462
+ let loading = true;
447
463
  const text = tokens[i - 1].content || "";
448
464
  let href = tokens[i - 2].attrs?.[0]?.[1] || "";
449
465
  let count = 3;
466
+ let deleteCount = 2;
467
+ const emphasisMatch = (tokens[i - 3]?.content || "").match(/^(\*+)$/);
468
+ const replacerTokens = [];
469
+ if (emphasisMatch) {
470
+ deleteCount += 1;
471
+ const type = emphasisMatch[1].length;
472
+ pushEmOpen(replacerTokens, type);
473
+ }
474
+ if (tokens[i].markup === "" || tokens[i + 1].type === "text" && (tokens[i + 1].content === "." || tokens[i + 1].content === "?")) loading = false;
450
475
  if (tokens[i].markup === "linkify" && tokens[i + 1]?.type === "text" && !tokens[i + 1]?.content?.startsWith(" ")) {
451
476
  const m = (tokens[i + 1]?.content ?? "").indexOf(")");
452
477
  if (m === -1) {
453
478
  href += tokens[i + 1]?.content?.slice(0, m) || "";
454
479
  tokens[i + 1].content = "";
455
- }
480
+ } else loading = false;
456
481
  count += 1;
482
+ } else if (tokens[i + 1].type === "text" && tokens[i + 1]?.content?.startsWith("](")) {
483
+ count += 1;
484
+ for (let j = i + 1; j < tokens.length; j++) {
485
+ const type = emphasisMatch ? emphasisMatch[1].length : tokens[i - 3].markup.length;
486
+ const t = tokens[j];
487
+ if (type === 1 && t.type === "em_close") {
488
+ loading = false;
489
+ break;
490
+ } else if (type === 2 && t.type === "strong_close") {
491
+ loading = false;
492
+ break;
493
+ } else if (type === 3) {
494
+ if (t.type === "em_close" || t.type === "strong_close") {
495
+ loading = false;
496
+ break;
497
+ }
498
+ }
499
+ count += 1;
500
+ }
457
501
  }
458
- tokens.splice(i - 2, count, {
502
+ replacerTokens.push({
459
503
  type: "link",
460
- loading: false,
504
+ loading,
461
505
  href,
462
506
  title: "",
463
507
  text,
@@ -468,37 +512,19 @@ function fixLinkToken(tokens) {
468
512
  }],
469
513
  raw: String(`[${text}](${href})`)
470
514
  });
471
- } else if (tokens[i].content?.startsWith("](") && tokens[i - 1].markup?.includes("*") && tokens[i - 4].type === "text" && tokens[i - 4].content?.endsWith("[")) {
515
+ if (emphasisMatch) {
516
+ const type = emphasisMatch[1].length;
517
+ pushEmClose(replacerTokens, type);
518
+ }
519
+ tokens.splice(i - deleteCount, count, ...replacerTokens);
520
+ i -= replacerTokens.length - 1;
521
+ continue;
522
+ } else if (tokens[i].content?.startsWith("](") && tokens[i - 1].markup?.includes("*") && tokens[i - 4]?.type === "text" && tokens[i - 4].content?.endsWith("[")) {
472
523
  const type = tokens[i - 1].markup.length;
473
524
  const replacerTokens = [];
474
- const beforeText = tokens[i - 4].content.slice(0, tokens[i - 4].content.length - 1 - type);
475
- if (beforeText) replacerTokens.push({
476
- type: "text",
477
- content: beforeText,
478
- raw: beforeText
479
- });
480
- if (type === 1) replacerTokens.push({
481
- type: "em_open",
482
- tag: "em",
483
- nesting: 1
484
- });
485
- else if (type === 2) replacerTokens.push({
486
- type: "strong_open",
487
- tag: "strong",
488
- nesting: 1
489
- });
490
- else if (type === 3) {
491
- replacerTokens.push({
492
- type: "strong_open",
493
- tag: "strong",
494
- nesting: 1
495
- });
496
- replacerTokens.push({
497
- type: "em_open",
498
- tag: "em",
499
- nesting: 1
500
- });
501
- }
525
+ const beforeText = tokens[i - 4].content.slice(0, tokens[i - 4].content.length - type);
526
+ if (beforeText) replacerTokens.push(textToken(beforeText));
527
+ pushEmOpen(replacerTokens, type);
502
528
  const text = tokens[i - 2].content || "";
503
529
  let href = tokens[i].content.slice(2);
504
530
  let loading = true;
@@ -510,48 +536,11 @@ function fixLinkToken(tokens) {
510
536
  tokens[i + 1].content = "";
511
537
  }
512
538
  }
513
- replacerTokens.push({
514
- type: "link",
515
- loading,
516
- href,
517
- title: "",
518
- text,
519
- children: [{
520
- type: "text",
521
- content: text,
522
- raw: text
523
- }],
524
- raw: String(`[${text}](${href})`)
525
- });
526
- if (type === 1) replacerTokens.push({
527
- type: "em_close",
528
- tag: "em",
529
- nesting: -1
530
- });
531
- else if (type === 2) replacerTokens.push({
532
- type: "strong_close",
533
- tag: "strong",
534
- nesting: -1
535
- });
536
- else if (type === 3) {
537
- replacerTokens.push({
538
- type: "em_close",
539
- tag: "em",
540
- nesting: -1
541
- });
542
- replacerTokens.push({
543
- type: "strong_close",
544
- tag: "strong",
545
- nesting: -1
546
- });
547
- }
539
+ replacerTokens.push(createLinkToken(text, href, loading));
540
+ pushEmClose(replacerTokens, type);
548
541
  if (tokens[i + 1]?.type === "text") {
549
542
  const afterText = tokens[i + 1].content?.replace(/^\)\**/, "");
550
- if (afterText) replacerTokens.push({
551
- type: "text",
552
- content: afterText,
553
- raw: afterText
554
- });
543
+ if (afterText) replacerTokens.push(textToken(afterText));
555
544
  tokens.splice(i - 4, 8, ...replacerTokens);
556
545
  } else if (tokens[i + 1]?.type === "link_open") tokens.splice(i - 4, 10, ...replacerTokens);
557
546
  else tokens.splice(i - 4, 7, ...replacerTokens);
@@ -1167,8 +1156,8 @@ function applyMath(md, mathOpts) {
1167
1156
  pushText(toPushBefore.slice(0, _match.index));
1168
1157
  const strongToken = s.push("strong_open", "", 0);
1169
1158
  strongToken.markup = _match[0];
1170
- const textToken = s.push("text", "", 0);
1171
- textToken.content = after;
1159
+ const textToken$1 = s.push("text", "", 0);
1160
+ textToken$1.content = after;
1172
1161
  s.push("strong_close", "", 0);
1173
1162
  } else pushText(toPushBefore);
1174
1163
  }
@@ -1390,7 +1379,7 @@ function parseEmphasisToken(tokens, startIndex) {
1390
1379
  let i = startIndex + 1;
1391
1380
  const innerTokens = [];
1392
1381
  while (i < tokens.length && tokens[i].type !== "em_close") {
1393
- emText += String(tokens[i].content ?? "");
1382
+ emText += String(tokens[i].content ?? tokens[i]?.text ?? "");
1394
1383
  innerTokens.push(tokens[i]);
1395
1384
  i++;
1396
1385
  }
@@ -2237,18 +2226,18 @@ function parseInlineTokens(tokens, raw, pPreToken) {
2237
2226
  if (!nextToken && /[^\]]\s*\(\s*$/.test(content)) content = content.replace(/\(\s*$/, "");
2238
2227
  if (handleCheckboxLike(content)) return;
2239
2228
  const preToken = tokens[i - 1];
2240
- if (content === "[" && !nextToken?.markup?.includes("*") || content === "]" && !preToken.markup?.includes("*")) {
2229
+ if (content === "[" && !nextToken?.markup?.includes("*") || content === "]" && !preToken?.markup?.includes("*")) {
2241
2230
  i++;
2242
2231
  return;
2243
2232
  }
2244
2233
  if (handleInlineCodeContent(content, token)) return;
2245
- if (handleEmphasisAndStrikethrough(content, token)) return;
2246
2234
  if (handleInlineImageContent(content, token)) return;
2235
+ if (handleInlineLinkContent(content, token)) return;
2236
+ if (handleEmphasisAndStrikethrough(content, token)) return;
2247
2237
  const textNode = parseTextToken({
2248
2238
  ...token,
2249
2239
  content
2250
2240
  });
2251
- if (handleInlineLinkContent(content, token)) return;
2252
2241
  if (currentTextNode) {
2253
2242
  currentTextNode.content += textNode.content.replace(/(\*+|\(|\\)$/, "");
2254
2243
  currentTextNode.raw += textNode.raw;
@@ -2360,7 +2349,7 @@ function parseInlineTokens(tokens, raw, pPreToken) {
2360
2349
  let textNodeContent = content.slice(0, linkStart);
2361
2350
  const linkEnd = content.indexOf("](", linkStart);
2362
2351
  if (linkEnd !== -1) {
2363
- const textToken = tokens[i + 2];
2352
+ const textToken$1 = tokens[i + 2];
2364
2353
  let text = content.slice(linkStart + 1, linkEnd);
2365
2354
  if (text.includes("[")) {
2366
2355
  const secondLinkStart = text.indexOf("[");
@@ -2369,7 +2358,7 @@ function parseInlineTokens(tokens, raw, pPreToken) {
2369
2358
  text = content.slice(newLinkStart + 1, linkEnd);
2370
2359
  }
2371
2360
  const nextToken = tokens[i + 1];
2372
- if (content.endsWith("](") && nextToken?.type === "link_open" && textToken) {
2361
+ if (content.endsWith("](") && nextToken?.type === "link_open" && textToken$1) {
2373
2362
  const last = tokens[i + 4];
2374
2363
  let index = 4;
2375
2364
  let loading$1 = true;
@@ -2380,7 +2369,7 @@ function parseInlineTokens(tokens, raw, pPreToken) {
2380
2369
  if (textNodeContent) pushText(textNodeContent, textNodeContent);
2381
2370
  pushParsed({
2382
2371
  type: "link",
2383
- href: String(textToken.content ?? ""),
2372
+ href: String(textToken$1.content ?? ""),
2384
2373
  title: null,
2385
2374
  text,
2386
2375
  children: [{
@@ -2396,8 +2385,82 @@ function parseInlineTokens(tokens, raw, pPreToken) {
2396
2385
  const linkContentEnd = content.indexOf(")", linkEnd);
2397
2386
  const href = linkContentEnd !== -1 ? content.slice(linkEnd + 2, linkContentEnd) : "";
2398
2387
  const loading = linkContentEnd === -1;
2388
+ let emphasisMatch = textNodeContent.match(/\*+$/);
2389
+ if (emphasisMatch) textNodeContent = textNodeContent.replace(/\*+$/, "");
2399
2390
  if (textNodeContent) pushText(textNodeContent, textNodeContent);
2400
- pushParsed({
2391
+ if (!emphasisMatch) emphasisMatch = text.match(/^\*+/);
2392
+ if (emphasisMatch) {
2393
+ const type = emphasisMatch[0].length;
2394
+ text = text.replace(/^\*+/, "").replace(/\*+$/, "");
2395
+ const newTokens = [];
2396
+ if (type === 1) newTokens.push({
2397
+ type: "em_open",
2398
+ tag: "em",
2399
+ nesting: 1
2400
+ });
2401
+ else if (type === 2) newTokens.push({
2402
+ type: "strong_open",
2403
+ tag: "strong",
2404
+ nesting: 1
2405
+ });
2406
+ else if (type === 3) {
2407
+ newTokens.push({
2408
+ type: "strong_open",
2409
+ tag: "strong",
2410
+ nesting: 1
2411
+ });
2412
+ newTokens.push({
2413
+ type: "em_open",
2414
+ tag: "em",
2415
+ nesting: 1
2416
+ });
2417
+ }
2418
+ newTokens.push({
2419
+ type: "link",
2420
+ href,
2421
+ title: null,
2422
+ text,
2423
+ children: [{
2424
+ type: "text",
2425
+ content: text,
2426
+ raw: text
2427
+ }],
2428
+ loading
2429
+ });
2430
+ if (type === 1) {
2431
+ newTokens.push({
2432
+ type: "em_close",
2433
+ tag: "em",
2434
+ nesting: -1
2435
+ });
2436
+ const { node } = parseEmphasisToken(newTokens, 0);
2437
+ pushNode(node);
2438
+ } else if (type === 2) {
2439
+ newTokens.push({
2440
+ type: "strong_close",
2441
+ tag: "strong",
2442
+ nesting: -1
2443
+ });
2444
+ const { node } = parseStrongToken(newTokens, 0);
2445
+ pushNode(node);
2446
+ } else if (type === 3) {
2447
+ newTokens.push({
2448
+ type: "em_close",
2449
+ tag: "em",
2450
+ nesting: -1
2451
+ });
2452
+ newTokens.push({
2453
+ type: "strong_close",
2454
+ tag: "strong",
2455
+ nesting: -1
2456
+ });
2457
+ const { node } = parseStrongToken(newTokens, 0);
2458
+ pushNode(node);
2459
+ } else {
2460
+ const { node } = parseEmphasisToken(newTokens, 0);
2461
+ pushNode(node);
2462
+ }
2463
+ } else pushParsed({
2401
2464
  type: "link",
2402
2465
  href,
2403
2466
  title: null,