@slidev/cli 52.17.2 → 52.18.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/{build-C6LBmXd-.mjs → build-CMhuImLu.mjs} +6 -5
- package/dist/cli.d.mts +1 -1
- package/dist/cli.mjs +11 -9
- package/dist/{export-CtL3Az7M.mjs → export-B_maVZXE.mjs} +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{resolver-BV2a2pHC.mjs → resolver-BIhhHpe7.mjs} +48 -2
- package/dist/{serve-CDMTHA3C.mjs → serve-C3LqO47C.mjs} +67 -15
- package/dist/{stdio-Cq1YeFUk.mjs → stdio-BBaEvAO6.mjs} +2 -2
- package/package.json +22 -19
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as resolveViteConfigs } from "./serve-
|
|
1
|
+
import { n as resolveViteConfigs } from "./serve-C3LqO47C.mjs";
|
|
2
2
|
import { join, resolve } from "pathe";
|
|
3
3
|
import { build as build$1 } from "vite";
|
|
4
4
|
import { existsSync } from "node:fs";
|
|
@@ -10,7 +10,7 @@ import sirv from "sirv";
|
|
|
10
10
|
async function build(options, viteConfig = {}, args) {
|
|
11
11
|
const indexHtmlId = resolve(options.userRoot, "index.html");
|
|
12
12
|
let config = void 0;
|
|
13
|
-
|
|
13
|
+
const inlineConfig = await resolveViteConfigs(options, {
|
|
14
14
|
plugins: [{
|
|
15
15
|
name: "slidev:build",
|
|
16
16
|
configResolved(_config) {
|
|
@@ -34,7 +34,8 @@ async function build(options, viteConfig = {}, args) {
|
|
|
34
34
|
chunkSizeWarningLimit: 2e3,
|
|
35
35
|
rollupOptions: { input: { index: indexHtmlId } }
|
|
36
36
|
}
|
|
37
|
-
}, viteConfig, "build")
|
|
37
|
+
}, viteConfig, "build");
|
|
38
|
+
await build$1(inlineConfig);
|
|
38
39
|
const outDir = resolve(options.userRoot, config.build.outDir);
|
|
39
40
|
if (options.data.config.seoMeta?.ogImage === "auto" || options.data.config.seoMeta?.ogImage?.startsWith(".")) {
|
|
40
41
|
const filename = options.data.config.seoMeta?.ogImage === "auto" ? "og-image.png" : options.data.config.seoMeta.ogImage;
|
|
@@ -51,7 +52,7 @@ async function build(options, viteConfig = {}, args) {
|
|
|
51
52
|
dev: true
|
|
52
53
|
}));
|
|
53
54
|
server.listen(port);
|
|
54
|
-
const { exportSlides } = await import("./export-
|
|
55
|
+
const { exportSlides } = await import("./export-B_maVZXE.mjs");
|
|
55
56
|
const tempDir = resolve(outDir, "temp");
|
|
56
57
|
await fs$1.mkdir(tempDir, { recursive: true });
|
|
57
58
|
await exportSlides({
|
|
@@ -92,7 +93,7 @@ async function build(options, viteConfig = {}, args) {
|
|
|
92
93
|
"true",
|
|
93
94
|
"auto"
|
|
94
95
|
].includes(options.data.config.download)) {
|
|
95
|
-
const { exportSlides, getExportOptions } = await import("./export-
|
|
96
|
+
const { exportSlides, getExportOptions } = await import("./export-B_maVZXE.mjs");
|
|
96
97
|
const port = 12445;
|
|
97
98
|
const app = connect();
|
|
98
99
|
const server = http.createServer(app);
|
package/dist/cli.d.mts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {}
|
package/dist/cli.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as
|
|
2
|
-
import { c as getThemeMeta, d as loadSetups, f as updateFrontmatterPatch, l as resolveTheme, o as resolveOptions, s as parser, t as createServer, u as version } from "./serve-
|
|
1
|
+
import { i as isInstalledGlobally, o as resolveEntry } from "./resolver-BIhhHpe7.mjs";
|
|
2
|
+
import { c as getThemeMeta, d as loadSetups, f as updateFrontmatterPatch, l as resolveTheme, o as resolveOptions, s as parser, t as createServer, u as version } from "./serve-C3LqO47C.mjs";
|
|
3
3
|
import process from "node:process";
|
|
4
4
|
import path from "pathe";
|
|
5
5
|
import fs from "node:fs/promises";
|
|
@@ -126,7 +126,8 @@ cli.command("* [entry]", "Start a local server for Slidev", (args) => commonOpti
|
|
|
126
126
|
port,
|
|
127
127
|
strictPort: true,
|
|
128
128
|
host,
|
|
129
|
-
force
|
|
129
|
+
force,
|
|
130
|
+
...tunnel && remote != null ? { allowedHosts: [".trycloudflare.com"] } : {}
|
|
130
131
|
},
|
|
131
132
|
optimizeDeps: { force },
|
|
132
133
|
logLevel: log,
|
|
@@ -202,7 +203,8 @@ cli.command("* [entry]", "Start a local server for Slidev", (args) => commonOpti
|
|
|
202
203
|
name: "e",
|
|
203
204
|
fullname: "edit",
|
|
204
205
|
action() {
|
|
205
|
-
|
|
206
|
+
const editor = process.env.EDITOR || "code";
|
|
207
|
+
execFile(editor, [entry]);
|
|
206
208
|
}
|
|
207
209
|
},
|
|
208
210
|
{
|
|
@@ -300,7 +302,7 @@ cli.command("build [entry..]", "Build hostable SPA", (args) => exportOptions(com
|
|
|
300
302
|
describe: "enable the inspect plugin for debugging"
|
|
301
303
|
}).strict().help(), async (args) => {
|
|
302
304
|
const { entry, theme, base, download, out, inspect, "without-notes": withoutNotes, "router-mode": routerMode } = args;
|
|
303
|
-
const { build } = await import("./build-
|
|
305
|
+
const { build } = await import("./build-CMhuImLu.mjs");
|
|
304
306
|
for (const entryFile of entry) {
|
|
305
307
|
const options = await resolveOptions({
|
|
306
308
|
entry: entryFile,
|
|
@@ -329,7 +331,7 @@ cli.command("format [entry..]", "Format the markdown file", (args) => commonOpti
|
|
|
329
331
|
}
|
|
330
332
|
});
|
|
331
333
|
cli.command("mcp [entry]", "Start an MCP (Model Context Protocol) server over stdio for AI agents to inspect and edit the slides", (args) => commonOptions(args).strict().help(), async ({ entry }) => {
|
|
332
|
-
const { startMcpStdioServer } = await import("./stdio-
|
|
334
|
+
const { startMcpStdioServer } = await import("./stdio-BBaEvAO6.mjs");
|
|
333
335
|
await startMcpStdioServer(await resolveEntry(entry));
|
|
334
336
|
});
|
|
335
337
|
cli.command("theme [subcommand]", "Theme related operations", (command) => {
|
|
@@ -369,7 +371,7 @@ cli.command("theme [subcommand]", "Theme related operations", (command) => {
|
|
|
369
371
|
});
|
|
370
372
|
cli.command("export [entry..]", "Export slides to PDF", (args) => exportOptions(commonOptions(args)).strict().help(), async (args) => {
|
|
371
373
|
const { entry, theme } = args;
|
|
372
|
-
const { exportSlides, getExportOptions } = await import("./export-
|
|
374
|
+
const { exportSlides, getExportOptions } = await import("./export-B_maVZXE.mjs");
|
|
373
375
|
const candidatePort = await getPort(12445);
|
|
374
376
|
let warned = false;
|
|
375
377
|
for (const entryFile of entry) {
|
|
@@ -421,7 +423,7 @@ cli.command("export-notes [entry..]", "Export slide notes to PDF", (args) => arg
|
|
|
421
423
|
type: "number",
|
|
422
424
|
describe: "wait for the specified ms before exporting"
|
|
423
425
|
}).strict().help(), async ({ entry, output, timeout, wait }) => {
|
|
424
|
-
const { exportNotes } = await import("./export-
|
|
426
|
+
const { exportNotes } = await import("./export-B_maVZXE.mjs");
|
|
425
427
|
const candidatePort = await getPort(12445);
|
|
426
428
|
for (const entryFile of entry) {
|
|
427
429
|
const options = await resolveOptions({ entry: entryFile }, "export");
|
|
@@ -551,7 +553,7 @@ function printInfo(options, port, base, remote, tunnelUrl, publicIp) {
|
|
|
551
553
|
if (options.inspect) console.log(`${dim(" vite inspector")} > ${yellow(`${baseUrl}/__inspect/`)}`);
|
|
552
554
|
let lastRemoteUrl = "";
|
|
553
555
|
if (remote !== void 0) {
|
|
554
|
-
Object.values(os.networkInterfaces()).forEach((v) => (v || []).filter((details) => String(details.family).
|
|
556
|
+
Object.values(os.networkInterfaces()).forEach((v) => (v || []).filter((details) => String(details.family).endsWith("4") && !details.address.includes("127.0.0.1")).forEach(({ address }) => {
|
|
555
557
|
lastRemoteUrl = `http://${address}:${portAndBase}${entryPath}`;
|
|
556
558
|
console.log(`${dim(" remote control ")} > ${blue(lastRemoteUrl)}`);
|
|
557
559
|
}));
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as createDataUtils, o as resolveOptions, r as ViteSlidevPlugin, s as parser, t as createServer } from "./serve-
|
|
1
|
+
import { a as createDataUtils, o as resolveOptions, r as ViteSlidevPlugin, s as parser, t as createServer } from "./serve-C3LqO47C.mjs";
|
|
2
2
|
export { ViteSlidevPlugin, createDataUtils, createServer, parser, resolveOptions };
|
|
@@ -7,7 +7,7 @@ import { parseNi, run } from "@antfu/ni";
|
|
|
7
7
|
import { ensurePrefix, slash } from "@antfu/utils";
|
|
8
8
|
import { underline, yellow } from "ansis";
|
|
9
9
|
import globalDirs from "global-directory";
|
|
10
|
-
import { resolvePath } from "mlly";
|
|
10
|
+
import { resolve as resolve$1, resolvePath } from "mlly";
|
|
11
11
|
import prompts from "prompts";
|
|
12
12
|
import { resolveGlobal } from "resolve-global";
|
|
13
13
|
import { findClosestPkgJsonPath, findDepPkgJsonPath } from "vitefu";
|
|
@@ -119,6 +119,52 @@ async function resolveImportPath(importName, ensure = false) {
|
|
|
119
119
|
}
|
|
120
120
|
if (ensure) throw new Error(`Failed to resolve package "${importName}"`);
|
|
121
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Import an optional dependency (typically an optional peer dependency such as
|
|
124
|
+
* `vite-plugin-pwa`) that the user may or may not have installed. Resolution is
|
|
125
|
+
* attempted, in order, from the user's project root, the workspace root, the
|
|
126
|
+
* global registry (when Slidev runs globally), and finally the cli's own
|
|
127
|
+
* dependencies. Returns `undefined` when the package can't be resolved anywhere.
|
|
128
|
+
*/
|
|
129
|
+
async function importOptionalDependency(name) {
|
|
130
|
+
const roots = [];
|
|
131
|
+
try {
|
|
132
|
+
const { userRoot, userWorkspaceRoot } = await getRoots();
|
|
133
|
+
roots.push(userRoot);
|
|
134
|
+
if (userWorkspaceRoot !== userRoot) roots.push(userWorkspaceRoot);
|
|
135
|
+
} catch {}
|
|
136
|
+
for (const root of roots) try {
|
|
137
|
+
return await import(await resolve$1(name, { url: pathToFileURL(`${root}${sep}`).href }));
|
|
138
|
+
} catch {}
|
|
139
|
+
if (isInstalledGlobally.value) try {
|
|
140
|
+
return await import(resolveGlobal(name));
|
|
141
|
+
} catch {}
|
|
142
|
+
try {
|
|
143
|
+
return await import(name);
|
|
144
|
+
} catch {}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Prompt the user to install a missing optional dependency, then install it
|
|
148
|
+
* with the detected package manager. Exits the process when the user declines
|
|
149
|
+
* or when stdin isn't interactive (so it can't prompt).
|
|
150
|
+
*
|
|
151
|
+
* `purpose` describes why the package is needed, e.g. `The "pwa" option`.
|
|
152
|
+
*/
|
|
153
|
+
async function promptForOptionalInstallation(pkgName, purpose) {
|
|
154
|
+
if (!process.stdin.isTTY) {
|
|
155
|
+
console.error(`${purpose} requires the "${pkgName}" package, which is not installed, and cannot prompt for installation. Install it with \`npm i -D ${pkgName}\` (or your package manager's equivalent) and try again.`);
|
|
156
|
+
process.exit(1);
|
|
157
|
+
}
|
|
158
|
+
const { confirm } = await prompts({
|
|
159
|
+
name: "confirm",
|
|
160
|
+
initial: "Y",
|
|
161
|
+
type: "confirm",
|
|
162
|
+
message: `${purpose} requires the "${yellow(pkgName)}" package, which is not installed ${underline(isInstalledGlobally.value ? "globally" : "in your project")}. Install it now?`
|
|
163
|
+
});
|
|
164
|
+
if (!confirm) process.exit(1);
|
|
165
|
+
if (isInstalledGlobally.value) await run(parseNi, ["-g", pkgName]);
|
|
166
|
+
else await run(parseNi, [pkgName]);
|
|
167
|
+
}
|
|
122
168
|
async function findPkgRoot(dep, parent, ensure = false) {
|
|
123
169
|
const pkgJsonPath = await findDepPkgJsonPath(dep, parent);
|
|
124
170
|
const path = pkgJsonPath ? dirname(pkgJsonPath) : isInstalledGlobally.value ? await findGlobalPkgRoot(dep, false) : void 0;
|
|
@@ -257,4 +303,4 @@ function resolveSourceFiles(roots, subpath, extensions = [
|
|
|
257
303
|
return results;
|
|
258
304
|
}
|
|
259
305
|
//#endregion
|
|
260
|
-
export {
|
|
306
|
+
export { promptForOptionalInstallation as a, resolveImportUrl as c, isInstalledGlobally as i, resolveSourceFiles as l, getRoots as n, resolveEntry as o, importOptionalDependency as r, resolveImportPath as s, createResolver as t, toAtFS as u };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as
|
|
1
|
+
import { a as promptForOptionalInstallation, c as resolveImportUrl, i as isInstalledGlobally, l as resolveSourceFiles, n as getRoots, o as resolveEntry, r as importOptionalDependency, s as resolveImportPath, t as createResolver, u as toAtFS } from "./resolver-BIhhHpe7.mjs";
|
|
2
2
|
import { builtinModules } from "node:module";
|
|
3
3
|
import process from "node:process";
|
|
4
4
|
import path, { basename, dirname, isAbsolute, join, relative, resolve, win32 } from "pathe";
|
|
@@ -44,7 +44,6 @@ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/
|
|
|
44
44
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
45
45
|
import { z } from "zod";
|
|
46
46
|
import ServerRef from "vite-plugin-vue-server-ref";
|
|
47
|
-
import { VitePWA } from "vite-plugin-pwa";
|
|
48
47
|
import UnoCSS from "unocss/vite";
|
|
49
48
|
import { mergeConfigs, presetIcons } from "unocss";
|
|
50
49
|
import Vue from "@vitejs/plugin-vue";
|
|
@@ -141,6 +140,7 @@ function createSlideImportGuardPlugin() {
|
|
|
141
140
|
if (!isSlideMarkdownId(id) || !config?.server.fs.strict) return null;
|
|
142
141
|
const importer = filePathFromId(id) ?? id;
|
|
143
142
|
await Promise.all(extractImportSources(code, id).map(async ({ value, start }) => {
|
|
143
|
+
if (isPublicAsset(value, config)) return;
|
|
144
144
|
const resolved = await this.resolve(value, importer, { skipSelf: true });
|
|
145
145
|
if (!resolved || resolved.external) return;
|
|
146
146
|
const filePath = filePathFromId(resolved.id);
|
|
@@ -169,6 +169,20 @@ function filePathFromId(id) {
|
|
|
169
169
|
function isAllowedFile(filePath, allowRoots) {
|
|
170
170
|
return allowRoots.some((root) => isFileInRoot(root, filePath));
|
|
171
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Whether a static import `value` is a public-directory asset, i.e. a
|
|
174
|
+
* root-absolute Vite URL (`/foo.png`) that maps to an existing file under
|
|
175
|
+
* `config.publicDir`. The Vue SFC compiler turns `<img src="/foo.png">` into a
|
|
176
|
+
* static `import`, but public assets are served by URL rather than
|
|
177
|
+
* module-resolved, so `/foo.png` is a Vite URL — not a filesystem-absolute path
|
|
178
|
+
* — and must be exempted from the `server.fs.allow` check.
|
|
179
|
+
*/
|
|
180
|
+
function isPublicAsset(value, config) {
|
|
181
|
+
if (!config.publicDir || !value.startsWith("/") || value.startsWith("/@")) return false;
|
|
182
|
+
const publicDir = normalizeFsPath(config.publicDir);
|
|
183
|
+
const publicPath = normalizeFsPath(path.join(publicDir, cleanUrl$1(value).slice(1)));
|
|
184
|
+
return isFileInRoot(publicDir, publicPath) && existsSync(publicPath);
|
|
185
|
+
}
|
|
172
186
|
function extractImportSources(code, id) {
|
|
173
187
|
const result = parseSync(id, code);
|
|
174
188
|
const sources = [];
|
|
@@ -698,7 +712,7 @@ function createLayoutWrapperPlugin({ data, utils }) {
|
|
|
698
712
|
}
|
|
699
713
|
//#endregion
|
|
700
714
|
//#region package.json
|
|
701
|
-
var version = "52.
|
|
715
|
+
var version = "52.18.1";
|
|
702
716
|
//#endregion
|
|
703
717
|
//#region node/integrations/addons.ts
|
|
704
718
|
async function resolveAddons(addonsInConfig) {
|
|
@@ -2008,7 +2022,7 @@ function todoify(token, options) {
|
|
|
2008
2022
|
}
|
|
2009
2023
|
function generateIdForToken(token) {
|
|
2010
2024
|
if (token.map) return `task-item-${token.map[0]}`;
|
|
2011
|
-
else return `task-item-${Math.ceil(Math.random() *
|
|
2025
|
+
else return `task-item-${Math.ceil(Math.random() * 1e7 - 1e3)}`;
|
|
2012
2026
|
}
|
|
2013
2027
|
function createCheckboxToken(token, enabled, id) {
|
|
2014
2028
|
const checkbox = new Token("taskListItemCheckbox", "", 0);
|
|
@@ -2373,7 +2387,8 @@ function MarkdownItVDrag(md, markdownTransformMap) {
|
|
|
2373
2387
|
const sourceMap = s.generateMap();
|
|
2374
2388
|
smc = new SourceMapConsumer({
|
|
2375
2389
|
...sourceMap,
|
|
2376
|
-
version: sourceMap.version.toString()
|
|
2390
|
+
version: sourceMap.version.toString(),
|
|
2391
|
+
sourcesContent: sourceMap.sourcesContent?.map((content) => content ?? "")
|
|
2377
2392
|
});
|
|
2378
2393
|
sourceMapConsumers.set(s, smc);
|
|
2379
2394
|
return smc;
|
|
@@ -2905,7 +2920,8 @@ function createSlidevMcpServer(ctx) {
|
|
|
2905
2920
|
*/
|
|
2906
2921
|
function isSafeDrawingKey(dir, key) {
|
|
2907
2922
|
if (!/^\d+$/.test(key)) return false;
|
|
2908
|
-
const
|
|
2923
|
+
const target = join(dir, `${key}.svg`);
|
|
2924
|
+
const rel = relative(dir, target);
|
|
2909
2925
|
return !rel.startsWith("..") && !isAbsolute(rel);
|
|
2910
2926
|
}
|
|
2911
2927
|
function resolveDrawingsDir(options) {
|
|
@@ -3184,24 +3200,24 @@ function createPatchMonacoSourceMapPlugin() {
|
|
|
3184
3200
|
}
|
|
3185
3201
|
//#endregion
|
|
3186
3202
|
//#region node/vite/pwa.ts
|
|
3187
|
-
|
|
3203
|
+
const PWA_PACKAGE = "vite-plugin-pwa";
|
|
3204
|
+
async function createPWAPlugin(options) {
|
|
3188
3205
|
const matchMode = (mode) => mode === true || mode === options.mode;
|
|
3189
|
-
|
|
3206
|
+
if (!matchMode(options.data.config.pwa)) return createPWARegisterStubPlugin();
|
|
3207
|
+
const VitePWA = await resolveVitePWA();
|
|
3190
3208
|
const base = options.base ?? "/";
|
|
3191
|
-
const title = options.data.config.title || "Slidev";
|
|
3192
3209
|
return VitePWA({
|
|
3193
|
-
disable: !enabled,
|
|
3194
3210
|
registerType: "autoUpdate",
|
|
3195
3211
|
injectRegister: null,
|
|
3196
3212
|
base,
|
|
3197
3213
|
workbox: {
|
|
3198
|
-
maximumFileSizeToCacheInBytes:
|
|
3214
|
+
maximumFileSizeToCacheInBytes: 104857600,
|
|
3199
3215
|
globPatterns: ["**/*.{js,css,html,woff,woff2,ttf,png,jpg,jpeg,svg,gif,webp,avif,ico,mp4,webm,ogv,mov,m4v,mp3,wav,ogg,oga,m4a,aac,flac,opus,weba}"],
|
|
3200
3216
|
navigateFallback: "index.html",
|
|
3201
3217
|
navigateFallbackDenylist: [/^\/(presenter|notes|overview|print|export)/]
|
|
3202
3218
|
},
|
|
3203
3219
|
manifest: {
|
|
3204
|
-
name: title,
|
|
3220
|
+
name: options.data.config.title || "Slidev",
|
|
3205
3221
|
short_name: "Slidev",
|
|
3206
3222
|
start_url: base,
|
|
3207
3223
|
display: "fullscreen",
|
|
@@ -3210,6 +3226,40 @@ function createPWAPlugin(options) {
|
|
|
3210
3226
|
}
|
|
3211
3227
|
});
|
|
3212
3228
|
}
|
|
3229
|
+
/**
|
|
3230
|
+
* Resolve `vite-plugin-pwa`'s `VitePWA` factory, prompting the user to install
|
|
3231
|
+
* the optional peer dependency when the `pwa` option is enabled but the package
|
|
3232
|
+
* is missing.
|
|
3233
|
+
*/
|
|
3234
|
+
async function resolveVitePWA() {
|
|
3235
|
+
let mod = await importOptionalDependency(PWA_PACKAGE);
|
|
3236
|
+
if (!mod?.VitePWA && !mod?.default?.VitePWA) {
|
|
3237
|
+
await promptForOptionalInstallation(PWA_PACKAGE, "The \"pwa\" option");
|
|
3238
|
+
mod = await importOptionalDependency(PWA_PACKAGE);
|
|
3239
|
+
}
|
|
3240
|
+
const VitePWA = mod?.VitePWA ?? mod?.default?.VitePWA;
|
|
3241
|
+
if (!VitePWA) throw new Error(`[slidev] Failed to load "${PWA_PACKAGE}", which is required by the "pwa" option.`);
|
|
3242
|
+
return VitePWA;
|
|
3243
|
+
}
|
|
3244
|
+
/**
|
|
3245
|
+
* When PWA is disabled, resolve `virtual:pwa-register` to a no-op module. The
|
|
3246
|
+
* client only imports it behind the `__SLIDEV_FEATURE_PWA__` guard (stripped
|
|
3247
|
+
* from the build when off), but the guarded dynamic import must still resolve
|
|
3248
|
+
* during dev — without pulling in the optional `vite-plugin-pwa` dependency.
|
|
3249
|
+
*/
|
|
3250
|
+
function createPWARegisterStubPlugin() {
|
|
3251
|
+
const VIRTUAL_ID = "virtual:pwa-register";
|
|
3252
|
+
const RESOLVED_ID = `\0${VIRTUAL_ID}`;
|
|
3253
|
+
return {
|
|
3254
|
+
name: "slidev:pwa-register-stub",
|
|
3255
|
+
resolveId(id) {
|
|
3256
|
+
return id === VIRTUAL_ID ? RESOLVED_ID : void 0;
|
|
3257
|
+
},
|
|
3258
|
+
load(id) {
|
|
3259
|
+
if (id === RESOLVED_ID) return "export function registerSW() { return () => Promise.resolve() }";
|
|
3260
|
+
}
|
|
3261
|
+
};
|
|
3262
|
+
}
|
|
3213
3263
|
//#endregion
|
|
3214
3264
|
//#region node/vite/remoteAssets.ts
|
|
3215
3265
|
async function createRemoteAssetsPlugin({ data: { config }, mode }, pluginOptions) {
|
|
@@ -3254,7 +3304,7 @@ async function setupUnocss({ clientRoot, roots, data, utils }) {
|
|
|
3254
3304
|
return "default" in loaded ? loaded.default : loaded;
|
|
3255
3305
|
});
|
|
3256
3306
|
}
|
|
3257
|
-
const
|
|
3307
|
+
const configs = [
|
|
3258
3308
|
{
|
|
3259
3309
|
presets: [presetIcons({
|
|
3260
3310
|
collectionsNodeResolvePath: utils.iconsResolvePath,
|
|
@@ -3264,7 +3314,8 @@ async function setupUnocss({ clientRoot, roots, data, utils }) {
|
|
|
3264
3314
|
},
|
|
3265
3315
|
(await loadModule(resolve(clientRoot, "uno.config.ts"))).default,
|
|
3266
3316
|
...await loadSetups(roots, "unocss.ts", [], loadFileConfigs)
|
|
3267
|
-
].filter(Boolean)
|
|
3317
|
+
].filter(Boolean);
|
|
3318
|
+
const config = mergeConfigs(configs);
|
|
3268
3319
|
config.theme ||= {};
|
|
3269
3320
|
config.theme.fontFamily ||= {};
|
|
3270
3321
|
config.theme.fontFamily.sans ||= data.config.fonts.sans.join(",");
|
|
@@ -3402,7 +3453,8 @@ async function resolveViteConfigs(options, baseConfig, overrideConfigs, command,
|
|
|
3402
3453
|
//#region node/commands/serve.ts
|
|
3403
3454
|
async function createServer$1(options, viteConfig = {}, serverOptions) {
|
|
3404
3455
|
process.env.EDITOR = process.env.EDITOR || "code";
|
|
3405
|
-
|
|
3456
|
+
const inlineConfig = await resolveViteConfigs(options, { optimizeDeps: { entries: [join(options.clientRoot, "main.ts")] } }, viteConfig, "serve", serverOptions);
|
|
3457
|
+
return await createServer(inlineConfig);
|
|
3406
3458
|
}
|
|
3407
3459
|
//#endregion
|
|
3408
3460
|
export { createDataUtils as a, getThemeMeta as c, loadSetups as d, updateFrontmatterPatch as f, createSlidevMcpServer as i, resolveTheme as l, resolveViteConfigs as n, resolveOptions as o, ViteSlidevPlugin as r, parser as s, createServer$1 as t, version as u };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as getRoots } from "./resolver-
|
|
2
|
-
import { i as createSlidevMcpServer, s as parser, u as version } from "./serve-
|
|
1
|
+
import { n as getRoots } from "./resolver-BIhhHpe7.mjs";
|
|
2
|
+
import { i as createSlidevMcpServer, s as parser, u as version } from "./serve-C3LqO47C.mjs";
|
|
3
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
4
|
//#region node/mcp/stdio.ts
|
|
5
5
|
/**
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slidev/cli",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "52.
|
|
4
|
+
"version": "52.18.1",
|
|
5
5
|
"description": "Presentation slides for developers",
|
|
6
6
|
"author": "Anthony Fu <anthonyfu117@hotmail.com>",
|
|
7
7
|
"license": "MIT",
|
|
@@ -35,29 +35,33 @@
|
|
|
35
35
|
"node": ">=20.12.0"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
|
-
"playwright-chromium": "^1.10.0"
|
|
38
|
+
"playwright-chromium": "^1.10.0",
|
|
39
|
+
"vite-plugin-pwa": "^1.0.0"
|
|
39
40
|
},
|
|
40
41
|
"peerDependenciesMeta": {
|
|
41
42
|
"playwright-chromium": {
|
|
42
43
|
"optional": true
|
|
44
|
+
},
|
|
45
|
+
"vite-plugin-pwa": {
|
|
46
|
+
"optional": true
|
|
43
47
|
}
|
|
44
48
|
},
|
|
45
49
|
"dependencies": {
|
|
46
|
-
"@antfu/ni": "^30.
|
|
50
|
+
"@antfu/ni": "^30.3.0",
|
|
47
51
|
"@antfu/utils": "^9.3.0",
|
|
48
52
|
"@comark/markdown-it": "^0.3.4",
|
|
49
53
|
"@iconify-json/carbon": "^1.2.24",
|
|
50
54
|
"@iconify-json/ph": "^1.2.2",
|
|
51
55
|
"@iconify-json/svg-spinners": "^1.2.4",
|
|
52
56
|
"@lillallol/outline-pdf": "^4.0.0",
|
|
53
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
57
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
54
58
|
"@shikijs/magic-move": "^4.3.1",
|
|
55
59
|
"@shikijs/markdown-it": "^4.3.1",
|
|
56
60
|
"@shikijs/twoslash": "^4.3.1",
|
|
57
61
|
"@shikijs/vitepress-twoslash": "^4.3.1",
|
|
58
62
|
"@unocss/extractor-mdc": "^66.7.5",
|
|
59
63
|
"@unocss/reset": "^66.7.5",
|
|
60
|
-
"@vitejs/plugin-vue": "^6.0.
|
|
64
|
+
"@vitejs/plugin-vue": "^6.0.8",
|
|
61
65
|
"@vitejs/plugin-vue-jsx": "^5.1.6",
|
|
62
66
|
"ansis": "^4.3.1",
|
|
63
67
|
"chokidar": "^5.0.0",
|
|
@@ -70,17 +74,17 @@
|
|
|
70
74
|
"htmlparser2": "^12.0.0",
|
|
71
75
|
"is-installed-globally": "^1.0.0",
|
|
72
76
|
"jiti": "^2.7.0",
|
|
73
|
-
"katex": "^0.
|
|
77
|
+
"katex": "^0.18.1",
|
|
74
78
|
"local-pkg": "^1.2.1",
|
|
75
79
|
"lz-string": "^1.5.0",
|
|
76
|
-
"magic-string": "^
|
|
77
|
-
"magic-string-stack": "^
|
|
80
|
+
"magic-string": "^1.1.0",
|
|
81
|
+
"magic-string-stack": "^2.0.0",
|
|
78
82
|
"markdown-exit": "^1.1.0-beta.2",
|
|
79
83
|
"markdown-it-footnote": "^4.0.0",
|
|
80
84
|
"markdown-it-github-alerts": "^1.0.1",
|
|
81
85
|
"mlly": "^1.8.2",
|
|
82
|
-
"monaco-editor": "^0.
|
|
83
|
-
"obug": "^2.1.
|
|
86
|
+
"monaco-editor": "^0.56.0",
|
|
87
|
+
"obug": "^2.1.4",
|
|
84
88
|
"open": "^11.0.0",
|
|
85
89
|
"pathe": "^2.0.3",
|
|
86
90
|
"pdf-lib": "^1.17.1",
|
|
@@ -97,27 +101,26 @@
|
|
|
97
101
|
"sirv": "^3.0.2",
|
|
98
102
|
"source-map-js": "^1.2.1",
|
|
99
103
|
"typescript": "^6.0.3",
|
|
100
|
-
"unhead": "^3.
|
|
104
|
+
"unhead": "^3.2.3",
|
|
101
105
|
"unocss": "^66.7.5",
|
|
102
106
|
"unplugin-icons": "^23.0.1",
|
|
103
107
|
"unplugin-vue-components": "^32.1.0",
|
|
104
108
|
"unplugin-vue-markdown": "^32.0.0",
|
|
105
|
-
"untun": "^0.
|
|
109
|
+
"untun": "^0.2.2",
|
|
106
110
|
"uqr": "^0.1.3",
|
|
107
|
-
"vite": "^8.1.
|
|
111
|
+
"vite": "^8.1.5",
|
|
108
112
|
"vite-plugin-inspect": "^11.4.1",
|
|
109
|
-
"vite-plugin-pwa": "^1.3.0",
|
|
110
113
|
"vite-plugin-remote-assets": "^2.1.0",
|
|
111
114
|
"vite-plugin-static-copy": "^4.1.1",
|
|
112
115
|
"vite-plugin-vue-server-ref": "^1.0.0",
|
|
113
116
|
"vitefu": "^1.1.3",
|
|
114
|
-
"vue": "^3.5.
|
|
117
|
+
"vue": "^3.5.40",
|
|
115
118
|
"yaml": "^2.9.0",
|
|
116
|
-
"yargs": "^18.
|
|
119
|
+
"yargs": "^18.1.0",
|
|
117
120
|
"zod": "^3.25.76",
|
|
118
|
-
"@slidev/
|
|
119
|
-
"@slidev/
|
|
120
|
-
"@slidev/types": "52.
|
|
121
|
+
"@slidev/parser": "52.18.1",
|
|
122
|
+
"@slidev/client": "52.18.1",
|
|
123
|
+
"@slidev/types": "52.18.1"
|
|
121
124
|
},
|
|
122
125
|
"devDependencies": {
|
|
123
126
|
"@hedgedoc/markdown-it-plugins": "^2.1.4",
|