@slidev/parser 0.49.0-beta.5 → 0.49.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.
@@ -313,6 +313,7 @@ async function parse(markdown, filepath, extensions) {
313
313
  const lines = markdown.split(/\r?\n/g);
314
314
  const slides = [];
315
315
  let start = 0;
316
+ let contentStart = 0;
316
317
  async function slice(end) {
317
318
  if (start === end)
318
319
  return;
@@ -322,6 +323,7 @@ async function parse(markdown, filepath, extensions) {
322
323
  filepath,
323
324
  index: slides.length,
324
325
  start,
326
+ contentStart,
325
327
  end
326
328
  };
327
329
  if (extensions) {
@@ -335,6 +337,7 @@ async function parse(markdown, filepath, extensions) {
335
337
  }
336
338
  slides.push(slide);
337
339
  start = end + 1;
340
+ contentStart = end + 1;
338
341
  }
339
342
  if (extensions) {
340
343
  for (const e of extensions) {
@@ -344,21 +347,26 @@ async function parse(markdown, filepath, extensions) {
344
347
  }
345
348
  for (let i = 0; i < lines.length; i++) {
346
349
  const line = lines[i].trimEnd();
347
- if (line.match(/^---+/)) {
350
+ if (line.startsWith("---")) {
348
351
  await slice(i);
349
352
  const next = lines[i + 1];
350
- if (line.match(/^---([^-].*)?$/) && !next?.match(/^\s*$/)) {
353
+ if (line[3] !== "-" && next?.trim()) {
351
354
  start = i;
352
355
  for (i += 1; i < lines.length; i++) {
353
- if (lines[i].trimEnd().match(/^---$/))
356
+ if (lines[i].trimEnd() === "---")
354
357
  break;
355
358
  }
359
+ contentStart = i + 1;
356
360
  }
357
- } else if (line.startsWith("```")) {
358
- for (i += 1; i < lines.length; i++) {
359
- if (lines[i].startsWith("```"))
361
+ } else if (line.trimStart().startsWith("```")) {
362
+ const codeBlockLevel = line.match(/^\s*`+/)[0];
363
+ let j = i + 1;
364
+ for (; j < lines.length; j++) {
365
+ if (lines[j].startsWith(codeBlockLevel))
360
366
  break;
361
367
  }
368
+ if (j !== lines.length)
369
+ i = j;
362
370
  }
363
371
  }
364
372
  if (start <= lines.length - 1)
package/dist/core.d.mts CHANGED
@@ -19,7 +19,7 @@ declare function stringifySlide(data: SourceSlideInfo, idx?: number): string;
19
19
  declare function prettifySlide(data: SourceSlideInfo): SourceSlideInfo;
20
20
  declare function prettify(data: SlidevMarkdown): SlidevMarkdown;
21
21
  declare function detectFeatures(code: string): SlidevDetectedFeatures;
22
- declare function parseSlide(raw: string): Omit<SourceSlideInfo, 'filepath' | 'index' | 'start' | 'end'>;
22
+ declare function parseSlide(raw: string): Omit<SourceSlideInfo, 'filepath' | 'index' | 'start' | 'contentStart' | 'end'>;
23
23
  declare function parse(markdown: string, filepath: string, extensions?: SlidevPreparserExtension[]): Promise<SlidevMarkdown>;
24
24
 
25
25
  export { detectFeatures, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
package/dist/core.mjs CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  stringify,
13
13
  stringifySlide,
14
14
  verifyConfig
15
- } from "./chunk-G3BCFBME.mjs";
15
+ } from "./chunk-N73CSDH6.mjs";
16
16
  export {
17
17
  detectFeatures,
18
18
  getDefaultConfig,
package/dist/fs.mjs CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  stringify,
13
13
  stringifySlide,
14
14
  verifyConfig
15
- } from "./chunk-G3BCFBME.mjs";
15
+ } from "./chunk-N73CSDH6.mjs";
16
16
 
17
17
  // src/fs.ts
18
18
  import { promises as fs } from "node:fs";
@@ -40,32 +40,40 @@ async function load(userRoot, filepath, content, mode) {
40
40
  }
41
41
  const markdownFiles = {};
42
42
  const slides = [];
43
- async function loadMarkdown(path, range, frontmatterOverride) {
43
+ async function loadMarkdown(path, range, frontmatterOverride, importers) {
44
44
  let md = markdownFiles[path];
45
45
  if (!md) {
46
46
  const raw = await fs.readFile(path, "utf-8");
47
47
  md = await parse(raw, path, extensions);
48
48
  markdownFiles[path] = md;
49
49
  }
50
- for (const index of parseRangeString(md.slides.length, range))
51
- await loadSlide(md.slides[index - 1], frontmatterOverride);
50
+ const directImporter = importers?.at(-1);
51
+ for (const index of parseRangeString(md.slides.length, range)) {
52
+ const subSlide = md.slides[index - 1];
53
+ await loadSlide(subSlide, frontmatterOverride, importers);
54
+ if (directImporter)
55
+ (directImporter.imports ??= []).push(subSlide);
56
+ }
52
57
  return md;
53
58
  }
54
- async function loadSlide(slide, frontmatterOverride) {
59
+ async function loadSlide(slide, frontmatterOverride, importChain) {
55
60
  if (slide.frontmatter.disabled || slide.frontmatter.hide)
56
61
  return;
57
62
  if (slide.frontmatter.src) {
58
63
  const [rawPath, rangeRaw] = slide.frontmatter.src.split("#");
59
- const path = rawPath.startsWith("/") ? resolve(userRoot, rawPath.substring(1)) : resolve(dirname(slide.filepath), rawPath);
64
+ const path = slash(
65
+ rawPath.startsWith("/") ? resolve(userRoot, rawPath.substring(1)) : resolve(dirname(slide.filepath), rawPath)
66
+ );
60
67
  frontmatterOverride = {
61
68
  ...slide.frontmatter,
62
69
  ...frontmatterOverride
63
70
  };
64
71
  delete frontmatterOverride.src;
65
- await loadMarkdown(path, rangeRaw, frontmatterOverride);
72
+ await loadMarkdown(path, rangeRaw, frontmatterOverride, importChain ? [...importChain, slide] : [slide]);
66
73
  } else {
67
74
  slides.push({
68
75
  index: slides.length,
76
+ importChain,
69
77
  source: slide,
70
78
  frontmatter: { ...slide.frontmatter, ...frontmatterOverride },
71
79
  content: slide.content,
@@ -75,7 +83,7 @@ async function load(userRoot, filepath, content, mode) {
75
83
  });
76
84
  }
77
85
  }
78
- const entry = await loadMarkdown(filepath);
86
+ const entry = await loadMarkdown(slash(filepath));
79
87
  const headmatter = {
80
88
  title: slides[0]?.title,
81
89
  ...entry.slides[0]?.frontmatter
package/dist/index.mjs CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  stringify,
13
13
  stringifySlide,
14
14
  verifyConfig
15
- } from "./chunk-G3BCFBME.mjs";
15
+ } from "./chunk-N73CSDH6.mjs";
16
16
  export {
17
17
  detectFeatures,
18
18
  getDefaultConfig,
package/fs.d.ts CHANGED
@@ -1 +1 @@
1
- export * from './dist/fs'
1
+ export * from './dist/fs.mjs'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slidev/parser",
3
- "version": "0.49.0-beta.5",
3
+ "version": "0.49.0",
4
4
  "description": "Markdown parser for Slidev",
5
5
  "author": "antfu <anthonyfu117@hotmail.com>",
6
6
  "license": "MIT",
@@ -39,9 +39,9 @@
39
39
  "node": ">=18.0.0"
40
40
  },
41
41
  "dependencies": {
42
- "@antfu/utils": "^0.7.7",
42
+ "@antfu/utils": "^0.7.8",
43
43
  "yaml": "^2.4.2",
44
- "@slidev/types": "0.49.0-beta.5"
44
+ "@slidev/types": "0.49.0"
45
45
  },
46
46
  "scripts": {
47
47
  "build": "rimraf dist && tsup src/index.ts src/core.ts src/fs.ts",