@slidev/parser 0.36.11 → 0.37.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.
- package/dist/{chunk-XTGVXNGI.js → chunk-72T7ERBC.js} +37 -9
- package/dist/{chunk-EGGVUXOC.mjs → chunk-RYLG7SAK.mjs} +37 -9
- package/dist/core.d.ts +2 -2
- package/dist/core.js +2 -2
- package/dist/core.mjs +1 -1
- package/dist/fs.d.ts +3 -2
- package/dist/fs.js +19 -7
- package/dist/fs.mjs +15 -3
- package/dist/index.js +2 -2
- package/dist/index.mjs +1 -1
- package/package.json +2 -2
|
@@ -400,27 +400,55 @@ function parseSlide(raw) {
|
|
|
400
400
|
note
|
|
401
401
|
};
|
|
402
402
|
}
|
|
403
|
-
function parse(markdown, filepath, themeMeta) {
|
|
404
|
-
var _a, _b;
|
|
403
|
+
async function parse(markdown, filepath, themeMeta, extensions, onHeadmatter) {
|
|
404
|
+
var _a, _b, _c;
|
|
405
405
|
const lines = markdown.split(/\r?\n/g);
|
|
406
406
|
const slides = [];
|
|
407
407
|
let start = 0;
|
|
408
|
-
function slice(end) {
|
|
408
|
+
async function slice(end) {
|
|
409
409
|
if (start === end)
|
|
410
410
|
return;
|
|
411
411
|
const raw = lines.slice(start, end).join("\n");
|
|
412
|
-
|
|
412
|
+
const slide = {
|
|
413
413
|
...parseSlide(raw),
|
|
414
414
|
index: slides.length,
|
|
415
415
|
start,
|
|
416
416
|
end
|
|
417
|
-
}
|
|
417
|
+
};
|
|
418
|
+
if (extensions) {
|
|
419
|
+
for (const e of extensions) {
|
|
420
|
+
if (e.transformSlide) {
|
|
421
|
+
const newContent = await e.transformSlide(slide.content, slide.frontmatter);
|
|
422
|
+
if (newContent !== void 0)
|
|
423
|
+
slide.content = newContent;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
slides.push(slide);
|
|
418
428
|
start = end + 1;
|
|
419
429
|
}
|
|
430
|
+
{
|
|
431
|
+
let hStart = 0;
|
|
432
|
+
while (hStart < lines.length && lines[hStart].match(/^(---|\w*)+/))
|
|
433
|
+
hStart++;
|
|
434
|
+
let hEnd = hStart + 1;
|
|
435
|
+
while (hEnd < lines.length && !lines[hEnd].match(/^---+/))
|
|
436
|
+
hEnd++;
|
|
437
|
+
if (onHeadmatter) {
|
|
438
|
+
const o = (_a = _jsyaml2.default.load(lines.slice(hStart, hEnd).join("\n"))) != null ? _a : {};
|
|
439
|
+
extensions = await onHeadmatter(o, extensions != null ? extensions : [], filepath);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
if (extensions) {
|
|
443
|
+
for (const e of extensions) {
|
|
444
|
+
if (e.transformRawLines)
|
|
445
|
+
await e.transformRawLines(lines);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
420
448
|
for (let i = 0; i < lines.length; i++) {
|
|
421
449
|
const line = lines[i].trimEnd();
|
|
422
450
|
if (line.match(/^---+/)) {
|
|
423
|
-
slice(i);
|
|
451
|
+
await slice(i);
|
|
424
452
|
const next = lines[i + 1];
|
|
425
453
|
if (line.match(/^---([^-].*)?$/) && !(next == null ? void 0 : next.match(/^\s*$/))) {
|
|
426
454
|
start = i;
|
|
@@ -437,9 +465,9 @@ function parse(markdown, filepath, themeMeta) {
|
|
|
437
465
|
}
|
|
438
466
|
}
|
|
439
467
|
if (start <= lines.length - 1)
|
|
440
|
-
slice(lines.length);
|
|
441
|
-
const headmatter = ((
|
|
442
|
-
headmatter.title = headmatter.title || ((
|
|
468
|
+
await slice(lines.length);
|
|
469
|
+
const headmatter = ((_b = slides[0]) == null ? void 0 : _b.frontmatter) || {};
|
|
470
|
+
headmatter.title = headmatter.title || ((_c = slides[0]) == null ? void 0 : _c.title);
|
|
443
471
|
const config = resolveConfig(headmatter, themeMeta, filepath);
|
|
444
472
|
const features = detectFeatures(markdown);
|
|
445
473
|
return {
|
|
@@ -400,27 +400,55 @@ function parseSlide(raw) {
|
|
|
400
400
|
note
|
|
401
401
|
};
|
|
402
402
|
}
|
|
403
|
-
function parse(markdown, filepath, themeMeta) {
|
|
404
|
-
var _a, _b;
|
|
403
|
+
async function parse(markdown, filepath, themeMeta, extensions, onHeadmatter) {
|
|
404
|
+
var _a, _b, _c;
|
|
405
405
|
const lines = markdown.split(/\r?\n/g);
|
|
406
406
|
const slides = [];
|
|
407
407
|
let start = 0;
|
|
408
|
-
function slice(end) {
|
|
408
|
+
async function slice(end) {
|
|
409
409
|
if (start === end)
|
|
410
410
|
return;
|
|
411
411
|
const raw = lines.slice(start, end).join("\n");
|
|
412
|
-
|
|
412
|
+
const slide = {
|
|
413
413
|
...parseSlide(raw),
|
|
414
414
|
index: slides.length,
|
|
415
415
|
start,
|
|
416
416
|
end
|
|
417
|
-
}
|
|
417
|
+
};
|
|
418
|
+
if (extensions) {
|
|
419
|
+
for (const e of extensions) {
|
|
420
|
+
if (e.transformSlide) {
|
|
421
|
+
const newContent = await e.transformSlide(slide.content, slide.frontmatter);
|
|
422
|
+
if (newContent !== void 0)
|
|
423
|
+
slide.content = newContent;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
slides.push(slide);
|
|
418
428
|
start = end + 1;
|
|
419
429
|
}
|
|
430
|
+
{
|
|
431
|
+
let hStart = 0;
|
|
432
|
+
while (hStart < lines.length && lines[hStart].match(/^(---|\w*)+/))
|
|
433
|
+
hStart++;
|
|
434
|
+
let hEnd = hStart + 1;
|
|
435
|
+
while (hEnd < lines.length && !lines[hEnd].match(/^---+/))
|
|
436
|
+
hEnd++;
|
|
437
|
+
if (onHeadmatter) {
|
|
438
|
+
const o = (_a = YAML.load(lines.slice(hStart, hEnd).join("\n"))) != null ? _a : {};
|
|
439
|
+
extensions = await onHeadmatter(o, extensions != null ? extensions : [], filepath);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
if (extensions) {
|
|
443
|
+
for (const e of extensions) {
|
|
444
|
+
if (e.transformRawLines)
|
|
445
|
+
await e.transformRawLines(lines);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
420
448
|
for (let i = 0; i < lines.length; i++) {
|
|
421
449
|
const line = lines[i].trimEnd();
|
|
422
450
|
if (line.match(/^---+/)) {
|
|
423
|
-
slice(i);
|
|
451
|
+
await slice(i);
|
|
424
452
|
const next = lines[i + 1];
|
|
425
453
|
if (line.match(/^---([^-].*)?$/) && !(next == null ? void 0 : next.match(/^\s*$/))) {
|
|
426
454
|
start = i;
|
|
@@ -437,9 +465,9 @@ function parse(markdown, filepath, themeMeta) {
|
|
|
437
465
|
}
|
|
438
466
|
}
|
|
439
467
|
if (start <= lines.length - 1)
|
|
440
|
-
slice(lines.length);
|
|
441
|
-
const headmatter = ((
|
|
442
|
-
headmatter.title = headmatter.title || ((
|
|
468
|
+
await slice(lines.length);
|
|
469
|
+
const headmatter = ((_b = slides[0]) == null ? void 0 : _b.frontmatter) || {};
|
|
470
|
+
headmatter.title = headmatter.title || ((_c = slides[0]) == null ? void 0 : _c.title);
|
|
443
471
|
const config = resolveConfig(headmatter, themeMeta, filepath);
|
|
444
472
|
const features = detectFeatures(markdown);
|
|
445
473
|
return {
|
package/dist/core.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SlidevThemeMeta, SlidevConfig, FontOptions, ResolvedFontOptions, SlidevMarkdown, SlideInfoBase, SlidevFeatureFlags } from '@slidev/types';
|
|
1
|
+
import { SlidevThemeMeta, SlidevConfig, FontOptions, ResolvedFontOptions, SlidevMarkdown, SlideInfoBase, SlidevFeatureFlags, SlidevPreparserExtension, PreparserExtensionFromHeadmatter } from '@slidev/types';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* 1,3-5,8 => [1, 3, 4, 5, 8]
|
|
@@ -20,7 +20,7 @@ declare function prettifySlide(data: SlideInfoBase): SlideInfoBase;
|
|
|
20
20
|
declare function prettify(data: SlidevMarkdown): SlidevMarkdown;
|
|
21
21
|
declare function detectFeatures(code: string): SlidevFeatureFlags;
|
|
22
22
|
declare function parseSlide(raw: string): SlideInfoBase;
|
|
23
|
-
declare function parse(markdown: string, filepath?: string, themeMeta?: SlidevThemeMeta): SlidevMarkdown
|
|
23
|
+
declare function parse(markdown: string, filepath?: string, themeMeta?: SlidevThemeMeta, extensions?: SlidevPreparserExtension[], onHeadmatter?: PreparserExtensionFromHeadmatter): Promise<SlidevMarkdown>;
|
|
24
24
|
declare function mergeFeatureFlags(a: SlidevFeatureFlags, b: SlidevFeatureFlags): SlidevFeatureFlags;
|
|
25
25
|
declare function scanMonacoModules(md: string): string[];
|
|
26
26
|
|
package/dist/core.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
var
|
|
17
|
+
var _chunk72T7ERBCjs = require('./chunk-72T7ERBC.js');
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
|
|
@@ -31,4 +31,4 @@ var _chunkXTGVXNGIjs = require('./chunk-XTGVXNGI.js');
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
exports.detectFeatures =
|
|
34
|
+
exports.detectFeatures = _chunk72T7ERBCjs.detectFeatures; exports.filterDisabled = _chunk72T7ERBCjs.filterDisabled; exports.mergeFeatureFlags = _chunk72T7ERBCjs.mergeFeatureFlags; exports.parse = _chunk72T7ERBCjs.parse; exports.parseAspectRatio = _chunk72T7ERBCjs.parseAspectRatio; exports.parseRangeString = _chunk72T7ERBCjs.parseRangeString; exports.parseSlide = _chunk72T7ERBCjs.parseSlide; exports.prettify = _chunk72T7ERBCjs.prettify; exports.prettifySlide = _chunk72T7ERBCjs.prettifySlide; exports.resolveConfig = _chunk72T7ERBCjs.resolveConfig; exports.resolveFonts = _chunk72T7ERBCjs.resolveFonts; exports.scanMonacoModules = _chunk72T7ERBCjs.scanMonacoModules; exports.stringify = _chunk72T7ERBCjs.stringify; exports.stringifySlide = _chunk72T7ERBCjs.stringifySlide; exports.verifyConfig = _chunk72T7ERBCjs.verifyConfig;
|
package/dist/core.mjs
CHANGED
package/dist/fs.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { SlidevThemeMeta, SlidevMarkdown, SlideInfoWithPath } from '@slidev/types';
|
|
1
|
+
import { PreparserExtensionLoader, SlidevThemeMeta, SlidevMarkdown, SlideInfoWithPath } from '@slidev/types';
|
|
2
2
|
export { detectFeatures, filterDisabled, mergeFeatureFlags, parse, parseAspectRatio, parseRangeString, parseSlide, prettify, prettifySlide, resolveConfig, resolveFonts, scanMonacoModules, stringify, stringifySlide, verifyConfig } from './core.js';
|
|
3
3
|
|
|
4
|
+
declare function injectPreparserExtensionLoader(fn: PreparserExtensionLoader): void;
|
|
4
5
|
declare function load(filepath: string, themeMeta?: SlidevThemeMeta, content?: string): Promise<SlidevMarkdown>;
|
|
5
6
|
declare function save(data: SlidevMarkdown, filepath?: string): Promise<void>;
|
|
6
7
|
declare function saveExternalSlide(slide: SlideInfoWithPath): Promise<void>;
|
|
7
8
|
|
|
8
|
-
export { load, save, saveExternalSlide };
|
|
9
|
+
export { injectPreparserExtensionLoader, load, save, saveExternalSlide };
|
package/dist/fs.js
CHANGED
|
@@ -14,15 +14,26 @@
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
var
|
|
17
|
+
var _chunk72T7ERBCjs = require('./chunk-72T7ERBC.js');
|
|
18
18
|
|
|
19
19
|
// src/fs.ts
|
|
20
20
|
var _fs = require('fs');
|
|
21
21
|
var _path = require('path');
|
|
22
|
+
var preparserExtensionLoader = null;
|
|
23
|
+
function injectPreparserExtensionLoader(fn) {
|
|
24
|
+
preparserExtensionLoader = fn;
|
|
25
|
+
}
|
|
22
26
|
async function load(filepath, themeMeta, content) {
|
|
23
27
|
const dir = _path.dirname.call(void 0, filepath);
|
|
24
28
|
const markdown = content != null ? content : await _fs.promises.readFile(filepath, "utf-8");
|
|
25
|
-
const
|
|
29
|
+
const preparserExtensions = [];
|
|
30
|
+
const data = await _chunk72T7ERBCjs.parse.call(void 0, markdown, filepath, themeMeta, [], async (headmatter, exts, filepath2) => {
|
|
31
|
+
var _a;
|
|
32
|
+
return [
|
|
33
|
+
...exts,
|
|
34
|
+
...preparserExtensionLoader ? await preparserExtensionLoader((_a = headmatter.addons) != null ? _a : [], filepath2) : []
|
|
35
|
+
];
|
|
36
|
+
});
|
|
26
37
|
const entries = /* @__PURE__ */ new Set([
|
|
27
38
|
filepath
|
|
28
39
|
]);
|
|
@@ -38,7 +49,7 @@ async function load(filepath, themeMeta, content) {
|
|
|
38
49
|
const srcExpression = baseSlide.frontmatter.src;
|
|
39
50
|
const path = _path.resolve.call(void 0, dir, srcExpression);
|
|
40
51
|
const raw = await _fs.promises.readFile(path, "utf-8");
|
|
41
|
-
const subSlides =
|
|
52
|
+
const subSlides = await _chunk72T7ERBCjs.parse.call(void 0, raw, path, themeMeta, preparserExtensions);
|
|
42
53
|
for (const [offset, subSlide] of subSlides.slides.entries()) {
|
|
43
54
|
const slide = { ...baseSlide };
|
|
44
55
|
slide.source = {
|
|
@@ -59,7 +70,7 @@ async function load(filepath, themeMeta, content) {
|
|
|
59
70
|
...baseSlideFrontMatterWithoutSrc,
|
|
60
71
|
srcSequence: `${baseSlide.frontmatter.srcSequence ? `${baseSlide.frontmatter.srcSequence},` : ""}${srcExpression}`
|
|
61
72
|
};
|
|
62
|
-
data.features =
|
|
73
|
+
data.features = _chunk72T7ERBCjs.mergeFeatureFlags.call(void 0, data.features, _chunk72T7ERBCjs.detectFeatures.call(void 0, raw));
|
|
63
74
|
entries.add(path);
|
|
64
75
|
data.slides.splice(iSlide + offset, 0, slide);
|
|
65
76
|
}
|
|
@@ -71,10 +82,10 @@ async function load(filepath, themeMeta, content) {
|
|
|
71
82
|
}
|
|
72
83
|
async function save(data, filepath) {
|
|
73
84
|
filepath = filepath || data.filepath;
|
|
74
|
-
await _fs.promises.writeFile(filepath,
|
|
85
|
+
await _fs.promises.writeFile(filepath, _chunk72T7ERBCjs.stringify.call(void 0, data), "utf-8");
|
|
75
86
|
}
|
|
76
87
|
async function saveExternalSlide(slide) {
|
|
77
|
-
await _fs.promises.writeFile(slide.filepath,
|
|
88
|
+
await _fs.promises.writeFile(slide.filepath, _chunk72T7ERBCjs.stringifySlide.call(void 0, slide), "utf-8");
|
|
78
89
|
}
|
|
79
90
|
|
|
80
91
|
|
|
@@ -95,4 +106,5 @@ async function saveExternalSlide(slide) {
|
|
|
95
106
|
|
|
96
107
|
|
|
97
108
|
|
|
98
|
-
|
|
109
|
+
|
|
110
|
+
exports.detectFeatures = _chunk72T7ERBCjs.detectFeatures; exports.filterDisabled = _chunk72T7ERBCjs.filterDisabled; exports.injectPreparserExtensionLoader = injectPreparserExtensionLoader; exports.load = load; exports.mergeFeatureFlags = _chunk72T7ERBCjs.mergeFeatureFlags; exports.parse = _chunk72T7ERBCjs.parse; exports.parseAspectRatio = _chunk72T7ERBCjs.parseAspectRatio; exports.parseRangeString = _chunk72T7ERBCjs.parseRangeString; exports.parseSlide = _chunk72T7ERBCjs.parseSlide; exports.prettify = _chunk72T7ERBCjs.prettify; exports.prettifySlide = _chunk72T7ERBCjs.prettifySlide; exports.resolveConfig = _chunk72T7ERBCjs.resolveConfig; exports.resolveFonts = _chunk72T7ERBCjs.resolveFonts; exports.save = save; exports.saveExternalSlide = saveExternalSlide; exports.scanMonacoModules = _chunk72T7ERBCjs.scanMonacoModules; exports.stringify = _chunk72T7ERBCjs.stringify; exports.stringifySlide = _chunk72T7ERBCjs.stringifySlide; exports.verifyConfig = _chunk72T7ERBCjs.verifyConfig;
|
package/dist/fs.mjs
CHANGED
|
@@ -14,15 +14,26 @@ import {
|
|
|
14
14
|
stringify,
|
|
15
15
|
stringifySlide,
|
|
16
16
|
verifyConfig
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-RYLG7SAK.mjs";
|
|
18
18
|
|
|
19
19
|
// src/fs.ts
|
|
20
20
|
import { promises as fs } from "fs";
|
|
21
21
|
import { dirname, resolve } from "path";
|
|
22
|
+
var preparserExtensionLoader = null;
|
|
23
|
+
function injectPreparserExtensionLoader(fn) {
|
|
24
|
+
preparserExtensionLoader = fn;
|
|
25
|
+
}
|
|
22
26
|
async function load(filepath, themeMeta, content) {
|
|
23
27
|
const dir = dirname(filepath);
|
|
24
28
|
const markdown = content != null ? content : await fs.readFile(filepath, "utf-8");
|
|
25
|
-
const
|
|
29
|
+
const preparserExtensions = [];
|
|
30
|
+
const data = await parse(markdown, filepath, themeMeta, [], async (headmatter, exts, filepath2) => {
|
|
31
|
+
var _a;
|
|
32
|
+
return [
|
|
33
|
+
...exts,
|
|
34
|
+
...preparserExtensionLoader ? await preparserExtensionLoader((_a = headmatter.addons) != null ? _a : [], filepath2) : []
|
|
35
|
+
];
|
|
36
|
+
});
|
|
26
37
|
const entries = /* @__PURE__ */ new Set([
|
|
27
38
|
filepath
|
|
28
39
|
]);
|
|
@@ -38,7 +49,7 @@ async function load(filepath, themeMeta, content) {
|
|
|
38
49
|
const srcExpression = baseSlide.frontmatter.src;
|
|
39
50
|
const path = resolve(dir, srcExpression);
|
|
40
51
|
const raw = await fs.readFile(path, "utf-8");
|
|
41
|
-
const subSlides = parse(raw, path, themeMeta);
|
|
52
|
+
const subSlides = await parse(raw, path, themeMeta, preparserExtensions);
|
|
42
53
|
for (const [offset, subSlide] of subSlides.slides.entries()) {
|
|
43
54
|
const slide = { ...baseSlide };
|
|
44
55
|
slide.source = {
|
|
@@ -79,6 +90,7 @@ async function saveExternalSlide(slide) {
|
|
|
79
90
|
export {
|
|
80
91
|
detectFeatures,
|
|
81
92
|
filterDisabled,
|
|
93
|
+
injectPreparserExtensionLoader,
|
|
82
94
|
load,
|
|
83
95
|
mergeFeatureFlags,
|
|
84
96
|
parse,
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
var
|
|
17
|
+
var _chunk72T7ERBCjs = require('./chunk-72T7ERBC.js');
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
|
|
@@ -31,4 +31,4 @@ var _chunkXTGVXNGIjs = require('./chunk-XTGVXNGI.js');
|
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
|
|
34
|
-
exports.detectFeatures =
|
|
34
|
+
exports.detectFeatures = _chunk72T7ERBCjs.detectFeatures; exports.filterDisabled = _chunk72T7ERBCjs.filterDisabled; exports.mergeFeatureFlags = _chunk72T7ERBCjs.mergeFeatureFlags; exports.parse = _chunk72T7ERBCjs.parse; exports.parseAspectRatio = _chunk72T7ERBCjs.parseAspectRatio; exports.parseRangeString = _chunk72T7ERBCjs.parseRangeString; exports.parseSlide = _chunk72T7ERBCjs.parseSlide; exports.prettify = _chunk72T7ERBCjs.prettify; exports.prettifySlide = _chunk72T7ERBCjs.prettifySlide; exports.resolveConfig = _chunk72T7ERBCjs.resolveConfig; exports.resolveFonts = _chunk72T7ERBCjs.resolveFonts; exports.scanMonacoModules = _chunk72T7ERBCjs.scanMonacoModules; exports.stringify = _chunk72T7ERBCjs.stringify; exports.stringifySlide = _chunk72T7ERBCjs.stringifySlide; exports.verifyConfig = _chunk72T7ERBCjs.verifyConfig;
|
package/dist/index.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slidev/parser",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.37.0",
|
|
4
4
|
"description": "Markdown parser for Slidev",
|
|
5
5
|
"author": "antfu <anthonyfu117@hotmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"node": ">=14.0.0"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@slidev/types": "0.
|
|
42
|
+
"@slidev/types": "0.37.0",
|
|
43
43
|
"js-yaml": "^4.1.0"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|