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.
Files changed (101) hide show
  1. package/dist/client/index.d.ts +5 -0
  2. package/dist/client/shared.js +1 -0
  3. package/dist/client/theme-default/Layout.vue +18 -1
  4. package/dist/client/theme-default/components/VPBackdrop.vue +1 -1
  5. package/dist/client/theme-default/components/VPBox.vue +59 -0
  6. package/dist/client/theme-default/components/VPButton.vue +123 -0
  7. package/dist/client/theme-default/components/VPContent.vue +35 -5
  8. package/dist/client/theme-default/components/{VPContentDoc.vue → VPDoc.vue} +13 -13
  9. package/dist/client/theme-default/components/{VPContentDocFooter.vue → VPDocFooter.vue} +3 -2
  10. package/dist/client/theme-default/components/{VPContentDocOutline.vue → VPDocOutline.vue} +2 -2
  11. package/dist/client/theme-default/components/VPFooter.vue +53 -0
  12. package/dist/client/theme-default/components/VPHero.vue +144 -0
  13. package/dist/client/theme-default/components/VPHome.vue +33 -0
  14. package/dist/client/theme-default/components/VPHomeFeatures.vue +96 -0
  15. package/dist/client/theme-default/components/VPHomeHero.vue +17 -0
  16. package/dist/client/theme-default/components/VPHomeSponsors.vue +97 -0
  17. package/dist/client/theme-default/components/VPNavBar.vue +1 -0
  18. package/dist/client/theme-default/components/VPNavBarAppearance.vue +4 -1
  19. package/dist/client/theme-default/components/VPNavBarExtra.vue +2 -2
  20. package/dist/client/theme-default/components/VPNavBarSearch.vue +3 -3
  21. package/dist/client/theme-default/components/VPNavBarTitle.vue +26 -13
  22. package/dist/client/theme-default/components/VPNavScreenAppearance.vue +4 -1
  23. package/dist/client/theme-default/components/VPPage.vue +5 -0
  24. package/dist/client/theme-default/components/VPSponsors.vue +77 -0
  25. package/dist/client/theme-default/components/VPSponsorsGrid.vue +32 -0
  26. package/dist/client/theme-default/components/VPSwitchAppearance.vue +3 -3
  27. package/dist/client/theme-default/components/icons/VPIconHeart.vue +5 -0
  28. package/dist/client/theme-default/composables/outline.js +1 -19
  29. package/dist/client/theme-default/composables/sponsor-grid.js +92 -0
  30. package/dist/client/theme-default/composables/sponsor.js +87 -0
  31. package/dist/client/theme-default/index.js +4 -0
  32. package/dist/client/theme-default/styles/base.css +3 -0
  33. package/dist/client/theme-default/styles/vars.css +86 -1
  34. package/dist/client/theme-default/styles/vp-doc.css +8 -2
  35. package/dist/client/theme-default/styles/vp-sponsor.css +86 -0
  36. package/dist/client/theme-default/support/utils.js +19 -0
  37. package/dist/node/alias.js +60 -0
  38. package/dist/node/alias.js.map +1 -0
  39. package/dist/node/build/build.js +57 -0
  40. package/dist/node/build/build.js.map +1 -0
  41. package/dist/node/build/buildMPAClient.js +44 -0
  42. package/dist/node/build/buildMPAClient.js.map +1 -0
  43. package/dist/node/build/bundle.js +163 -0
  44. package/dist/node/build/bundle.js.map +1 -0
  45. package/dist/node/build/render.js +185 -0
  46. package/dist/node/build/render.js.map +1 -0
  47. package/dist/node/cli.js +37 -294
  48. package/dist/node/cli.js.map +1 -0
  49. package/dist/node/config.js +176 -0
  50. package/dist/node/config.js.map +1 -0
  51. package/dist/node/index.d.ts +19 -1
  52. package/dist/node/index.js +22 -37
  53. package/dist/node/index.js.map +1 -0
  54. package/dist/node/markdown/markdown.js +75 -0
  55. package/dist/node/markdown/markdown.js.map +1 -0
  56. package/dist/node/markdown/plugins/component.js +86 -0
  57. package/dist/node/markdown/plugins/component.js.map +1 -0
  58. package/dist/node/markdown/plugins/containers.js +41 -0
  59. package/dist/node/markdown/plugins/containers.js.map +1 -0
  60. package/dist/node/markdown/plugins/headings.js +25 -0
  61. package/dist/node/markdown/plugins/headings.js.map +1 -0
  62. package/dist/node/markdown/plugins/highlight.js +53 -0
  63. package/dist/node/markdown/plugins/highlight.js.map +1 -0
  64. package/dist/node/markdown/plugins/highlightLines.js +48 -0
  65. package/dist/node/markdown/plugins/highlightLines.js.map +1 -0
  66. package/dist/node/markdown/plugins/hoist.js +22 -0
  67. package/dist/node/markdown/plugins/hoist.js.map +1 -0
  68. package/dist/node/markdown/plugins/image.js +17 -0
  69. package/dist/node/markdown/plugins/image.js.map +1 -0
  70. package/dist/node/markdown/plugins/lineNumbers.js +23 -0
  71. package/dist/node/markdown/plugins/lineNumbers.js.map +1 -0
  72. package/dist/node/markdown/plugins/link.js +85 -0
  73. package/dist/node/markdown/plugins/link.js.map +1 -0
  74. package/dist/node/markdown/plugins/preWrapper.js +22 -0
  75. package/dist/node/markdown/plugins/preWrapper.js.map +1 -0
  76. package/dist/node/markdown/plugins/slugify.js +26 -0
  77. package/dist/node/markdown/plugins/slugify.js.map +1 -0
  78. package/dist/node/markdown/plugins/snippet.js +146 -0
  79. package/dist/node/markdown/plugins/snippet.js.map +1 -0
  80. package/dist/node/markdownToVue.js +166 -0
  81. package/dist/node/markdownToVue.js.map +1 -0
  82. package/dist/node/plugin.js +227 -0
  83. package/dist/node/plugin.js.map +1 -0
  84. package/dist/node/serve/serve.js +59 -0
  85. package/dist/node/serve/serve.js.map +1 -0
  86. package/dist/node/{serve-428d4610.js → serve-b5dc02b2.js} +26 -2
  87. package/dist/node/server.js +18 -0
  88. package/dist/node/server.js.map +1 -0
  89. package/dist/node/shared.js +72 -0
  90. package/dist/node/shared.js.map +1 -0
  91. package/dist/node/staticDataPlugin.js +99 -0
  92. package/dist/node/staticDataPlugin.js.map +1 -0
  93. package/dist/node/utils/getGitTimestamp.js +17 -0
  94. package/dist/node/utils/getGitTimestamp.js.map +1 -0
  95. package/dist/node/utils/parseHeader.js +57 -0
  96. package/dist/node/utils/parseHeader.js.map +1 -0
  97. package/dist/node/utils/slash.js +8 -0
  98. package/dist/node/utils/slash.js.map +1 -0
  99. package/package.json +4 -2
  100. package/types/default-theme.d.ts +12 -0
  101. package/types/shared.d.ts +11 -6
@@ -0,0 +1,87 @@
1
+ import { onMounted, onUnmounted } from 'vue';
2
+ import { throttleAndDebounce } from '../support/utils';
3
+ const GridSettings = {
4
+ small: [
5
+ [920, 6, 2],
6
+ [768, 5, 2],
7
+ [640, 4, 2],
8
+ [480, 3, 2],
9
+ [0, 2, 2]
10
+ ],
11
+ medium: [
12
+ [832, 4, 3],
13
+ [640, 3, 3],
14
+ [480, 2, 2]
15
+ ],
16
+ big: [
17
+ [832, 3, 3],
18
+ [640, 2, 2]
19
+ ]
20
+ };
21
+ export function useSponsorsGrid(options) {
22
+ const onResize = throttleAndDebounce(manage, 100);
23
+ onMounted(() => {
24
+ manage();
25
+ window.addEventListener('resize', onResize);
26
+ });
27
+ onUnmounted(() => {
28
+ window.removeEventListener('resize', onResize);
29
+ });
30
+ function manage() {
31
+ adjustSlots(options.el.value, options.size);
32
+ }
33
+ }
34
+ function adjustSlots(el, size) {
35
+ const tsize = el.children.length;
36
+ const asize = el.querySelectorAll('.vp-sponsor-grid-item:not(.empty)').length;
37
+ const grid = setGrid(el, size, asize);
38
+ manageSlots(el, grid, tsize, asize);
39
+ }
40
+ function setGrid(el, size, items) {
41
+ const settings = GridSettings[size];
42
+ const screen = window.innerWidth;
43
+ let grid = 1;
44
+ const match = settings.some(([breakpoint, value, min]) => {
45
+ if (screen < breakpoint) {
46
+ return false;
47
+ }
48
+ if (items < min) {
49
+ setGridData(el, items);
50
+ grid = items;
51
+ }
52
+ else {
53
+ setGridData(el, value);
54
+ grid = value;
55
+ }
56
+ return true;
57
+ });
58
+ match || setGridData(el, 1);
59
+ return grid;
60
+ }
61
+ function setGridData(el, value) {
62
+ el.dataset.vpGrid = String(value);
63
+ }
64
+ function manageSlots(el, grid, tsize, asize) {
65
+ const diff = tsize - asize;
66
+ const rem = asize % grid;
67
+ const drem = rem === 0 ? rem : grid - rem;
68
+ neutralizeSlots(el, drem - diff);
69
+ }
70
+ function neutralizeSlots(el, count) {
71
+ if (count === 0) {
72
+ return;
73
+ }
74
+ count > 0 ? addSlots(el, count) : removeSlots(el, count * -1);
75
+ }
76
+ function addSlots(el, count) {
77
+ for (let i = 0; i < count; i++) {
78
+ const slot = document.createElement('div');
79
+ slot.classList.add('vp-sponsor-grid-item', 'empty');
80
+ el.append(slot);
81
+ }
82
+ }
83
+ function removeSlots(el, count) {
84
+ for (let i = 0; i < count; i++) {
85
+ el.removeChild(el.lastElementChild);
86
+ }
87
+ }
@@ -3,8 +3,12 @@ import './styles/vars.css';
3
3
  import './styles/base.css';
4
4
  import './styles/utils.css';
5
5
  import './styles/vp-doc.css';
6
+ import './styles/vp-sponsor.css';
6
7
  import Layout from './Layout.vue';
7
8
  import NotFound from './NotFound.vue';
9
+ export { default as VPHomeHero } from './components/VPHomeHero.vue';
10
+ export { default as VPHomeFeatures } from './components/VPHomeFeatures.vue';
11
+ export { default as VPHomeSponsors } from './components/VPHomeSponsors.vue';
8
12
  const theme = {
9
13
  Layout,
10
14
  NotFound
@@ -39,6 +39,9 @@ h4,
39
39
  h5,
40
40
  h6 {
41
41
  margin: 0;
42
+ line-height: 24px;
43
+ font-size: 16px;
44
+ font-weight: 400;
42
45
  }
43
46
 
44
47
  p {
@@ -52,6 +52,9 @@
52
52
  --vp-c-indigo: #213547;
53
53
  --vp-c-indigo-soft: #476582;
54
54
  --vp-c-indigo-light: #aac8e4;
55
+ --vp-c-indigo-lighter: #c9def1;
56
+ --vp-c-indigo-dark: #1d2f3f;
57
+ --vp-c-indigo-darker: #14212e;
55
58
 
56
59
  --vp-c-blue: #3b8eed;
57
60
  --vp-c-blue-light: #549ced;
@@ -109,7 +112,11 @@
109
112
 
110
113
  --vp-c-brand: var(--vp-c-green);
111
114
  --vp-c-brand-light: var(--vp-c-green-light);
115
+ --vp-c-brand-lighter: var(--vp-c-green-lighter);
112
116
  --vp-c-brand-dark: var(--vp-c-green-dark);
117
+ --vp-c-brand-darker: var(--vp-c-green-darker);
118
+
119
+ --vp-c-sponsor: #fd1d7c;
113
120
  }
114
121
 
115
122
  .dark {
@@ -168,8 +175,9 @@
168
175
  :root {
169
176
  --vp-z-index-local-nav: 10;
170
177
  --vp-z-index-nav: 20;
171
- --vp-z-backdrop: 30;
178
+ --vp-z-index-backdrop: 30;
172
179
  --vp-z-index-sidebar: 40;
180
+ --vp-z-index-footer: 50;
173
181
  }
174
182
 
175
183
  /**
@@ -185,10 +193,17 @@
185
193
  * -------------------------------------------------------------------------- */
186
194
 
187
195
  :root {
196
+ --vp-nav-height: var(--vp-nav-height-mobile);
188
197
  --vp-nav-height-mobile: 56px;
189
198
  --vp-nav-height-desktop: 72px;
190
199
  }
191
200
 
201
+ @media (min-width: 960px) {
202
+ :root {
203
+ --vp-nav-height: var(--vp-nav-height-desktop);
204
+ }
205
+ }
206
+
192
207
  /**
193
208
  * Component: Sidebar
194
209
  * -------------------------------------------------------------------------- */
@@ -212,3 +227,73 @@
212
227
  .dark {
213
228
  --vp-code-block-bg: var(--vp-c-bg-sidebar);
214
229
  }
230
+
231
+ /**
232
+ * Component: Button
233
+ * -------------------------------------------------------------------------- */
234
+
235
+ :root {
236
+ --vp-button-brand-border: var(--vp-c-brand-light);
237
+ --vp-button-brand-text: var(--vp-c-text-dark-1);
238
+ --vp-button-brand-bg: var(--vp-c-brand);
239
+ --vp-button-brand-hover-border: var(--vp-c-brand-light);
240
+ --vp-button-brand-hover-text: var(--vp-c-text-dark-1);
241
+ --vp-button-brand-hover-bg: var(--vp-c-brand-light);
242
+ --vp-button-brand-active-border: var(--vp-c-brand-light);
243
+ --vp-button-brand-active-text: var(--vp-c-text-dark-1);
244
+ --vp-button-brand-active-bg: var(--vp-button-brand-bg);
245
+
246
+ --vp-button-alt-border: var(--vp-c-gray-light-3);
247
+ --vp-button-alt-text: var(--vp-c-text-light-1);
248
+ --vp-button-alt-bg: var(--vp-c-gray-light-5);
249
+ --vp-button-alt-hover-border: var(--vp-c-gray-light-3);
250
+ --vp-button-alt-hover-text: var(--vp-c-text-light-1);
251
+ --vp-button-alt-hover-bg: var(--vp-c-gray-light-4);
252
+ --vp-button-alt-active-border: var(--vp-c-gray-light-3);
253
+ --vp-button-alt-active-text: var(--vp-c-text-light-1);
254
+ --vp-button-alt-active-bg: var(--vp-c-gray-light-3);
255
+
256
+ --vp-button-sponsor-border: var(--vp-c-gray-light-3);
257
+ --vp-button-sponsor-text: var(--vp-c-text-light-2);
258
+ --vp-button-sponsor-bg: transparent;
259
+ --vp-button-sponsor-hover-border: var(--vp-c-sponsor);
260
+ --vp-button-sponsor-hover-text: var(--vp-c-sponsor);
261
+ --vp-button-sponsor-hover-bg: transparent;
262
+ --vp-button-sponsor-active-border: var(--vp-c-sponsor);
263
+ --vp-button-sponsor-active-text: var(--vp-c-sponsor);
264
+ --vp-button-sponsor-active-bg: transparent;
265
+ }
266
+
267
+ .dark {
268
+ --vp-button-brand-border: var(--vp-c-brand-lighter);
269
+ --vp-button-brand-text: var(--vp-c-text-light-1);
270
+ --vp-button-brand-bg: var(--vp-c-brand-light);
271
+ --vp-button-brand-hover-border: var(--vp-c-brand-lighter);
272
+ --vp-button-brand-hover-text: var(--vp-c-text-light-1);
273
+ --vp-button-brand-hover-bg: var(--vp-c-brand-lighter);
274
+ --vp-button-brand-active-border: var(--vp-c-brand-lighter);
275
+ --vp-button-brand-active-text: var(--vp-c-text-light-1);
276
+ --vp-button-brand-active-bg: var(--vp-button-brand-bg);
277
+
278
+ --vp-button-alt-border: var(--vp-c-gray-dark-2);
279
+ --vp-button-alt-text: var(--vp-c-text-dark-1);
280
+ --vp-button-alt-bg: var(--vp-c-bg-mute);
281
+ --vp-button-alt-hover-border: var(--vp-c-gray-dark-2);
282
+ --vp-button-alt-hover-text: var(--vp-c-text-dark-1);
283
+ --vp-button-alt-hover-bg: var(--vp-c-gray-dark-3);
284
+ --vp-button-alt-active-border: var(--vp-c-gray-dark-2);
285
+ --vp-button-alt-active-text: var(--vp-c-text-dark-1);
286
+ --vp-button-alt-active-bg: var(--vp-button-alt-bg);
287
+
288
+ --vp-button-sponsor-border: var(--vp-c-gray-dark-1);
289
+ --vp-button-sponsor-text: var(--vp-c-text-dark-2);
290
+ }
291
+
292
+ /**
293
+ * Component: Home
294
+ * -------------------------------------------------------------------------- */
295
+
296
+ :root {
297
+ --vp-home-hero-name-color: var(--vp-c-brand);
298
+ --vp-home-hero-name-background: transparent;
299
+ }
@@ -123,6 +123,10 @@
123
123
  list-style: disc;
124
124
  }
125
125
 
126
+ .vp-doc li + li {
127
+ margin-top: 8px;
128
+ }
129
+
126
130
  /**
127
131
  * Table
128
132
  * -------------------------------------------------------------------------- */
@@ -184,7 +188,7 @@
184
188
 
185
189
  .vp-doc :not(pre) > code {
186
190
  border-radius: 4px;
187
- padding: 4px 6px;
191
+ padding: 3px 6px;
188
192
  color: var(--vp-c-text-code);
189
193
  background-color: var(--vp-c-bg-mute);
190
194
  transition: color 0.5s, background-color 0.5s;
@@ -217,7 +221,7 @@
217
221
  @media (min-width: 640px) {
218
222
  .vp-doc div[class*='language-'] {
219
223
  border-radius: 8px;
220
- margin: 20px 0;
224
+ margin: 24px 0;
221
225
  }
222
226
  }
223
227
 
@@ -331,6 +335,8 @@
331
335
  .vp-doc [class~='language-ts']:before { content: 'ts'; }
332
336
  .vp-doc [class~='language-tsx']:before { content: 'tsx'; }
333
337
  .vp-doc [class~='language-json']:before { content: 'json'; }
338
+ .vp-doc [class~='language-yaml']:before { content: 'yaml'; }
339
+ .vp-doc [class~='language-yml']:before { content: 'yaml'; }
334
340
  .vp-doc [class~='language-sh']:before { content: 'sh'; }
335
341
  .vp-doc [class~='language-bash']:before { content: 'sh'; }
336
342
 
@@ -0,0 +1,86 @@
1
+ .vp-sponsor-grid {
2
+ display: flex;
3
+ flex-wrap: wrap;
4
+ gap: 4px;
5
+ }
6
+
7
+ .vp-sponsor-grid.small .vp-sponsor-grid-link { height: 96px; }
8
+ .vp-sponsor-grid.small .vp-sponsor-grid-image { max-width: 96px; max-height: 24px }
9
+
10
+ .vp-sponsor-grid.medium .vp-sponsor-grid-link { height: 112px; }
11
+ .vp-sponsor-grid.medium .vp-sponsor-grid-image { max-width: 120px; max-height: 36px }
12
+
13
+ .vp-sponsor-grid.big .vp-sponsor-grid-link { height: 184px; }
14
+ .vp-sponsor-grid.big .vp-sponsor-grid-image { max-width: 192px; max-height: 56px }
15
+
16
+ .vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item {
17
+ width: calc((100% - 4px) / 2);
18
+ }
19
+
20
+ .vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item {
21
+ width: calc((100% - 4px * 2) / 3);
22
+ }
23
+
24
+ .vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item {
25
+ width: calc((100% - 4px * 3) / 4);
26
+ }
27
+
28
+ .vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item {
29
+ width: calc((100% - 4px * 4) / 5);
30
+ }
31
+
32
+ .vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item {
33
+ width: calc((100% - 4px * 5) / 6);
34
+ }
35
+
36
+ .vp-sponsor-grid-item {
37
+ flex-shrink: 0;
38
+ width: 100%;
39
+ background-color: var(--vp-c-white-soft);
40
+ transition: background-color 0.25s;
41
+ }
42
+
43
+ .vp-sponsor-grid-item:hover {
44
+ background-color: var(--vp-c-white-mute);
45
+ }
46
+
47
+ .vp-sponsor-grid-item:hover .vp-sponsor-grid-image {
48
+ filter: grayscale(0) invert(0);
49
+ }
50
+
51
+ .vp-sponsor-grid-item.empty:hover {
52
+ background-color: var(--vp-c-white-soft);
53
+ }
54
+
55
+ .dark .vp-sponsor-grid-item {
56
+ background-color: var(--vp-c-black-mute);
57
+ }
58
+
59
+ .dark .vp-sponsor-grid-item:hover {
60
+ background-color: var(--vp-c-white-soft);
61
+ }
62
+
63
+ .dark .vp-sponsor-grid-item.empty:hover {
64
+ background-color: var(--vp-c-black-mute);
65
+ }
66
+
67
+ .vp-sponsor-grid-link {
68
+ display: flex;
69
+ }
70
+
71
+ .vp-sponsor-grid-box {
72
+ display: flex;
73
+ justify-content: center;
74
+ align-items: center;
75
+ width: 100%;
76
+ }
77
+
78
+ .vp-sponsor-grid-image {
79
+ max-width: 100%;
80
+ filter: grayscale(1);
81
+ transition: filter 0.25s;
82
+ }
83
+
84
+ .dark .vp-sponsor-grid-image {
85
+ filter: grayscale(1) invert(1);
86
+ }
@@ -8,6 +8,25 @@ const hashRef = ref(inBrowser ? location.hash : '');
8
8
  export function isExternal(path) {
9
9
  return OUTBOUND_RE.test(path);
10
10
  }
11
+ export function throttleAndDebounce(fn, delay) {
12
+ let timeout;
13
+ let called = false;
14
+ return () => {
15
+ if (timeout) {
16
+ clearTimeout(timeout);
17
+ }
18
+ if (!called) {
19
+ fn();
20
+ called = true;
21
+ setTimeout(() => {
22
+ called = false;
23
+ }, delay);
24
+ }
25
+ else {
26
+ timeout = setTimeout(fn, delay);
27
+ }
28
+ };
29
+ }
11
30
  export function isActive(currentPath, matchPath, asRegex = false) {
12
31
  if (matchPath === undefined) {
13
32
  return false;
@@ -0,0 +1,60 @@
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.resolveAliases = exports.SITE_DATA_REQUEST_PATH = exports.SITE_DATA_ID = exports.DEFAULT_THEME_PATH = exports.SHARED_PATH = exports.APP_PATH = exports.DIST_CLIENT_PATH = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ const PKG_ROOT = path_1.default.join(__dirname, '../../');
9
+ exports.DIST_CLIENT_PATH = path_1.default.join(__dirname, '../client');
10
+ exports.APP_PATH = path_1.default.join(exports.DIST_CLIENT_PATH, 'app');
11
+ exports.SHARED_PATH = path_1.default.join(exports.DIST_CLIENT_PATH, 'shared');
12
+ exports.DEFAULT_THEME_PATH = path_1.default.join(exports.DIST_CLIENT_PATH, 'theme-default');
13
+ // special virtual file
14
+ // we can't directly import '/@siteData' because
15
+ // - it's not an actual file so we can't use tsconfig paths to redirect it
16
+ // - TS doesn't allow shimming a module that starts with '/'
17
+ exports.SITE_DATA_ID = '@siteData';
18
+ exports.SITE_DATA_REQUEST_PATH = '/' + exports.SITE_DATA_ID;
19
+ const vueRuntimePath = 'vue/dist/vue.runtime.esm-bundler.js';
20
+ function resolveAliases(root, themeDir) {
21
+ const paths = {
22
+ '/@theme': themeDir,
23
+ '@theme': themeDir,
24
+ [exports.SITE_DATA_ID]: exports.SITE_DATA_REQUEST_PATH
25
+ };
26
+ // prioritize vue installed in project root and fallback to
27
+ // vue that comes with vitepress itself.
28
+ let vuePath;
29
+ try {
30
+ vuePath = require.resolve(vueRuntimePath, { paths: [root] });
31
+ }
32
+ catch (e) {
33
+ vuePath = require.resolve(vueRuntimePath);
34
+ }
35
+ const aliases = [
36
+ ...Object.keys(paths).map((p) => ({
37
+ find: p,
38
+ replacement: paths[p]
39
+ })),
40
+ {
41
+ find: /^vitepress$/,
42
+ replacement: path_1.default.join(__dirname, '../client/index')
43
+ },
44
+ {
45
+ find: /^vitepress\/theme$/,
46
+ replacement: path_1.default.join(__dirname, '../client/theme-default/index')
47
+ },
48
+ // alias for local linked development
49
+ { find: /^vitepress\//, replacement: PKG_ROOT + '/' },
50
+ // make sure it always use the same vue dependency that comes with
51
+ // vitepress itself
52
+ {
53
+ find: /^vue$/,
54
+ replacement: vuePath
55
+ }
56
+ ];
57
+ return aliases;
58
+ }
59
+ exports.resolveAliases = resolveAliases;
60
+ //# sourceMappingURL=alias.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alias.js","sourceRoot":"","sources":["../../src/node/alias.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAuB;AAGvB,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;AAClC,QAAA,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;AACpD,QAAA,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,KAAK,CAAC,CAAA;AAC7C,QAAA,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,QAAQ,CAAC,CAAA;AACnD,QAAA,kBAAkB,GAAG,cAAI,CAAC,IAAI,CAAC,wBAAgB,EAAE,eAAe,CAAC,CAAA;AAE9E,uBAAuB;AACvB,gDAAgD;AAChD,0EAA0E;AAC1E,4DAA4D;AAC/C,QAAA,YAAY,GAAG,WAAW,CAAA;AAC1B,QAAA,sBAAsB,GAAG,GAAG,GAAG,oBAAY,CAAA;AAExD,MAAM,cAAc,GAAG,qCAAqC,CAAA;AAE5D,SAAgB,cAAc,CAAC,IAAY,EAAE,QAAgB;IAC3D,MAAM,KAAK,GAA2B;QACpC,SAAS,EAAE,QAAQ;QACnB,QAAQ,EAAE,QAAQ;QAClB,CAAC,oBAAY,CAAC,EAAE,8BAAsB;KACvC,CAAA;IAED,2DAA2D;IAC3D,wCAAwC;IACxC,IAAI,OAAO,CAAA;IACX,IAAI;QACF,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;KAC7D;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;KAC1C;IAED,MAAM,OAAO,GAAY;QACvB,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,CAAC;YACP,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;SACtB,CAAC,CAAC;QACH;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;SACrD;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC;SACnE;QACD,qCAAqC;QACrC,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,GAAG,GAAG,EAAE;QACrD,kEAAkE;QAClE,mBAAmB;QACnB;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,OAAO;SACrB;KACF,CAAA;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAxCD,wCAwCC"}
@@ -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.build = void 0;
7
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
+ const bundle_1 = require("./bundle");
9
+ const config_1 = require("../config");
10
+ const render_1 = require("./render");
11
+ const ora_1 = __importDefault(require("ora"));
12
+ const path_1 = __importDefault(require("path"));
13
+ async function build(root, buildOptions = {}) {
14
+ const start = Date.now();
15
+ process.env.NODE_ENV = 'production';
16
+ const siteConfig = await (0, config_1.resolveConfig)(root, 'build', 'production');
17
+ if (buildOptions.mpa) {
18
+ siteConfig.mpa = true;
19
+ delete buildOptions.mpa;
20
+ }
21
+ try {
22
+ const { clientResult, serverResult, pageToHashMap } = await (0, bundle_1.bundle)(siteConfig, buildOptions);
23
+ const spinner = (0, ora_1.default)();
24
+ spinner.start('rendering pages...');
25
+ try {
26
+ const appChunk = clientResult &&
27
+ clientResult.output.find((chunk) => chunk.type === 'chunk' && chunk.isEntry);
28
+ const cssChunk = (siteConfig.mpa ? serverResult : clientResult).output.find((chunk) => chunk.type === 'asset' && chunk.fileName.endsWith('.css'));
29
+ // We embed the hash map string into each page directly so that it doesn't
30
+ // alter the main chunk's hash on every build. It's also embedded as a
31
+ // string and JSON.parsed from the client because it's faster than embedding
32
+ // as JS object literal.
33
+ const hashMapString = JSON.stringify(JSON.stringify(pageToHashMap));
34
+ for (const page of siteConfig.pages) {
35
+ await (0, render_1.renderPage)(siteConfig, page, clientResult, appChunk, cssChunk, pageToHashMap, hashMapString);
36
+ }
37
+ }
38
+ catch (e) {
39
+ spinner.stopAndPersist({
40
+ symbol: bundle_1.failMark
41
+ });
42
+ throw e;
43
+ }
44
+ spinner.stopAndPersist({
45
+ symbol: bundle_1.okMark
46
+ });
47
+ // emit page hash map for the case where a user session is open
48
+ // when the site got redeployed (which invalidates current hash map)
49
+ fs_extra_1.default.writeJSONSync(path_1.default.join(siteConfig.outDir, 'hashmap.json'), pageToHashMap);
50
+ }
51
+ finally {
52
+ await fs_extra_1.default.remove(siteConfig.tempDir);
53
+ }
54
+ console.log(`build complete in ${((Date.now() - start) / 1000).toFixed(2)}s.`);
55
+ }
56
+ exports.build = build;
57
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/node/build/build.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAyB;AACzB,qCAAmD;AAEnD,sCAAyC;AACzC,qCAAqC;AAErC,8CAAqB;AACrB,gDAAuB;AAEhB,KAAK,UAAU,KAAK,CACzB,IAAY,EACZ,eAAgD,EAAE;IAElD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAExB,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAA;IACnC,MAAM,UAAU,GAAG,MAAM,IAAA,sBAAa,EAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAA;IAEnE,IAAI,YAAY,CAAC,GAAG,EAAE;QACpB,UAAU,CAAC,GAAG,GAAG,IAAI,CAAA;QACrB,OAAO,YAAY,CAAC,GAAG,CAAA;KACxB;IAED,IAAI;QACF,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,IAAA,eAAM,EAChE,UAAU,EACV,YAAY,CACb,CAAA;QAED,MAAM,OAAO,GAAG,IAAA,aAAG,GAAE,CAAA;QACrB,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAEnC,IAAI;YACF,MAAM,QAAQ,GACZ,YAAY;gBACX,YAAY,CAAC,MAAM,CAAC,IAAI,CACvB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CACnC,CAAA;YAEnB,MAAM,QAAQ,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAC7C,CAAC,MAAM,CAAC,IAAI,CACX,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CACtD,CAAA;YAEhB,0EAA0E;YAC1E,sEAAsE;YACtE,4EAA4E;YAC5E,wBAAwB;YACxB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAA;YAEnE,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE;gBACnC,MAAM,IAAA,mBAAU,EACd,UAAU,EACV,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,aAAa,CACd,CAAA;aACF;SACF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,cAAc,CAAC;gBACrB,MAAM,EAAE,iBAAQ;aACjB,CAAC,CAAA;YACF,MAAM,CAAC,CAAA;SACR;QACD,OAAO,CAAC,cAAc,CAAC;YACrB,MAAM,EAAE,eAAM;SACf,CAAC,CAAA;QAEF,+DAA+D;QAC/D,oEAAoE;QACpE,kBAAE,CAAC,aAAa,CACd,cAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,EAC5C,aAAa,CACd,CAAA;KACF;YAAS;QACR,MAAM,kBAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;KACpC;IAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAChF,CAAC;AA1ED,sBA0EC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildMPAClient = void 0;
4
+ const vite_1 = require("vite");
5
+ const virtualEntry = 'client.js';
6
+ async function buildMPAClient(js, config) {
7
+ const files = Object.keys(js);
8
+ const themeFiles = files.filter((f) => !f.endsWith('.md'));
9
+ const pages = files.filter((f) => f.endsWith('.md'));
10
+ return (0, vite_1.build)({
11
+ root: config.srcDir,
12
+ base: config.site.base,
13
+ logLevel: 'warn',
14
+ build: {
15
+ emptyOutDir: false,
16
+ outDir: config.outDir,
17
+ rollupOptions: {
18
+ input: [virtualEntry, ...pages]
19
+ }
20
+ },
21
+ plugins: [
22
+ {
23
+ name: 'vitepress-mpa-client',
24
+ resolveId(id) {
25
+ if (id === virtualEntry) {
26
+ return id;
27
+ }
28
+ },
29
+ load(id) {
30
+ if (id === virtualEntry) {
31
+ return themeFiles
32
+ .map((file) => `import ${JSON.stringify(file)}`)
33
+ .join('\n');
34
+ }
35
+ else if (id in js) {
36
+ return js[id];
37
+ }
38
+ }
39
+ }
40
+ ]
41
+ });
42
+ }
43
+ exports.buildMPAClient = buildMPAClient;
44
+ //# sourceMappingURL=buildMPAClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildMPAClient.js","sourceRoot":"","sources":["../../../src/node/build/buildMPAClient.ts"],"names":[],"mappings":";;;AAAA,+BAA4B;AAI5B,MAAM,YAAY,GAAG,WAAW,CAAA;AAEzB,KAAK,UAAU,cAAc,CAClC,EAA0B,EAC1B,MAAkB;IAElB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;IAEpD,OAAO,IAAA,YAAK,EAAC;QACX,IAAI,EAAE,MAAM,CAAC,MAAM;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;QACtB,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE;YACL,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,aAAa,EAAE;gBACb,KAAK,EAAE,CAAC,YAAY,EAAE,GAAG,KAAK,CAAC;aAChC;SACF;QACD,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,sBAAsB;gBAC5B,SAAS,CAAC,EAAE;oBACV,IAAI,EAAE,KAAK,YAAY,EAAE;wBACvB,OAAO,EAAE,CAAA;qBACV;gBACH,CAAC;gBACD,IAAI,CAAC,EAAE;oBACL,IAAI,EAAE,KAAK,YAAY,EAAE;wBACvB,OAAO,UAAU;6BACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;6BAC/C,IAAI,CAAC,IAAI,CAAC,CAAA;qBACd;yBAAM,IAAI,EAAE,IAAI,EAAE,EAAE;wBACnB,OAAO,EAAE,CAAC,EAAE,CAAC,CAAA;qBACd;gBACH,CAAC;aACF;SACF;KACF,CAA0B,CAAA;AAC7B,CAAC;AAvCD,wCAuCC"}