@slidev/parser 0.48.0-beta.0 → 0.48.0-beta.10
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/dist/{chunk-VLX5KDW3.mjs → chunk-TPG7RJUH.mjs} +9 -32
- package/dist/core.d.mts +6 -7
- package/dist/core.mjs +1 -3
- package/dist/fs.d.mts +10 -6
- package/dist/fs.mjs +65 -69
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -3
- package/package.json +2 -2
|
@@ -35,6 +35,9 @@ function isTruthy(v) {
|
|
|
35
35
|
}
|
|
36
36
|
var isNumber = (val) => typeof val === "number";
|
|
37
37
|
var isObject = (val) => toString(val) === "[object Object]";
|
|
38
|
+
function slash(str) {
|
|
39
|
+
return str.replace(/\\/g, "/");
|
|
40
|
+
}
|
|
38
41
|
function objectMap(obj, fn) {
|
|
39
42
|
return Object.fromEntries(
|
|
40
43
|
Object.entries(obj).map(([k, v]) => fn(k, v)).filter(notNullish)
|
|
@@ -243,16 +246,10 @@ function resolveDrawings(options = {}, filepath) {
|
|
|
243
246
|
|
|
244
247
|
// src/core.ts
|
|
245
248
|
function stringify(data) {
|
|
246
|
-
return `${data.slides.
|
|
249
|
+
return `${data.slides.map(stringifySlide).join("\n").trim()}
|
|
247
250
|
`;
|
|
248
251
|
}
|
|
249
|
-
function filterDisabled(data) {
|
|
250
|
-
data.slides = data.slides.filter((i) => !i.frontmatter?.disabled);
|
|
251
|
-
return data;
|
|
252
|
-
}
|
|
253
252
|
function stringifySlide(data, idx = 0) {
|
|
254
|
-
if (data.raw == null)
|
|
255
|
-
prettifySlide(data);
|
|
256
253
|
return data.raw.startsWith("---") || idx === 0 ? data.raw : `---
|
|
257
254
|
${data.raw.startsWith("\n") ? data.raw : `
|
|
258
255
|
${data.raw}`}`;
|
|
@@ -354,7 +351,7 @@ function parseSlide(raw) {
|
|
|
354
351
|
note
|
|
355
352
|
};
|
|
356
353
|
}
|
|
357
|
-
async function parse(markdown, filepath,
|
|
354
|
+
async function parse(markdown, filepath, extensions) {
|
|
358
355
|
const lines = markdown.split(/\r?\n/g);
|
|
359
356
|
const slides = [];
|
|
360
357
|
let start = 0;
|
|
@@ -364,6 +361,7 @@ async function parse(markdown, filepath, themeMeta, extensions, onHeadmatter) {
|
|
|
364
361
|
const raw = lines.slice(start, end).join("\n");
|
|
365
362
|
const slide = {
|
|
366
363
|
...parseSlide(raw),
|
|
364
|
+
filepath,
|
|
367
365
|
index: slides.length,
|
|
368
366
|
start,
|
|
369
367
|
end
|
|
@@ -380,19 +378,6 @@ async function parse(markdown, filepath, themeMeta, extensions, onHeadmatter) {
|
|
|
380
378
|
slides.push(slide);
|
|
381
379
|
start = end + 1;
|
|
382
380
|
}
|
|
383
|
-
{
|
|
384
|
-
let hm = "";
|
|
385
|
-
if (lines[0].match(/^---([^-].*)?$/) && !lines[1]?.match(/^\s*$/)) {
|
|
386
|
-
let hEnd = 1;
|
|
387
|
-
while (hEnd < lines.length && !lines[hEnd].trimEnd().match(/^---$/))
|
|
388
|
-
hEnd++;
|
|
389
|
-
hm = lines.slice(1, hEnd).join("\n");
|
|
390
|
-
}
|
|
391
|
-
if (onHeadmatter) {
|
|
392
|
-
const o = YAML.load(hm) ?? {};
|
|
393
|
-
extensions = await onHeadmatter(o, extensions ?? [], filepath);
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
381
|
if (extensions) {
|
|
397
382
|
for (const e of extensions) {
|
|
398
383
|
if (e.transformRawLines)
|
|
@@ -420,18 +405,10 @@ async function parse(markdown, filepath, themeMeta, extensions, onHeadmatter) {
|
|
|
420
405
|
}
|
|
421
406
|
if (start <= lines.length - 1)
|
|
422
407
|
await slice(lines.length);
|
|
423
|
-
const headmatter = slides[0]?.frontmatter || {};
|
|
424
|
-
headmatter.title = headmatter.title || slides[0]?.title;
|
|
425
|
-
const config = resolveConfig(headmatter, themeMeta, filepath);
|
|
426
|
-
const features = detectFeatures(markdown);
|
|
427
408
|
return {
|
|
428
|
-
raw: markdown,
|
|
429
409
|
filepath,
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
features,
|
|
433
|
-
headmatter,
|
|
434
|
-
themeMeta
|
|
410
|
+
raw: markdown,
|
|
411
|
+
slides
|
|
435
412
|
};
|
|
436
413
|
}
|
|
437
414
|
function mergeFeatureFlags(a, b) {
|
|
@@ -451,6 +428,7 @@ function scanMonacoModules(md) {
|
|
|
451
428
|
}
|
|
452
429
|
|
|
453
430
|
export {
|
|
431
|
+
slash,
|
|
454
432
|
parseRangeString,
|
|
455
433
|
parseAspectRatio,
|
|
456
434
|
getDefaultConfig,
|
|
@@ -458,7 +436,6 @@ export {
|
|
|
458
436
|
verifyConfig,
|
|
459
437
|
resolveFonts,
|
|
460
438
|
stringify,
|
|
461
|
-
filterDisabled,
|
|
462
439
|
stringifySlide,
|
|
463
440
|
prettifySlide,
|
|
464
441
|
prettify,
|
package/dist/core.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SlidevConfig, SlidevThemeMeta, FontOptions, ResolvedFontOptions, SlidevMarkdown,
|
|
1
|
+
import { SlidevConfig, SlidevThemeMeta, FontOptions, ResolvedFontOptions, SlidevMarkdown, SourceSlideInfo, SlidevFeatureFlags, SlidevPreparserExtension } from '@slidev/types';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* 1,3-5,8 => [1, 3, 4, 5, 8]
|
|
@@ -15,14 +15,13 @@ declare function verifyConfig(config: SlidevConfig, themeMeta?: SlidevThemeMeta,
|
|
|
15
15
|
declare function resolveFonts(fonts?: FontOptions): ResolvedFontOptions;
|
|
16
16
|
|
|
17
17
|
declare function stringify(data: SlidevMarkdown): string;
|
|
18
|
-
declare function
|
|
19
|
-
declare function
|
|
20
|
-
declare function prettifySlide(data: SlideInfoBase): SlideInfoBase;
|
|
18
|
+
declare function stringifySlide(data: SourceSlideInfo, idx?: number): string;
|
|
19
|
+
declare function prettifySlide(data: SourceSlideInfo): SourceSlideInfo;
|
|
21
20
|
declare function prettify(data: SlidevMarkdown): SlidevMarkdown;
|
|
22
21
|
declare function detectFeatures(code: string): SlidevFeatureFlags;
|
|
23
|
-
declare function parseSlide(raw: string):
|
|
24
|
-
declare function parse(markdown: string, filepath
|
|
22
|
+
declare function parseSlide(raw: string): Omit<SourceSlideInfo, 'filepath' | 'index' | 'start' | 'end'>;
|
|
23
|
+
declare function parse(markdown: string, filepath: string, extensions?: SlidevPreparserExtension[]): Promise<SlidevMarkdown>;
|
|
25
24
|
declare function mergeFeatureFlags(a: SlidevFeatureFlags, b: SlidevFeatureFlags): SlidevFeatureFlags;
|
|
26
25
|
declare function scanMonacoModules(md: string): string[];
|
|
27
26
|
|
|
28
|
-
export { detectFeatures,
|
|
27
|
+
export { detectFeatures, getDefaultConfig, mergeFeatureFlags, parse, parseAspectRatio, parseRangeString, parseSlide, prettify, prettifySlide, resolveConfig, resolveFonts, scanMonacoModules, stringify, stringifySlide, verifyConfig };
|
package/dist/core.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
detectFeatures,
|
|
3
|
-
filterDisabled,
|
|
4
3
|
getDefaultConfig,
|
|
5
4
|
mergeFeatureFlags,
|
|
6
5
|
parse,
|
|
@@ -15,10 +14,9 @@ import {
|
|
|
15
14
|
stringify,
|
|
16
15
|
stringifySlide,
|
|
17
16
|
verifyConfig
|
|
18
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-TPG7RJUH.mjs";
|
|
19
18
|
export {
|
|
20
19
|
detectFeatures,
|
|
21
|
-
filterDisabled,
|
|
22
20
|
getDefaultConfig,
|
|
23
21
|
mergeFeatureFlags,
|
|
24
22
|
parse,
|
package/dist/fs.d.mts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { PreparserExtensionLoader,
|
|
2
|
-
export { detectFeatures,
|
|
1
|
+
import { PreparserExtensionLoader, SlidevData, SlidevMarkdown } from '@slidev/types';
|
|
2
|
+
export { detectFeatures, getDefaultConfig, mergeFeatureFlags, parse, parseAspectRatio, parseRangeString, parseSlide, prettify, prettifySlide, resolveConfig, resolveFonts, scanMonacoModules, stringify, stringifySlide, verifyConfig } from './core.mjs';
|
|
3
3
|
|
|
4
4
|
declare function injectPreparserExtensionLoader(fn: PreparserExtensionLoader): void;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Slidev data without config and themeMeta,
|
|
7
|
+
* because config and themeMeta depends on the theme to be loaded.
|
|
8
|
+
*/
|
|
9
|
+
type LoadedSlidevData = Omit<SlidevData, 'config' | 'themeMeta'>;
|
|
10
|
+
declare function load(userRoot: string, filepath: string, content?: string): Promise<LoadedSlidevData>;
|
|
11
|
+
declare function save(markdown: SlidevMarkdown): Promise<void>;
|
|
8
12
|
|
|
9
|
-
export { injectPreparserExtensionLoader, load, save
|
|
13
|
+
export { type LoadedSlidevData, injectPreparserExtensionLoader, load, save };
|
package/dist/fs.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
detectFeatures,
|
|
3
|
-
filterDisabled,
|
|
4
3
|
getDefaultConfig,
|
|
5
4
|
mergeFeatureFlags,
|
|
6
5
|
parse,
|
|
@@ -12,93 +11,91 @@ import {
|
|
|
12
11
|
resolveConfig,
|
|
13
12
|
resolveFonts,
|
|
14
13
|
scanMonacoModules,
|
|
14
|
+
slash,
|
|
15
15
|
stringify,
|
|
16
16
|
stringifySlide,
|
|
17
17
|
verifyConfig
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-TPG7RJUH.mjs";
|
|
19
19
|
|
|
20
20
|
// src/fs.ts
|
|
21
21
|
import { promises as fs } from "node:fs";
|
|
22
22
|
import { dirname, resolve } from "node:path";
|
|
23
|
+
import YAML from "js-yaml";
|
|
23
24
|
var preparserExtensionLoader = null;
|
|
24
25
|
function injectPreparserExtensionLoader(fn) {
|
|
25
26
|
preparserExtensionLoader = fn;
|
|
26
27
|
}
|
|
27
|
-
async function load(
|
|
28
|
-
const dir = dirname(filepath);
|
|
28
|
+
async function load(userRoot, filepath, content) {
|
|
29
29
|
const markdown = content ?? await fs.readFile(filepath, "utf-8");
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
});
|
|
40
|
-
const entries = /* @__PURE__ */ new Set([
|
|
41
|
-
filepath
|
|
42
|
-
]);
|
|
43
|
-
for (let iSlide = 0; iSlide < data.slides.length; ) {
|
|
44
|
-
const baseSlide = data.slides[iSlide];
|
|
45
|
-
if (!baseSlide.frontmatter.src) {
|
|
46
|
-
iSlide++;
|
|
47
|
-
continue;
|
|
30
|
+
let extensions;
|
|
31
|
+
if (preparserExtensionLoader) {
|
|
32
|
+
const lines = markdown.split(/\r?\n/g);
|
|
33
|
+
let hm = "";
|
|
34
|
+
if (lines[0].match(/^---([^-].*)?$/) && !lines[1]?.match(/^\s*$/)) {
|
|
35
|
+
let hEnd = 1;
|
|
36
|
+
while (hEnd < lines.length && !lines[hEnd].trimEnd().match(/^---$/))
|
|
37
|
+
hEnd++;
|
|
38
|
+
hm = lines.slice(1, hEnd).join("\n");
|
|
48
39
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
path =
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
const baseSlideFrontMatterWithoutSrc = { ...baseSlide.frontmatter };
|
|
76
|
-
delete baseSlideFrontMatterWithoutSrc.src;
|
|
77
|
-
slide.frontmatter = {
|
|
78
|
-
...subSlide.frontmatter,
|
|
79
|
-
...baseSlideFrontMatterWithoutSrc,
|
|
80
|
-
srcSequence: `${baseSlide.frontmatter.srcSequence ? `${baseSlide.frontmatter.srcSequence},` : ""}${srcExpression}`
|
|
40
|
+
const o = YAML.load(hm) ?? {};
|
|
41
|
+
extensions = await preparserExtensionLoader(o, filepath);
|
|
42
|
+
}
|
|
43
|
+
const markdownFiles = {};
|
|
44
|
+
const slides = [];
|
|
45
|
+
async function loadMarkdown(path, range, frontmatterOverride) {
|
|
46
|
+
let md = markdownFiles[path];
|
|
47
|
+
if (!md) {
|
|
48
|
+
const raw = await fs.readFile(path, "utf-8");
|
|
49
|
+
md = await parse(raw, path, extensions);
|
|
50
|
+
markdownFiles[path] = md;
|
|
51
|
+
}
|
|
52
|
+
for (const index of parseRangeString(md.slides.length, range))
|
|
53
|
+
await loadSlide(md.slides[index - 1], frontmatterOverride);
|
|
54
|
+
return md;
|
|
55
|
+
}
|
|
56
|
+
async function loadSlide(slide, frontmatterOverride) {
|
|
57
|
+
if (slide.frontmatter.disabled || slide.frontmatter.hide)
|
|
58
|
+
return;
|
|
59
|
+
if (slide.frontmatter.src) {
|
|
60
|
+
const [rawPath, rangeRaw] = slide.frontmatter.src.split("#");
|
|
61
|
+
const path = rawPath.startsWith("/") ? resolve(userRoot, rawPath.substring(1)) : resolve(dirname(slide.filepath), rawPath);
|
|
62
|
+
frontmatterOverride = {
|
|
63
|
+
...slide.frontmatter,
|
|
64
|
+
...frontmatterOverride
|
|
81
65
|
};
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
66
|
+
delete frontmatterOverride.src;
|
|
67
|
+
await loadMarkdown(path, rangeRaw, frontmatterOverride);
|
|
68
|
+
} else {
|
|
69
|
+
slides.push({
|
|
70
|
+
index: slides.length,
|
|
71
|
+
source: slide,
|
|
72
|
+
frontmatter: { ...slide.frontmatter, ...frontmatterOverride },
|
|
73
|
+
content: slide.content,
|
|
74
|
+
note: slide.note,
|
|
75
|
+
title: slide.title,
|
|
76
|
+
level: slide.level
|
|
77
|
+
});
|
|
85
78
|
}
|
|
86
79
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
80
|
+
const entry = await loadMarkdown(filepath);
|
|
81
|
+
const headmatter = {
|
|
82
|
+
title: slides[0]?.title,
|
|
83
|
+
...entry.slides[0]?.frontmatter
|
|
84
|
+
};
|
|
85
|
+
return {
|
|
86
|
+
slides,
|
|
87
|
+
entry,
|
|
88
|
+
headmatter,
|
|
89
|
+
features: detectFeatures(slides.map((s) => s.source.raw).join("")),
|
|
90
|
+
markdownFiles,
|
|
91
|
+
watchFiles: Object.keys(markdownFiles).map(slash)
|
|
92
|
+
};
|
|
95
93
|
}
|
|
96
|
-
async function
|
|
97
|
-
await fs.writeFile(
|
|
94
|
+
async function save(markdown) {
|
|
95
|
+
await fs.writeFile(markdown.filepath, stringify(markdown), "utf-8");
|
|
98
96
|
}
|
|
99
97
|
export {
|
|
100
98
|
detectFeatures,
|
|
101
|
-
filterDisabled,
|
|
102
99
|
getDefaultConfig,
|
|
103
100
|
injectPreparserExtensionLoader,
|
|
104
101
|
load,
|
|
@@ -112,7 +109,6 @@ export {
|
|
|
112
109
|
resolveConfig,
|
|
113
110
|
resolveFonts,
|
|
114
111
|
save,
|
|
115
|
-
saveExternalSlide,
|
|
116
112
|
scanMonacoModules,
|
|
117
113
|
stringify,
|
|
118
114
|
stringifySlide,
|
package/dist/index.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { detectFeatures,
|
|
1
|
+
export { detectFeatures, getDefaultConfig, mergeFeatureFlags, parse, parseAspectRatio, parseRangeString, parseSlide, prettify, prettifySlide, resolveConfig, resolveFonts, scanMonacoModules, stringify, stringifySlide, verifyConfig } from './core.mjs';
|
|
2
2
|
import '@slidev/types';
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
detectFeatures,
|
|
3
|
-
filterDisabled,
|
|
4
3
|
getDefaultConfig,
|
|
5
4
|
mergeFeatureFlags,
|
|
6
5
|
parse,
|
|
@@ -15,10 +14,9 @@ import {
|
|
|
15
14
|
stringify,
|
|
16
15
|
stringifySlide,
|
|
17
16
|
verifyConfig
|
|
18
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-TPG7RJUH.mjs";
|
|
19
18
|
export {
|
|
20
19
|
detectFeatures,
|
|
21
|
-
filterDisabled,
|
|
22
20
|
getDefaultConfig,
|
|
23
21
|
mergeFeatureFlags,
|
|
24
22
|
parse,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slidev/parser",
|
|
3
|
-
"version": "0.48.0-beta.
|
|
3
|
+
"version": "0.48.0-beta.10",
|
|
4
4
|
"description": "Markdown parser for Slidev",
|
|
5
5
|
"author": "antfu <anthonyfu117@hotmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"js-yaml": "^4.1.0",
|
|
43
|
-
"@slidev/types": "0.48.0-beta.
|
|
43
|
+
"@slidev/types": "0.48.0-beta.10"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"build": "rimraf dist && tsup src/index.ts src/core.ts src/fs.ts",
|