@slidev/parser 52.11.5 → 52.12.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/core.d.mts +6 -1
- package/dist/core.mjs +30 -3
- package/dist/fs.d.mts +2 -2
- package/dist/fs.mjs +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +2 -2
- package/package.json +2 -2
package/dist/core.d.mts
CHANGED
|
@@ -16,9 +16,14 @@ declare function stringify(data: SlidevMarkdown): string;
|
|
|
16
16
|
declare function stringifySlide(data: SourceSlideInfo, idx?: number): string;
|
|
17
17
|
declare function prettifySlide(data: SourceSlideInfo): SourceSlideInfo;
|
|
18
18
|
declare function prettify(data: SlidevMarkdown): SlidevMarkdown;
|
|
19
|
+
/**
|
|
20
|
+
* Extract image URLs from slide content and frontmatter.
|
|
21
|
+
* Strips code blocks first to avoid false positives.
|
|
22
|
+
*/
|
|
23
|
+
declare function extractImagesUsage(content: string, frontmatter: Record<string, any>): string[];
|
|
19
24
|
declare function detectFeatures(code: string): SlidevDetectedFeatures;
|
|
20
25
|
declare function parseSlide(raw: string, options?: SlidevParserOptions): Omit<SourceSlideInfo, 'filepath' | 'index' | 'start' | 'contentStart' | 'end'>;
|
|
21
26
|
declare function parse(markdown: string, filepath: string, extensions?: SlidevPreparserExtension[], options?: SlidevParserOptions): Promise<SlidevMarkdown>;
|
|
22
27
|
declare function parseSync(markdown: string, filepath: string, options?: SlidevParserOptions): SlidevMarkdown;
|
|
23
28
|
//#endregion
|
|
24
|
-
export { SlidevParserOptions, TimesplitInput, TimesplitOutput, detectFeatures, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
|
29
|
+
export { SlidevParserOptions, TimesplitInput, TimesplitOutput, detectFeatures, extractImagesUsage, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
package/dist/core.mjs
CHANGED
|
@@ -51,7 +51,8 @@ function getDefaultConfig() {
|
|
|
51
51
|
notesAutoRuby: {},
|
|
52
52
|
duration: "30min",
|
|
53
53
|
timer: "stopwatch",
|
|
54
|
-
magicMoveDuration: 800
|
|
54
|
+
magicMoveDuration: 800,
|
|
55
|
+
preloadImages: true
|
|
55
56
|
};
|
|
56
57
|
}
|
|
57
58
|
function resolveConfig(headmatter, themeMeta = {}, filepath, verify = false) {
|
|
@@ -220,6 +221,30 @@ function matter(code, options) {
|
|
|
220
221
|
content
|
|
221
222
|
};
|
|
222
223
|
}
|
|
224
|
+
const IMAGE_EXTENSIONS = /\.(?:png|jpe?g|gif|svg|webp|avif|ico|bmp|tiff?)$/i;
|
|
225
|
+
/**
|
|
226
|
+
* Extract image URLs from slide content and frontmatter.
|
|
227
|
+
* Strips code blocks first to avoid false positives.
|
|
228
|
+
*/
|
|
229
|
+
function extractImagesUsage(content, frontmatter) {
|
|
230
|
+
const images = /* @__PURE__ */ new Set();
|
|
231
|
+
for (const key of [
|
|
232
|
+
"image",
|
|
233
|
+
"backgroundImage",
|
|
234
|
+
"background"
|
|
235
|
+
]) {
|
|
236
|
+
const val = frontmatter[key];
|
|
237
|
+
if (typeof val === "string" && val && !val.startsWith("data:")) if (key === "background") {
|
|
238
|
+
if (IMAGE_EXTENSIONS.test(val) || val.startsWith("/") || val.startsWith("http")) images.add(val);
|
|
239
|
+
} else images.add(val);
|
|
240
|
+
}
|
|
241
|
+
const stripped = content.replace(/^```[\s\S]+?^```/gm, "");
|
|
242
|
+
for (const [, url] of stripped.matchAll(/!\[[^\]]*\]\(([^)]+)\)/g)) if (url && !url.startsWith("data:")) images.add(url.trim());
|
|
243
|
+
for (const [, url] of stripped.matchAll(/\b(?:src|image)=["']([^"']+)["']/g)) if (url && !url.startsWith("data:") && !url.includes("{{") && IMAGE_EXTENSIONS.test(url)) images.add(url.trim());
|
|
244
|
+
for (const [, url] of stripped.matchAll(/:(?:src|image)=["']'([^']+)'["']/g)) if (url && !url.startsWith("data:") && IMAGE_EXTENSIONS.test(url)) images.add(url.trim());
|
|
245
|
+
for (const [, url] of stripped.matchAll(/url\(["']?([^"')]+)["']?\)/g)) if (url && !url.startsWith("data:") && IMAGE_EXTENSIONS.test(url)) images.add(url.trim());
|
|
246
|
+
return Array.from(images);
|
|
247
|
+
}
|
|
223
248
|
function detectFeatures(code) {
|
|
224
249
|
return {
|
|
225
250
|
katex: !!code.match(/\$.*?\$/) || !!code.match(/\$\$/),
|
|
@@ -251,6 +276,7 @@ function parseSlide(raw, options = {}) {
|
|
|
251
276
|
level = match?.[1]?.length;
|
|
252
277
|
}
|
|
253
278
|
if (frontmatter.level) level = frontmatter.level || 1;
|
|
279
|
+
const images = extractImagesUsage(content, frontmatter);
|
|
254
280
|
return {
|
|
255
281
|
raw,
|
|
256
282
|
title,
|
|
@@ -262,7 +288,8 @@ function parseSlide(raw, options = {}) {
|
|
|
262
288
|
frontmatterStyle: matterResult.type,
|
|
263
289
|
frontmatterDoc: matterResult.doc,
|
|
264
290
|
frontmatterRaw: matterResult.raw,
|
|
265
|
-
note
|
|
291
|
+
note,
|
|
292
|
+
images
|
|
266
293
|
};
|
|
267
294
|
}
|
|
268
295
|
async function parse(markdown, filepath, extensions, options = {}) {
|
|
@@ -400,4 +427,4 @@ function hash(str) {
|
|
|
400
427
|
}
|
|
401
428
|
|
|
402
429
|
//#endregion
|
|
403
|
-
export { detectFeatures, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
|
430
|
+
export { detectFeatures, extractImagesUsage, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
package/dist/fs.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as TimesplitOutput, i as TimesplitInput, n as parseRangeString, o as parseTimesplits, r as parseTimeString, t as parseAspectRatio } from "./utils-BwHfBd2q.mjs";
|
|
2
|
-
import { SlidevParserOptions, detectFeatures, getDefaultConfig, parse, parseSlide, parseSync, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from "./core.mjs";
|
|
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
4
|
|
|
5
5
|
//#region src/fs.d.ts
|
|
@@ -12,4 +12,4 @@ type LoadedSlidevData = Omit<SlidevData, 'config' | 'themeMeta'>;
|
|
|
12
12
|
declare function load(userRoot: string, filepath: string, sources?: Record<string, string> | ((path: string) => Promise<string>), mode?: string): Promise<LoadedSlidevData>;
|
|
13
13
|
declare function save(markdown: SlidevMarkdown): Promise<string>;
|
|
14
14
|
//#endregion
|
|
15
|
-
export { LoadedSlidevData, SlidevParserOptions, TimesplitInput, TimesplitOutput, detectFeatures, getDefaultConfig, injectPreparserExtensionLoader, load, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, save, stringify, stringifySlide, verifyConfig };
|
|
15
|
+
export { LoadedSlidevData, SlidevParserOptions, TimesplitInput, TimesplitOutput, detectFeatures, extractImagesUsage, getDefaultConfig, injectPreparserExtensionLoader, load, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, save, stringify, stringifySlide, verifyConfig };
|
package/dist/fs.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { i as parseTimeString, n as parseRangeString, r as parseTimesplits, t as parseAspectRatio } from "./utils-BiNCPCdQ.mjs";
|
|
2
|
-
import { detectFeatures, getDefaultConfig, parse, parseSlide, parseSync, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from "./core.mjs";
|
|
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
5
|
import { existsSync } from "node:fs";
|
|
@@ -105,4 +105,4 @@ async function save(markdown) {
|
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
//#endregion
|
|
108
|
-
export { detectFeatures, getDefaultConfig, injectPreparserExtensionLoader, load, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, save, stringify, stringifySlide, verifyConfig };
|
|
108
|
+
export { detectFeatures, extractImagesUsage, getDefaultConfig, injectPreparserExtensionLoader, 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
1
|
import { a as TimesplitOutput, i as TimesplitInput, n as parseRangeString, o as parseTimesplits, r as parseTimeString, t as parseAspectRatio } from "./utils-BwHfBd2q.mjs";
|
|
2
|
-
import { SlidevParserOptions, detectFeatures, getDefaultConfig, parse, parseSlide, parseSync, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from "./core.mjs";
|
|
3
|
-
export { SlidevParserOptions, TimesplitInput, TimesplitOutput, detectFeatures, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
|
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 };
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { i as parseTimeString, n as parseRangeString, r as parseTimesplits, t as parseAspectRatio } from "./utils-BiNCPCdQ.mjs";
|
|
2
|
-
import { detectFeatures, getDefaultConfig, parse, parseSlide, parseSync, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from "./core.mjs";
|
|
2
|
+
import { detectFeatures, extractImagesUsage, getDefaultConfig, parse, parseSlide, parseSync, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from "./core.mjs";
|
|
3
3
|
|
|
4
|
-
export { detectFeatures, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
|
4
|
+
export { detectFeatures, extractImagesUsage, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, parseTimeString, parseTimesplits, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slidev/parser",
|
|
3
|
-
"version": "52.
|
|
3
|
+
"version": "52.12.0",
|
|
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.8.2",
|
|
34
|
-
"@slidev/types": "52.
|
|
34
|
+
"@slidev/types": "52.12.0"
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
37
|
"build": "tsdown",
|