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
|
@@ -0,0 +1,163 @@
|
|
|
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.bundle = exports.failMark = exports.okMark = void 0;
|
|
7
|
+
const ora_1 = __importDefault(require("ora"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
10
|
+
const slash_1 = require("../utils/slash");
|
|
11
|
+
const alias_1 = require("../alias");
|
|
12
|
+
const vite_1 = require("vite");
|
|
13
|
+
const plugin_1 = require("../plugin");
|
|
14
|
+
const buildMPAClient_1 = require("./buildMPAClient");
|
|
15
|
+
exports.okMark = '\x1b[32m✓\x1b[0m';
|
|
16
|
+
exports.failMark = '\x1b[31m✖\x1b[0m';
|
|
17
|
+
// bundles the VitePress app for both client AND server.
|
|
18
|
+
async function bundle(config, options) {
|
|
19
|
+
const { root, srcDir } = config;
|
|
20
|
+
const pageToHashMap = Object.create(null);
|
|
21
|
+
const clientJSMap = Object.create(null);
|
|
22
|
+
// define custom rollup input
|
|
23
|
+
// this is a multi-entry build - every page is considered an entry chunk
|
|
24
|
+
// the loading is done via filename conversion rules so that the
|
|
25
|
+
// metadata doesn't need to be included in the main chunk.
|
|
26
|
+
const input = {
|
|
27
|
+
app: path_1.default.resolve(alias_1.APP_PATH, 'index.js')
|
|
28
|
+
};
|
|
29
|
+
config.pages.forEach((file) => {
|
|
30
|
+
// page filename conversion
|
|
31
|
+
// foo/bar.md -> foo_bar.md
|
|
32
|
+
input[(0, slash_1.slash)(file).replace(/\//g, '_')] = path_1.default.resolve(srcDir, file);
|
|
33
|
+
});
|
|
34
|
+
// resolve options to pass to vite
|
|
35
|
+
const { rollupOptions } = options;
|
|
36
|
+
const resolveViteConfig = (ssr) => ({
|
|
37
|
+
root: srcDir,
|
|
38
|
+
base: config.site.base,
|
|
39
|
+
logLevel: 'warn',
|
|
40
|
+
plugins: (0, plugin_1.createVitePressPlugin)(root, config, ssr, pageToHashMap, clientJSMap),
|
|
41
|
+
// @ts-ignore
|
|
42
|
+
ssr: {
|
|
43
|
+
noExternal: ['vitepress']
|
|
44
|
+
},
|
|
45
|
+
build: {
|
|
46
|
+
...options,
|
|
47
|
+
emptyOutDir: true,
|
|
48
|
+
ssr,
|
|
49
|
+
outDir: ssr ? config.tempDir : config.outDir,
|
|
50
|
+
cssCodeSplit: false,
|
|
51
|
+
rollupOptions: {
|
|
52
|
+
...rollupOptions,
|
|
53
|
+
input,
|
|
54
|
+
// important so that each page chunk and the index export things for each
|
|
55
|
+
// other
|
|
56
|
+
preserveEntrySignatures: 'allow-extension',
|
|
57
|
+
output: {
|
|
58
|
+
...rollupOptions === null || rollupOptions === void 0 ? void 0 : rollupOptions.output,
|
|
59
|
+
...(ssr
|
|
60
|
+
? {}
|
|
61
|
+
: {
|
|
62
|
+
chunkFileNames(chunk) {
|
|
63
|
+
// avoid ads chunk being intercepted by adblock
|
|
64
|
+
return /(?:Carbon|BuySell)Ads/.test(chunk.name)
|
|
65
|
+
? `assets/chunks/ui-custom.[hash].js`
|
|
66
|
+
: `assets/chunks/[name].[hash].js`;
|
|
67
|
+
},
|
|
68
|
+
manualChunks(id, ctx) {
|
|
69
|
+
// move known framework code into a stable chunk so that
|
|
70
|
+
// custom theme changes do not invalidate hash for all pages
|
|
71
|
+
if (id.includes('plugin-vue:export-helper')) {
|
|
72
|
+
return 'framework';
|
|
73
|
+
}
|
|
74
|
+
if (isEagerChunk(id, ctx) &&
|
|
75
|
+
(/@vue\/(runtime|shared|reactivity)/.test(id) ||
|
|
76
|
+
/vitepress\/dist\/client/.test(id))) {
|
|
77
|
+
return 'framework';
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
})
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
// minify with esbuild in MPA mode (for CSS)
|
|
84
|
+
minify: ssr ? (config.mpa ? 'esbuild' : false) : !process.env.DEBUG
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
let clientResult;
|
|
88
|
+
let serverResult;
|
|
89
|
+
const spinner = (0, ora_1.default)();
|
|
90
|
+
spinner.start('building client + server bundles...');
|
|
91
|
+
try {
|
|
92
|
+
;
|
|
93
|
+
[clientResult, serverResult] = await Promise.all([
|
|
94
|
+
config.mpa ? null : (0, vite_1.build)(resolveViteConfig(false)),
|
|
95
|
+
(0, vite_1.build)(resolveViteConfig(true))
|
|
96
|
+
]);
|
|
97
|
+
}
|
|
98
|
+
catch (e) {
|
|
99
|
+
spinner.stopAndPersist({
|
|
100
|
+
symbol: exports.failMark
|
|
101
|
+
});
|
|
102
|
+
throw e;
|
|
103
|
+
}
|
|
104
|
+
spinner.stopAndPersist({
|
|
105
|
+
symbol: exports.okMark
|
|
106
|
+
});
|
|
107
|
+
if (config.mpa) {
|
|
108
|
+
// in MPA mode, we need to copy over the non-js asset files from the
|
|
109
|
+
// server build since there is no client-side build.
|
|
110
|
+
for (const chunk of serverResult.output) {
|
|
111
|
+
if (!chunk.fileName.endsWith('.js')) {
|
|
112
|
+
const tempPath = path_1.default.resolve(config.tempDir, chunk.fileName);
|
|
113
|
+
const outPath = path_1.default.resolve(config.outDir, chunk.fileName);
|
|
114
|
+
await fs_extra_1.default.copy(tempPath, outPath);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// also copy over public dir
|
|
118
|
+
const publicDir = path_1.default.resolve(config.srcDir, 'public');
|
|
119
|
+
if (fs_extra_1.default.existsSync(publicDir)) {
|
|
120
|
+
await fs_extra_1.default.copy(publicDir, config.outDir);
|
|
121
|
+
}
|
|
122
|
+
// build <script client> bundle
|
|
123
|
+
if (Object.keys(clientJSMap).length) {
|
|
124
|
+
clientResult = (await (0, buildMPAClient_1.buildMPAClient)(clientJSMap, config));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return { clientResult, serverResult, pageToHashMap };
|
|
128
|
+
}
|
|
129
|
+
exports.bundle = bundle;
|
|
130
|
+
const cache = new Map();
|
|
131
|
+
/**
|
|
132
|
+
* Check if a module is statically imported by at least one entry.
|
|
133
|
+
*/
|
|
134
|
+
function isEagerChunk(id, { getModuleInfo }) {
|
|
135
|
+
if (id.includes('node_modules') &&
|
|
136
|
+
!/\.css($|\\?)/.test(id) &&
|
|
137
|
+
staticImportedByEntry(id, getModuleInfo, cache)) {
|
|
138
|
+
return 'vendor';
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function staticImportedByEntry(id, getModuleInfo, cache, importStack = []) {
|
|
142
|
+
if (cache.has(id)) {
|
|
143
|
+
return cache.get(id);
|
|
144
|
+
}
|
|
145
|
+
if (importStack.includes(id)) {
|
|
146
|
+
// circular deps!
|
|
147
|
+
cache.set(id, false);
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
const mod = getModuleInfo(id);
|
|
151
|
+
if (!mod) {
|
|
152
|
+
cache.set(id, false);
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
if (mod.isEntry) {
|
|
156
|
+
cache.set(id, true);
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
const someImporterIs = mod.importers.some((importer) => staticImportedByEntry(importer, getModuleInfo, cache, importStack.concat(id)));
|
|
160
|
+
cache.set(id, someImporterIs);
|
|
161
|
+
return someImporterIs;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../src/node/build/bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,185 @@
|
|
|
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.renderPage = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
9
|
+
const config_1 = require("../config");
|
|
10
|
+
const vite_1 = require("vite");
|
|
11
|
+
const slash_1 = require("../utils/slash");
|
|
12
|
+
const escape_html_1 = __importDefault(require("escape-html"));
|
|
13
|
+
async function renderPage(config, page, // foo.md
|
|
14
|
+
result, appChunk, cssChunk, pageToHashMap, hashMapString) {
|
|
15
|
+
const { createApp } = require(path_1.default.join(config.tempDir, `app.js`));
|
|
16
|
+
const { app, router } = createApp();
|
|
17
|
+
const routePath = `/${page.replace(/\.md$/, '')}`;
|
|
18
|
+
const siteData = (0, config_1.resolveSiteDataByRoute)(config.site, routePath);
|
|
19
|
+
router.go(routePath);
|
|
20
|
+
// lazy require server-renderer for production build
|
|
21
|
+
// prioritize project root over vitepress' own dep
|
|
22
|
+
let rendererPath;
|
|
23
|
+
try {
|
|
24
|
+
rendererPath = require.resolve('vue/server-renderer', {
|
|
25
|
+
paths: [config.root]
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
rendererPath = require.resolve('vue/server-renderer');
|
|
30
|
+
}
|
|
31
|
+
// render page
|
|
32
|
+
const content = await require(rendererPath).renderToString(app);
|
|
33
|
+
const pageName = page.replace(/\//g, '_');
|
|
34
|
+
// server build doesn't need hash
|
|
35
|
+
const pageServerJsFileName = pageName + '.js';
|
|
36
|
+
// for any initial page load, we only need the lean version of the page js
|
|
37
|
+
// since the static content is already on the page!
|
|
38
|
+
const pageHash = pageToHashMap[pageName.toLowerCase()];
|
|
39
|
+
const pageClientJsFileName = `assets/${pageName}.${pageHash}.lean.js`;
|
|
40
|
+
// resolve page data so we can render head tags
|
|
41
|
+
const { __pageData } = require(path_1.default.join(config.tempDir, pageServerJsFileName));
|
|
42
|
+
const pageData = JSON.parse(__pageData);
|
|
43
|
+
let preloadLinks = config.mpa
|
|
44
|
+
? appChunk
|
|
45
|
+
? [appChunk.fileName]
|
|
46
|
+
: []
|
|
47
|
+
: result && appChunk
|
|
48
|
+
? [
|
|
49
|
+
...new Set([
|
|
50
|
+
// resolve imports for index.js + page.md.js and inject script tags for
|
|
51
|
+
// them as well so we fetch everything as early as possible without having
|
|
52
|
+
// to wait for entry chunks to parse
|
|
53
|
+
...resolvePageImports(config, page, result, appChunk),
|
|
54
|
+
pageClientJsFileName,
|
|
55
|
+
appChunk.fileName
|
|
56
|
+
])
|
|
57
|
+
]
|
|
58
|
+
: [];
|
|
59
|
+
let prefetchLinks = [];
|
|
60
|
+
const { shouldPreload } = config;
|
|
61
|
+
if (shouldPreload) {
|
|
62
|
+
prefetchLinks = preloadLinks.filter((link) => !shouldPreload(link, page));
|
|
63
|
+
preloadLinks = preloadLinks.filter((link) => shouldPreload(link, page));
|
|
64
|
+
}
|
|
65
|
+
const preloadLinksString = preloadLinks
|
|
66
|
+
.map((file) => {
|
|
67
|
+
return `<link rel="modulepreload" href="${siteData.base}${file}">`;
|
|
68
|
+
})
|
|
69
|
+
.join('\n ');
|
|
70
|
+
const prefetchLinkString = prefetchLinks
|
|
71
|
+
.map((file) => {
|
|
72
|
+
return `<link rel="prefetch" href="${siteData.base}${file}">`;
|
|
73
|
+
})
|
|
74
|
+
.join('\n ');
|
|
75
|
+
const stylesheetLink = cssChunk
|
|
76
|
+
? `<link rel="stylesheet" href="${siteData.base}${cssChunk.fileName}">`
|
|
77
|
+
: '';
|
|
78
|
+
const title = pageData.title && pageData.title !== 'Home'
|
|
79
|
+
? `${pageData.title} | ${siteData.title}`
|
|
80
|
+
: siteData.title;
|
|
81
|
+
const description = pageData.description || siteData.description;
|
|
82
|
+
const head = addSocialTags(title, ...siteData.head, ...filterOutHeadDescription(pageData.frontmatter.head));
|
|
83
|
+
let inlinedScript = '';
|
|
84
|
+
if (config.mpa && result) {
|
|
85
|
+
const matchingChunk = result.output.find((chunk) => chunk.type === 'chunk' &&
|
|
86
|
+
chunk.facadeModuleId === (0, slash_1.slash)(path_1.default.join(config.srcDir, page)));
|
|
87
|
+
if (matchingChunk) {
|
|
88
|
+
if (!matchingChunk.code.includes('import')) {
|
|
89
|
+
inlinedScript = `<script type="module">${matchingChunk.code}</script>`;
|
|
90
|
+
fs_extra_1.default.removeSync(path_1.default.resolve(config.outDir, matchingChunk.fileName));
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
inlinedScript = `<script type="module" src="${siteData.base}${matchingChunk.fileName}"></script>`;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const html = `
|
|
98
|
+
<!DOCTYPE html>
|
|
99
|
+
<html lang="${siteData.lang}">
|
|
100
|
+
<head>
|
|
101
|
+
<meta charset="utf-8">
|
|
102
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
103
|
+
<title>${title}</title>
|
|
104
|
+
<meta name="description" content="${description}">
|
|
105
|
+
${stylesheetLink}
|
|
106
|
+
${preloadLinksString}
|
|
107
|
+
${prefetchLinkString}
|
|
108
|
+
${await renderHead(head)}
|
|
109
|
+
</head>
|
|
110
|
+
<body>
|
|
111
|
+
<div id="app">${content}</div>
|
|
112
|
+
${config.mpa
|
|
113
|
+
? ''
|
|
114
|
+
: `<script>__VP_HASH_MAP__ = JSON.parse(${hashMapString})</script>`}
|
|
115
|
+
${appChunk
|
|
116
|
+
? `<script type="module" async src="${siteData.base}${appChunk.fileName}"></script>`
|
|
117
|
+
: ``}
|
|
118
|
+
${inlinedScript}
|
|
119
|
+
</body>
|
|
120
|
+
</html>`.trim();
|
|
121
|
+
const htmlFileName = path_1.default.join(config.outDir, page.replace(/\.md$/, '.html'));
|
|
122
|
+
await fs_extra_1.default.ensureDir(path_1.default.dirname(htmlFileName));
|
|
123
|
+
await fs_extra_1.default.writeFile(htmlFileName, html);
|
|
124
|
+
}
|
|
125
|
+
exports.renderPage = renderPage;
|
|
126
|
+
function resolvePageImports(config, page, result, appChunk) {
|
|
127
|
+
// find the page's js chunk and inject script tags for its imports so that
|
|
128
|
+
// they start fetching as early as possible
|
|
129
|
+
const srcPath = (0, vite_1.normalizePath)(fs_extra_1.default.realpathSync(path_1.default.resolve(config.srcDir, page)));
|
|
130
|
+
const pageChunk = result.output.find((chunk) => chunk.type === 'chunk' && chunk.facadeModuleId === srcPath);
|
|
131
|
+
return [
|
|
132
|
+
...appChunk.imports,
|
|
133
|
+
...appChunk.dynamicImports,
|
|
134
|
+
...pageChunk.imports,
|
|
135
|
+
...pageChunk.dynamicImports
|
|
136
|
+
];
|
|
137
|
+
}
|
|
138
|
+
function renderHead(head) {
|
|
139
|
+
return Promise.all(head.map(async ([tag, attrs = {}, innerHTML = '']) => {
|
|
140
|
+
const openTag = `<${tag}${renderAttrs(attrs)}>`;
|
|
141
|
+
if (tag !== 'link' && tag !== 'meta') {
|
|
142
|
+
if (tag === 'script' &&
|
|
143
|
+
(attrs.type === undefined || attrs.type.includes('javascript'))) {
|
|
144
|
+
innerHTML = (await (0, vite_1.transformWithEsbuild)(innerHTML, 'inline-script.js', {
|
|
145
|
+
minify: true
|
|
146
|
+
})).code.trim();
|
|
147
|
+
}
|
|
148
|
+
return `${openTag}${innerHTML}</${tag}>`;
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
return openTag;
|
|
152
|
+
}
|
|
153
|
+
})).then((tags) => tags.join('\n '));
|
|
154
|
+
}
|
|
155
|
+
function renderAttrs(attrs) {
|
|
156
|
+
return Object.keys(attrs)
|
|
157
|
+
.map((key) => {
|
|
158
|
+
return ` ${key}="${(0, escape_html_1.default)(attrs[key])}"`;
|
|
159
|
+
})
|
|
160
|
+
.join('');
|
|
161
|
+
}
|
|
162
|
+
function isMetaDescription(headConfig) {
|
|
163
|
+
const [type, attrs] = headConfig;
|
|
164
|
+
return type === 'meta' && (attrs === null || attrs === void 0 ? void 0 : attrs.name) === 'description';
|
|
165
|
+
}
|
|
166
|
+
function filterOutHeadDescription(head) {
|
|
167
|
+
return head ? head.filter((h) => !isMetaDescription(h)) : [];
|
|
168
|
+
}
|
|
169
|
+
function hasTag(head, tag) {
|
|
170
|
+
const [tagType, tagAttrs] = tag;
|
|
171
|
+
const [attr, value] = Object.entries(tagAttrs)[0]; // First key
|
|
172
|
+
return head.some(([type, attrs]) => type === tagType && attrs[attr] === value);
|
|
173
|
+
}
|
|
174
|
+
function addSocialTags(title, ...head) {
|
|
175
|
+
const tags = [
|
|
176
|
+
['meta', { name: 'twitter:title', content: title }],
|
|
177
|
+
['meta', { property: 'og:title', content: title }]
|
|
178
|
+
];
|
|
179
|
+
tags.filter((tagAttrs) => {
|
|
180
|
+
if (!hasTag(head, tagAttrs))
|
|
181
|
+
head.push(tagAttrs);
|
|
182
|
+
});
|
|
183
|
+
return head;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/node/build/render.ts"],"names":[],"mappings":"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"}
|