@slidev/parser 0.49.17 → 0.49.18

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.
@@ -71,10 +71,12 @@ function getDefaultConfig() {
71
71
  css: "unocss",
72
72
  presenter: true,
73
73
  htmlAttrs: {},
74
- transition: void 0,
74
+ transition: null,
75
75
  editor: true,
76
- contextMenu: void 0,
77
- wakeLock: true
76
+ contextMenu: null,
77
+ wakeLock: true,
78
+ remote: false,
79
+ mdc: false
78
80
  };
79
81
  }
80
82
  function resolveConfig(headmatter, themeMeta = {}, filepath, verify = false) {
@@ -243,7 +245,7 @@ function prettify(data) {
243
245
  data.slides.forEach(prettifySlide);
244
246
  return data;
245
247
  }
246
- function matter(code) {
248
+ function matter(code, options) {
247
249
  let type;
248
250
  let raw;
249
251
  let content = code.replace(/^---.*\r?\n([\s\S]*?)---/, (_, f) => {
@@ -258,12 +260,12 @@ function matter(code) {
258
260
  return "";
259
261
  });
260
262
  }
261
- const doc = YAML.parseDocument(raw || "");
263
+ const doc = raw && !options.noParseYAML ? YAML.parseDocument(raw) : void 0;
262
264
  return {
263
265
  type,
264
266
  raw,
265
267
  doc,
266
- data: doc.toJSON(),
268
+ data: doc?.toJSON(),
267
269
  content
268
270
  };
269
271
  }
@@ -275,8 +277,8 @@ function detectFeatures(code) {
275
277
  mermaid: !!code.match(/^```mermaid/m)
276
278
  };
277
279
  }
278
- function parseSlide(raw) {
279
- const matterResult = matter(raw);
280
+ function parseSlide(raw, options = {}) {
281
+ const matterResult = matter(raw, options);
280
282
  let note;
281
283
  const frontmatter = matterResult.data || {};
282
284
  let content = matterResult.content.trim();
@@ -311,8 +313,8 @@ function parseSlide(raw) {
311
313
  note
312
314
  };
313
315
  }
314
- async function parse(markdown, filepath, extensions) {
315
- const lines = markdown.split(/\r?\n/g);
316
+ async function parse(markdown, filepath, extensions, options = {}) {
317
+ const lines = markdown.split(options.preserveCR ? "\n" : /\r?\n/g);
316
318
  const slides = [];
317
319
  let start = 0;
318
320
  let contentStart = 0;
@@ -321,7 +323,7 @@ async function parse(markdown, filepath, extensions) {
321
323
  return;
322
324
  const raw = lines.slice(start, end).join("\n");
323
325
  const slide = {
324
- ...parseSlide(raw),
326
+ ...parseSlide(raw, options),
325
327
  filepath,
326
328
  index: slides.length,
327
329
  start,
@@ -379,6 +381,59 @@ async function parse(markdown, filepath, extensions) {
379
381
  slides
380
382
  };
381
383
  }
384
+ function parseSync(markdown, filepath, options = {}) {
385
+ const lines = markdown.split(options.preserveCR ? "\n" : /\r?\n/g);
386
+ const slides = [];
387
+ let start = 0;
388
+ let contentStart = 0;
389
+ function slice(end) {
390
+ if (start === end)
391
+ return;
392
+ const raw = lines.slice(start, end).join("\n");
393
+ const slide = {
394
+ ...parseSlide(raw, options),
395
+ filepath,
396
+ index: slides.length,
397
+ start,
398
+ contentStart,
399
+ end
400
+ };
401
+ slides.push(slide);
402
+ start = end + 1;
403
+ contentStart = end + 1;
404
+ }
405
+ for (let i = 0; i < lines.length; i++) {
406
+ const line = lines[i].trimEnd();
407
+ if (line.startsWith("---")) {
408
+ slice(i);
409
+ const next = lines[i + 1];
410
+ if (line[3] !== "-" && next?.trim()) {
411
+ start = i;
412
+ for (i += 1; i < lines.length; i++) {
413
+ if (lines[i].trimEnd() === "---")
414
+ break;
415
+ }
416
+ contentStart = i + 1;
417
+ }
418
+ } else if (line.trimStart().startsWith("```")) {
419
+ const codeBlockLevel = line.match(/^\s*`+/)[0];
420
+ let j = i + 1;
421
+ for (; j < lines.length; j++) {
422
+ if (lines[j].startsWith(codeBlockLevel))
423
+ break;
424
+ }
425
+ if (j !== lines.length)
426
+ i = j;
427
+ }
428
+ }
429
+ if (start <= lines.length - 1)
430
+ slice(lines.length);
431
+ return {
432
+ filepath,
433
+ raw: markdown,
434
+ slides
435
+ };
436
+ }
382
437
  function scanMonacoReferencedMods(md) {
383
438
  const types = /* @__PURE__ */ new Set();
384
439
  const deps = /* @__PURE__ */ new Set();
@@ -419,5 +474,6 @@ export {
419
474
  prettify,
420
475
  detectFeatures,
421
476
  parseSlide,
422
- parse
477
+ parse,
478
+ parseSync
423
479
  };
package/dist/core.d.mts CHANGED
@@ -14,12 +14,17 @@ declare function resolveConfig(headmatter: any, themeMeta?: SlidevThemeMeta, fil
14
14
  declare function verifyConfig(config: SlidevConfig, themeMeta?: SlidevThemeMeta, warn?: (v: string) => void): void;
15
15
  declare function resolveFonts(fonts?: FontOptions): ResolvedFontOptions;
16
16
 
17
+ interface SlidevParserOptions {
18
+ noParseYAML?: boolean;
19
+ preserveCR?: boolean;
20
+ }
17
21
  declare function stringify(data: SlidevMarkdown): string;
18
22
  declare function stringifySlide(data: SourceSlideInfo, idx?: number): string;
19
23
  declare function prettifySlide(data: SourceSlideInfo): SourceSlideInfo;
20
24
  declare function prettify(data: SlidevMarkdown): SlidevMarkdown;
21
25
  declare function detectFeatures(code: string): SlidevDetectedFeatures;
22
- declare function parseSlide(raw: string): Omit<SourceSlideInfo, 'filepath' | 'index' | 'start' | 'contentStart' | 'end'>;
23
- declare function parse(markdown: string, filepath: string, extensions?: SlidevPreparserExtension[]): Promise<SlidevMarkdown>;
26
+ declare function parseSlide(raw: string, options?: SlidevParserOptions): Omit<SourceSlideInfo, 'filepath' | 'index' | 'start' | 'contentStart' | 'end'>;
27
+ declare function parse(markdown: string, filepath: string, extensions?: SlidevPreparserExtension[], options?: SlidevParserOptions): Promise<SlidevMarkdown>;
28
+ declare function parseSync(markdown: string, filepath: string, options?: SlidevParserOptions): SlidevMarkdown;
24
29
 
25
- export { detectFeatures, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
30
+ export { type SlidevParserOptions, detectFeatures, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
package/dist/core.mjs CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  parseAspectRatio,
6
6
  parseRangeString,
7
7
  parseSlide,
8
+ parseSync,
8
9
  prettify,
9
10
  prettifySlide,
10
11
  resolveConfig,
@@ -12,7 +13,7 @@ import {
12
13
  stringify,
13
14
  stringifySlide,
14
15
  verifyConfig
15
- } from "./chunk-ZR4UYCRF.mjs";
16
+ } from "./chunk-3LX2JHFR.mjs";
16
17
  export {
17
18
  detectFeatures,
18
19
  getDefaultConfig,
@@ -20,6 +21,7 @@ export {
20
21
  parseAspectRatio,
21
22
  parseRangeString,
22
23
  parseSlide,
24
+ parseSync,
23
25
  prettify,
24
26
  prettifySlide,
25
27
  resolveConfig,
package/dist/fs.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { PreparserExtensionLoader, SlidevData, SlidevMarkdown } from '@slidev/types';
2
- export { detectFeatures, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from './core.mjs';
2
+ export { SlidevParserOptions, detectFeatures, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from './core.mjs';
3
3
 
4
4
  declare function injectPreparserExtensionLoader(fn: PreparserExtensionLoader): void;
5
5
  /**
package/dist/fs.mjs CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  parseAspectRatio,
6
6
  parseRangeString,
7
7
  parseSlide,
8
+ parseSync,
8
9
  prettify,
9
10
  prettifySlide,
10
11
  resolveConfig,
@@ -12,7 +13,7 @@ import {
12
13
  stringify,
13
14
  stringifySlide,
14
15
  verifyConfig
15
- } from "./chunk-ZR4UYCRF.mjs";
16
+ } from "./chunk-3LX2JHFR.mjs";
16
17
 
17
18
  // src/fs.ts
18
19
  import fs from "node:fs";
@@ -127,6 +128,7 @@ export {
127
128
  parseAspectRatio,
128
129
  parseRangeString,
129
130
  parseSlide,
131
+ parseSync,
130
132
  prettify,
131
133
  prettifySlide,
132
134
  resolveConfig,
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- export { detectFeatures, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from './core.mjs';
1
+ export { SlidevParserOptions, detectFeatures, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, parseSync, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from './core.mjs';
2
2
  import '@slidev/types';
package/dist/index.mjs CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  parseAspectRatio,
6
6
  parseRangeString,
7
7
  parseSlide,
8
+ parseSync,
8
9
  prettify,
9
10
  prettifySlide,
10
11
  resolveConfig,
@@ -12,7 +13,7 @@ import {
12
13
  stringify,
13
14
  stringifySlide,
14
15
  verifyConfig
15
- } from "./chunk-ZR4UYCRF.mjs";
16
+ } from "./chunk-3LX2JHFR.mjs";
16
17
  export {
17
18
  detectFeatures,
18
19
  getDefaultConfig,
@@ -20,6 +21,7 @@ export {
20
21
  parseAspectRatio,
21
22
  parseRangeString,
22
23
  parseSlide,
24
+ parseSync,
23
25
  prettify,
24
26
  prettifySlide,
25
27
  resolveConfig,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slidev/parser",
3
- "version": "0.49.17",
3
+ "version": "0.49.18",
4
4
  "description": "Markdown parser for Slidev",
5
5
  "author": "antfu <anthonyfu117@hotmail.com>",
6
6
  "license": "MIT",
@@ -38,7 +38,7 @@
38
38
  "dependencies": {
39
39
  "@antfu/utils": "^0.7.10",
40
40
  "yaml": "^2.4.5",
41
- "@slidev/types": "0.49.17"
41
+ "@slidev/types": "0.49.18"
42
42
  },
43
43
  "scripts": {
44
44
  "build": "rimraf dist && tsup src/index.ts src/core.ts src/fs.ts",