@vuepress/core 2.0.0-beta.4 → 2.0.0-beta.42

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 (146) hide show
  1. package/lib/app/appInit.js +6 -16
  2. package/lib/app/appPrepare.js +12 -15
  3. package/lib/app/appUse.d.ts +2 -2
  4. package/lib/app/appUse.js +17 -15
  5. package/lib/app/createBaseApp.d.ts +5 -0
  6. package/lib/app/createBaseApp.js +46 -0
  7. package/lib/app/createBuildApp.d.ts +5 -0
  8. package/lib/app/createBuildApp.js +13 -0
  9. package/lib/app/createDevApp.d.ts +5 -0
  10. package/lib/app/createDevApp.js +13 -0
  11. package/lib/app/index.d.ts +13 -12
  12. package/lib/app/index.js +18 -13
  13. package/lib/app/prepare/index.d.ts +1 -3
  14. package/lib/app/prepare/index.js +6 -4
  15. package/lib/app/prepare/prepareLayoutComponents.js +2 -2
  16. package/lib/app/prepare/preparePageComponent.js +6 -1
  17. package/lib/app/prepare/preparePageData.js +7 -11
  18. package/lib/app/prepare/{preparePagesComponent.d.ts → preparePagesComponents.d.ts} +1 -1
  19. package/lib/app/prepare/preparePagesComponents.js +24 -0
  20. package/lib/app/prepare/preparePagesData.js +5 -4
  21. package/lib/app/prepare/preparePagesRoutes.js +61 -11
  22. package/lib/app/prepare/prepareSiteData.js +19 -1
  23. package/lib/app/{createAppDir.d.ts → resolveAppDir.d.ts} +2 -2
  24. package/lib/app/resolveAppDir.js +32 -0
  25. package/lib/app/resolveAppEnv.d.ts +5 -0
  26. package/lib/app/resolveAppEnv.js +12 -0
  27. package/lib/app/resolveAppMarkdown.d.ts +6 -0
  28. package/lib/app/resolveAppMarkdown.js +16 -0
  29. package/lib/app/resolveAppOptions.d.ts +5 -0
  30. package/lib/app/{createAppOptions.js → resolveAppOptions.js} +16 -20
  31. package/lib/app/resolveAppPages.d.ts +5 -0
  32. package/lib/app/resolveAppPages.js +31 -0
  33. package/lib/app/resolveAppSiteData.d.ts +7 -0
  34. package/lib/app/resolveAppSiteData.js +17 -0
  35. package/lib/app/resolveAppVersion.d.ts +4 -0
  36. package/lib/app/resolveAppVersion.js +10 -0
  37. package/lib/app/resolveAppWriteTemp.d.ts +5 -0
  38. package/lib/app/{createAppWriteTemp.js → resolveAppWriteTemp.js} +5 -5
  39. package/lib/app/resolvePluginObject.d.ts +5 -0
  40. package/lib/app/resolvePluginObject.js +9 -0
  41. package/lib/app/resolveThemeInfo.d.ts +5 -0
  42. package/lib/app/resolveThemeInfo.js +31 -0
  43. package/lib/app/resolveThemeLayouts.d.ts +5 -0
  44. package/lib/app/resolveThemeLayouts.js +25 -0
  45. package/lib/app/setupAppThemeAndPlugins.d.ts +5 -0
  46. package/lib/app/setupAppThemeAndPlugins.js +21 -0
  47. package/lib/index.d.ts +0 -1
  48. package/lib/index.js +5 -2
  49. package/lib/page/createPage.js +75 -39
  50. package/lib/page/index.d.ts +4 -3
  51. package/lib/page/index.js +9 -4
  52. package/lib/page/inferPagePath.js +2 -2
  53. package/lib/page/renderPageContent.d.ts +19 -0
  54. package/lib/page/renderPageContent.js +26 -0
  55. package/lib/page/renderPageExcerpt.d.ts +11 -0
  56. package/lib/page/renderPageExcerpt.js +17 -0
  57. package/lib/page/resolvePageComponentInfo.d.ts +2 -9
  58. package/lib/page/resolvePageComponentInfo.js +2 -24
  59. package/lib/page/resolvePageContent.js +1 -2
  60. package/lib/page/resolvePageDataInfo.d.ts +2 -1
  61. package/lib/page/resolvePageDataInfo.js +2 -2
  62. package/lib/page/resolvePageDate.d.ts +1 -1
  63. package/lib/page/resolvePageDate.js +6 -7
  64. package/lib/page/resolvePageFileContent.js +3 -4
  65. package/lib/page/resolvePageFilePath.d.ts +1 -1
  66. package/lib/page/resolvePageFilePath.js +6 -11
  67. package/lib/page/resolvePageHtmlInfo.d.ts +11 -0
  68. package/lib/page/resolvePageHtmlInfo.js +18 -0
  69. package/lib/page/resolvePageKey.js +1 -1
  70. package/lib/page/resolvePageLang.js +2 -3
  71. package/lib/page/resolvePagePath.js +12 -1
  72. package/lib/page/resolvePagePermalink.js +4 -5
  73. package/lib/page/resolvePageRouteMeta.d.ts +7 -0
  74. package/lib/page/resolvePageRouteMeta.js +8 -0
  75. package/lib/pluginApi/createHookQueue.d.ts +1 -1
  76. package/lib/pluginApi/createHookQueue.js +7 -46
  77. package/lib/pluginApi/createPluginApi.js +2 -2
  78. package/lib/pluginApi/createPluginApiHooks.js +15 -14
  79. package/lib/pluginApi/createPluginApiRegisterHooks.js +6 -6
  80. package/lib/pluginApi/index.js +5 -1
  81. package/lib/pluginApi/normalizeClientFilesHook.js +5 -2
  82. package/lib/pluginApi/normalizeReturnObjectHook.js +1 -1
  83. package/lib/types/app/app.d.ts +82 -14
  84. package/lib/types/app/index.js +5 -1
  85. package/lib/types/app/options.d.ts +78 -27
  86. package/lib/types/app/utils.d.ts +10 -3
  87. package/lib/types/bundler.d.ts +3 -24
  88. package/lib/types/index.d.ts +2 -3
  89. package/lib/types/index.js +6 -3
  90. package/lib/types/page.d.ts +78 -32
  91. package/lib/types/plugin.d.ts +5 -24
  92. package/lib/types/{plugin-api → pluginApi}/hooks.d.ts +8 -9
  93. package/lib/types/{plugin-api → pluginApi}/hooks.js +0 -0
  94. package/lib/types/{plugin-api → pluginApi}/index.d.ts +0 -0
  95. package/lib/types/{plugin-api → pluginApi}/index.js +5 -1
  96. package/lib/types/{plugin-api → pluginApi}/pluginApi.d.ts +0 -0
  97. package/lib/types/{plugin-api → pluginApi}/pluginApi.js +0 -0
  98. package/lib/types/theme.d.ts +42 -14
  99. package/package.json +14 -14
  100. package/CHANGELOG.md +0 -260
  101. package/lib/app/appUseByConfig.d.ts +0 -2
  102. package/lib/app/appUseByConfig.js +0 -14
  103. package/lib/app/createApp.d.ts +0 -5
  104. package/lib/app/createApp.js +0 -44
  105. package/lib/app/createAppDir.js +0 -32
  106. package/lib/app/createAppEnv.d.ts +0 -5
  107. package/lib/app/createAppEnv.js +0 -14
  108. package/lib/app/createAppOptions.d.ts +0 -5
  109. package/lib/app/createAppPages.d.ts +0 -5
  110. package/lib/app/createAppPages.js +0 -33
  111. package/lib/app/createAppSiteData.d.ts +0 -7
  112. package/lib/app/createAppSiteData.js +0 -19
  113. package/lib/app/createAppVersion.d.ts +0 -4
  114. package/lib/app/createAppVersion.js +0 -11
  115. package/lib/app/createAppWriteTemp.d.ts +0 -5
  116. package/lib/app/normalizePlugin.d.ts +0 -2
  117. package/lib/app/normalizePlugin.js +0 -19
  118. package/lib/app/normalizePluginConfig.d.ts +0 -2
  119. package/lib/app/normalizePluginConfig.js +0 -18
  120. package/lib/app/prepare/preparePageRoutes.d.ts +0 -5
  121. package/lib/app/prepare/preparePageRoutes.js +0 -57
  122. package/lib/app/prepare/preparePagesComponent.js +0 -23
  123. package/lib/app/prepare/resolvePageData.d.ts +0 -5
  124. package/lib/app/prepare/resolvePageData.js +0 -18
  125. package/lib/app/resolveBundler.d.ts +0 -2
  126. package/lib/app/resolveBundler.js +0 -10
  127. package/lib/app/resolvePlugin.d.ts +0 -5
  128. package/lib/app/resolvePlugin.js +0 -20
  129. package/lib/page/resolvePageExcerpt.d.ts +0 -9
  130. package/lib/page/resolvePageExcerpt.js +0 -15
  131. package/lib/page/resolvePageRoutesInfo.d.ts +0 -11
  132. package/lib/page/resolvePageRoutesInfo.js +0 -16
  133. package/lib/page/resolvePageTitle.d.ts +0 -9
  134. package/lib/page/resolvePageTitle.js +0 -26
  135. package/lib/themeApi/createThemeApi.d.ts +0 -7
  136. package/lib/themeApi/createThemeApi.js +0 -30
  137. package/lib/themeApi/index.d.ts +0 -1
  138. package/lib/themeApi/index.js +0 -13
  139. package/lib/themeApi/resolveThemeInfo.d.ts +0 -2
  140. package/lib/themeApi/resolveThemeInfo.js +0 -34
  141. package/lib/themeApi/resolveThemeLayouts.d.ts +0 -5
  142. package/lib/themeApi/resolveThemeLayouts.js +0 -33
  143. package/lib/types/theme-api/index.d.ts +0 -1
  144. package/lib/types/theme-api/index.js +0 -13
  145. package/lib/types/theme-api/themeApi.d.ts +0 -44
  146. package/lib/types/theme-api/themeApi.js +0 -2
@@ -0,0 +1,6 @@
1
+ import type { Markdown } from '@vuepress/markdown';
2
+ import type { App } from '../types';
3
+ /**
4
+ * Resolve markdown-it instance for vuepress app
5
+ */
6
+ export declare const resolveAppMarkdown: (app: App) => Promise<Markdown>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveAppMarkdown = void 0;
4
+ const markdown_1 = require("@vuepress/markdown");
5
+ /**
6
+ * Resolve markdown-it instance for vuepress app
7
+ */
8
+ const resolveAppMarkdown = async (app) => {
9
+ // plugin hook: extendsMarkdownOptions
10
+ await app.pluginApi.hooks.extendsMarkdownOptions.process(app.options.markdown, app);
11
+ const markdown = (0, markdown_1.createMarkdown)(app.options.markdown);
12
+ // plugin hook: extendsMarkdown
13
+ await app.pluginApi.hooks.extendsMarkdown.process(markdown, app);
14
+ return markdown;
15
+ };
16
+ exports.resolveAppMarkdown = resolveAppMarkdown;
@@ -0,0 +1,5 @@
1
+ import type { AppConfig, AppOptions } from '../types';
2
+ /**
3
+ * Create app options with default values
4
+ */
5
+ export declare const resolveAppOptions: ({ base, lang, title, description, head, locales, source, dest, temp, cache, public: publicDir, host, port, open, templateDev, shouldPreload, shouldPrefetch, templateBuild, bundler, debug, markdown, pagePatterns, plugins, theme, }: AppConfig) => AppOptions;
@@ -1,48 +1,44 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createAppOptions = void 0;
3
+ exports.resolveAppOptions = void 0;
4
4
  const utils_1 = require("@vuepress/utils");
5
5
  /**
6
6
  * Create app options with default values
7
7
  */
8
- const createAppOptions = ({
8
+ const resolveAppOptions = ({
9
9
  // site config
10
10
  base = '/', lang = 'en-US', title = '', description = '', head = [], locales = {},
11
- // theme config
12
- theme = '@vuepress/default', themeConfig = {},
13
- // bundler config
14
- bundler = '@vuepress/webpack', bundlerConfig = {},
15
11
  // directory config
16
12
  source, dest = utils_1.path.resolve(source, '.vuepress/dist'), temp = utils_1.path.resolve(source, '.vuepress/.temp'), cache = utils_1.path.resolve(source, '.vuepress/.cache'), public: publicDir = utils_1.path.resolve(source, '.vuepress/public'),
17
- // markdown config
18
- markdown = {},
19
- // development config
20
- host = '0.0.0.0', port = 8080, debug = false, open = false, evergreen = true, pagePatterns = ['**/*.md', '!.vuepress', '!node_modules'], templateDev = utils_1.path.normalize(require.resolve('@vuepress/client/templates/index.dev.html')), templateSSR = utils_1.path.normalize(require.resolve('@vuepress/client/templates/index.ssr.html')), shouldPreload = true, shouldPrefetch = false, }) => ({
13
+ // dev config
14
+ host = '0.0.0.0', port = 8080, open = false, templateDev = utils_1.path.normalize(require.resolve('@vuepress/client/templates/dev.html')),
15
+ // build config
16
+ shouldPreload = true, shouldPrefetch = true, templateBuild = utils_1.path.normalize(require.resolve('@vuepress/client/templates/build.html')),
17
+ // common config
18
+ bundler, debug = false, markdown = {}, pagePatterns = ['**/*.md', '!.vuepress', '!node_modules'], plugins = [], theme, }) => ({
21
19
  base,
22
20
  lang,
23
21
  title,
24
22
  description,
25
23
  head,
26
24
  locales,
27
- theme,
28
- themeConfig,
29
- bundler,
30
- bundlerConfig,
31
25
  source,
32
26
  dest,
33
27
  temp,
34
28
  cache,
35
29
  public: publicDir,
36
- markdown,
37
- debug,
38
30
  host,
39
31
  port,
40
32
  open,
41
- evergreen,
42
- pagePatterns,
43
33
  templateDev,
44
- templateSSR,
45
34
  shouldPreload,
46
35
  shouldPrefetch,
36
+ templateBuild,
37
+ bundler,
38
+ debug,
39
+ markdown,
40
+ pagePatterns,
41
+ plugins,
42
+ theme,
47
43
  });
48
- exports.createAppOptions = createAppOptions;
44
+ exports.resolveAppOptions = resolveAppOptions;
@@ -0,0 +1,5 @@
1
+ import type { App, Page } from '../types';
2
+ /**
3
+ * Resolve pages for vuepress app
4
+ */
5
+ export declare const resolveAppPages: (app: App) => Promise<Page[]>;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveAppPages = void 0;
4
+ const utils_1 = require("@vuepress/utils");
5
+ const page_1 = require("../page");
6
+ const log = (0, utils_1.debug)('vuepress:core/app');
7
+ /**
8
+ * Resolve pages for vuepress app
9
+ */
10
+ const resolveAppPages = async (app) => {
11
+ log('resolveAppPages start');
12
+ // resolve page absolute file paths according to the page patterns
13
+ const pageFilePaths = await (0, utils_1.globby)(app.options.pagePatterns, {
14
+ absolute: true,
15
+ cwd: app.dir.source(),
16
+ });
17
+ // create pages from files
18
+ const pages = await Promise.all(pageFilePaths.map((filePath) => (0, page_1.createPage)(app, { filePath })));
19
+ // if there is no 404 page, add one
20
+ if (!pages.some((page) => page.path === '/404.html')) {
21
+ pages.push(await (0, page_1.createPage)(app, {
22
+ path: '/404.html',
23
+ frontmatter: {
24
+ layout: '404',
25
+ },
26
+ }));
27
+ }
28
+ log('resolveAppPages finish');
29
+ return pages;
30
+ };
31
+ exports.resolveAppPages = resolveAppPages;
@@ -0,0 +1,7 @@
1
+ import type { AppOptions, SiteData } from '../types';
2
+ /**
3
+ * Resolve site data for vuepress app
4
+ *
5
+ * Site data will also be used in client
6
+ */
7
+ export declare const resolveAppSiteData: (options: AppOptions) => SiteData;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveAppSiteData = void 0;
4
+ /**
5
+ * Resolve site data for vuepress app
6
+ *
7
+ * Site data will also be used in client
8
+ */
9
+ const resolveAppSiteData = (options) => ({
10
+ base: options.base,
11
+ lang: options.lang,
12
+ title: options.title,
13
+ description: options.description,
14
+ head: options.head,
15
+ locales: options.locales,
16
+ });
17
+ exports.resolveAppSiteData = resolveAppSiteData;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Resolve version of vuepress app
3
+ */
4
+ export declare const resolveAppVersion: () => string;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveAppVersion = void 0;
4
+ /**
5
+ * Resolve version of vuepress app
6
+ */
7
+ const resolveAppVersion = () => {
8
+ return require('../../package.json').version;
9
+ };
10
+ exports.resolveAppVersion = resolveAppVersion;
@@ -0,0 +1,5 @@
1
+ import type { AppDir, AppWriteTemp } from '../types';
2
+ /**
3
+ * Resolve write temp file util for vuepress app
4
+ */
5
+ export declare const resolveAppWriteTemp: (dir: AppDir) => AppWriteTemp;
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createAppWriteTemp = void 0;
3
+ exports.resolveAppWriteTemp = void 0;
4
4
  const utils_1 = require("@vuepress/utils");
5
5
  /**
6
- * Create write temp file util for vuepress app
6
+ * Resolve write temp file util for vuepress app
7
7
  */
8
- const createAppWriteTemp = async (app) => {
8
+ const resolveAppWriteTemp = (dir) => {
9
9
  const tempCache = new Map();
10
10
  const writeTemp = async (file, content) => {
11
- const filePath = app.dir.temp(file);
11
+ const filePath = dir.temp(file);
12
12
  const contentCached = tempCache.get(filePath);
13
13
  if (contentCached !== content) {
14
14
  await utils_1.fs.outputFile(filePath, content);
@@ -18,4 +18,4 @@ const createAppWriteTemp = async (app) => {
18
18
  };
19
19
  return writeTemp;
20
20
  };
21
- exports.createAppWriteTemp = createAppWriteTemp;
21
+ exports.resolveAppWriteTemp = resolveAppWriteTemp;
@@ -0,0 +1,5 @@
1
+ import type { App, Plugin, PluginObject } from '../types';
2
+ /**
3
+ * Resolve a plugin object according to name / path / module and config
4
+ */
5
+ export declare const resolvePluginObject: <T extends PluginObject = PluginObject>(app: App, plugin: Plugin<T>) => T;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolvePluginObject = void 0;
4
+ const shared_1 = require("@vuepress/shared");
5
+ /**
6
+ * Resolve a plugin object according to name / path / module and config
7
+ */
8
+ const resolvePluginObject = (app, plugin) => ((0, shared_1.isFunction)(plugin) ? plugin(app) : plugin);
9
+ exports.resolvePluginObject = resolvePluginObject;
@@ -0,0 +1,5 @@
1
+ import type { App, Theme, ThemeInfo } from '../types';
2
+ /**
3
+ * Resolve theme info and its parent theme info
4
+ */
5
+ export declare const resolveThemeInfo: (app: App, theme: Theme) => ThemeInfo;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveThemeInfo = void 0;
4
+ const resolvePluginObject_1 = require("./resolvePluginObject");
5
+ const resolveThemeLayouts_1 = require("./resolveThemeLayouts");
6
+ /**
7
+ * Resolve theme info and its parent theme info
8
+ */
9
+ const resolveThemeInfo = (app, theme) => {
10
+ // resolve current theme info
11
+ const themeObject = (0, resolvePluginObject_1.resolvePluginObject)(app, theme);
12
+ const themeInfo = {
13
+ layouts: (0, resolveThemeLayouts_1.resolveThemeLayouts)(themeObject.layouts),
14
+ plugins: [...(themeObject.plugins ?? []), themeObject],
15
+ templateBuild: themeObject.templateBuild,
16
+ templateDev: themeObject.templateDev,
17
+ };
18
+ // return if current theme does not have a parent theme
19
+ if (!themeObject.extends) {
20
+ return themeInfo;
21
+ }
22
+ // resolve parent theme info recursively
23
+ const parentThemeInfo = (0, exports.resolveThemeInfo)(app, themeObject.extends);
24
+ return {
25
+ layouts: { ...parentThemeInfo.layouts, ...themeInfo.layouts },
26
+ plugins: [...parentThemeInfo.plugins, ...themeInfo.plugins],
27
+ templateBuild: themeObject.templateBuild ?? parentThemeInfo.templateBuild,
28
+ templateDev: themeObject.templateDev ?? parentThemeInfo.templateDev,
29
+ };
30
+ };
31
+ exports.resolveThemeInfo = resolveThemeInfo;
@@ -0,0 +1,5 @@
1
+ import type { ThemeObject } from '../types';
2
+ /**
3
+ * Resolve layouts from `layouts` option
4
+ */
5
+ export declare const resolveThemeLayouts: (layouts?: ThemeObject['layouts']) => Record<string, string>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveThemeLayouts = void 0;
4
+ const shared_1 = require("@vuepress/shared");
5
+ const utils_1 = require("@vuepress/utils");
6
+ /**
7
+ * Resolve layouts from `layouts` option
8
+ */
9
+ const resolveThemeLayouts = (layouts = {}) => {
10
+ // use the layouts component map directly
11
+ if ((0, shared_1.isPlainObject)(layouts)) {
12
+ return layouts;
13
+ }
14
+ // resolve the layouts directory
15
+ if (!utils_1.fs.pathExistsSync(layouts)) {
16
+ throw utils_1.logger.createError(`layouts directory does not exist: ${utils_1.chalk.magenta(layouts)}`);
17
+ }
18
+ // load all files in layouts directory, then take matched files
19
+ // as theme layouts
20
+ return Object.fromEntries(utils_1.fs
21
+ .readdirSync(layouts)
22
+ .filter((file) => /\.(vue|ts|js)$/.test(file))
23
+ .map((file) => [utils_1.path.trimExt(file), utils_1.path.resolve(layouts, file)]));
24
+ };
25
+ exports.resolveThemeLayouts = resolveThemeLayouts;
@@ -0,0 +1,5 @@
1
+ import type { App, AppConfig } from '../types';
2
+ /**
3
+ * Setup theme and plugins for vuepress app
4
+ */
5
+ export declare const setupAppThemeAndPlugins: (app: App, config: AppConfig) => void;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setupAppThemeAndPlugins = void 0;
4
+ const resolveThemeInfo_1 = require("./resolveThemeInfo");
5
+ /**
6
+ * Setup theme and plugins for vuepress app
7
+ */
8
+ const setupAppThemeAndPlugins = (app, config) => {
9
+ // recursively resolve theme info
10
+ const themeInfo = (0, resolveThemeInfo_1.resolveThemeInfo)(app, app.options.theme);
11
+ // set up app layouts and templates
12
+ app.layouts = themeInfo.layouts;
13
+ app.options.templateDev =
14
+ config.templateDev ?? themeInfo.templateDev ?? app.options.templateDev;
15
+ app.options.templateBuild =
16
+ config.templateBuild ?? themeInfo.templateBuild ?? app.options.templateBuild;
17
+ [...themeInfo.plugins, ...app.options.plugins]
18
+ .flat()
19
+ .forEach((plugin) => app.use(plugin));
20
+ };
21
+ exports.setupAppThemeAndPlugins = setupAppThemeAndPlugins;
package/lib/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  export * from './app';
2
2
  export * from './page';
3
3
  export * from './pluginApi';
4
- export * from './themeApi';
5
4
  export * from './types';
package/lib/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -13,5 +17,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
17
  __exportStar(require("./app"), exports);
14
18
  __exportStar(require("./page"), exports);
15
19
  __exportStar(require("./pluginApi"), exports);
16
- __exportStar(require("./themeApi"), exports);
17
20
  __exportStar(require("./types"), exports);
@@ -2,47 +2,66 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createPage = void 0;
4
4
  const inferPagePath_1 = require("./inferPagePath");
5
+ const renderPageContent_1 = require("./renderPageContent");
6
+ const renderPageExcerpt_1 = require("./renderPageExcerpt");
5
7
  const resolvePageComponentInfo_1 = require("./resolvePageComponentInfo");
6
8
  const resolvePageContent_1 = require("./resolvePageContent");
7
9
  const resolvePageDataInfo_1 = require("./resolvePageDataInfo");
8
10
  const resolvePageDate_1 = require("./resolvePageDate");
9
- const resolvePageExcerpt_1 = require("./resolvePageExcerpt");
10
11
  const resolvePageFileContent_1 = require("./resolvePageFileContent");
11
12
  const resolvePageFilePath_1 = require("./resolvePageFilePath");
12
13
  const resolvePageFrontmatter_1 = require("./resolvePageFrontmatter");
14
+ const resolvePageHtmlInfo_1 = require("./resolvePageHtmlInfo");
13
15
  const resolvePageKey_1 = require("./resolvePageKey");
14
16
  const resolvePageLang_1 = require("./resolvePageLang");
15
17
  const resolvePagePath_1 = require("./resolvePagePath");
16
18
  const resolvePagePermalink_1 = require("./resolvePagePermalink");
17
- const resolvePageRoutesInfo_1 = require("./resolvePageRoutesInfo");
19
+ const resolvePageRouteMeta_1 = require("./resolvePageRouteMeta");
18
20
  const resolvePageSlug_1 = require("./resolvePageSlug");
19
- const resolvePageTitle_1 = require("./resolvePageTitle");
20
21
  const createPage = async (app, options) => {
22
+ // plugin hook: extendsPageOptions
23
+ await app.pluginApi.hooks.extendsPageOptions.process(options, app);
21
24
  // resolve page file absolute path and relative path
22
- const { filePath, filePathRelative } = resolvePageFilePath_1.resolvePageFilePath({
25
+ const { filePath, filePathRelative } = (0, resolvePageFilePath_1.resolvePageFilePath)({
23
26
  app,
24
27
  options,
25
28
  });
26
29
  // read the raw file content according to the absolute file path
27
- const contentRaw = await resolvePageFileContent_1.resolvePageFileContent({ filePath, options });
30
+ const contentRaw = await (0, resolvePageFileContent_1.resolvePageFileContent)({ filePath, options });
28
31
  // resolve content & frontmatter & raw excerpt from raw content
29
- const { content, frontmatterRaw, excerptRaw } = resolvePageContent_1.resolvePageContent({
32
+ const { content, frontmatterRaw, excerptRaw } = (0, resolvePageContent_1.resolvePageContent)({
30
33
  contentRaw,
31
34
  });
32
35
  // resolve frontmatter from raw frontmatter and page options
33
- const frontmatter = resolvePageFrontmatter_1.resolvePageFrontmatter({ frontmatterRaw, options });
34
- // resolve excerpt from raw excerpt
35
- const excerpt = resolvePageExcerpt_1.resolvePageExcerpt({ excerptRaw, app, filePathRelative });
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
+ });
45
+ // render page content and extract information
46
+ const { contentRendered, deps, headers, hoistedTags, links, title } = await (0, renderPageContent_1.renderPageContent)({
47
+ app,
48
+ content,
49
+ filePath,
50
+ filePathRelative,
51
+ frontmatter,
52
+ });
53
+ // resolve route meta from frontmatter
54
+ const routeMeta = (0, resolvePageRouteMeta_1.resolvePageRouteMeta)({ frontmatter });
36
55
  // resolve slug from file path
37
- const slug = resolvePageSlug_1.resolvePageSlug({ filePathRelative });
56
+ const slug = (0, resolvePageSlug_1.resolvePageSlug)({ filePathRelative });
38
57
  // resolve date from file path
39
- const date = resolvePageDate_1.resolvePageDate({ frontmatter, filePathRelative });
58
+ const date = (0, resolvePageDate_1.resolvePageDate)({ frontmatter, filePathRelative });
40
59
  // infer page path according to file path
41
- const { pathInferred, pathLocale } = inferPagePath_1.inferPagePath({ app, filePathRelative });
60
+ const { pathInferred, pathLocale } = (0, inferPagePath_1.inferPagePath)({ app, filePathRelative });
42
61
  // resolve language from frontmatter and site options
43
- const lang = resolvePageLang_1.resolvePageLang({ app, frontmatter, pathLocale });
62
+ const lang = (0, resolvePageLang_1.resolvePageLang)({ app, frontmatter, pathLocale });
44
63
  // resolve page permalink
45
- const permalink = resolvePagePermalink_1.resolvePagePermalink({
64
+ const permalink = (0, resolvePagePermalink_1.resolvePagePermalink)({
46
65
  frontmatter,
47
66
  slug,
48
67
  date,
@@ -50,49 +69,66 @@ const createPage = async (app, options) => {
50
69
  pathLocale,
51
70
  });
52
71
  // resolve page path
53
- const path = resolvePagePath_1.resolvePagePath({ permalink, pathInferred, options });
54
- // resolve path key
55
- const key = resolvePageKey_1.resolvePageKey({ path });
56
- // resolve page component and extract headers & links
57
- const { headers, links, componentFilePath, componentFilePathRelative, componentFileContent, componentFileChunkName, } = await resolvePageComponentInfo_1.resolvePageComponentInfo({
72
+ const path = (0, resolvePagePath_1.resolvePagePath)({ permalink, pathInferred, options });
73
+ // resolve page key
74
+ const key = (0, resolvePageKey_1.resolvePageKey)({ path });
75
+ // resolve page rendered html file path
76
+ const { htmlFilePath, htmlFilePathRelative } = (0, resolvePageHtmlInfo_1.resolvePageHtmlInfo)({
58
77
  app,
59
- content,
60
- filePathRelative,
61
78
  path,
62
- key,
63
79
  });
64
- const { dataFilePath, dataFilePathRelative, dataFileChunkName, } = resolvePageDataInfo_1.resolvePageDataInfo({ app, key });
65
- const { routesFilePath, routesFilePathRelative } = resolvePageRoutesInfo_1.resolvePageRoutesInfo({
80
+ // resolve page component and extract headers & links
81
+ const { componentFilePath, componentFilePathRelative, componentFileChunkName, } = await (0, resolvePageComponentInfo_1.resolvePageComponentInfo)({
66
82
  app,
83
+ htmlFilePathRelative,
67
84
  key,
68
85
  });
69
- // resolve title from frontmatter and headers
70
- const title = resolvePageTitle_1.resolvePageTitle({ content, frontmatter, headers });
71
- return {
86
+ const { dataFilePath, dataFilePathRelative, dataFileChunkName } = (0, resolvePageDataInfo_1.resolvePageDataInfo)({ app, htmlFilePathRelative, key });
87
+ const page = {
88
+ // page data
89
+ data: {
90
+ key,
91
+ path,
92
+ title,
93
+ lang,
94
+ frontmatter,
95
+ excerpt,
96
+ headers,
97
+ },
98
+ // base fields
72
99
  key,
73
100
  path,
101
+ title,
102
+ lang,
103
+ frontmatter,
104
+ excerpt,
105
+ headers,
106
+ // extra fields
107
+ content,
108
+ contentRendered,
109
+ date,
110
+ deps,
111
+ hoistedTags,
112
+ links,
74
113
  pathInferred,
75
114
  pathLocale,
115
+ permalink,
116
+ routeMeta,
117
+ slug,
118
+ // file info
76
119
  filePath,
77
120
  filePathRelative,
78
121
  componentFilePath,
79
122
  componentFilePathRelative,
80
- componentFileContent,
81
123
  componentFileChunkName,
82
124
  dataFilePath,
83
125
  dataFilePathRelative,
84
126
  dataFileChunkName,
85
- routesFilePath,
86
- routesFilePathRelative,
87
- title,
88
- content,
89
- frontmatter,
90
- excerpt,
91
- headers,
92
- links,
93
- slug,
94
- date,
95
- lang,
127
+ htmlFilePath,
128
+ htmlFilePathRelative,
96
129
  };
130
+ // plugin hook: extendsPage
131
+ await app.pluginApi.hooks.extendsPage.process(page, app);
132
+ return page;
97
133
  };
98
134
  exports.createPage = createPage;
@@ -1,17 +1,18 @@
1
1
  export * from './createPage';
2
2
  export * from './inferPagePath';
3
+ export * from './renderPageContent';
4
+ export * from './renderPageExcerpt';
3
5
  export * from './resolvePageComponentInfo';
4
6
  export * from './resolvePageContent';
5
7
  export * from './resolvePageDataInfo';
6
8
  export * from './resolvePageDate';
7
- export * from './resolvePageExcerpt';
8
9
  export * from './resolvePageFileContent';
9
10
  export * from './resolvePageFilePath';
10
11
  export * from './resolvePageFrontmatter';
12
+ export * from './resolvePageHtmlInfo';
11
13
  export * from './resolvePageKey';
12
14
  export * from './resolvePageLang';
13
15
  export * from './resolvePagePath';
14
16
  export * from './resolvePagePermalink';
15
- export * from './resolvePageRoutesInfo';
17
+ export * from './resolvePageRouteMeta';
16
18
  export * from './resolvePageSlug';
17
- export * from './resolvePageTitle';
package/lib/page/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -12,18 +16,19 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
13
17
  __exportStar(require("./createPage"), exports);
14
18
  __exportStar(require("./inferPagePath"), exports);
19
+ __exportStar(require("./renderPageContent"), exports);
20
+ __exportStar(require("./renderPageExcerpt"), exports);
15
21
  __exportStar(require("./resolvePageComponentInfo"), exports);
16
22
  __exportStar(require("./resolvePageContent"), exports);
17
23
  __exportStar(require("./resolvePageDataInfo"), exports);
18
24
  __exportStar(require("./resolvePageDate"), exports);
19
- __exportStar(require("./resolvePageExcerpt"), exports);
20
25
  __exportStar(require("./resolvePageFileContent"), exports);
21
26
  __exportStar(require("./resolvePageFilePath"), exports);
22
27
  __exportStar(require("./resolvePageFrontmatter"), exports);
28
+ __exportStar(require("./resolvePageHtmlInfo"), exports);
23
29
  __exportStar(require("./resolvePageKey"), exports);
24
30
  __exportStar(require("./resolvePageLang"), exports);
25
31
  __exportStar(require("./resolvePagePath"), exports);
26
32
  __exportStar(require("./resolvePagePermalink"), exports);
27
- __exportStar(require("./resolvePageRoutesInfo"), exports);
33
+ __exportStar(require("./resolvePageRouteMeta"), exports);
28
34
  __exportStar(require("./resolvePageSlug"), exports);
29
- __exportStar(require("./resolvePageTitle"), exports);
@@ -14,11 +14,11 @@ const inferPagePath = ({ app, filePathRelative, }) => {
14
14
  }
15
15
  // infer page route path from file path
16
16
  // foo/bar.md -> /foo/bar.html
17
- const pathInferred = shared_1.ensureLeadingSlash(filePathRelative)
17
+ const pathInferred = (0, shared_1.ensureLeadingSlash)(filePathRelative)
18
18
  .replace(/\.md$/, '.html')
19
19
  .replace(/\/(README|index).html$/i, '/');
20
20
  // resolve page locale path
21
- const pathLocale = shared_1.resolveLocalePath(app.siteData.locales, pathInferred);
21
+ const pathLocale = (0, shared_1.resolveLocalePath)(app.siteData.locales, pathInferred);
22
22
  return {
23
23
  pathInferred,
24
24
  pathLocale,
@@ -0,0 +1,19 @@
1
+ import type { MarkdownHeader, MarkdownLink } from '@vuepress/markdown';
2
+ import type { App, PageFrontmatter } from '../types';
3
+ /**
4
+ * Render page content and extract related info
5
+ */
6
+ export declare const renderPageContent: ({ app, content, frontmatter, filePath, filePathRelative, }: {
7
+ app: App;
8
+ content: string;
9
+ frontmatter: PageFrontmatter;
10
+ filePath: string | null;
11
+ filePathRelative: string | null;
12
+ }) => Promise<{
13
+ contentRendered: string;
14
+ deps: string[];
15
+ headers: MarkdownHeader[];
16
+ hoistedTags: string[];
17
+ links: MarkdownLink[];
18
+ title: string;
19
+ }>;