@slidev/parser 0.49.0-beta.3 → 0.49.0-beta.5

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.
@@ -1,51 +1,9 @@
1
1
  // src/core.ts
2
2
  import YAML from "yaml";
3
-
4
- // ../../node_modules/.pnpm/@antfu+utils@0.7.7/node_modules/@antfu/utils/dist/index.mjs
5
- function toArray(array) {
6
- array = array ?? [];
7
- return Array.isArray(array) ? array : [array];
8
- }
9
- function uniq(array) {
10
- return Array.from(new Set(array));
11
- }
12
- function range(...args) {
13
- let start, stop, step;
14
- if (args.length === 1) {
15
- start = 0;
16
- step = 1;
17
- [stop] = args;
18
- } else {
19
- [start, stop, step = 1] = args;
20
- }
21
- const arr = [];
22
- let current = start;
23
- while (current < stop) {
24
- arr.push(current);
25
- current += step || 1;
26
- }
27
- return arr;
28
- }
29
- function notNullish(v) {
30
- return v != null;
31
- }
32
- var isNumber = (val) => typeof val === "number";
33
- function slash(str) {
34
- return str.replace(/\\/g, "/");
35
- }
36
- function ensurePrefix(prefix, str) {
37
- if (!str.startsWith(prefix))
38
- return prefix + str;
39
- return str;
40
- }
41
- function objectMap(obj, fn) {
42
- return Object.fromEntries(
43
- Object.entries(obj).map(([k, v]) => fn(k, v)).filter(notNullish)
44
- );
45
- }
46
- var VOID = Symbol("p-void");
3
+ import { ensurePrefix } from "@antfu/utils";
47
4
 
48
5
  // src/utils.ts
6
+ import { isNumber, range, uniq } from "@antfu/utils";
49
7
  function parseRangeString(total, rangeStr) {
50
8
  if (!rangeStr || rangeStr === "all" || rangeStr === "*")
51
9
  return range(1, total + 1);
@@ -78,6 +36,7 @@ function parseAspectRatio(str) {
78
36
  }
79
37
 
80
38
  // src/config.ts
39
+ import { toArray, uniq as uniq2 } from "@antfu/utils";
81
40
  function getDefaultConfig() {
82
41
  return {
83
42
  theme: "default",
@@ -88,6 +47,7 @@ function getDefaultConfig() {
88
47
  monaco: true,
89
48
  monacoTypesSource: "local",
90
49
  monacoTypesAdditionalPackages: [],
50
+ monacoRunAdditionalDeps: [],
91
51
  download: false,
92
52
  export: {},
93
53
  info: false,
@@ -175,7 +135,7 @@ function resolveFonts(fonts = {}) {
175
135
  const weights = toArray(fonts.weights || "200,400,600").flatMap((i) => i.toString().split(/,\s*/g)).map((i) => i.trim());
176
136
  const custom = toArray(fonts.custom).flatMap((i) => i.split(/,\s*/g)).map((i) => i.trim());
177
137
  const local = toArray(fonts.local).flatMap((i) => i.split(/,\s*/g)).map((i) => i.trim());
178
- const webfonts = fonts.webfonts ? fonts.webfonts : fallbacks ? uniq([...sans, ...serif, ...mono, ...custom]) : [];
138
+ const webfonts = fonts.webfonts ? fonts.webfonts : fallbacks ? uniq2([...sans, ...serif, ...mono, ...custom]) : [];
179
139
  webfonts.filter((i) => local.includes(i));
180
140
  function toQuoted(font) {
181
141
  if (/^(['"]).*\1$/.test(font))
@@ -183,7 +143,7 @@ function resolveFonts(fonts = {}) {
183
143
  return `"${font}"`;
184
144
  }
185
145
  if (fallbacks) {
186
- sans = uniq([
146
+ sans = uniq2([
187
147
  ...sans.map(toQuoted),
188
148
  "ui-sans-serif",
189
149
  "system-ui",
@@ -200,7 +160,7 @@ function resolveFonts(fonts = {}) {
200
160
  '"Segoe UI Symbol"',
201
161
  '"Noto Color Emoji"'
202
162
  ]);
203
- serif = uniq([
163
+ serif = uniq2([
204
164
  ...serif.map(toQuoted),
205
165
  "ui-serif",
206
166
  "Georgia",
@@ -209,7 +169,7 @@ function resolveFonts(fonts = {}) {
209
169
  "Times",
210
170
  "serif"
211
171
  ]);
212
- mono = uniq([
172
+ mono = uniq2([
213
173
  ...mono.map(toQuoted),
214
174
  "ui-monospace",
215
175
  "SFMono-Regular",
@@ -308,7 +268,7 @@ function matter(code) {
308
268
  function detectFeatures(code) {
309
269
  return {
310
270
  katex: !!code.match(/\$.*?\$/) || !!code.match(/\$\$/),
311
- monaco: !!code.match(/{monaco.*}/),
271
+ monaco: code.match(/{monaco.*}/) ? scanMonacoReferencedMods(code) : false,
312
272
  tweet: !!code.match(/<Tweet\b/),
313
273
  mermaid: !!code.match(/^```mermaid/m)
314
274
  };
@@ -409,12 +369,34 @@ async function parse(markdown, filepath, extensions) {
409
369
  slides
410
370
  };
411
371
  }
412
- function mergeFeatureFlags(a, b) {
413
- return objectMap(a, (k, v) => [k, v || b[k]]);
372
+ function scanMonacoReferencedMods(md) {
373
+ const types = /* @__PURE__ */ new Set();
374
+ const deps = /* @__PURE__ */ new Set();
375
+ md.replace(
376
+ /^```(\w+?)\s*{monaco(.*?)}[\s\n]*([\s\S]+?)^```/mg,
377
+ (full, lang = "ts", kind, code) => {
378
+ lang = lang.trim();
379
+ const isDep = kind === "-run";
380
+ if (["js", "javascript", "ts", "typescript"].includes(lang)) {
381
+ for (const [, , specifier] of code.matchAll(/\s+from\s+(["'])([\/\.\w@-]+)\1/g)) {
382
+ if (specifier) {
383
+ if (!"./".includes(specifier))
384
+ types.add(specifier);
385
+ if (isDep)
386
+ deps.add(specifier);
387
+ }
388
+ }
389
+ }
390
+ return "";
391
+ }
392
+ );
393
+ return {
394
+ types: Array.from(types),
395
+ deps: Array.from(deps)
396
+ };
414
397
  }
415
398
 
416
399
  export {
417
- slash,
418
400
  parseRangeString,
419
401
  parseAspectRatio,
420
402
  getDefaultConfig,
@@ -427,6 +409,5 @@ export {
427
409
  prettify,
428
410
  detectFeatures,
429
411
  parseSlide,
430
- parse,
431
- mergeFeatureFlags
412
+ parse
432
413
  };
package/dist/core.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { SlidevConfig, SlidevThemeMeta, FontOptions, ResolvedFontOptions, SlidevMarkdown, SourceSlideInfo, SlidevFeatureFlags, SlidevPreparserExtension } from '@slidev/types';
1
+ import { SlidevConfig, SlidevThemeMeta, FontOptions, ResolvedFontOptions, SlidevMarkdown, SourceSlideInfo, SlidevDetectedFeatures, SlidevPreparserExtension } from '@slidev/types';
2
2
 
3
3
  /**
4
4
  * 1,3-5,8 => [1, 3, 4, 5, 8]
@@ -18,9 +18,8 @@ declare function stringify(data: SlidevMarkdown): string;
18
18
  declare function stringifySlide(data: SourceSlideInfo, idx?: number): string;
19
19
  declare function prettifySlide(data: SourceSlideInfo): SourceSlideInfo;
20
20
  declare function prettify(data: SlidevMarkdown): SlidevMarkdown;
21
- declare function detectFeatures(code: string): SlidevFeatureFlags;
21
+ declare function detectFeatures(code: string): SlidevDetectedFeatures;
22
22
  declare function parseSlide(raw: string): Omit<SourceSlideInfo, 'filepath' | 'index' | 'start' | 'end'>;
23
23
  declare function parse(markdown: string, filepath: string, extensions?: SlidevPreparserExtension[]): Promise<SlidevMarkdown>;
24
- declare function mergeFeatureFlags(a: SlidevFeatureFlags, b: SlidevFeatureFlags): SlidevFeatureFlags;
25
24
 
26
- export { detectFeatures, getDefaultConfig, mergeFeatureFlags, parse, parseAspectRatio, parseRangeString, parseSlide, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
25
+ export { detectFeatures, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
package/dist/core.mjs CHANGED
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  detectFeatures,
3
3
  getDefaultConfig,
4
- mergeFeatureFlags,
5
4
  parse,
6
5
  parseAspectRatio,
7
6
  parseRangeString,
@@ -13,11 +12,10 @@ import {
13
12
  stringify,
14
13
  stringifySlide,
15
14
  verifyConfig
16
- } from "./chunk-S3IBVRFG.mjs";
15
+ } from "./chunk-G3BCFBME.mjs";
17
16
  export {
18
17
  detectFeatures,
19
18
  getDefaultConfig,
20
- mergeFeatureFlags,
21
19
  parse,
22
20
  parseAspectRatio,
23
21
  parseRangeString,
package/dist/fs.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { PreparserExtensionLoader, SlidevData, SlidevMarkdown } from '@slidev/types';
2
- export { detectFeatures, getDefaultConfig, mergeFeatureFlags, parse, parseAspectRatio, parseRangeString, parseSlide, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from './core.mjs';
2
+ export { detectFeatures, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, 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
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  detectFeatures,
3
3
  getDefaultConfig,
4
- mergeFeatureFlags,
5
4
  parse,
6
5
  parseAspectRatio,
7
6
  parseRangeString,
@@ -10,16 +9,16 @@ import {
10
9
  prettifySlide,
11
10
  resolveConfig,
12
11
  resolveFonts,
13
- slash,
14
12
  stringify,
15
13
  stringifySlide,
16
14
  verifyConfig
17
- } from "./chunk-S3IBVRFG.mjs";
15
+ } from "./chunk-G3BCFBME.mjs";
18
16
 
19
17
  // src/fs.ts
20
18
  import { promises as fs } from "node:fs";
21
19
  import { dirname, resolve } from "node:path";
22
20
  import YAML from "yaml";
21
+ import { slash } from "@antfu/utils";
23
22
  var preparserExtensionLoader = null;
24
23
  function injectPreparserExtensionLoader(fn) {
25
24
  preparserExtensionLoader = fn;
@@ -100,7 +99,6 @@ export {
100
99
  getDefaultConfig,
101
100
  injectPreparserExtensionLoader,
102
101
  load,
103
- mergeFeatureFlags,
104
102
  parse,
105
103
  parseAspectRatio,
106
104
  parseRangeString,
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- export { detectFeatures, getDefaultConfig, mergeFeatureFlags, parse, parseAspectRatio, parseRangeString, parseSlide, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from './core.mjs';
1
+ export { detectFeatures, getDefaultConfig, parse, parseAspectRatio, parseRangeString, parseSlide, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig } from './core.mjs';
2
2
  import '@slidev/types';
package/dist/index.mjs CHANGED
@@ -1,7 +1,6 @@
1
1
  import {
2
2
  detectFeatures,
3
3
  getDefaultConfig,
4
- mergeFeatureFlags,
5
4
  parse,
6
5
  parseAspectRatio,
7
6
  parseRangeString,
@@ -13,11 +12,10 @@ import {
13
12
  stringify,
14
13
  stringifySlide,
15
14
  verifyConfig
16
- } from "./chunk-S3IBVRFG.mjs";
15
+ } from "./chunk-G3BCFBME.mjs";
17
16
  export {
18
17
  detectFeatures,
19
18
  getDefaultConfig,
20
- mergeFeatureFlags,
21
19
  parse,
22
20
  parseAspectRatio,
23
21
  parseRangeString,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slidev/parser",
3
- "version": "0.49.0-beta.3",
3
+ "version": "0.49.0-beta.5",
4
4
  "description": "Markdown parser for Slidev",
5
5
  "author": "antfu <anthonyfu117@hotmail.com>",
6
6
  "license": "MIT",
@@ -39,8 +39,9 @@
39
39
  "node": ">=18.0.0"
40
40
  },
41
41
  "dependencies": {
42
- "yaml": "^2.4.1",
43
- "@slidev/types": "0.49.0-beta.3"
42
+ "@antfu/utils": "^0.7.7",
43
+ "yaml": "^2.4.2",
44
+ "@slidev/types": "0.49.0-beta.5"
44
45
  },
45
46
  "scripts": {
46
47
  "build": "rimraf dist && tsup src/index.ts src/core.ts src/fs.ts",