@slidev/parser 0.48.0-beta.2 → 0.48.0-beta.21
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-VLX5KDW3.mjs → chunk-LDPCYGJA.mjs} +12 -49
- package/dist/core.d.mts +6 -8
- package/dist/core.mjs +1 -5
- package/dist/fs.d.mts +10 -6
- package/dist/fs.mjs +66 -77
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -5
- package/package.json +2 -2
|
@@ -30,11 +30,11 @@ var toString = (v) => Object.prototype.toString.call(v);
|
|
|
30
30
|
function notNullish(v) {
|
|
31
31
|
return v != null;
|
|
32
32
|
}
|
|
33
|
-
function isTruthy(v) {
|
|
34
|
-
return Boolean(v);
|
|
35
|
-
}
|
|
36
33
|
var isNumber = (val) => typeof val === "number";
|
|
37
34
|
var isObject = (val) => toString(val) === "[object Object]";
|
|
35
|
+
function slash(str) {
|
|
36
|
+
return str.replace(/\\/g, "/");
|
|
37
|
+
}
|
|
38
38
|
function objectMap(obj, fn) {
|
|
39
39
|
return Object.fromEntries(
|
|
40
40
|
Object.entries(obj).map(([k, v]) => fn(k, v)).filter(notNullish)
|
|
@@ -83,6 +83,8 @@ function getDefaultConfig() {
|
|
|
83
83
|
addons: [],
|
|
84
84
|
remoteAssets: false,
|
|
85
85
|
monaco: "dev",
|
|
86
|
+
monacoTypesSource: "local",
|
|
87
|
+
monacoTypesAdditionalPackages: [],
|
|
86
88
|
download: false,
|
|
87
89
|
export: {},
|
|
88
90
|
info: false,
|
|
@@ -243,16 +245,10 @@ function resolveDrawings(options = {}, filepath) {
|
|
|
243
245
|
|
|
244
246
|
// src/core.ts
|
|
245
247
|
function stringify(data) {
|
|
246
|
-
return `${data.slides.
|
|
248
|
+
return `${data.slides.map(stringifySlide).join("\n").trim()}
|
|
247
249
|
`;
|
|
248
250
|
}
|
|
249
|
-
function filterDisabled(data) {
|
|
250
|
-
data.slides = data.slides.filter((i) => !i.frontmatter?.disabled);
|
|
251
|
-
return data;
|
|
252
|
-
}
|
|
253
251
|
function stringifySlide(data, idx = 0) {
|
|
254
|
-
if (data.raw == null)
|
|
255
|
-
prettifySlide(data);
|
|
256
252
|
return data.raw.startsWith("---") || idx === 0 ? data.raw : `---
|
|
257
253
|
${data.raw.startsWith("\n") ? data.raw : `
|
|
258
254
|
${data.raw}`}`;
|
|
@@ -354,7 +350,7 @@ function parseSlide(raw) {
|
|
|
354
350
|
note
|
|
355
351
|
};
|
|
356
352
|
}
|
|
357
|
-
async function parse(markdown, filepath,
|
|
353
|
+
async function parse(markdown, filepath, extensions) {
|
|
358
354
|
const lines = markdown.split(/\r?\n/g);
|
|
359
355
|
const slides = [];
|
|
360
356
|
let start = 0;
|
|
@@ -364,6 +360,7 @@ async function parse(markdown, filepath, themeMeta, extensions, onHeadmatter) {
|
|
|
364
360
|
const raw = lines.slice(start, end).join("\n");
|
|
365
361
|
const slide = {
|
|
366
362
|
...parseSlide(raw),
|
|
363
|
+
filepath,
|
|
367
364
|
index: slides.length,
|
|
368
365
|
start,
|
|
369
366
|
end
|
|
@@ -380,19 +377,6 @@ async function parse(markdown, filepath, themeMeta, extensions, onHeadmatter) {
|
|
|
380
377
|
slides.push(slide);
|
|
381
378
|
start = end + 1;
|
|
382
379
|
}
|
|
383
|
-
{
|
|
384
|
-
let hm = "";
|
|
385
|
-
if (lines[0].match(/^---([^-].*)?$/) && !lines[1]?.match(/^\s*$/)) {
|
|
386
|
-
let hEnd = 1;
|
|
387
|
-
while (hEnd < lines.length && !lines[hEnd].trimEnd().match(/^---$/))
|
|
388
|
-
hEnd++;
|
|
389
|
-
hm = lines.slice(1, hEnd).join("\n");
|
|
390
|
-
}
|
|
391
|
-
if (onHeadmatter) {
|
|
392
|
-
const o = YAML.load(hm) ?? {};
|
|
393
|
-
extensions = await onHeadmatter(o, extensions ?? [], filepath);
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
380
|
if (extensions) {
|
|
397
381
|
for (const e of extensions) {
|
|
398
382
|
if (e.transformRawLines)
|
|
@@ -420,37 +404,18 @@ async function parse(markdown, filepath, themeMeta, extensions, onHeadmatter) {
|
|
|
420
404
|
}
|
|
421
405
|
if (start <= lines.length - 1)
|
|
422
406
|
await slice(lines.length);
|
|
423
|
-
const headmatter = slides[0]?.frontmatter || {};
|
|
424
|
-
headmatter.title = headmatter.title || slides[0]?.title;
|
|
425
|
-
const config = resolveConfig(headmatter, themeMeta, filepath);
|
|
426
|
-
const features = detectFeatures(markdown);
|
|
427
407
|
return {
|
|
428
|
-
raw: markdown,
|
|
429
408
|
filepath,
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
features,
|
|
433
|
-
headmatter,
|
|
434
|
-
themeMeta
|
|
409
|
+
raw: markdown,
|
|
410
|
+
slides
|
|
435
411
|
};
|
|
436
412
|
}
|
|
437
413
|
function mergeFeatureFlags(a, b) {
|
|
438
414
|
return objectMap(a, (k, v) => [k, v || b[k]]);
|
|
439
415
|
}
|
|
440
|
-
function scanMonacoModules(md) {
|
|
441
|
-
const typeModules = /* @__PURE__ */ new Set();
|
|
442
|
-
md.replace(/^```(\w+?)\s*{monaco([\w:,-]*)}[\s\n]*([\s\S]+?)^```/mg, (full, lang = "ts", options, code) => {
|
|
443
|
-
options = options || "";
|
|
444
|
-
lang = lang.trim();
|
|
445
|
-
if (lang === "ts" || lang === "typescript") {
|
|
446
|
-
Array.from(code.matchAll(/\s+from\s+(["'])([\/\w@-]+)\1/g)).map((i) => i[2]).filter(isTruthy).map((i) => typeModules.add(i));
|
|
447
|
-
}
|
|
448
|
-
return "";
|
|
449
|
-
});
|
|
450
|
-
return Array.from(typeModules);
|
|
451
|
-
}
|
|
452
416
|
|
|
453
417
|
export {
|
|
418
|
+
slash,
|
|
454
419
|
parseRangeString,
|
|
455
420
|
parseAspectRatio,
|
|
456
421
|
getDefaultConfig,
|
|
@@ -458,13 +423,11 @@ export {
|
|
|
458
423
|
verifyConfig,
|
|
459
424
|
resolveFonts,
|
|
460
425
|
stringify,
|
|
461
|
-
filterDisabled,
|
|
462
426
|
stringifySlide,
|
|
463
427
|
prettifySlide,
|
|
464
428
|
prettify,
|
|
465
429
|
detectFeatures,
|
|
466
430
|
parseSlide,
|
|
467
431
|
parse,
|
|
468
|
-
mergeFeatureFlags
|
|
469
|
-
scanMonacoModules
|
|
432
|
+
mergeFeatureFlags
|
|
470
433
|
};
|
package/dist/core.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SlidevConfig, SlidevThemeMeta, FontOptions, ResolvedFontOptions, SlidevMarkdown,
|
|
1
|
+
import { SlidevConfig, SlidevThemeMeta, FontOptions, ResolvedFontOptions, SlidevMarkdown, SourceSlideInfo, SlidevFeatureFlags, SlidevPreparserExtension } from '@slidev/types';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* 1,3-5,8 => [1, 3, 4, 5, 8]
|
|
@@ -15,14 +15,12 @@ declare function verifyConfig(config: SlidevConfig, themeMeta?: SlidevThemeMeta,
|
|
|
15
15
|
declare function resolveFonts(fonts?: FontOptions): ResolvedFontOptions;
|
|
16
16
|
|
|
17
17
|
declare function stringify(data: SlidevMarkdown): string;
|
|
18
|
-
declare function
|
|
19
|
-
declare function
|
|
20
|
-
declare function prettifySlide(data: SlideInfoBase): SlideInfoBase;
|
|
18
|
+
declare function stringifySlide(data: SourceSlideInfo, idx?: number): string;
|
|
19
|
+
declare function prettifySlide(data: SourceSlideInfo): SourceSlideInfo;
|
|
21
20
|
declare function prettify(data: SlidevMarkdown): SlidevMarkdown;
|
|
22
21
|
declare function detectFeatures(code: string): SlidevFeatureFlags;
|
|
23
|
-
declare function parseSlide(raw: string):
|
|
24
|
-
declare function parse(markdown: string, filepath
|
|
22
|
+
declare function parseSlide(raw: string): Omit<SourceSlideInfo, 'filepath' | 'index' | 'start' | 'end'>;
|
|
23
|
+
declare function parse(markdown: string, filepath: string, extensions?: SlidevPreparserExtension[]): Promise<SlidevMarkdown>;
|
|
25
24
|
declare function mergeFeatureFlags(a: SlidevFeatureFlags, b: SlidevFeatureFlags): SlidevFeatureFlags;
|
|
26
|
-
declare function scanMonacoModules(md: string): string[];
|
|
27
25
|
|
|
28
|
-
export { detectFeatures,
|
|
26
|
+
export { detectFeatures, getDefaultConfig, mergeFeatureFlags, parse, parseAspectRatio, parseRangeString, parseSlide, prettify, prettifySlide, resolveConfig, resolveFonts, stringify, stringifySlide, verifyConfig };
|
package/dist/core.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
detectFeatures,
|
|
3
|
-
filterDisabled,
|
|
4
3
|
getDefaultConfig,
|
|
5
4
|
mergeFeatureFlags,
|
|
6
5
|
parse,
|
|
@@ -11,14 +10,12 @@ import {
|
|
|
11
10
|
prettifySlide,
|
|
12
11
|
resolveConfig,
|
|
13
12
|
resolveFonts,
|
|
14
|
-
scanMonacoModules,
|
|
15
13
|
stringify,
|
|
16
14
|
stringifySlide,
|
|
17
15
|
verifyConfig
|
|
18
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-LDPCYGJA.mjs";
|
|
19
17
|
export {
|
|
20
18
|
detectFeatures,
|
|
21
|
-
filterDisabled,
|
|
22
19
|
getDefaultConfig,
|
|
23
20
|
mergeFeatureFlags,
|
|
24
21
|
parse,
|
|
@@ -29,7 +26,6 @@ export {
|
|
|
29
26
|
prettifySlide,
|
|
30
27
|
resolveConfig,
|
|
31
28
|
resolveFonts,
|
|
32
|
-
scanMonacoModules,
|
|
33
29
|
stringify,
|
|
34
30
|
stringifySlide,
|
|
35
31
|
verifyConfig
|
package/dist/fs.d.mts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { PreparserExtensionLoader,
|
|
2
|
-
export { detectFeatures,
|
|
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';
|
|
3
3
|
|
|
4
4
|
declare function injectPreparserExtensionLoader(fn: PreparserExtensionLoader): void;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Slidev data without config and themeMeta,
|
|
7
|
+
* because config and themeMeta depends on the theme to be loaded.
|
|
8
|
+
*/
|
|
9
|
+
type LoadedSlidevData = Omit<SlidevData, 'config' | 'themeMeta'>;
|
|
10
|
+
declare function load(userRoot: string, filepath: string, content?: string, mode?: string): Promise<LoadedSlidevData>;
|
|
11
|
+
declare function save(markdown: SlidevMarkdown): Promise<void>;
|
|
8
12
|
|
|
9
|
-
export { injectPreparserExtensionLoader, load, save
|
|
13
|
+
export { type LoadedSlidevData, injectPreparserExtensionLoader, load, save };
|
package/dist/fs.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
detectFeatures,
|
|
3
|
-
filterDisabled,
|
|
4
3
|
getDefaultConfig,
|
|
5
4
|
mergeFeatureFlags,
|
|
6
5
|
parse,
|
|
@@ -11,99 +10,91 @@ import {
|
|
|
11
10
|
prettifySlide,
|
|
12
11
|
resolveConfig,
|
|
13
12
|
resolveFonts,
|
|
14
|
-
|
|
13
|
+
slash,
|
|
15
14
|
stringify,
|
|
16
15
|
stringifySlide,
|
|
17
16
|
verifyConfig
|
|
18
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-LDPCYGJA.mjs";
|
|
19
18
|
|
|
20
19
|
// src/fs.ts
|
|
21
20
|
import { promises as fs } from "node:fs";
|
|
22
21
|
import { dirname, resolve } from "node:path";
|
|
22
|
+
import YAML from "js-yaml";
|
|
23
23
|
var preparserExtensionLoader = null;
|
|
24
24
|
function injectPreparserExtensionLoader(fn) {
|
|
25
25
|
preparserExtensionLoader = fn;
|
|
26
26
|
}
|
|
27
|
-
async function load(filepath,
|
|
28
|
-
const dir = dirname(filepath);
|
|
27
|
+
async function load(userRoot, filepath, content, mode) {
|
|
29
28
|
const markdown = content ?? await fs.readFile(filepath, "utf-8");
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
});
|
|
40
|
-
const entries = /* @__PURE__ */ new Set([
|
|
41
|
-
filepath
|
|
42
|
-
]);
|
|
43
|
-
for (let iSlide = 0; iSlide < data.slides.length; ) {
|
|
44
|
-
const baseSlide = data.slides[iSlide];
|
|
45
|
-
if (!baseSlide.frontmatter.src) {
|
|
46
|
-
iSlide++;
|
|
47
|
-
continue;
|
|
29
|
+
let extensions;
|
|
30
|
+
if (preparserExtensionLoader) {
|
|
31
|
+
const lines = markdown.split(/\r?\n/g);
|
|
32
|
+
let hm = "";
|
|
33
|
+
if (lines[0].match(/^---([^-].*)?$/) && !lines[1]?.match(/^\s*$/)) {
|
|
34
|
+
let hEnd = 1;
|
|
35
|
+
while (hEnd < lines.length && !lines[hEnd].trimEnd().match(/^---$/))
|
|
36
|
+
hEnd++;
|
|
37
|
+
hm = lines.slice(1, hEnd).join("\n");
|
|
48
38
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
slide.inline = { ...baseSlide };
|
|
75
|
-
delete slide.inline.frontmatter.src;
|
|
76
|
-
Object.assign(slide, slide.source, { raw: null });
|
|
77
|
-
} else {
|
|
78
|
-
Object.assign(slide, slide.source);
|
|
79
|
-
}
|
|
80
|
-
const baseSlideFrontMatterWithoutSrc = { ...baseSlide.frontmatter };
|
|
81
|
-
delete baseSlideFrontMatterWithoutSrc.src;
|
|
82
|
-
slide.frontmatter = {
|
|
83
|
-
...subSlide.frontmatter,
|
|
84
|
-
...baseSlideFrontMatterWithoutSrc,
|
|
85
|
-
srcSequence: `${baseSlide.frontmatter.srcSequence ? `${baseSlide.frontmatter.srcSequence},` : ""}${srcExpression}`
|
|
39
|
+
const o = YAML.load(hm) ?? {};
|
|
40
|
+
extensions = await preparserExtensionLoader(o, filepath, mode);
|
|
41
|
+
}
|
|
42
|
+
const markdownFiles = {};
|
|
43
|
+
const slides = [];
|
|
44
|
+
async function loadMarkdown(path, range, frontmatterOverride) {
|
|
45
|
+
let md = markdownFiles[path];
|
|
46
|
+
if (!md) {
|
|
47
|
+
const raw = await fs.readFile(path, "utf-8");
|
|
48
|
+
md = await parse(raw, path, extensions);
|
|
49
|
+
markdownFiles[path] = md;
|
|
50
|
+
}
|
|
51
|
+
for (const index of parseRangeString(md.slides.length, range))
|
|
52
|
+
await loadSlide(md.slides[index - 1], frontmatterOverride);
|
|
53
|
+
return md;
|
|
54
|
+
}
|
|
55
|
+
async function loadSlide(slide, frontmatterOverride) {
|
|
56
|
+
if (slide.frontmatter.disabled || slide.frontmatter.hide)
|
|
57
|
+
return;
|
|
58
|
+
if (slide.frontmatter.src) {
|
|
59
|
+
const [rawPath, rangeRaw] = slide.frontmatter.src.split("#");
|
|
60
|
+
const path = rawPath.startsWith("/") ? resolve(userRoot, rawPath.substring(1)) : resolve(dirname(slide.filepath), rawPath);
|
|
61
|
+
frontmatterOverride = {
|
|
62
|
+
...slide.frontmatter,
|
|
63
|
+
...frontmatterOverride
|
|
86
64
|
};
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
65
|
+
delete frontmatterOverride.src;
|
|
66
|
+
await loadMarkdown(path, rangeRaw, frontmatterOverride);
|
|
67
|
+
} else {
|
|
68
|
+
slides.push({
|
|
69
|
+
index: slides.length,
|
|
70
|
+
source: slide,
|
|
71
|
+
frontmatter: { ...slide.frontmatter, ...frontmatterOverride },
|
|
72
|
+
content: slide.content,
|
|
73
|
+
note: slide.note,
|
|
74
|
+
title: slide.title,
|
|
75
|
+
level: slide.level
|
|
76
|
+
});
|
|
77
|
+
}
|
|
91
78
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
79
|
+
const entry = await loadMarkdown(filepath);
|
|
80
|
+
const headmatter = {
|
|
81
|
+
title: slides[0]?.title,
|
|
82
|
+
...entry.slides[0]?.frontmatter
|
|
83
|
+
};
|
|
84
|
+
return {
|
|
85
|
+
slides,
|
|
86
|
+
entry,
|
|
87
|
+
headmatter,
|
|
88
|
+
features: detectFeatures(slides.map((s) => s.source.raw).join("")),
|
|
89
|
+
markdownFiles,
|
|
90
|
+
watchFiles: Object.keys(markdownFiles).map(slash)
|
|
91
|
+
};
|
|
100
92
|
}
|
|
101
|
-
async function
|
|
102
|
-
await fs.writeFile(filepath, stringify(
|
|
93
|
+
async function save(markdown) {
|
|
94
|
+
await fs.writeFile(markdown.filepath, stringify(markdown), "utf-8");
|
|
103
95
|
}
|
|
104
96
|
export {
|
|
105
97
|
detectFeatures,
|
|
106
|
-
filterDisabled,
|
|
107
98
|
getDefaultConfig,
|
|
108
99
|
injectPreparserExtensionLoader,
|
|
109
100
|
load,
|
|
@@ -117,8 +108,6 @@ export {
|
|
|
117
108
|
resolveConfig,
|
|
118
109
|
resolveFonts,
|
|
119
110
|
save,
|
|
120
|
-
saveExternalSlide,
|
|
121
|
-
scanMonacoModules,
|
|
122
111
|
stringify,
|
|
123
112
|
stringifySlide,
|
|
124
113
|
verifyConfig
|
package/dist/index.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { detectFeatures,
|
|
1
|
+
export { detectFeatures, getDefaultConfig, mergeFeatureFlags, 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,6 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
2
|
detectFeatures,
|
|
3
|
-
filterDisabled,
|
|
4
3
|
getDefaultConfig,
|
|
5
4
|
mergeFeatureFlags,
|
|
6
5
|
parse,
|
|
@@ -11,14 +10,12 @@ import {
|
|
|
11
10
|
prettifySlide,
|
|
12
11
|
resolveConfig,
|
|
13
12
|
resolveFonts,
|
|
14
|
-
scanMonacoModules,
|
|
15
13
|
stringify,
|
|
16
14
|
stringifySlide,
|
|
17
15
|
verifyConfig
|
|
18
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-LDPCYGJA.mjs";
|
|
19
17
|
export {
|
|
20
18
|
detectFeatures,
|
|
21
|
-
filterDisabled,
|
|
22
19
|
getDefaultConfig,
|
|
23
20
|
mergeFeatureFlags,
|
|
24
21
|
parse,
|
|
@@ -29,7 +26,6 @@ export {
|
|
|
29
26
|
prettifySlide,
|
|
30
27
|
resolveConfig,
|
|
31
28
|
resolveFonts,
|
|
32
|
-
scanMonacoModules,
|
|
33
29
|
stringify,
|
|
34
30
|
stringifySlide,
|
|
35
31
|
verifyConfig
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slidev/parser",
|
|
3
|
-
"version": "0.48.0-beta.
|
|
3
|
+
"version": "0.48.0-beta.21",
|
|
4
4
|
"description": "Markdown parser for Slidev",
|
|
5
5
|
"author": "antfu <anthonyfu117@hotmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"js-yaml": "^4.1.0",
|
|
43
|
-
"@slidev/types": "0.48.0-beta.
|
|
43
|
+
"@slidev/types": "0.48.0-beta.21"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"build": "rimraf dist && tsup src/index.ts src/core.ts src/fs.ts",
|