@vuepress/client 2.0.0-rc.6 → 2.0.0-rc.7

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/app.js CHANGED
@@ -2,31 +2,33 @@ import {
2
2
  ClientOnly,
3
3
  Content,
4
4
  RouteLink,
5
- layoutsSymbol,
6
- pageDataSymbol,
7
- pageFrontmatterSymbol,
8
- pageHeadSymbol,
9
- pageHeadTitleSymbol,
10
- pageLangSymbol,
11
- pageLayoutSymbol,
5
+ clientDataSymbol,
6
+ redirects,
12
7
  resolveRoute,
13
8
  resolvers,
14
- routeLocaleSymbol,
15
9
  routes,
16
- siteData,
17
- siteLocaleDataSymbol,
18
10
  updateHeadSymbol,
19
11
  usePageHead,
20
12
  usePageLang,
21
13
  usePageLayout,
22
14
  withBase
23
- } from "./chunk-FKY5ACNS.js";
15
+ } from "./chunk-VWNFZFFH.js";
24
16
 
25
17
  // src/app.ts
26
18
  import { clientConfigs } from "@internal/clientConfigs";
27
19
  import { createApp, createSSRApp, h } from "vue";
28
20
 
29
- // src/createVueRouter.ts
21
+ // src/internal/siteData.ts
22
+ import { siteData as siteDataRaw } from "@internal/siteData";
23
+ import { shallowRef } from "vue";
24
+ var siteData = shallowRef(siteDataRaw);
25
+ if (__VUEPRESS_DEV__ && (import.meta.webpackHot || import.meta.hot)) {
26
+ __VUE_HMR_RUNTIME__.updateSiteData = (data) => {
27
+ siteData.value = data;
28
+ };
29
+ }
30
+
31
+ // src/router/createVueRouter.ts
30
32
  import { removeEndingSlash } from "@vuepress/shared";
31
33
  import {
32
34
  createMemoryHistory,
@@ -64,8 +66,8 @@ var createVueRouter = () => {
64
66
  to.meta = {
65
67
  // attach route meta
66
68
  ...route.meta,
67
- // attach page data to route meta to trigger page data computed when route changes
68
- _data: pageChunk.data
69
+ // attach page chunk route meta
70
+ _pageChunk: pageChunk
69
71
  };
70
72
  }
71
73
  });
@@ -84,17 +86,17 @@ import { computedWithControl } from "@vueuse/core";
84
86
  import { computed } from "vue";
85
87
  var setupGlobalComputed = (app, router, clientConfigs2) => {
86
88
  const routePath = computed(() => router.currentRoute.value.path);
87
- const pageData = computedWithControl(
89
+ const pageChunk = computedWithControl(
88
90
  routePath,
89
- () => router.currentRoute.value.meta._data
91
+ () => router.currentRoute.value.meta._pageChunk
90
92
  );
91
93
  if (__VUEPRESS_DEV__ && (import.meta.webpackHot || import.meta.hot)) {
92
- __VUE_HMR_RUNTIME__.updatePageData = async (data) => {
93
- const pageChunk = await routes.value[data.path].loader();
94
- routes.value[data.path].loader = () => Promise.resolve({ comp: pageChunk.comp, data });
95
- if (data.path === router.currentRoute.value.meta._data?.path) {
96
- router.currentRoute.value.meta._data = data;
97
- pageData.trigger();
94
+ __VUE_HMR_RUNTIME__.updatePageData = async (newPageData) => {
95
+ const oldPageChunk = await routes.value[newPageData.path].loader();
96
+ routes.value[newPageData.path].loader = () => Promise.resolve({ comp: oldPageChunk.comp, data: newPageData });
97
+ if (newPageData.path === router.currentRoute.value.meta._pageChunk?.data.path) {
98
+ router.currentRoute.value.meta._pageChunk.data = newPageData;
99
+ pageChunk.trigger();
98
100
  }
99
101
  };
100
102
  }
@@ -105,9 +107,9 @@ var setupGlobalComputed = (app, router, clientConfigs2) => {
105
107
  const siteLocaleData = computed(
106
108
  () => resolvers.resolveSiteLocaleData(siteData.value, routeLocale.value)
107
109
  );
108
- const pageFrontmatter = computed(
109
- () => resolvers.resolvePageFrontmatter(pageData.value)
110
- );
110
+ const pageComponent = computed(() => pageChunk.value.comp);
111
+ const pageData = computed(() => pageChunk.value.data);
112
+ const pageFrontmatter = computed(() => pageData.value.frontmatter);
111
113
  const pageHeadTitle = computed(
112
114
  () => resolvers.resolvePageHeadTitle(pageData.value, siteLocaleData.value)
113
115
  );
@@ -124,38 +126,35 @@ var setupGlobalComputed = (app, router, clientConfigs2) => {
124
126
  const pageLayout = computed(
125
127
  () => resolvers.resolvePageLayout(pageData.value, layouts.value)
126
128
  );
127
- app.provide(layoutsSymbol, layouts);
128
- app.provide(pageDataSymbol, pageData);
129
- app.provide(pageFrontmatterSymbol, pageFrontmatter);
130
- app.provide(pageHeadTitleSymbol, pageHeadTitle);
131
- app.provide(pageHeadSymbol, pageHead);
132
- app.provide(pageLangSymbol, pageLang);
133
- app.provide(pageLayoutSymbol, pageLayout);
134
- app.provide(routeLocaleSymbol, routeLocale);
135
- app.provide(siteLocaleDataSymbol, siteLocaleData);
136
- Object.defineProperties(app.config.globalProperties, {
137
- $frontmatter: { get: () => pageFrontmatter.value },
138
- $head: { get: () => pageHead.value },
139
- $headTitle: { get: () => pageHeadTitle.value },
140
- $lang: { get: () => pageLang.value },
141
- $page: { get: () => pageData.value },
142
- $routeLocale: { get: () => routeLocale.value },
143
- $site: { get: () => siteData.value },
144
- $siteLocale: { get: () => siteLocaleData.value },
145
- $withBase: { get: () => withBase }
146
- });
147
- return {
129
+ const clientData = {
148
130
  layouts,
149
131
  pageData,
132
+ pageComponent,
150
133
  pageFrontmatter,
151
134
  pageHead,
152
135
  pageHeadTitle,
153
136
  pageLang,
154
137
  pageLayout,
138
+ redirects,
155
139
  routeLocale,
140
+ routePath,
141
+ routes,
156
142
  siteData,
157
143
  siteLocaleData
158
144
  };
145
+ app.provide(clientDataSymbol, clientData);
146
+ Object.defineProperties(app.config.globalProperties, {
147
+ $frontmatter: { get: () => pageFrontmatter.value },
148
+ $head: { get: () => pageHead.value },
149
+ $headTitle: { get: () => pageHeadTitle.value },
150
+ $lang: { get: () => pageLang.value },
151
+ $page: { get: () => pageData.value },
152
+ $routeLocale: { get: () => routeLocale.value },
153
+ $site: { get: () => siteData.value },
154
+ $siteLocale: { get: () => siteLocaleData.value },
155
+ $withBase: { get: () => withBase }
156
+ });
157
+ return clientData;
159
158
  };
160
159
 
161
160
  // src/setupUpdateHead.ts
@@ -280,8 +279,8 @@ var createVueApp = async () => {
280
279
  const rootComponents = clientConfigs.flatMap(
281
280
  ({ rootComponents: rootComponents2 = [] }) => rootComponents2.map((component) => h(component))
282
281
  );
283
- const layout = usePageLayout();
284
- return () => [h(layout.value), rootComponents];
282
+ const pageLayout = usePageLayout();
283
+ return () => [h(pageLayout.value), rootComponents];
285
284
  }
286
285
  });
287
286
  const router = createVueRouter();
@@ -1,108 +1,48 @@
1
- // src/composables/layouts.ts
1
+ // src/composables/clientData.ts
2
2
  import { inject } from "vue";
3
- var layoutsSymbol = Symbol(
4
- __VUEPRESS_DEV__ ? "layouts" : ""
3
+ var clientDataSymbol = Symbol(
4
+ __VUEPRESS_DEV__ ? "clientData" : ""
5
5
  );
6
- var useLayouts = () => {
7
- const layouts = inject(layoutsSymbol);
8
- if (!layouts) {
9
- throw new Error("useLayouts() is called without provider.");
6
+ var useClientData = () => {
7
+ const clientData = inject(clientDataSymbol);
8
+ if (!clientData) {
9
+ throw new Error("useClientData() is called without provider.");
10
10
  }
11
- return layouts;
11
+ return clientData;
12
12
  };
13
13
 
14
- // src/composables/pageData.ts
15
- import { inject as inject2 } from "vue";
16
- var pageDataSymbol = Symbol(
17
- __VUEPRESS_DEV__ ? "pageData" : ""
18
- );
19
- var usePageData = () => {
20
- const pageData = inject2(pageDataSymbol);
21
- if (!pageData) {
22
- throw new Error("pageData() is called without provider.");
23
- }
24
- return pageData;
25
- };
26
-
27
- // src/composables/pageFrontmatter.ts
28
- import { inject as inject3 } from "vue";
29
- var pageFrontmatterSymbol = Symbol(
30
- __VUEPRESS_DEV__ ? "pageFrontmatter" : ""
31
- );
32
- var usePageFrontmatter = () => {
33
- const pageFrontmatter = inject3(pageFrontmatterSymbol);
34
- if (!pageFrontmatter) {
35
- throw new Error("usePageFrontmatter() is called without provider.");
36
- }
37
- return pageFrontmatter;
38
- };
39
-
40
- // src/composables/pageHead.ts
41
- import { inject as inject4 } from "vue";
42
- var pageHeadSymbol = Symbol(
43
- __VUEPRESS_DEV__ ? "pageHead" : ""
44
- );
45
- var usePageHead = () => {
46
- const pageHead = inject4(pageHeadSymbol);
47
- if (!pageHead) {
48
- throw new Error("usePageHead() is called without provider.");
49
- }
50
- return pageHead;
51
- };
52
-
53
- // src/composables/pageHeadTitle.ts
54
- import { inject as inject5 } from "vue";
55
- var pageHeadTitleSymbol = Symbol(
56
- __VUEPRESS_DEV__ ? "pageHeadTitle" : ""
57
- );
58
- var usePageHeadTitle = () => {
59
- const pageHeadTitle = inject5(pageHeadTitleSymbol);
60
- if (!pageHeadTitle) {
61
- throw new Error("usePageHeadTitle() is called without provider.");
62
- }
63
- return pageHeadTitle;
64
- };
65
-
66
- // src/composables/pageLang.ts
67
- import { inject as inject6 } from "vue";
68
- var pageLangSymbol = Symbol(
69
- __VUEPRESS_DEV__ ? "pageLang" : ""
70
- );
71
- var usePageLang = () => {
72
- const pageLang = inject6(pageLangSymbol);
73
- if (!pageLang) {
74
- throw new Error("usePageLang() is called without provider.");
75
- }
76
- return pageLang;
77
- };
14
+ // src/composables/clientDataUtils.ts
15
+ var useLayouts = () => useClientData().layouts;
16
+ var usePageComponent = () => useClientData().pageComponent;
17
+ var usePageData = () => useClientData().pageData;
18
+ var usePageFrontmatter = () => useClientData().pageFrontmatter;
19
+ var usePageHead = () => useClientData().pageHead;
20
+ var usePageLang = () => useClientData().pageLang;
21
+ var usePageLayout = () => useClientData().pageLayout;
22
+ var useRedirects = () => useClientData().redirects;
23
+ var useRouteLocale = () => useClientData().routeLocale;
24
+ var useRoutePath = () => useClientData().routePath;
25
+ var useRoutes = () => useClientData().routes;
26
+ var useSiteData = () => useClientData().siteData;
27
+ var useSiteLocaleData = () => useClientData().siteLocaleData;
78
28
 
79
- // src/composables/pageLayout.ts
80
- import { inject as inject7 } from "vue";
81
- var pageLayoutSymbol = Symbol(
82
- __VUEPRESS_DEV__ ? "pageLayout" : ""
29
+ // src/composables/updateHead.ts
30
+ import { inject as inject2 } from "vue";
31
+ var updateHeadSymbol = Symbol(
32
+ __VUEPRESS_DEV__ ? "updateHead" : ""
83
33
  );
84
- var usePageLayout = () => {
85
- const pageLayout = inject7(pageLayoutSymbol);
86
- if (!pageLayout) {
87
- throw new Error("usePageLayout() is called without provider.");
34
+ var useUpdateHead = () => {
35
+ const updateHead = inject2(updateHeadSymbol);
36
+ if (!updateHead) {
37
+ throw new Error("useUpdateHead() is called without provider.");
88
38
  }
89
- return pageLayout;
39
+ return updateHead;
90
40
  };
91
41
 
92
- // src/composables/routeLocale.ts
93
- import { inject as inject8 } from "vue";
94
- var routeLocaleSymbol = Symbol(
95
- __VUEPRESS_DEV__ ? "routeLocale" : ""
96
- );
97
- var useRouteLocale = () => {
98
- const routeLocale = inject8(routeLocaleSymbol);
99
- if (!routeLocale) {
100
- throw new Error("useRouteLocale() is called without provider.");
101
- }
102
- return routeLocale;
103
- };
42
+ // src/router/resolveRoutePath.ts
43
+ import { normalizeRoutePath } from "@vuepress/shared";
104
44
 
105
- // src/router/routes.ts
45
+ // src/internal/routes.ts
106
46
  import {
107
47
  redirects as redirectsRaw,
108
48
  routes as routesRaw
@@ -120,7 +60,6 @@ if (__VUEPRESS_DEV__ && (import.meta.webpackHot || import.meta.hot)) {
120
60
  }
121
61
 
122
62
  // src/router/resolveRoutePath.ts
123
- import { normalizeRoutePath } from "@vuepress/shared";
124
63
  var resolveRoutePath = (path) => {
125
64
  const normalizedPath = normalizeRoutePath(path);
126
65
  if (routes.value[normalizedPath])
@@ -145,50 +84,6 @@ var resolveRoute = (path) => {
145
84
  };
146
85
  };
147
86
 
148
- // src/router/index.ts
149
- import { useRoute, useRouter } from "vue-router";
150
-
151
- // src/composables/routes.ts
152
- var useRedirects = () => redirects;
153
- var useRoutes = () => routes;
154
-
155
- // src/composables/siteData.ts
156
- import { siteData as siteDataRaw } from "@internal/siteData";
157
- import { shallowRef as shallowRef2 } from "vue";
158
- var siteData = shallowRef2(siteDataRaw);
159
- var useSiteData = () => siteData;
160
- if (__VUEPRESS_DEV__ && (import.meta.webpackHot || import.meta.hot)) {
161
- __VUE_HMR_RUNTIME__.updateSiteData = (data) => {
162
- siteData.value = data;
163
- };
164
- }
165
-
166
- // src/composables/siteLocaleData.ts
167
- import { inject as inject9 } from "vue";
168
- var siteLocaleDataSymbol = Symbol(
169
- __VUEPRESS_DEV__ ? "siteLocaleData" : ""
170
- );
171
- var useSiteLocaleData = () => {
172
- const siteLocaleData = inject9(siteLocaleDataSymbol);
173
- if (!siteLocaleData) {
174
- throw new Error("useSiteLocaleData() is called without provider.");
175
- }
176
- return siteLocaleData;
177
- };
178
-
179
- // src/composables/updateHead.ts
180
- import { inject as inject10 } from "vue";
181
- var updateHeadSymbol = Symbol(
182
- __VUEPRESS_DEV__ ? "updateHead" : ""
183
- );
184
- var useUpdateHead = () => {
185
- const updateHead = inject10(updateHeadSymbol);
186
- if (!updateHead) {
187
- throw new Error("useUpdateHead() is called without provider.");
188
- }
189
- return updateHead;
190
- };
191
-
192
87
  // src/components/ClientOnly.ts
193
88
  import { defineComponent, onMounted, ref } from "vue";
194
89
  var ClientOnly = defineComponent({
@@ -202,6 +97,9 @@ var ClientOnly = defineComponent({
202
97
  }
203
98
  });
204
99
 
100
+ // src/router/index.ts
101
+ import { useRoute, useRouter } from "vue-router";
102
+
205
103
  // src/components/Content.ts
206
104
  import { computed, defineAsyncComponent, defineComponent as defineComponent2, h } from "vue";
207
105
  var Content = defineComponent2({
@@ -215,19 +113,18 @@ var Content = defineComponent2({
215
113
  }
216
114
  },
217
115
  setup(props) {
218
- const pageData = usePageData();
219
- const pageComponent = computed(() => {
220
- const route = resolveRoute(props.path || pageData.value.path);
116
+ const pageComponent = usePageComponent();
117
+ const ContentComponent = computed(() => {
118
+ if (!props.path)
119
+ return pageComponent.value;
120
+ const route = resolveRoute(props.path);
221
121
  return defineAsyncComponent(() => route.loader().then(({ comp }) => comp));
222
122
  });
223
- return () => h(pageComponent.value);
123
+ return () => h(ContentComponent.value);
224
124
  }
225
125
  });
226
126
 
227
- // src/helpers/defineClientConfig.ts
228
- var defineClientConfig = (clientConfig = {}) => clientConfig;
229
-
230
- // src/helpers/withBase.ts
127
+ // src/utils/withBase.ts
231
128
  import { isLinkHttp, removeLeadingSlash } from "@vuepress/shared";
232
129
  var withBase = (url) => {
233
130
  if (isLinkHttp(url))
@@ -282,7 +179,7 @@ import { reactive } from "vue";
282
179
 
283
180
  // src/constants.ts
284
181
  var LAYOUT_NAME_DEFAULT = "Layout";
285
- var LAYOUT_NAME_NOT_FOUND = "NotFound";
182
+ var LANG_DEFAULT = "en-US";
286
183
 
287
184
  // src/resolvers.ts
288
185
  var resolvers = reactive({
@@ -296,21 +193,17 @@ var resolvers = reactive({
296
193
  }),
297
194
  {}
298
195
  ),
299
- /**
300
- * Resolve page frontmatter from page data
301
- */
302
- resolvePageFrontmatter: (pageData) => pageData.frontmatter,
303
196
  /**
304
197
  * Merge the head config in frontmatter and site locale
305
198
  *
306
199
  * Frontmatter should take priority over site locale
307
200
  */
308
- resolvePageHead: (headTitle, frontmatter, siteLocale) => {
309
- const description = isString(frontmatter.description) ? frontmatter.description : siteLocale.description;
201
+ resolvePageHead: (pageHeadTitle, pageFrontmatter, siteLocaleDate) => {
202
+ const description = isString(pageFrontmatter.description) ? pageFrontmatter.description : siteLocaleDate.description;
310
203
  const head = [
311
- ...Array.isArray(frontmatter.head) ? frontmatter.head : [],
312
- ...siteLocale.head,
313
- ["title", {}, headTitle],
204
+ ...Array.isArray(pageFrontmatter.head) ? pageFrontmatter.head : [],
205
+ ...siteLocaleDate.head,
206
+ ["title", {}, pageHeadTitle],
314
207
  ["meta", { name: "description", content: description }]
315
208
  ];
316
209
  return dedupeHead(head);
@@ -320,28 +213,18 @@ var resolvers = reactive({
320
213
  *
321
214
  * It would be used as the content of the `<title>` tag
322
215
  */
323
- resolvePageHeadTitle: (page, siteLocale) => [page.title, siteLocale.title].filter((item) => !!item).join(" | "),
216
+ resolvePageHeadTitle: (pageData, siteLocaleDate) => [pageData.title, siteLocaleDate.title].filter((item) => !!item).join(" | "),
324
217
  /**
325
218
  * Resolve page language from page data
326
219
  *
327
220
  * It would be used as the `lang` attribute of `<html>` tag
328
221
  */
329
- resolvePageLang: (page, siteLocale) => page.lang || siteLocale.lang || "en-US",
222
+ resolvePageLang: (pageData, siteLocaleData) => pageData.lang || siteLocaleData.lang || LANG_DEFAULT,
330
223
  /**
331
224
  * Resolve layout component of current page
332
225
  */
333
- resolvePageLayout: (page, layouts) => {
334
- let layoutName;
335
- if (page.path) {
336
- const frontmatterLayout = page.frontmatter.layout;
337
- if (isString(frontmatterLayout)) {
338
- layoutName = frontmatterLayout;
339
- } else {
340
- layoutName = LAYOUT_NAME_DEFAULT;
341
- }
342
- } else {
343
- layoutName = LAYOUT_NAME_NOT_FOUND;
344
- }
226
+ resolvePageLayout: (pageData, layouts) => {
227
+ const layoutName = isString(pageData.frontmatter.layout) ? pageData.frontmatter.layout : LAYOUT_NAME_DEFAULT;
345
228
  return layouts[layoutName];
346
229
  },
347
230
  /**
@@ -353,52 +236,44 @@ var resolvers = reactive({
353
236
  *
354
237
  * It would merge the locales fields to the root fields
355
238
  */
356
- resolveSiteLocaleData: (site, routeLocale) => ({
357
- ...site,
358
- ...site.locales[routeLocale],
239
+ resolveSiteLocaleData: (siteData, routeLocale) => ({
240
+ ...siteData,
241
+ ...siteData.locales[routeLocale],
359
242
  head: [
360
243
  // when merging head, the locales head should be placed before root head
361
244
  // to get higher priority
362
- ...site.locales[routeLocale]?.head ?? [],
363
- ...site.head ?? []
245
+ ...siteData.locales[routeLocale]?.head ?? [],
246
+ ...siteData.head ?? []
364
247
  ]
365
248
  })
366
249
  });
367
250
 
368
251
  export {
369
- layoutsSymbol,
252
+ clientDataSymbol,
253
+ useClientData,
370
254
  useLayouts,
371
- pageDataSymbol,
255
+ usePageComponent,
372
256
  usePageData,
373
- pageFrontmatterSymbol,
374
257
  usePageFrontmatter,
375
- pageHeadSymbol,
376
258
  usePageHead,
377
- pageHeadTitleSymbol,
378
- usePageHeadTitle,
379
- pageLangSymbol,
380
259
  usePageLang,
381
- pageLayoutSymbol,
382
260
  usePageLayout,
383
- routeLocaleSymbol,
384
- useRouteLocale,
385
- redirects,
386
- routes,
387
- resolveRoutePath,
388
- resolveRoute,
389
- useRoute,
390
- useRouter,
391
261
  useRedirects,
262
+ useRouteLocale,
263
+ useRoutePath,
392
264
  useRoutes,
393
- siteData,
394
265
  useSiteData,
395
- siteLocaleDataSymbol,
396
266
  useSiteLocaleData,
397
267
  updateHeadSymbol,
398
268
  useUpdateHead,
269
+ redirects,
270
+ routes,
271
+ resolveRoutePath,
272
+ resolveRoute,
399
273
  ClientOnly,
274
+ useRoute,
275
+ useRouter,
400
276
  Content,
401
- defineClientConfig,
402
277
  withBase,
403
278
  RouteLink,
404
279
  resolvers
package/dist/index.d.ts CHANGED
@@ -1,207 +1,75 @@
1
- import { PageData, PageFrontmatter, HeadConfig, SiteData } from '@vuepress/shared';
2
- export { PageData, PageFrontmatter, PageHeader, SiteData } from '@vuepress/shared';
3
1
  import * as vue from 'vue';
4
- import { ComputedRef, InjectionKey, Ref, Component, App, ComponentOptions, HTMLAttributes, FunctionalComponent, VNode } from 'vue';
2
+ import { Component, ComputedRef, Ref, App, HTMLAttributes, FunctionalComponent, VNode, InjectionKey } from 'vue';
3
+ import { PageData, HeadConfig, SiteData, PageFrontmatter } from '@vuepress/shared';
4
+ export { HeadConfig, PageData, PageFrontmatter, PageHeader, SiteData } from '@vuepress/shared';
5
5
  import { Router } from 'vue-router';
6
- export { useRoute, useRouter } from 'vue-router';
6
+ export { RouteLocationNormalizedLoaded, Router, useRoute, useRouter } from 'vue-router';
7
7
  export { C as CreateVueAppFunction } from './createVueAppFunction-YNGNKfE3.js';
8
8
 
9
9
  /**
10
- * Ref wrapper of `Layouts`
10
+ * Name of the default layout
11
11
  */
12
- type LayoutsRef = ComputedRef<Layouts>;
13
- /**
14
- * Injection key for layouts
15
- */
16
- declare const layoutsSymbol: InjectionKey<LayoutsRef>;
12
+ declare const LAYOUT_NAME_DEFAULT = "Layout";
17
13
  /**
18
- * Returns layouts component map
14
+ * Name of the 404 page layout
19
15
  */
20
- declare const useLayouts: () => LayoutsRef;
16
+ declare const LAYOUT_NAME_NOT_FOUND = "NotFound";
21
17
 
22
- /**
23
- * Ref wrapper of `PageData`
24
- */
25
- type PageDataRef<T extends Record<any, any> = Record<never, never>> = Ref<PageData<T>>;
26
- /**
27
- * Injection key for page data
28
- */
29
- declare const pageDataSymbol: InjectionKey<PageDataRef>;
30
- /**
31
- * Returns the ref of the data of current page
32
- */
33
- declare const usePageData: <T extends Record<any, any> = Record<never, never>>() => PageDataRef<T>;
34
-
35
- /**
36
- * Ref wrapper of `PageFrontmatter`
37
- */
38
- type PageFrontmatterRef<T extends Record<any, any> = Record<string, unknown>> = ComputedRef<PageFrontmatter<T>>;
39
- /**
40
- * Injection key for page frontmatter
41
- */
42
- declare const pageFrontmatterSymbol: InjectionKey<PageFrontmatterRef>;
43
- /**
44
- * Returns the ref of the frontmatter of current page
45
- */
46
- declare const usePageFrontmatter: <T extends Record<any, any> = Record<string, unknown>>() => PageFrontmatterRef<T>;
18
+ interface PageChunk {
19
+ comp: Component;
20
+ data: PageData;
21
+ }
22
+ type RouteMeta = Record<string, unknown>;
23
+ interface Route<T extends RouteMeta = RouteMeta> {
24
+ loader: () => Promise<PageChunk>;
25
+ meta: T;
26
+ }
27
+ type Redirects = Record<string, string>;
28
+ type Routes = Record<string, Route>;
47
29
 
48
- /**
49
- * Page head config, which would be used for generate html tags in `<head>`
50
- */
30
+ interface Layouts {
31
+ [LAYOUT_NAME_DEFAULT]: Component;
32
+ [LAYOUT_NAME_NOT_FOUND]: Component;
33
+ [key: string]: Component;
34
+ }
35
+ type PageComponent = Component;
51
36
  type PageHead = HeadConfig[];
52
- /**
53
- * Ref wrapper of `PageHead`
54
- */
55
- type PageHeadRef = ComputedRef<PageHead>;
56
- /**
57
- * Injection key for page head
58
- */
59
- declare const pageHeadSymbol: InjectionKey<PageHeadRef>;
60
- /**
61
- * Returns the ref of the head config of current page
62
- */
63
- declare const usePageHead: () => PageHeadRef;
64
-
65
- /**
66
- * Page head title, which would be used as the content of `head > title` tag
67
- */
68
37
  type PageHeadTitle = string;
69
- /**
70
- * Ref wrapper of `PageHeadTitle`
71
- */
72
- type PageHeadTitleRef = ComputedRef<PageHeadTitle>;
73
- /**
74
- * Injection key for page head title
75
- */
76
- declare const pageHeadTitleSymbol: InjectionKey<PageHeadTitleRef>;
77
- /**
78
- * Returns the ref of the head title of current page
79
- */
80
- declare const usePageHeadTitle: () => PageHeadTitleRef;
81
-
82
- /**
83
- * Page language
84
- */
85
38
  type PageLang = string;
86
- /**
87
- * Ref wrapper of `PageLang`
88
- */
89
- type PageLangRef = ComputedRef<PageLang>;
90
- /**
91
- * Injection key for page language
92
- */
93
- declare const pageLangSymbol: InjectionKey<PageLangRef>;
94
- /**
95
- * Returns the ref of the language of current page
96
- */
97
- declare const usePageLang: () => PageLangRef;
98
-
99
- /**
100
- * Ref wrapper of `PageLayout`
101
- */
102
- type PageLayoutRef = ComputedRef<Component>;
103
- /**
104
- * Injection key for page layout
105
- */
106
- declare const pageLayoutSymbol: InjectionKey<PageLayoutRef>;
107
- /**
108
- * Returns layout component of current page
109
- */
110
- declare const usePageLayout: () => ComputedRef<Component>;
111
-
112
- /**
113
- * Route locale path
114
- */
39
+ type PageLayout = Component;
40
+ type RoutePath = string;
115
41
  type RouteLocale = string;
116
- /**
117
- * Ref wrapper of `RouteLocale`
118
- */
119
- type RouteLocaleRef = Readonly<Ref<RouteLocale>>;
120
- /**
121
- * Injection key for page route locale path
122
- */
123
- declare const routeLocaleSymbol: InjectionKey<RouteLocaleRef>;
124
- /**
125
- * Returns the ref of the route locale path of current page
126
- */
127
- declare const useRouteLocale: () => RouteLocaleRef;
128
-
129
- interface ResolvedRoute<T extends RouteMeta = RouteMeta> extends Route<T> {
130
- path: string;
131
- notFound: boolean;
132
- }
133
- /**
134
- * Resolve route with given path
135
- */
136
- declare const resolveRoute: <T extends RouteMeta = RouteMeta>(path: string) => ResolvedRoute<T>;
137
-
138
- /**
139
- * Resolve route path with given raw path
140
- */
141
- declare const resolveRoutePath: (path: string) => string;
142
-
143
- /**
144
- * Global redirects ref
145
- */
146
- declare const redirects: Ref<Redirects>;
147
- /**
148
- * Global routes ref
149
- */
150
- declare const routes: Ref<Routes>;
151
-
152
- /**
153
- * Returns the ref of pages map
154
- */
155
- declare const useRedirects: () => typeof redirects;
156
- /**
157
- * Returns the ref of routes map
158
- */
159
- declare const useRoutes: () => typeof routes;
160
-
161
- /**
162
- * Ref wrapper of `SiteData`
163
- */
164
- type SiteDataRef = Ref<SiteData>;
165
- /**
166
- * Global site data ref
167
- */
168
- declare const siteData: SiteDataRef;
169
- /**
170
- * Returns the ref of the site data
171
- */
172
- declare const useSiteData: () => SiteDataRef;
173
-
174
- /**
175
- * Site data of current locale
176
- */
177
42
  type SiteLocaleData = SiteData;
178
- /**
179
- * Ref wrapper of `SiteLocaleData`
180
- */
43
+ type LayoutsRef = ComputedRef<Layouts>;
44
+ type PageComponentRef = ComputedRef<PageComponent>;
45
+ type PageDataRef<T extends Record<any, any> = Record<never, never>> = ComputedRef<PageData<T>>;
46
+ type PageFrontmatterRef<T extends Record<any, any> = Record<never, never>> = ComputedRef<PageFrontmatter<T>>;
47
+ type PageHeadRef = ComputedRef<PageHead>;
48
+ type PageHeadTitleRef = ComputedRef<PageHeadTitle>;
49
+ type PageLangRef = ComputedRef<PageLang>;
50
+ type PageLayoutRef = ComputedRef<PageLayout>;
51
+ type RedirectsRef = Ref<Redirects>;
52
+ type RoutePathRef = ComputedRef<RoutePath>;
53
+ type RouteLocaleRef = ComputedRef<RouteLocale>;
54
+ type RoutesRef = Ref<Routes>;
55
+ type SiteDataRef = Ref<SiteData>;
181
56
  type SiteLocaleDataRef = ComputedRef<SiteLocaleData>;
182
- /**
183
- * Injection key for site locale data
184
- */
185
- declare const siteLocaleDataSymbol: InjectionKey<SiteLocaleDataRef>;
186
- /**
187
- * Returns the ref of the site data of current locale
188
- */
189
- declare const useSiteLocaleData: () => SiteLocaleDataRef;
190
-
191
- /**
192
- * A util function to force update `<head>` of current page
193
- */
194
- type UpdateHead = () => void;
195
- /**
196
- * Injection key for `updateHead` util
197
- */
198
- declare const updateHeadSymbol: InjectionKey<UpdateHead>;
199
- /**
200
- * Returns the `updateHead` util
201
- */
202
- declare const useUpdateHead: () => UpdateHead;
203
-
204
- type Layouts = Record<string, Component>;
57
+ interface ClientData {
58
+ layouts: LayoutsRef;
59
+ pageComponent: PageComponentRef;
60
+ pageData: PageDataRef;
61
+ pageFrontmatter: PageFrontmatterRef;
62
+ pageHead: PageHeadRef;
63
+ pageHeadTitle: PageHeadTitleRef;
64
+ pageLang: PageLangRef;
65
+ pageLayout: PageLayoutRef;
66
+ redirects: RedirectsRef;
67
+ routePath: RoutePathRef;
68
+ routeLocale: RouteLocaleRef;
69
+ routes: RoutesRef;
70
+ siteData: SiteDataRef;
71
+ siteLocaleData: SiteLocaleDataRef;
72
+ }
205
73
 
206
74
  /**
207
75
  * Configure vuepress client
@@ -230,18 +98,6 @@ interface ClientConfig {
230
98
  rootComponents?: Component[];
231
99
  }
232
100
 
233
- interface PageChunk {
234
- comp: ComponentOptions;
235
- data: PageData;
236
- }
237
- type RouteMeta = Record<string, unknown>;
238
- interface Route<T extends RouteMeta = RouteMeta> {
239
- loader: () => Promise<PageChunk>;
240
- meta: T;
241
- }
242
- type Redirects = Record<string, string>;
243
- type Routes = Record<string, Route>;
244
-
245
101
  /**
246
102
  * Wrapper component that only renders its content on the client side and skips server side rendering
247
103
  */
@@ -302,14 +158,54 @@ declare const RouteLink: FunctionalComponent<RouteLinkProps, Record<never, never
302
158
  }>;
303
159
 
304
160
  /**
305
- * A helper function to help you define vuepress client config file
161
+ * Injection key for client data
306
162
  */
307
- declare const defineClientConfig: (clientConfig?: ClientConfig) => ClientConfig;
163
+ declare const clientDataSymbol: InjectionKey<ClientData>;
164
+ /**
165
+ * Returns client data
166
+ */
167
+ declare const useClientData: () => ClientData;
168
+
169
+ declare const useLayouts: () => LayoutsRef;
170
+ declare const usePageComponent: () => PageComponentRef;
171
+ declare const usePageData: <T extends Record<any, any> = Record<never, never>>() => PageDataRef<T>;
172
+ declare const usePageFrontmatter: <T extends Record<any, any> = Record<string, unknown>>() => PageFrontmatterRef<T>;
173
+ declare const usePageHead: () => PageHeadRef;
174
+ declare const usePageLang: () => PageLangRef;
175
+ declare const usePageLayout: () => PageLayoutRef;
176
+ declare const useRedirects: () => RedirectsRef;
177
+ declare const useRouteLocale: () => RouteLocaleRef;
178
+ declare const useRoutePath: () => RoutePathRef;
179
+ declare const useRoutes: () => RoutesRef;
180
+ declare const useSiteData: () => SiteDataRef;
181
+ declare const useSiteLocaleData: () => SiteLocaleDataRef;
308
182
 
309
183
  /**
310
- * Prefix url with site base
184
+ * A util function to force update `<head>` of current page
311
185
  */
312
- declare const withBase: (url: string) => string;
186
+ type UpdateHead = () => void;
187
+ /**
188
+ * Injection key for `updateHead` util
189
+ */
190
+ declare const updateHeadSymbol: InjectionKey<UpdateHead>;
191
+ /**
192
+ * Returns the `updateHead` util
193
+ */
194
+ declare const useUpdateHead: () => UpdateHead;
195
+
196
+ interface ResolvedRoute<T extends RouteMeta = RouteMeta> extends Route<T> {
197
+ path: string;
198
+ notFound: boolean;
199
+ }
200
+ /**
201
+ * Resolve route with given path
202
+ */
203
+ declare const resolveRoute: <T extends RouteMeta = RouteMeta>(path: string) => ResolvedRoute<T>;
204
+
205
+ /**
206
+ * Resolve route path with given raw path
207
+ */
208
+ declare const resolveRoutePath: (path: string) => string;
313
209
 
314
210
  /**
315
211
  * Resolver methods to get global computed
@@ -320,13 +216,17 @@ declare const withBase: (url: string) => string;
320
216
  */
321
217
  declare const resolvers: {
322
218
  resolveLayouts: (clientConfigs: ClientConfig[]) => Layouts;
323
- resolvePageFrontmatter: (pageData: PageData) => PageFrontmatter;
324
- resolvePageHead: (headTitle: PageHeadTitle, frontmatter: PageFrontmatter, siteLocale: SiteLocaleData) => PageHead;
325
- resolvePageHeadTitle: (page: PageData, siteLocale: SiteLocaleData) => PageHeadTitle;
326
- resolvePageLang: (page: PageData, siteLocale: SiteLocaleData) => PageLang;
327
- resolvePageLayout: (page: PageData, layouts: Layouts) => Component;
219
+ resolvePageHead: (pageHeadTitle: PageHeadTitle, pageFrontmatter: PageFrontmatter, siteLocaleDate: SiteData) => PageHead;
220
+ resolvePageHeadTitle: (pageData: PageData, siteLocaleDate: SiteData) => PageHeadTitle;
221
+ resolvePageLang: (pageData: PageData, siteLocaleData: SiteData) => PageLang;
222
+ resolvePageLayout: (pageData: PageData, layouts: Layouts) => PageLayout;
328
223
  resolveRouteLocale: (locales: SiteData['locales'], routePath: string) => RouteLocale;
329
- resolveSiteLocaleData: (site: SiteData, routeLocale: RouteLocale) => SiteLocaleData;
224
+ resolveSiteLocaleData: (siteData: SiteData, routeLocale: RouteLocale) => SiteLocaleData;
330
225
  };
331
226
 
332
- export { type ClientConfig, ClientOnly, Content, type Layouts, type LayoutsRef, type PageChunk, type PageDataRef, type PageFrontmatterRef, type PageHead, type PageHeadRef, type PageHeadTitle, type PageHeadTitleRef, type PageLang, type PageLangRef, type PageLayoutRef, type Redirects, type Route, RouteLink, type RouteLinkProps, type RouteLocale, type RouteLocaleRef, type RouteMeta, type Routes, type SiteDataRef, type SiteLocaleData, type SiteLocaleDataRef, type UpdateHead, defineClientConfig, layoutsSymbol, pageDataSymbol, pageFrontmatterSymbol, pageHeadSymbol, pageHeadTitleSymbol, pageLangSymbol, pageLayoutSymbol, redirects, resolveRoute, resolveRoutePath, resolvers, routeLocaleSymbol, routes, siteData, siteLocaleDataSymbol, updateHeadSymbol, useLayouts, usePageData, usePageFrontmatter, usePageHead, usePageHeadTitle, usePageLang, usePageLayout, useRedirects, useRouteLocale, useRoutes, useSiteData, useSiteLocaleData, useUpdateHead, withBase };
227
+ /**
228
+ * Prefix url with site base
229
+ */
230
+ declare const withBase: (url: string) => string;
231
+
232
+ export { type ClientConfig, type ClientData, ClientOnly, Content, type Layouts, type LayoutsRef, type PageChunk, type PageComponent, type PageComponentRef, type PageDataRef, type PageFrontmatterRef, type PageHead, type PageHeadRef, type PageHeadTitle, type PageHeadTitleRef, type PageLang, type PageLangRef, type PageLayout, type PageLayoutRef, type Redirects, type RedirectsRef, type Route, RouteLink, type RouteLinkProps, type RouteLocale, type RouteLocaleRef, type RouteMeta, type RoutePath, type RoutePathRef, type Routes, type RoutesRef, type SiteDataRef, type SiteLocaleData, type SiteLocaleDataRef, type UpdateHead, clientDataSymbol, resolveRoute, resolveRoutePath, resolvers, updateHeadSymbol, useClientData, useLayouts, usePageComponent, usePageData, usePageFrontmatter, usePageHead, usePageLang, usePageLayout, useRedirects, useRouteLocale, useRoutePath, useRoutes, useSiteData, useSiteLocaleData, useUpdateHead, withBase };
package/dist/index.js CHANGED
@@ -2,71 +2,51 @@ import {
2
2
  ClientOnly,
3
3
  Content,
4
4
  RouteLink,
5
- defineClientConfig,
6
- layoutsSymbol,
7
- pageDataSymbol,
8
- pageFrontmatterSymbol,
9
- pageHeadSymbol,
10
- pageHeadTitleSymbol,
11
- pageLangSymbol,
12
- pageLayoutSymbol,
13
- redirects,
5
+ clientDataSymbol,
14
6
  resolveRoute,
15
7
  resolveRoutePath,
16
8
  resolvers,
17
- routeLocaleSymbol,
18
- routes,
19
- siteData,
20
- siteLocaleDataSymbol,
21
9
  updateHeadSymbol,
10
+ useClientData,
22
11
  useLayouts,
12
+ usePageComponent,
23
13
  usePageData,
24
14
  usePageFrontmatter,
25
15
  usePageHead,
26
- usePageHeadTitle,
27
16
  usePageLang,
28
17
  usePageLayout,
29
18
  useRedirects,
30
19
  useRoute,
31
20
  useRouteLocale,
21
+ useRoutePath,
32
22
  useRouter,
33
23
  useRoutes,
34
24
  useSiteData,
35
25
  useSiteLocaleData,
36
26
  useUpdateHead,
37
27
  withBase
38
- } from "./chunk-FKY5ACNS.js";
28
+ } from "./chunk-VWNFZFFH.js";
39
29
  export {
40
30
  ClientOnly,
41
31
  Content,
42
32
  RouteLink,
43
- defineClientConfig,
44
- layoutsSymbol,
45
- pageDataSymbol,
46
- pageFrontmatterSymbol,
47
- pageHeadSymbol,
48
- pageHeadTitleSymbol,
49
- pageLangSymbol,
50
- pageLayoutSymbol,
51
- redirects,
33
+ clientDataSymbol,
52
34
  resolveRoute,
53
35
  resolveRoutePath,
54
36
  resolvers,
55
- routeLocaleSymbol,
56
- routes,
57
- siteData,
58
- siteLocaleDataSymbol,
59
37
  updateHeadSymbol,
38
+ useClientData,
60
39
  useLayouts,
40
+ usePageComponent,
61
41
  usePageData,
62
42
  usePageFrontmatter,
63
43
  usePageHead,
64
- usePageHeadTitle,
65
44
  usePageLang,
66
45
  usePageLayout,
67
46
  useRedirects,
68
47
  useRoute,
69
48
  useRouteLocale,
49
+ useRoutePath,
70
50
  useRouter,
71
51
  useRoutes,
72
52
  useSiteData,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vuepress/client",
3
- "version": "2.0.0-rc.6",
3
+ "version": "2.0.0-rc.7",
4
4
  "description": "Client package of VuePress",
5
5
  "keywords": [
6
6
  "vuepress",
@@ -37,7 +37,7 @@
37
37
  "@vueuse/core": "^10.7.2",
38
38
  "vue": "^3.4.15",
39
39
  "vue-router": "^4.2.5",
40
- "@vuepress/shared": "2.0.0-rc.6"
40
+ "@vuepress/shared": "2.0.0-rc.7"
41
41
  },
42
42
  "publishConfig": {
43
43
  "access": "public"
@@ -54,7 +54,6 @@
54
54
  ],
55
55
  "external": [
56
56
  "@internal/clientConfigs",
57
- "@internal/layoutComponents",
58
57
  "@internal/routes",
59
58
  "@internal/siteData"
60
59
  ],