@slidev/parser 52.16.0 → 52.17.1
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/core.d.mts +2 -3
- package/dist/core.mjs +4 -2
- package/dist/fs.d.mts +8 -3
- package/dist/fs.mjs +19 -4
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{utils-DpcPp-I0.d.mts → utils-CmpEoa5K.d.mts} +7 -1
- package/dist/utils.d.mts +2 -2
- package/dist/utils.mjs +13 -1
- package/package.json +2 -2
package/dist/core.d.mts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { a as TimesplitInput, i as parseTimeString, n as parseAspectRatio, o as TimesplitOutput, r as parseRangeString, s as parseTimesplits, t as isPathInsideRoots } from "./utils-CmpEoa5K.mjs";
|
|
2
2
|
import { FontOptions, ResolvedFontOptions, SlidevConfig, SlidevDetectedFeatures, SlidevMarkdown, SlidevPreparserExtension, SlidevThemeMeta, SourceSlideInfo } from "@slidev/types";
|
|
3
|
-
|
|
4
3
|
//#region src/config.d.ts
|
|
5
4
|
declare function getDefaultConfig(): SlidevConfig;
|
|
6
5
|
declare function resolveConfig(headmatter: any, themeMeta?: SlidevThemeMeta, filepath?: string, verify?: boolean): SlidevConfig;
|
|
@@ -26,4 +25,4 @@ declare function parseSlide(raw: string, options?: SlidevParserOptions): Omit<So
|
|
|
26
25
|
declare function parse(markdown: string, filepath: string, extensions?: SlidevPreparserExtension[], options?: SlidevParserOptions): Promise<SlidevMarkdown>;
|
|
27
26
|
declare function parseSync(markdown: string, filepath: string, options?: SlidevParserOptions): SlidevMarkdown;
|
|
28
27
|
//#endregion
|
|
29
|
-
export { SlidevParserOptions, TimesplitInput, TimesplitOutput, detectFeatures, extractImagesUsage, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
|
28
|
+
export { SlidevParserOptions, TimesplitInput, TimesplitOutput, detectFeatures, extractImagesUsage, getDefaultConfig, isPathInsideRoots, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
package/dist/core.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { parseAspectRatio, parseRangeString, parseTimeString, parseTimesplits } from "./utils.mjs";
|
|
1
|
+
import { isPathInsideRoots, parseAspectRatio, parseRangeString, parseTimeString, parseTimesplits } from "./utils.mjs";
|
|
2
2
|
import { ensurePrefix, toArray, uniq } from "@antfu/utils";
|
|
3
3
|
import YAML from "yaml";
|
|
4
4
|
//#region src/config.ts
|
|
@@ -44,8 +44,10 @@ function getDefaultConfig() {
|
|
|
44
44
|
htmlAttrs: {},
|
|
45
45
|
transition: null,
|
|
46
46
|
editor: true,
|
|
47
|
+
mcp: true,
|
|
47
48
|
contextMenu: null,
|
|
48
49
|
wakeLock: true,
|
|
50
|
+
pwa: false,
|
|
49
51
|
remote: false,
|
|
50
52
|
mdc: false,
|
|
51
53
|
comark: false,
|
|
@@ -476,4 +478,4 @@ function hash(str) {
|
|
|
476
478
|
return hash.toString(36).slice(0, 12);
|
|
477
479
|
}
|
|
478
480
|
//#endregion
|
|
479
|
-
export { detectFeatures, extractImagesUsage, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
|
481
|
+
export { detectFeatures, extractImagesUsage, getDefaultConfig, isPathInsideRoots, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
package/dist/fs.d.mts
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { a as TimesplitInput, i as parseTimeString, n as parseAspectRatio, o as TimesplitOutput, r as parseRangeString, s as parseTimesplits, t as isPathInsideRoots } from "./utils-CmpEoa5K.mjs";
|
|
2
2
|
import { SlidevParserOptions, detectFeatures, extractImagesUsage, getDefaultConfig, parse, parseSlide, parseSync, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from "./core.mjs";
|
|
3
3
|
import { PreparserExtensionLoader, SlidevData, SlidevMarkdown } from "@slidev/types";
|
|
4
|
-
|
|
5
4
|
//#region src/fs.d.ts
|
|
6
5
|
declare function injectPreparserExtensionLoader(fn: PreparserExtensionLoader): void;
|
|
7
6
|
interface LoadRootsInfo {
|
|
8
7
|
roots: string[];
|
|
9
8
|
userRoot: string;
|
|
9
|
+
/**
|
|
10
|
+
* When provided, `src:` includes resolving outside these roots are
|
|
11
|
+
* rejected (recorded as an error) instead of being loaded. Optional for
|
|
12
|
+
* backward compatibility with other `@slidev/parser` consumers.
|
|
13
|
+
*/
|
|
14
|
+
allowedRoots?: string[];
|
|
10
15
|
}
|
|
11
16
|
/**
|
|
12
17
|
* Slidev data without config and themeMeta,
|
|
@@ -16,4 +21,4 @@ type LoadedSlidevData = Omit<SlidevData, 'config' | 'themeMeta'>;
|
|
|
16
21
|
declare function load(options: LoadRootsInfo, filepath: string, sources?: Record<string, string> | ((path: string) => Promise<string>), mode?: string): Promise<LoadedSlidevData>;
|
|
17
22
|
declare function save(markdown: SlidevMarkdown): Promise<string>;
|
|
18
23
|
//#endregion
|
|
19
|
-
export { LoadRootsInfo, LoadedSlidevData, SlidevParserOptions, TimesplitInput, TimesplitOutput, detectFeatures, extractImagesUsage, getDefaultConfig, injectPreparserExtensionLoader, load, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, save, stringify, stringifySlide, verifyConfig };
|
|
24
|
+
export { LoadRootsInfo, LoadedSlidevData, SlidevParserOptions, TimesplitInput, TimesplitOutput, detectFeatures, extractImagesUsage, getDefaultConfig, injectPreparserExtensionLoader, isPathInsideRoots, load, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, save, stringify, stringifySlide, verifyConfig };
|
package/dist/fs.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { parseAspectRatio, parseRangeString, parseTimeString, parseTimesplits } from "./utils.mjs";
|
|
1
|
+
import { isPathInsideRoots, parseAspectRatio, parseRangeString, parseTimeString, parseTimesplits } from "./utils.mjs";
|
|
2
2
|
import { detectFeatures, extractImagesUsage, getDefaultConfig, parse, parseSlide, parseSync, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from "./core.mjs";
|
|
3
3
|
import { slash } from "@antfu/utils";
|
|
4
4
|
import YAML from "yaml";
|
|
5
|
+
import { dirname, resolve } from "node:path";
|
|
5
6
|
import { existsSync } from "node:fs";
|
|
6
7
|
import { readFile, writeFile } from "node:fs/promises";
|
|
7
|
-
import { dirname, resolve } from "node:path";
|
|
8
8
|
//#region src/fs.ts
|
|
9
9
|
const RE_FRONTMATTER_START = /^---(?:[^-].*)?$/;
|
|
10
10
|
const RE_BLANK_LINE = /^\s*$/;
|
|
@@ -66,7 +66,22 @@ async function load(options, filepath, sources = {}, mode) {
|
|
|
66
66
|
...frontmatterOverride
|
|
67
67
|
};
|
|
68
68
|
delete frontmatterOverride.src;
|
|
69
|
-
|
|
69
|
+
const ancestorPaths = new Set((importChain ?? []).map((s) => s.filepath));
|
|
70
|
+
if (path === slide.filepath || ancestorPaths.has(path)) {
|
|
71
|
+
md.errors ??= [];
|
|
72
|
+
md.errors.push({
|
|
73
|
+
row: slide.start,
|
|
74
|
+
message: `Circular import detected for "${slide.frontmatter.src}" (${path})`
|
|
75
|
+
});
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (options.allowedRoots && !isPathInsideRoots(path, options.allowedRoots)) {
|
|
79
|
+
md.errors ??= [];
|
|
80
|
+
md.errors.push({
|
|
81
|
+
row: slide.start,
|
|
82
|
+
message: `Imported markdown escapes the project root: ${path}`
|
|
83
|
+
});
|
|
84
|
+
} else if (!existsSync(path)) {
|
|
70
85
|
md.errors ??= [];
|
|
71
86
|
md.errors.push({
|
|
72
87
|
row: slide.start,
|
|
@@ -107,4 +122,4 @@ async function save(markdown) {
|
|
|
107
122
|
return fileContent;
|
|
108
123
|
}
|
|
109
124
|
//#endregion
|
|
110
|
-
export { detectFeatures, extractImagesUsage, getDefaultConfig, injectPreparserExtensionLoader, load, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, save, stringify, stringifySlide, verifyConfig };
|
|
125
|
+
export { detectFeatures, extractImagesUsage, getDefaultConfig, injectPreparserExtensionLoader, isPathInsideRoots, load, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, save, stringify, stringifySlide, verifyConfig };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { a as TimesplitInput, i as parseTimeString, n as parseAspectRatio, o as TimesplitOutput, r as parseRangeString, s as parseTimesplits, t as isPathInsideRoots } from "./utils-CmpEoa5K.mjs";
|
|
2
2
|
import { SlidevParserOptions, detectFeatures, extractImagesUsage, getDefaultConfig, parse, parseSlide, parseSync, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from "./core.mjs";
|
|
3
|
-
export { SlidevParserOptions, TimesplitInput, TimesplitOutput, detectFeatures, extractImagesUsage, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
|
3
|
+
export { SlidevParserOptions, TimesplitInput, TimesplitOutput, detectFeatures, extractImagesUsage, getDefaultConfig, isPathInsideRoots, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { parseAspectRatio, parseRangeString, parseTimeString, parseTimesplits } from "./utils.mjs";
|
|
1
|
+
import { isPathInsideRoots, parseAspectRatio, parseRangeString, parseTimeString, parseTimesplits } from "./utils.mjs";
|
|
2
2
|
import { detectFeatures, extractImagesUsage, getDefaultConfig, parse, parseSlide, parseSync, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from "./core.mjs";
|
|
3
|
-
export { detectFeatures, extractImagesUsage, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
|
3
|
+
export { detectFeatures, extractImagesUsage, getDefaultConfig, isPathInsideRoots, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
|
@@ -20,6 +20,12 @@ declare function parseTimeString(timestamp: string | number): {
|
|
|
20
20
|
};
|
|
21
21
|
//#endregion
|
|
22
22
|
//#region src/utils.d.ts
|
|
23
|
+
/**
|
|
24
|
+
* Whether `filePath` resolves inside any of `roots` (no `..` escape).
|
|
25
|
+
* Inlined here (rather than imported from the `slidev` package) because
|
|
26
|
+
* `@slidev/parser` must stay independent of `@slidev/slidev`.
|
|
27
|
+
*/
|
|
28
|
+
declare function isPathInsideRoots(filePath: string, roots: string[]): boolean;
|
|
23
29
|
/**
|
|
24
30
|
* 1,3-5,8 => [1, 3, 4, 5, 8]
|
|
25
31
|
*/
|
|
@@ -29,4 +35,4 @@ declare function parseRangeString(total: number, rangeStr?: string): number[];
|
|
|
29
35
|
*/
|
|
30
36
|
declare function parseAspectRatio(str: string | number): number;
|
|
31
37
|
//#endregion
|
|
32
|
-
export {
|
|
38
|
+
export { TimesplitInput as a, parseTimeString as i, parseAspectRatio as n, TimesplitOutput as o, parseRangeString as r, parseTimesplits as s, isPathInsideRoots as t };
|
package/dist/utils.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as
|
|
2
|
-
export { TimesplitInput, TimesplitOutput, parseAspectRatio, parseRangeString, parseTimeString, parseTimesplits };
|
|
1
|
+
import { a as TimesplitInput, i as parseTimeString, n as parseAspectRatio, o as TimesplitOutput, r as parseRangeString, s as parseTimesplits, t as isPathInsideRoots } from "./utils-CmpEoa5K.mjs";
|
|
2
|
+
export { TimesplitInput, TimesplitOutput, isPathInsideRoots, parseAspectRatio, parseRangeString, parseTimeString, parseTimesplits };
|
package/dist/utils.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { isNumber, range, uniq } from "@antfu/utils";
|
|
2
|
+
import { isAbsolute, relative } from "node:path";
|
|
2
3
|
//#region src/timesplit/timestring.ts
|
|
3
4
|
/**
|
|
4
5
|
* Parse timestamp into seconds
|
|
@@ -113,6 +114,17 @@ function parseTimesplits(inputs) {
|
|
|
113
114
|
}
|
|
114
115
|
//#endregion
|
|
115
116
|
//#region src/utils.ts
|
|
117
|
+
/**
|
|
118
|
+
* Whether `filePath` resolves inside any of `roots` (no `..` escape).
|
|
119
|
+
* Inlined here (rather than imported from the `slidev` package) because
|
|
120
|
+
* `@slidev/parser` must stay independent of `@slidev/slidev`.
|
|
121
|
+
*/
|
|
122
|
+
function isPathInsideRoots(filePath, roots) {
|
|
123
|
+
return roots.some((root) => {
|
|
124
|
+
const rel = relative(root, filePath);
|
|
125
|
+
return rel === "" || !!rel && !rel.startsWith("..") && !isAbsolute(rel);
|
|
126
|
+
});
|
|
127
|
+
}
|
|
116
128
|
const RE_ASPECT_RATIO_SEPARATOR = /[:/x|]/;
|
|
117
129
|
/**
|
|
118
130
|
* 1,3-5,8 => [1, 3, 4, 5, 8]
|
|
@@ -141,4 +153,4 @@ function parseAspectRatio(str) {
|
|
|
141
153
|
return w / h;
|
|
142
154
|
}
|
|
143
155
|
//#endregion
|
|
144
|
-
export { parseAspectRatio, parseRangeString, parseTimeString, parseTimesplits };
|
|
156
|
+
export { isPathInsideRoots, parseAspectRatio, parseRangeString, parseTimeString, parseTimesplits };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slidev/parser",
|
|
3
|
-
"version": "52.
|
|
3
|
+
"version": "52.17.1",
|
|
4
4
|
"description": "Markdown parser for Slidev",
|
|
5
5
|
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@antfu/utils": "^9.3.0",
|
|
33
33
|
"yaml": "^2.9.0",
|
|
34
|
-
"@slidev/types": "52.
|
|
34
|
+
"@slidev/types": "52.17.1"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"tsdown-stale-guard": "^0.1.2"
|