vitepress 1.0.0-draft.1 → 1.0.0-draft.2
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/client/index.d.ts +5 -0
- package/dist/client/shared.js +1 -0
- package/dist/client/theme-default/Layout.vue +18 -1
- package/dist/client/theme-default/components/VPBackdrop.vue +1 -1
- package/dist/client/theme-default/components/VPBox.vue +59 -0
- package/dist/client/theme-default/components/VPButton.vue +123 -0
- package/dist/client/theme-default/components/VPContent.vue +35 -5
- package/dist/client/theme-default/components/{VPContentDoc.vue → VPDoc.vue} +13 -13
- package/dist/client/theme-default/components/{VPContentDocFooter.vue → VPDocFooter.vue} +3 -2
- package/dist/client/theme-default/components/{VPContentDocOutline.vue → VPDocOutline.vue} +2 -2
- package/dist/client/theme-default/components/VPFooter.vue +53 -0
- package/dist/client/theme-default/components/VPHero.vue +144 -0
- package/dist/client/theme-default/components/VPHome.vue +33 -0
- package/dist/client/theme-default/components/VPHomeFeatures.vue +96 -0
- package/dist/client/theme-default/components/VPHomeHero.vue +17 -0
- package/dist/client/theme-default/components/VPHomeSponsors.vue +97 -0
- package/dist/client/theme-default/components/VPNavBar.vue +1 -0
- package/dist/client/theme-default/components/VPNavBarAppearance.vue +4 -1
- package/dist/client/theme-default/components/VPNavBarExtra.vue +2 -2
- package/dist/client/theme-default/components/VPNavBarSearch.vue +3 -3
- package/dist/client/theme-default/components/VPNavBarTitle.vue +26 -13
- package/dist/client/theme-default/components/VPNavScreenAppearance.vue +4 -1
- package/dist/client/theme-default/components/VPPage.vue +5 -0
- package/dist/client/theme-default/components/VPSponsors.vue +77 -0
- package/dist/client/theme-default/components/VPSponsorsGrid.vue +32 -0
- package/dist/client/theme-default/components/VPSwitchAppearance.vue +3 -3
- package/dist/client/theme-default/components/icons/VPIconHeart.vue +5 -0
- package/dist/client/theme-default/composables/outline.js +1 -19
- package/dist/client/theme-default/composables/sponsor-grid.js +92 -0
- package/dist/client/theme-default/composables/sponsor.js +87 -0
- package/dist/client/theme-default/index.js +4 -0
- package/dist/client/theme-default/styles/base.css +3 -0
- package/dist/client/theme-default/styles/vars.css +86 -1
- package/dist/client/theme-default/styles/vp-doc.css +8 -2
- package/dist/client/theme-default/styles/vp-sponsor.css +86 -0
- package/dist/client/theme-default/support/utils.js +19 -0
- package/dist/node/alias.js +60 -0
- package/dist/node/alias.js.map +1 -0
- package/dist/node/build/build.js +57 -0
- package/dist/node/build/build.js.map +1 -0
- package/dist/node/build/buildMPAClient.js +44 -0
- package/dist/node/build/buildMPAClient.js.map +1 -0
- package/dist/node/build/bundle.js +163 -0
- package/dist/node/build/bundle.js.map +1 -0
- package/dist/node/build/render.js +185 -0
- package/dist/node/build/render.js.map +1 -0
- package/dist/node/cli.js +37 -294
- package/dist/node/cli.js.map +1 -0
- package/dist/node/config.js +176 -0
- package/dist/node/config.js.map +1 -0
- package/dist/node/index.d.ts +19 -1
- package/dist/node/index.js +22 -37
- package/dist/node/index.js.map +1 -0
- package/dist/node/markdown/markdown.js +75 -0
- package/dist/node/markdown/markdown.js.map +1 -0
- package/dist/node/markdown/plugins/component.js +86 -0
- package/dist/node/markdown/plugins/component.js.map +1 -0
- package/dist/node/markdown/plugins/containers.js +41 -0
- package/dist/node/markdown/plugins/containers.js.map +1 -0
- package/dist/node/markdown/plugins/headings.js +25 -0
- package/dist/node/markdown/plugins/headings.js.map +1 -0
- package/dist/node/markdown/plugins/highlight.js +53 -0
- package/dist/node/markdown/plugins/highlight.js.map +1 -0
- package/dist/node/markdown/plugins/highlightLines.js +48 -0
- package/dist/node/markdown/plugins/highlightLines.js.map +1 -0
- package/dist/node/markdown/plugins/hoist.js +22 -0
- package/dist/node/markdown/plugins/hoist.js.map +1 -0
- package/dist/node/markdown/plugins/image.js +17 -0
- package/dist/node/markdown/plugins/image.js.map +1 -0
- package/dist/node/markdown/plugins/lineNumbers.js +23 -0
- package/dist/node/markdown/plugins/lineNumbers.js.map +1 -0
- package/dist/node/markdown/plugins/link.js +85 -0
- package/dist/node/markdown/plugins/link.js.map +1 -0
- package/dist/node/markdown/plugins/preWrapper.js +22 -0
- package/dist/node/markdown/plugins/preWrapper.js.map +1 -0
- package/dist/node/markdown/plugins/slugify.js +26 -0
- package/dist/node/markdown/plugins/slugify.js.map +1 -0
- package/dist/node/markdown/plugins/snippet.js +146 -0
- package/dist/node/markdown/plugins/snippet.js.map +1 -0
- package/dist/node/markdownToVue.js +166 -0
- package/dist/node/markdownToVue.js.map +1 -0
- package/dist/node/plugin.js +227 -0
- package/dist/node/plugin.js.map +1 -0
- package/dist/node/serve/serve.js +59 -0
- package/dist/node/serve/serve.js.map +1 -0
- package/dist/node/{serve-428d4610.js → serve-b5dc02b2.js} +26 -2
- package/dist/node/server.js +18 -0
- package/dist/node/server.js.map +1 -0
- package/dist/node/shared.js +72 -0
- package/dist/node/shared.js.map +1 -0
- package/dist/node/staticDataPlugin.js +99 -0
- package/dist/node/staticDataPlugin.js.map +1 -0
- package/dist/node/utils/getGitTimestamp.js +17 -0
- package/dist/node/utils/getGitTimestamp.js.map +1 -0
- package/dist/node/utils/parseHeader.js +57 -0
- package/dist/node/utils/parseHeader.js.map +1 -0
- package/dist/node/utils/slash.js +8 -0
- package/dist/node/utils/slash.js.map +1 -0
- package/package.json +4 -2
- package/types/default-theme.d.ts +12 -0
- package/types/shared.d.ts +11 -6
|
@@ -12249,6 +12249,7 @@ globby$2.exports.gitignore = gitignore;
|
|
|
12249
12249
|
var globby = globby$2.exports;
|
|
12250
12250
|
|
|
12251
12251
|
const EXTERNAL_URL_RE = /^https?:/i;
|
|
12252
|
+
const APPEARANCE_KEY = "vitepress-theme-appearance";
|
|
12252
12253
|
const inBrowser = typeof window !== "undefined";
|
|
12253
12254
|
function findMatchRoot(route, roots) {
|
|
12254
12255
|
roots.sort((a, b) => {
|
|
@@ -13449,19 +13450,41 @@ function isObject$3(value) {
|
|
|
13449
13450
|
return Object.prototype.toString.call(value) === "[object Object]";
|
|
13450
13451
|
}
|
|
13451
13452
|
async function resolveSiteData(root, userConfig, command = "serve", mode = "development") {
|
|
13453
|
+
var _a;
|
|
13452
13454
|
userConfig = userConfig || (await resolveUserConfig(root, command, mode))[0];
|
|
13453
13455
|
return {
|
|
13454
13456
|
lang: userConfig.lang || "en-US",
|
|
13455
13457
|
title: userConfig.title || "VitePress",
|
|
13456
13458
|
description: userConfig.description || "A VitePress site",
|
|
13457
13459
|
base: userConfig.base ? userConfig.base.replace(/([^/])$/, "$1/") : "/",
|
|
13458
|
-
head: userConfig
|
|
13460
|
+
head: resolveSiteDataHead(userConfig),
|
|
13461
|
+
appearance: (_a = userConfig.appearance) != null ? _a : true,
|
|
13459
13462
|
themeConfig: userConfig.themeConfig || {},
|
|
13460
13463
|
locales: userConfig.locales || {},
|
|
13461
13464
|
langs: createLangDictionary(userConfig),
|
|
13462
13465
|
scrollOffset: userConfig.scrollOffset || 90
|
|
13463
13466
|
};
|
|
13464
13467
|
}
|
|
13468
|
+
function resolveSiteDataHead(userConfig) {
|
|
13469
|
+
var _a, _b;
|
|
13470
|
+
const head = (_a = userConfig == null ? void 0 : userConfig.head) != null ? _a : [];
|
|
13471
|
+
if ((_b = userConfig == null ? void 0 : userConfig.appearance) != null ? _b : true) {
|
|
13472
|
+
head.push([
|
|
13473
|
+
"script",
|
|
13474
|
+
{},
|
|
13475
|
+
`
|
|
13476
|
+
;(() => {
|
|
13477
|
+
const saved = localStorage.getItem('${APPEARANCE_KEY}')
|
|
13478
|
+
const prefereDark = window.matchMedia('(prefers-color-scheme: dark)').matches
|
|
13479
|
+
if (!saved || saved === 'auto' ? prefereDark : saved === 'dark') {
|
|
13480
|
+
document.documentElement.classList.add('dark')
|
|
13481
|
+
}
|
|
13482
|
+
})()
|
|
13483
|
+
`
|
|
13484
|
+
]);
|
|
13485
|
+
}
|
|
13486
|
+
return head;
|
|
13487
|
+
}
|
|
13465
13488
|
|
|
13466
13489
|
var toString = Object.prototype.toString;
|
|
13467
13490
|
|
|
@@ -40929,6 +40952,7 @@ async function renderPage(config, page, result, appChunk, cssChunk, pageToHashMa
|
|
|
40929
40952
|
}).join("\n ");
|
|
40930
40953
|
const stylesheetLink = cssChunk ? `<link rel="stylesheet" href="${siteData.base}${cssChunk.fileName}">` : "";
|
|
40931
40954
|
const title = pageData.title && pageData.title !== "Home" ? `${pageData.title} | ${siteData.title}` : siteData.title;
|
|
40955
|
+
const description = pageData.description || siteData.description;
|
|
40932
40956
|
const head = addSocialTags(title, ...siteData.head, ...filterOutHeadDescription(pageData.frontmatter.head));
|
|
40933
40957
|
let inlinedScript = "";
|
|
40934
40958
|
if (config.mpa && result) {
|
|
@@ -40949,7 +40973,7 @@ async function renderPage(config, page, result, appChunk, cssChunk, pageToHashMa
|
|
|
40949
40973
|
<meta charset="utf-8">
|
|
40950
40974
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
40951
40975
|
<title>${title}</title>
|
|
40952
|
-
<meta name="description" content="${
|
|
40976
|
+
<meta name="description" content="${description}">
|
|
40953
40977
|
${stylesheetLink}
|
|
40954
40978
|
${preloadLinksString}
|
|
40955
40979
|
${prefetchLinkString}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createServer = void 0;
|
|
4
|
+
const vite_1 = require("vite");
|
|
5
|
+
const config_1 = require("./config");
|
|
6
|
+
const plugin_1 = require("./plugin");
|
|
7
|
+
async function createServer(root = process.cwd(), serverOptions = {}) {
|
|
8
|
+
const config = await (0, config_1.resolveConfig)(root);
|
|
9
|
+
return (0, vite_1.createServer)({
|
|
10
|
+
root: config.srcDir,
|
|
11
|
+
base: config.site.base,
|
|
12
|
+
// logLevel: 'warn',
|
|
13
|
+
plugins: (0, plugin_1.createVitePressPlugin)(root, config),
|
|
14
|
+
server: serverOptions
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
exports.createServer = createServer;
|
|
18
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/node/server.ts"],"names":[],"mappings":";;;AAAA,+BAAsE;AACtE,qCAAwC;AACxC,qCAAgD;AAEzC,KAAK,UAAU,YAAY,CAChC,OAAe,OAAO,CAAC,GAAG,EAAE,EAC5B,gBAA+B,EAAE;IAEjC,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAa,EAAC,IAAI,CAAC,CAAA;IAExC,OAAO,IAAA,mBAAgB,EAAC;QACtB,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;QACtB,oBAAoB;QACpB,OAAO,EAAE,IAAA,8BAAqB,EAAC,IAAI,EAAE,MAAM,CAAC;QAC5C,MAAM,EAAE,aAAa;KACtB,CAAC,CAAA;AACJ,CAAC;AAbD,oCAaC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveSiteDataByRoute = exports.createLangDictionary = exports.inBrowser = exports.APPEARANCE_KEY = exports.EXTERNAL_URL_RE = void 0;
|
|
4
|
+
exports.EXTERNAL_URL_RE = /^https?:/i;
|
|
5
|
+
exports.APPEARANCE_KEY = 'vitepress-theme-appearance';
|
|
6
|
+
// @ts-ignore
|
|
7
|
+
exports.inBrowser = typeof window !== 'undefined';
|
|
8
|
+
function findMatchRoot(route, roots) {
|
|
9
|
+
// first match to the routes with the most deep level.
|
|
10
|
+
roots.sort((a, b) => {
|
|
11
|
+
const levelDelta = b.split('/').length - a.split('/').length;
|
|
12
|
+
if (levelDelta !== 0) {
|
|
13
|
+
return levelDelta;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
return b.length - a.length;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
for (const r of roots) {
|
|
20
|
+
if (route.startsWith(r))
|
|
21
|
+
return r;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function resolveLocales(locales, route) {
|
|
25
|
+
const localeRoot = findMatchRoot(route, Object.keys(locales));
|
|
26
|
+
return localeRoot ? locales[localeRoot] : undefined;
|
|
27
|
+
}
|
|
28
|
+
function createLangDictionary(siteData) {
|
|
29
|
+
const { locales } = siteData.themeConfig || {};
|
|
30
|
+
const siteLocales = siteData.locales;
|
|
31
|
+
return locales && siteLocales
|
|
32
|
+
? Object.keys(locales).reduce((langs, path) => {
|
|
33
|
+
langs[path] = {
|
|
34
|
+
label: locales[path].label,
|
|
35
|
+
lang: siteLocales[path].lang
|
|
36
|
+
};
|
|
37
|
+
return langs;
|
|
38
|
+
}, {})
|
|
39
|
+
: {};
|
|
40
|
+
}
|
|
41
|
+
exports.createLangDictionary = createLangDictionary;
|
|
42
|
+
// this merges the locales data to the main data by the route
|
|
43
|
+
function resolveSiteDataByRoute(siteData, route) {
|
|
44
|
+
route = cleanRoute(siteData, route);
|
|
45
|
+
const localeData = resolveLocales(siteData.locales || {}, route);
|
|
46
|
+
const localeThemeConfig = resolveLocales(siteData.themeConfig.locales || {}, route);
|
|
47
|
+
// avoid object rest spread since this is going to run in the browser
|
|
48
|
+
// and spread is going to result in polyfill code
|
|
49
|
+
return Object.assign({}, siteData, localeData, {
|
|
50
|
+
themeConfig: Object.assign({}, siteData.themeConfig, localeThemeConfig, {
|
|
51
|
+
// clean the locales to reduce the bundle size
|
|
52
|
+
locales: {}
|
|
53
|
+
}),
|
|
54
|
+
lang: (localeData || siteData).lang,
|
|
55
|
+
// clean the locales to reduce the bundle size
|
|
56
|
+
locales: {},
|
|
57
|
+
langs: createLangDictionary(siteData)
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
exports.resolveSiteDataByRoute = resolveSiteDataByRoute;
|
|
61
|
+
/**
|
|
62
|
+
* Clean up the route by removing the `base` path if it's set in config.
|
|
63
|
+
*/
|
|
64
|
+
function cleanRoute(siteData, route) {
|
|
65
|
+
if (!exports.inBrowser) {
|
|
66
|
+
return route;
|
|
67
|
+
}
|
|
68
|
+
const base = siteData.base;
|
|
69
|
+
const baseWithoutSuffix = base.endsWith('/') ? base.slice(0, -1) : base;
|
|
70
|
+
return route.slice(baseWithoutSuffix.length);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/node/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// TODO figure out why it causes full page reload
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.staticDataPlugin = void 0;
|
|
5
|
+
const vite_1 = require("vite");
|
|
6
|
+
const path_1 = require("path");
|
|
7
|
+
const micromatch_1 = require("micromatch");
|
|
8
|
+
const loaderMatch = /\.data\.(j|t)s$/;
|
|
9
|
+
let server;
|
|
10
|
+
const idToLoaderModulesMap = Object.create(null);
|
|
11
|
+
// During build, the load hook will be called on the same file twice
|
|
12
|
+
// once for client and once for server build. Not only is this wasteful, it
|
|
13
|
+
// also leads to a race condition in loadConfigFromFile() that results in an
|
|
14
|
+
// fs unlink error. So we reuse the same Promise during build to avoid double
|
|
15
|
+
// loading.
|
|
16
|
+
let idToPendingPromiseMap = Object.create(null);
|
|
17
|
+
let isBuild = false;
|
|
18
|
+
exports.staticDataPlugin = {
|
|
19
|
+
name: 'vitepress:data',
|
|
20
|
+
configResolved(config) {
|
|
21
|
+
isBuild = config.command === 'build';
|
|
22
|
+
},
|
|
23
|
+
configureServer(_server) {
|
|
24
|
+
server = _server;
|
|
25
|
+
},
|
|
26
|
+
async load(id) {
|
|
27
|
+
var _a;
|
|
28
|
+
if (loaderMatch.test(id)) {
|
|
29
|
+
let _resolve;
|
|
30
|
+
if (isBuild) {
|
|
31
|
+
if (idToPendingPromiseMap[id]) {
|
|
32
|
+
return idToPendingPromiseMap[id];
|
|
33
|
+
}
|
|
34
|
+
idToPendingPromiseMap[id] = new Promise((r) => {
|
|
35
|
+
_resolve = r;
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
const base = (0, path_1.dirname)(id);
|
|
39
|
+
let pattern;
|
|
40
|
+
let loader;
|
|
41
|
+
const existing = idToLoaderModulesMap[id];
|
|
42
|
+
if (existing) {
|
|
43
|
+
;
|
|
44
|
+
({ pattern, loader } = existing);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// use vite's load config util as a away to load Node.js file with
|
|
48
|
+
// TS & native ESM support
|
|
49
|
+
const loaderModule = (_a = (await (0, vite_1.loadConfigFromFile)({}, id))) === null || _a === void 0 ? void 0 : _a.config;
|
|
50
|
+
pattern =
|
|
51
|
+
typeof loaderModule.watch === 'string'
|
|
52
|
+
? [loaderModule.watch]
|
|
53
|
+
: loaderModule.watch;
|
|
54
|
+
if (pattern) {
|
|
55
|
+
pattern = pattern.map((p) => {
|
|
56
|
+
return p.startsWith('./') ? p.slice(2) : p;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
loader = loaderModule.load;
|
|
60
|
+
}
|
|
61
|
+
// load the data
|
|
62
|
+
const data = await loader();
|
|
63
|
+
// record loader module for HMR
|
|
64
|
+
if (server) {
|
|
65
|
+
idToLoaderModulesMap[id] = { base, pattern, loader };
|
|
66
|
+
}
|
|
67
|
+
const result = `export const data = JSON.parse(${JSON.stringify(JSON.stringify(data))})`;
|
|
68
|
+
if (_resolve)
|
|
69
|
+
_resolve(result);
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
transform(_code, id) {
|
|
74
|
+
if (server && loaderMatch.test(id)) {
|
|
75
|
+
// register this module as a glob importer
|
|
76
|
+
const { base, pattern } = idToLoaderModulesMap[id];
|
|
77
|
+
server._globImporters[id] = {
|
|
78
|
+
module: server.moduleGraph.getModuleById(id),
|
|
79
|
+
importGlobs: pattern === null || pattern === void 0 ? void 0 : pattern.map((pattern) => ({ base, pattern }))
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return null;
|
|
83
|
+
},
|
|
84
|
+
handleHotUpdate(ctx) {
|
|
85
|
+
for (const id in idToLoaderModulesMap) {
|
|
86
|
+
const { base, pattern } = idToLoaderModulesMap[id];
|
|
87
|
+
const isLoaderFile = (0, vite_1.normalizePath)(ctx.file) === id;
|
|
88
|
+
if (isLoaderFile) {
|
|
89
|
+
// invalidate loader file
|
|
90
|
+
delete idToLoaderModulesMap[id];
|
|
91
|
+
}
|
|
92
|
+
if (isLoaderFile ||
|
|
93
|
+
(pattern && (0, micromatch_1.isMatch)((0, path_1.relative)(base, ctx.file), pattern))) {
|
|
94
|
+
ctx.modules.push(server.moduleGraph.getModuleById(id));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=staticDataPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"staticDataPlugin.js","sourceRoot":"","sources":["../../src/node/staticDataPlugin.ts"],"names":[],"mappings":";AAAA,iDAAiD;;;AAEjD,+BAA+E;AAC/E,+BAAwC;AACxC,2CAAoC;AAEpC,MAAM,WAAW,GAAG,iBAAiB,CAAA;AAErC,IAAI,MAAqB,CAAA;AAazB,MAAM,oBAAoB,GACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AAErB,oEAAoE;AACpE,2EAA2E;AAC3E,4EAA4E;AAC5E,6EAA6E;AAC7E,WAAW;AACX,IAAI,qBAAqB,GACvB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;AACrB,IAAI,OAAO,GAAG,KAAK,CAAA;AAEN,QAAA,gBAAgB,GAAW;IACtC,IAAI,EAAE,gBAAgB;IAEtB,cAAc,CAAC,MAAM;QACnB,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,OAAO,CAAA;IACtC,CAAC;IAED,eAAe,CAAC,OAAO;QACrB,MAAM,GAAG,OAAO,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE;;QACX,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACxB,IAAI,QAA0C,CAAA;YAC9C,IAAI,OAAO,EAAE;gBACX,IAAI,qBAAqB,CAAC,EAAE,CAAC,EAAE;oBAC7B,OAAO,qBAAqB,CAAC,EAAE,CAAC,CAAA;iBACjC;gBACD,qBAAqB,CAAC,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC5C,QAAQ,GAAG,CAAC,CAAA;gBACd,CAAC,CAAC,CAAA;aACH;YAED,MAAM,IAAI,GAAG,IAAA,cAAO,EAAC,EAAE,CAAC,CAAA;YACxB,IAAI,OAA6B,CAAA;YACjC,IAAI,MAAiB,CAAA;YAErB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAA;YACzC,IAAI,QAAQ,EAAE;gBACZ,CAAC;gBAAA,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAA;aAClC;iBAAM;gBACL,kEAAkE;gBAClE,0BAA0B;gBAC1B,MAAM,YAAY,GAAG,MAAA,CAAC,MAAM,IAAA,yBAAkB,EAAC,EAAS,EAAE,EAAE,CAAC,CAAC,0CAC1D,MAAsB,CAAA;gBAC1B,OAAO;oBACL,OAAO,YAAY,CAAC,KAAK,KAAK,QAAQ;wBACpC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;wBACtB,CAAC,CAAC,YAAY,CAAC,KAAK,CAAA;gBACxB,IAAI,OAAO,EAAE;oBACX,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;wBAC1B,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC5C,CAAC,CAAC,CAAA;iBACH;gBACD,MAAM,GAAG,YAAY,CAAC,IAAI,CAAA;aAC3B;YAED,gBAAgB;YAChB,MAAM,IAAI,GAAG,MAAM,MAAM,EAAE,CAAA;YAE3B,+BAA+B;YAC/B,IAAI,MAAM,EAAE;gBACV,oBAAoB,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;aACrD;YAED,MAAM,MAAM,GAAG,kCAAkC,IAAI,CAAC,SAAS,CAC7D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CACrB,GAAG,CAAA;YAEJ,IAAI,QAAQ;gBAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC9B,OAAO,MAAM,CAAA;SACd;IACH,CAAC;IAED,SAAS,CAAC,KAAK,EAAE,EAAE;QACjB,IAAI,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAClC,0CAA0C;YAC1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,oBAAoB,CAAC,EAAE,CAAE,CAClD;YAAC,MAAc,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG;gBACpC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC5C,WAAW,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;aAC5D,CAAA;SACF;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,eAAe,CAAC,GAAG;QACjB,KAAK,MAAM,EAAE,IAAI,oBAAoB,EAAE;YACrC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,oBAAoB,CAAC,EAAE,CAAE,CAAA;YACnD,MAAM,YAAY,GAAG,IAAA,oBAAa,EAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;YACnD,IAAI,YAAY,EAAE;gBAChB,yBAAyB;gBACzB,OAAO,oBAAoB,CAAC,EAAE,CAAC,CAAA;aAChC;YACD,IACE,YAAY;gBACZ,CAAC,OAAO,IAAI,IAAA,oBAAO,EAAC,IAAA,eAAQ,EAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,EACvD;gBACA,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAE,CAAC,CAAA;aACxD;SACF;IACH,CAAC;CACF,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getGitTimestamp = void 0;
|
|
4
|
+
const cross_spawn_1 = require("cross-spawn");
|
|
5
|
+
function getGitTimestamp(file) {
|
|
6
|
+
return new Promise((resolve, reject) => {
|
|
7
|
+
const child = (0, cross_spawn_1.spawn)('git', ['log', '-1', '--pretty="%ci"', file]);
|
|
8
|
+
let output = '';
|
|
9
|
+
child.stdout.on('data', (d) => (output += String(d)));
|
|
10
|
+
child.on('close', () => {
|
|
11
|
+
resolve(+new Date(output));
|
|
12
|
+
});
|
|
13
|
+
child.on('error', reject);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
exports.getGitTimestamp = getGitTimestamp;
|
|
17
|
+
//# sourceMappingURL=getGitTimestamp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getGitTimestamp.js","sourceRoot":"","sources":["../../../src/node/utils/getGitTimestamp.ts"],"names":[],"mappings":";;;AAAA,6CAAmC;AAEnC,SAAgB,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,IAAA,mBAAK,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAA;QACjE,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACrD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACrB,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;QAC5B,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC;AAVD,0CAUC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.deeplyParseHeader = exports.parseHeader = exports.removeNonCodeWrappedHTML = void 0;
|
|
7
|
+
// Since VuePress needs to extract the header from the markdown source
|
|
8
|
+
// file and display it in the sidebar or title (#238), this file simply
|
|
9
|
+
// removes some unnecessary elements to make header displays well at
|
|
10
|
+
// sidebar or title.
|
|
11
|
+
//
|
|
12
|
+
// But header's parsing in the markdown content is done by the markdown
|
|
13
|
+
// loader based on markdown-it. markdown-it parser will will always keep
|
|
14
|
+
// HTML in headers, so in VuePress, after being parsed by the markdown
|
|
15
|
+
// loader, the raw HTML in headers will finally be parsed by Vue-loader.
|
|
16
|
+
// so that we can write HTML/Vue in the header. One exception is the HTML
|
|
17
|
+
// wrapped by <code>(markdown token: '`') tag.
|
|
18
|
+
const full_json_1 = __importDefault(require("markdown-it-emoji/lib/data/full.json"));
|
|
19
|
+
const parseEmojis = (str) => {
|
|
20
|
+
return str.replace(/:(.+?):/g, (placeholder, key) => full_json_1.default[key] || placeholder);
|
|
21
|
+
};
|
|
22
|
+
const unescapeHtml = (html) => html
|
|
23
|
+
.replace(/"/g, '"')
|
|
24
|
+
.replace(/'/g, "'")
|
|
25
|
+
.replace(/:/g, ':')
|
|
26
|
+
.replace(/</g, '<')
|
|
27
|
+
.replace(/>/g, '>');
|
|
28
|
+
const removeMarkdownTokens = (str) => str
|
|
29
|
+
.replace(/(\[(.[^\]]+)\]\((.[^)]+)\))/g, '$2') // []()
|
|
30
|
+
.replace(/(`|\*{1,3}|_)(.*?[^\\])\1/g, '$2') // `{t}` | *{t}* | **{t}** | ***{t}*** | _{t}_
|
|
31
|
+
.replace(/(\\)(\*|_|`|\!|<|\$)/g, '$2'); // remove escape char '\'
|
|
32
|
+
const remvoeCustomAnchor = (str) => str.replace(/\{#([a-z0-9\-_]+?)\}\s*$/, ''); // {#custom-header}
|
|
33
|
+
const trim = (str) => str.trim();
|
|
34
|
+
// This method remove the raw HTML but reserve the HTML wrapped by `<code>`.
|
|
35
|
+
// e.g.
|
|
36
|
+
// Input: "<a> b", Output: "b"
|
|
37
|
+
// Input: "`<a>` b", Output: "`<a>` b"
|
|
38
|
+
const removeNonCodeWrappedHTML = (str) => {
|
|
39
|
+
return String(str).replace(/(^|[^><`\\])<.*>([^><`]|$)/g, '$1$2');
|
|
40
|
+
};
|
|
41
|
+
exports.removeNonCodeWrappedHTML = removeNonCodeWrappedHTML;
|
|
42
|
+
const compose = (...processors) => {
|
|
43
|
+
if (processors.length === 0)
|
|
44
|
+
return (input) => input;
|
|
45
|
+
if (processors.length === 1)
|
|
46
|
+
return processors[0];
|
|
47
|
+
return processors.reduce((prev, next) => {
|
|
48
|
+
return (str) => next(prev(str));
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
// Unescape html, parse emojis and remove some md tokens.
|
|
52
|
+
exports.parseHeader = compose(unescapeHtml, parseEmojis, remvoeCustomAnchor, removeMarkdownTokens, trim);
|
|
53
|
+
// Also clean the html that isn't wrapped by code.
|
|
54
|
+
// Because we want to support using VUE components in headers.
|
|
55
|
+
// e.g. https://vuepress.vuejs.org/guide/using-vue.html#badge
|
|
56
|
+
exports.deeplyParseHeader = compose(exports.removeNonCodeWrappedHTML, exports.parseHeader);
|
|
57
|
+
//# sourceMappingURL=parseHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseHeader.js","sourceRoot":"","sources":["../../../src/node/utils/parseHeader.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAsE;AACtE,uEAAuE;AACvE,oEAAoE;AACpE,oBAAoB;AACpB,EAAE;AACF,uEAAuE;AACvE,wEAAwE;AACxE,sEAAsE;AACtE,wEAAwE;AACxE,yEAAyE;AACzE,8CAA8C;AAC9C,qFAA4D;AAE5D,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,EAAE;IAClC,OAAO,GAAG,CAAC,OAAO,CAChB,UAAU,EACV,CAAC,WAAW,EAAE,GAAG,EAAE,EAAE,CAAC,mBAAS,CAAC,GAAG,CAAC,IAAI,WAAW,CACpD,CAAA;AACH,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CACpC,IAAI;KACD,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;KACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;KACtB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;KACvB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;KACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;AAE1B,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,EAAE,CAC3C,GAAG;KACA,OAAO,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC,OAAO;KACrD,OAAO,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC,8CAA8C;KAC1F,OAAO,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAA,CAAC,yBAAyB;AAErE,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CACzC,GAAG,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAA,CAAC,mBAAmB;AAEjE,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;AAExC,4EAA4E;AAC5E,OAAO;AACP,gCAAgC;AAChC,sCAAsC;AAC/B,MAAM,wBAAwB,GAAG,CAAC,GAAW,EAAE,EAAE;IACtD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAA;AACnE,CAAC,CAAA;AAFY,QAAA,wBAAwB,4BAEpC;AAED,MAAM,OAAO,GAAG,CAAC,GAAG,UAAuC,EAAE,EAAE;IAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAA;IAC5D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAA;IACjD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QACtC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,yDAAyD;AAC5C,QAAA,WAAW,GAAG,OAAO,CAChC,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,IAAI,CACL,CAAA;AAED,kDAAkD;AAClD,8DAA8D;AAC9D,6DAA6D;AAChD,QAAA,iBAAiB,GAAG,OAAO,CAAC,gCAAwB,EAAE,mBAAW,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash.js","sourceRoot":"","sources":["../../../src/node/utils/slash.ts"],"names":[],"mappings":";;;AAAA,SAAgB,KAAK,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AAC9B,CAAC;AAFD,sBAEC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vitepress",
|
|
3
|
-
"version": "1.0.0-draft.
|
|
3
|
+
"version": "1.0.0-draft.2",
|
|
4
|
+
"packageManager": "pnpm@7.0.1",
|
|
4
5
|
"description": "Vite & Vue powered static site generator",
|
|
5
6
|
"main": "dist/node/index.js",
|
|
6
7
|
"typings": "types/index.d.ts",
|
|
@@ -138,5 +139,6 @@
|
|
|
138
139
|
"docs-build-only": "node ./bin/vitepress build docs",
|
|
139
140
|
"docs-serve": "node ./bin/vitepress serve docs",
|
|
140
141
|
"ci-docs": "run-s build docs-build"
|
|
141
|
-
}
|
|
142
|
+
},
|
|
143
|
+
"readme": "# (WIP) VitePress 📝💨\n\n[](https://github.com/vuejs/vitepress/actions)\n[](https://www.npmjs.com/package/vitepress)\n\n---\n\nVitePress is [VuePress](https://vuepress.vuejs.org)' spiritual successor, built on top of [vite](https://github.com/vitejs/vite).\n\n## Documentation\n\nTo check out docs, visit [vitepress.vuejs.org](https://vitepress.vuejs.org).\n\n## Changelog\n\nDetailed changes for each release are documented in the [CHANGELOG](https://github.com/vuejs/vitepress/blob/main/CHANGELOG.md).\n\n## Contribution\n\nPlease make sure to read the [Contributing Guide](https://github.com/vuejs/vitepress/blob/main/.github/contributing.md) before making a pull request.\n\n## License\n\n[MIT](https://github.com/vuejs/vitepress/blob/main/LICENSE)\n\nCopyright (c) 2019-present, Yuxi (Evan) You\n"
|
|
142
144
|
}
|
package/types/default-theme.d.ts
CHANGED
|
@@ -29,6 +29,11 @@ export namespace DefaultTheme {
|
|
|
29
29
|
*/
|
|
30
30
|
socialLinks?: SocialLink[]
|
|
31
31
|
|
|
32
|
+
/**
|
|
33
|
+
* The footer configuration.
|
|
34
|
+
*/
|
|
35
|
+
footer?: Footer
|
|
36
|
+
|
|
32
37
|
/**
|
|
33
38
|
* Adds locale menu to the nav. This option should be used when you have
|
|
34
39
|
* your translated sites outside of the project.
|
|
@@ -133,6 +138,13 @@ export namespace DefaultTheme {
|
|
|
133
138
|
| 'twitter'
|
|
134
139
|
| 'youtube'
|
|
135
140
|
|
|
141
|
+
// footer --------------------------------------------------------------------
|
|
142
|
+
|
|
143
|
+
export interface Footer {
|
|
144
|
+
message?: string
|
|
145
|
+
copyright?: string
|
|
146
|
+
}
|
|
147
|
+
|
|
136
148
|
// locales -------------------------------------------------------------------
|
|
137
149
|
|
|
138
150
|
export interface LocaleLinks {
|
package/types/shared.d.ts
CHANGED
|
@@ -11,19 +11,30 @@ export interface PageData {
|
|
|
11
11
|
lastUpdated?: number
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
+
export interface Header {
|
|
15
|
+
level: number
|
|
16
|
+
title: string
|
|
17
|
+
slug: string
|
|
18
|
+
}
|
|
19
|
+
|
|
14
20
|
export interface SiteData<ThemeConfig = any> {
|
|
15
21
|
base: string
|
|
22
|
+
|
|
16
23
|
/**
|
|
17
24
|
* Language of the site as it should be set on the `html` element.
|
|
25
|
+
*
|
|
18
26
|
* @example `en-US`, `zh-CN`
|
|
19
27
|
*/
|
|
20
28
|
lang: string
|
|
29
|
+
|
|
21
30
|
title: string
|
|
22
31
|
description: string
|
|
23
32
|
head: HeadConfig[]
|
|
33
|
+
appearance: boolean
|
|
24
34
|
themeConfig: ThemeConfig
|
|
25
35
|
scrollOffset: number | string
|
|
26
36
|
locales: Record<string, LocaleConfig>
|
|
37
|
+
|
|
27
38
|
/**
|
|
28
39
|
* Available locales for the site when it has defined `locales` in its
|
|
29
40
|
* `themeConfig`. This object is otherwise empty. Keys are paths like `/` or
|
|
@@ -50,12 +61,6 @@ export type HeadConfig =
|
|
|
50
61
|
| [string, Record<string, string>]
|
|
51
62
|
| [string, Record<string, string>, string]
|
|
52
63
|
|
|
53
|
-
export interface Header {
|
|
54
|
-
level: number
|
|
55
|
-
title: string
|
|
56
|
-
slug: string
|
|
57
|
-
}
|
|
58
|
-
|
|
59
64
|
export interface LocaleConfig {
|
|
60
65
|
lang: string
|
|
61
66
|
title?: string
|