@vuepress/core 2.0.0-beta.48 → 2.0.0-beta.49

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.
@@ -10,7 +10,7 @@ const preparePageComponent = async (app, page) => {
10
10
  // #688: wrap the content with a <div> to avoid some potential issues of fragment component
11
11
  `<template><div>${page.contentRendered}</div></template>\n`,
12
12
  // hoist `<script>`, `<style>` and other custom blocks
13
- ...page.hoistedTags,
13
+ ...page.sfcBlocks,
14
14
  ].join('\n'));
15
15
  };
16
16
  exports.preparePageComponent = preparePageComponent;
@@ -3,14 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createPage = void 0;
4
4
  const inferPagePath_1 = require("./inferPagePath");
5
5
  const renderPageContent_1 = require("./renderPageContent");
6
- const renderPageExcerpt_1 = require("./renderPageExcerpt");
7
6
  const resolvePageComponentInfo_1 = require("./resolvePageComponentInfo");
8
- const resolvePageContent_1 = require("./resolvePageContent");
9
7
  const resolvePageDataInfo_1 = require("./resolvePageDataInfo");
10
8
  const resolvePageDate_1 = require("./resolvePageDate");
11
9
  const resolvePageFileContent_1 = require("./resolvePageFileContent");
12
10
  const resolvePageFilePath_1 = require("./resolvePageFilePath");
13
- const resolvePageFrontmatter_1 = require("./resolvePageFrontmatter");
14
11
  const resolvePageHtmlInfo_1 = require("./resolvePageHtmlInfo");
15
12
  const resolvePageKey_1 = require("./resolvePageKey");
16
13
  const resolvePageLang_1 = require("./resolvePageLang");
@@ -27,28 +24,14 @@ const createPage = async (app, options) => {
27
24
  options,
28
25
  });
29
26
  // read the raw file content according to the absolute file path
30
- const contentRaw = await (0, resolvePageFileContent_1.resolvePageFileContent)({ filePath, options });
31
- // resolve content & frontmatter & raw excerpt from raw content
32
- const { content, frontmatterRaw, excerptRaw } = (0, resolvePageContent_1.resolvePageContent)({
33
- contentRaw,
34
- });
35
- // resolve frontmatter from raw frontmatter and page options
36
- const frontmatter = (0, resolvePageFrontmatter_1.resolvePageFrontmatter)({ frontmatterRaw, options });
37
- // render excerpt
38
- const excerpt = (0, renderPageExcerpt_1.renderPageExcerpt)({
39
- app,
40
- excerptRaw,
41
- filePath,
42
- filePathRelative,
43
- frontmatter,
44
- });
27
+ const content = await (0, resolvePageFileContent_1.resolvePageFileContent)({ filePath, options });
45
28
  // render page content and extract information
46
- const { contentRendered, deps, headers, hoistedTags, links, title } = await (0, renderPageContent_1.renderPageContent)({
29
+ const { contentRendered, deps, excerpt, frontmatter, headers, links, sfcBlocks, title, } = await (0, renderPageContent_1.renderPageContent)({
47
30
  app,
48
31
  content,
49
32
  filePath,
50
33
  filePathRelative,
51
- frontmatter,
34
+ options,
52
35
  });
53
36
  // resolve route meta from frontmatter
54
37
  const routeMeta = (0, resolvePageRouteMeta_1.resolvePageRouteMeta)({ frontmatter });
@@ -109,12 +92,12 @@ const createPage = async (app, options) => {
109
92
  contentRendered,
110
93
  date,
111
94
  deps,
112
- hoistedTags,
113
95
  links,
114
96
  pathInferred,
115
97
  pathLocale,
116
98
  permalink,
117
99
  routeMeta,
100
+ sfcBlocks,
118
101
  slug,
119
102
  // file info
120
103
  filePath,
@@ -1,14 +1,11 @@
1
1
  export * from './createPage';
2
2
  export * from './inferPagePath';
3
3
  export * from './renderPageContent';
4
- export * from './renderPageExcerpt';
5
4
  export * from './resolvePageComponentInfo';
6
- export * from './resolvePageContent';
7
5
  export * from './resolvePageDataInfo';
8
6
  export * from './resolvePageDate';
9
7
  export * from './resolvePageFileContent';
10
8
  export * from './resolvePageFilePath';
11
- export * from './resolvePageFrontmatter';
12
9
  export * from './resolvePageHtmlInfo';
13
10
  export * from './resolvePageKey';
14
11
  export * from './resolvePageLang';
package/lib/page/index.js CHANGED
@@ -17,14 +17,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./createPage"), exports);
18
18
  __exportStar(require("./inferPagePath"), exports);
19
19
  __exportStar(require("./renderPageContent"), exports);
20
- __exportStar(require("./renderPageExcerpt"), exports);
21
20
  __exportStar(require("./resolvePageComponentInfo"), exports);
22
- __exportStar(require("./resolvePageContent"), exports);
23
21
  __exportStar(require("./resolvePageDataInfo"), exports);
24
22
  __exportStar(require("./resolvePageDate"), exports);
25
23
  __exportStar(require("./resolvePageFileContent"), exports);
26
24
  __exportStar(require("./resolvePageFilePath"), exports);
27
- __exportStar(require("./resolvePageFrontmatter"), exports);
28
25
  __exportStar(require("./resolvePageHtmlInfo"), exports);
29
26
  __exportStar(require("./resolvePageKey"), exports);
30
27
  __exportStar(require("./resolvePageLang"), exports);
@@ -1,19 +1,21 @@
1
1
  import type { MarkdownHeader, MarkdownLink } from '@vuepress/markdown';
2
- import type { App, PageFrontmatter } from '../types';
2
+ import type { App, PageFrontmatter, PageOptions } from '../types';
3
3
  /**
4
4
  * Render page content and extract related info
5
5
  */
6
- export declare const renderPageContent: ({ app, content, frontmatter, filePath, filePathRelative, }: {
6
+ export declare const renderPageContent: ({ app, content, filePath, filePathRelative, options, }: {
7
7
  app: App;
8
8
  content: string;
9
- frontmatter: PageFrontmatter;
10
9
  filePath: string | null;
11
10
  filePathRelative: string | null;
11
+ options: PageOptions;
12
12
  }) => Promise<{
13
13
  contentRendered: string;
14
14
  deps: string[];
15
+ excerpt: string;
16
+ frontmatter: PageFrontmatter;
15
17
  headers: MarkdownHeader[];
16
- hoistedTags: string[];
17
18
  links: MarkdownLink[];
19
+ sfcBlocks: string[];
18
20
  title: string;
19
21
  }>;
@@ -4,23 +4,25 @@ exports.renderPageContent = void 0;
4
4
  /**
5
5
  * Render page content and extract related info
6
6
  */
7
- const renderPageContent = async ({ app, content, frontmatter, filePath, filePathRelative, }) => {
7
+ const renderPageContent = async ({ app, content, filePath, filePathRelative, options, }) => {
8
8
  const markdownEnv = {
9
9
  base: app.options.base,
10
10
  filePath,
11
11
  filePathRelative,
12
- frontmatter,
12
+ frontmatter: { ...options.frontmatter },
13
13
  };
14
14
  const contentRendered = app.markdown.render(content, markdownEnv);
15
15
  /* istanbul ignore next */
16
- const { headers = [], hoistedTags = [], importedFiles = [], links = [], title = '', } = markdownEnv;
16
+ const { excerpt = '', frontmatter = {}, headers = [], importedFiles = [], links = [], sfcBlocks = [], title = '', } = markdownEnv;
17
17
  return {
18
18
  contentRendered,
19
19
  deps: importedFiles,
20
+ excerpt,
21
+ frontmatter,
20
22
  headers,
21
- hoistedTags,
22
23
  links,
23
- title,
24
+ sfcBlocks,
25
+ title: frontmatter.title ?? title,
24
26
  };
25
27
  };
26
28
  exports.renderPageContent = renderPageContent;
@@ -26,10 +26,6 @@ export declare type Page<ExtraPageData extends Record<any, any> = Record<never,
26
26
  * Dependencies of the page
27
27
  */
28
28
  deps: string[];
29
- /**
30
- * Hoisted tags of the page
31
- */
32
- hoistedTags: string[];
33
29
  /**
34
30
  * Links of the page
35
31
  */
@@ -62,6 +58,10 @@ export declare type Page<ExtraPageData extends Record<any, any> = Record<never,
62
58
  * @see https://router.vuejs.org/api/#meta
63
59
  */
64
60
  routeMeta: Record<string, unknown>;
61
+ /**
62
+ * Extracted sfc blocks of the page
63
+ */
64
+ sfcBlocks: string[];
65
65
  /**
66
66
  * Slug of the page
67
67
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vuepress/core",
3
- "version": "2.0.0-beta.48",
3
+ "version": "2.0.0-beta.49",
4
4
  "description": "Core package of VuePress",
5
5
  "keywords": [
6
6
  "vuepress",
@@ -22,13 +22,11 @@
22
22
  "lib"
23
23
  ],
24
24
  "dependencies": {
25
- "@vuepress/client": "2.0.0-beta.48",
26
- "@vuepress/markdown": "2.0.0-beta.48",
27
- "@vuepress/shared": "2.0.0-beta.48",
28
- "@vuepress/utils": "2.0.0-beta.48",
29
- "gray-matter": "^4.0.3",
30
- "toml": "^3.0.0",
31
- "vue": "^3.2.36"
25
+ "@vuepress/client": "2.0.0-beta.49",
26
+ "@vuepress/markdown": "2.0.0-beta.49",
27
+ "@vuepress/shared": "2.0.0-beta.49",
28
+ "@vuepress/utils": "2.0.0-beta.49",
29
+ "vue": "^3.2.37"
32
30
  },
33
31
  "publishConfig": {
34
32
  "access": "public"
@@ -1,11 +0,0 @@
1
- import type { App, PageFrontmatter } from '../types';
2
- /**
3
- * Render page excerpt from raw excerpt
4
- */
5
- export declare const renderPageExcerpt: ({ app, excerptRaw, frontmatter, filePath, filePathRelative, }: {
6
- app: App;
7
- excerptRaw: string;
8
- frontmatter: PageFrontmatter;
9
- filePath: string | null;
10
- filePathRelative: string | null;
11
- }) => string;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.renderPageExcerpt = void 0;
4
- /**
5
- * Render page excerpt from raw excerpt
6
- */
7
- const renderPageExcerpt = ({ app, excerptRaw, frontmatter, filePath, filePathRelative, }) => {
8
- const markdownEnv = {
9
- base: app.options.base,
10
- filePath,
11
- filePathRelative,
12
- frontmatter,
13
- };
14
- const renderedExcerpt = app.markdown.render(excerptRaw, markdownEnv);
15
- return renderedExcerpt;
16
- };
17
- exports.renderPageExcerpt = renderPageExcerpt;
@@ -1,11 +0,0 @@
1
- import type { PageFrontmatter } from '../types';
2
- /**
3
- * Resolve page content and raw frontmatter & excerpt
4
- */
5
- export declare const resolvePageContent: ({ contentRaw, }: {
6
- contentRaw: string;
7
- }) => {
8
- content: string;
9
- frontmatterRaw: PageFrontmatter;
10
- excerptRaw: string;
11
- };
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolvePageContent = void 0;
4
- const matter = require("gray-matter");
5
- const toml = require("toml");
6
- /**
7
- * Resolve page content and raw frontmatter & excerpt
8
- */
9
- const resolvePageContent = ({ contentRaw, }) => {
10
- if (!contentRaw) {
11
- return {
12
- content: '',
13
- frontmatterRaw: {},
14
- excerptRaw: '',
15
- };
16
- }
17
- /* istanbul ignore next */
18
- const { data, content, excerpt = '', } = matter(contentRaw, {
19
- excerpt_separator: '<!-- more -->',
20
- engines: {
21
- toml: toml.parse.bind(toml),
22
- },
23
- });
24
- return {
25
- content,
26
- frontmatterRaw: data,
27
- excerptRaw: excerpt,
28
- };
29
- };
30
- exports.resolvePageContent = resolvePageContent;
@@ -1,8 +0,0 @@
1
- import type { PageFrontmatter, PageOptions } from '../types';
2
- /**
3
- * Resolve page frontmatter from user frontmatter and options frontmatter
4
- */
5
- export declare const resolvePageFrontmatter: ({ frontmatterRaw, options, }: {
6
- frontmatterRaw: PageFrontmatter;
7
- options: PageOptions;
8
- }) => PageFrontmatter;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolvePageFrontmatter = void 0;
4
- /**
5
- * Resolve page frontmatter from user frontmatter and options frontmatter
6
- */
7
- const resolvePageFrontmatter = ({ frontmatterRaw, options, }) => ({
8
- // raw frontmatter take priority over options frontmatter
9
- ...options.frontmatter,
10
- ...frontmatterRaw,
11
- });
12
- exports.resolvePageFrontmatter = resolvePageFrontmatter;