vike 0.4.223 → 0.4.224-commit-00ed9fe

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 (183) hide show
  1. package/dist/cjs/node/api/build.js +4 -37
  2. package/dist/cjs/node/api/prepareViteApiCall.js +9 -3
  3. package/dist/cjs/node/plugin/index.js +8 -20
  4. package/dist/cjs/node/plugin/plugins/baseUrls.js +3 -1
  5. package/dist/cjs/node/plugin/plugins/{buildConfig/fixServerAssets.js → build/handleAssetsManifest.js} +130 -52
  6. package/dist/cjs/node/plugin/plugins/build/pluginAutoFullBuild.js +145 -0
  7. package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +52 -0
  8. package/dist/cjs/node/plugin/plugins/{buildConfig.js → build/pluginBuildConfig.js} +22 -84
  9. package/dist/cjs/node/plugin/plugins/{buildEntry/index.js → build/pluginBuildEntry.js} +9 -9
  10. package/dist/cjs/node/plugin/plugins/{distFileNames.js → build/pluginDistFileNames.js} +7 -7
  11. package/dist/cjs/node/plugin/plugins/{packageJsonFile.js → build/pluginDistPackageJsonFile.js} +6 -6
  12. package/dist/cjs/node/plugin/plugins/{suppressRollupWarning.js → build/pluginSuppressRollupWarning.js} +3 -3
  13. package/dist/cjs/node/plugin/plugins/build.js +21 -0
  14. package/dist/cjs/node/plugin/plugins/commonConfig.js +22 -4
  15. package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +1 -1
  16. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
  17. package/dist/cjs/node/plugin/plugins/devConfig/index.js +1 -1
  18. package/dist/cjs/node/plugin/plugins/envVars.js +2 -2
  19. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +9 -9
  20. package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
  21. package/dist/cjs/node/plugin/plugins/fileEnv.js +5 -2
  22. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -3
  23. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +2 -5
  24. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +5 -5
  25. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +7 -2
  26. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +16 -0
  27. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +50 -64
  28. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +2 -1
  29. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +3 -3
  30. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +19 -7
  31. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +277 -212
  32. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/virtual-files/getVirtualFilePageConfigValuesAll.js +4 -4
  33. package/dist/cjs/node/plugin/plugins/previewConfig.js +12 -7
  34. package/dist/cjs/node/plugin/shared/addSsrMiddleware.js +5 -1
  35. package/dist/cjs/node/plugin/shared/findPageFiles.js +3 -3
  36. package/dist/cjs/node/plugin/shared/getOutDirs.js +8 -7
  37. package/dist/cjs/node/plugin/shared/isViteServerBuild.js +47 -0
  38. package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +1 -1
  39. package/dist/cjs/node/plugin/utils.js +1 -0
  40. package/dist/cjs/node/prerender/context.js +3 -8
  41. package/dist/cjs/node/prerender/resolvePrerenderConfig.js +30 -21
  42. package/dist/cjs/node/prerender/runPrerender.js +28 -30
  43. package/dist/cjs/node/prerender/utils.js +1 -0
  44. package/dist/cjs/node/runtime/html/stream.js +7 -0
  45. package/dist/cjs/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +13 -5
  46. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +2 -4
  47. package/dist/cjs/node/runtime/renderPage/logErrorHint.js +13 -2
  48. package/dist/cjs/node/runtime/renderPage.js +6 -10
  49. package/dist/cjs/shared/getPageContextUrlComputed.js +1 -1
  50. package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +2 -5
  51. package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +3 -1
  52. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +20 -9
  53. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  54. package/dist/cjs/utils/debug.js +2 -1
  55. package/dist/cjs/utils/findFile.js +1 -1
  56. package/dist/cjs/utils/findPackageJson.js +1 -1
  57. package/dist/cjs/utils/isFilePathAbsoluteFilesystem.js +10 -4
  58. package/dist/cjs/utils/parseUrl-extras.js +1 -0
  59. package/dist/cjs/utils/path.js +1 -0
  60. package/dist/cjs/utils/requireResolve.js +11 -4
  61. package/dist/cjs/utils/sorter.js +0 -3
  62. package/dist/esm/client/client-routing-runtime/index.d.ts +1 -0
  63. package/dist/esm/client/client-routing-runtime/index.js +1 -0
  64. package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +8 -0
  65. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +10 -1
  66. package/dist/esm/node/api/build.js +4 -4
  67. package/dist/esm/node/api/prepareViteApiCall.js +9 -3
  68. package/dist/esm/node/plugin/index.d.ts +2 -1
  69. package/dist/esm/node/plugin/index.js +4 -17
  70. package/dist/esm/node/plugin/plugins/baseUrls.js +3 -1
  71. package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.d.ts +18 -0
  72. package/dist/esm/node/plugin/plugins/{buildConfig/fixServerAssets.js → build/handleAssetsManifest.js} +131 -53
  73. package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.d.ts +5 -0
  74. package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.js +140 -0
  75. package/dist/esm/node/plugin/plugins/build/pluginBuildApp.d.ts +3 -0
  76. package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +50 -0
  77. package/dist/esm/node/plugin/plugins/{buildConfig.d.ts → build/pluginBuildConfig.d.ts} +3 -3
  78. package/dist/esm/node/plugin/plugins/{buildConfig.js → build/pluginBuildConfig.js} +22 -81
  79. package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.d.ts +7 -0
  80. package/dist/esm/node/plugin/plugins/{buildEntry/index.js → build/pluginBuildEntry.js} +9 -9
  81. package/dist/esm/node/plugin/plugins/build/pluginDistFileNames.d.ts +3 -0
  82. package/dist/esm/node/plugin/plugins/{distFileNames.js → build/pluginDistFileNames.js} +7 -7
  83. package/dist/esm/node/plugin/plugins/build/pluginDistPackageJsonFile.d.ts +3 -0
  84. package/dist/esm/node/plugin/plugins/{packageJsonFile.js → build/pluginDistPackageJsonFile.js} +7 -6
  85. package/dist/esm/node/plugin/plugins/build/pluginSuppressRollupWarning.d.ts +3 -0
  86. package/dist/esm/node/plugin/plugins/{suppressRollupWarning.js → build/pluginSuppressRollupWarning.js} +3 -3
  87. package/dist/esm/node/plugin/plugins/build.d.ts +3 -0
  88. package/dist/esm/node/plugin/plugins/build.js +19 -0
  89. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +16 -6
  90. package/dist/esm/node/plugin/plugins/commonConfig.js +22 -4
  91. package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +1 -1
  92. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
  93. package/dist/esm/node/plugin/plugins/devConfig/index.js +1 -1
  94. package/dist/esm/node/plugin/plugins/envVars.js +2 -2
  95. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +10 -10
  96. package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
  97. package/dist/esm/node/plugin/plugins/fileEnv.js +5 -2
  98. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -3
  99. package/dist/esm/node/plugin/plugins/importUserCode/index.js +2 -5
  100. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +5 -5
  101. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +7 -2
  102. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.d.ts +1 -0
  103. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +13 -0
  104. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.d.ts +1 -1
  105. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +50 -64
  106. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +2 -1
  107. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +3 -3
  108. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +0 -1
  109. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +20 -8
  110. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +8 -6
  111. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +279 -214
  112. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/virtual-files/getVirtualFilePageConfigValuesAll.js +4 -4
  113. package/dist/esm/node/plugin/plugins/previewConfig.js +12 -7
  114. package/dist/esm/node/plugin/shared/addSsrMiddleware.d.ts +1 -1
  115. package/dist/esm/node/plugin/shared/addSsrMiddleware.js +5 -1
  116. package/dist/esm/node/plugin/shared/findPageFiles.js +3 -3
  117. package/dist/esm/node/plugin/shared/getHttpRequestAsyncStore.js +1 -3
  118. package/dist/esm/node/plugin/shared/getOutDirs.d.ts +2 -2
  119. package/dist/esm/node/plugin/shared/getOutDirs.js +8 -7
  120. package/dist/esm/node/plugin/shared/isViteServerBuild.d.ts +15 -0
  121. package/dist/esm/node/plugin/shared/isViteServerBuild.js +45 -0
  122. package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +1 -1
  123. package/dist/esm/node/plugin/utils.d.ts +1 -0
  124. package/dist/esm/node/plugin/utils.js +1 -0
  125. package/dist/esm/node/prerender/context.d.ts +0 -2
  126. package/dist/esm/node/prerender/context.js +4 -9
  127. package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +11 -6
  128. package/dist/esm/node/prerender/resolvePrerenderConfig.js +31 -22
  129. package/dist/esm/node/prerender/runPrerender.d.ts +7 -25
  130. package/dist/esm/node/prerender/runPrerender.js +29 -31
  131. package/dist/esm/node/prerender/utils.d.ts +1 -0
  132. package/dist/esm/node/prerender/utils.js +1 -0
  133. package/dist/esm/node/runtime/globalContext.d.ts +3 -2
  134. package/dist/esm/node/runtime/html/stream.js +7 -0
  135. package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.d.ts +3 -1
  136. package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +14 -6
  137. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +3 -1
  138. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +2 -4
  139. package/dist/esm/node/runtime/renderPage/logErrorHint.js +13 -2
  140. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +165 -5
  141. package/dist/esm/node/runtime/renderPage.js +7 -11
  142. package/dist/esm/shared/getPageContextUrlComputed.js +1 -1
  143. package/dist/esm/shared/page-configs/Config.d.ts +12 -2
  144. package/dist/esm/shared/page-configs/PageConfig.d.ts +5 -5
  145. package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +2 -5
  146. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +3 -1
  147. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +2 -0
  148. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +20 -9
  149. package/dist/esm/types/index.d.ts +2 -0
  150. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  151. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  152. package/dist/esm/utils/debug.js +2 -1
  153. package/dist/esm/utils/findFile.js +1 -1
  154. package/dist/esm/utils/findPackageJson.js +1 -1
  155. package/dist/esm/utils/isFilePathAbsoluteFilesystem.js +8 -2
  156. package/dist/esm/utils/parseUrl-extras.js +1 -0
  157. package/dist/esm/utils/path.js +1 -0
  158. package/dist/esm/utils/projectInfo.d.ts +1 -1
  159. package/dist/esm/utils/requireResolve.js +11 -4
  160. package/dist/esm/utils/sorter.d.ts +18 -5
  161. package/dist/esm/utils/sorter.js +0 -3
  162. package/package.json +9 -16
  163. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +0 -119
  164. package/dist/cjs/node/plugin/plugins/buildApp.js +0 -76
  165. package/dist/cjs/node/plugin/plugins/removeRequireHookPlugin.js +0 -17
  166. package/dist/cjs/node/plugin/shared/getFullBuildInlineConfig.js +0 -20
  167. package/dist/cjs/node/plugin/shared/viteIsSSR.js +0 -31
  168. package/dist/esm/node/plugin/plugins/autoFullBuild.d.ts +0 -3
  169. package/dist/esm/node/plugin/plugins/autoFullBuild.js +0 -114
  170. package/dist/esm/node/plugin/plugins/buildApp.d.ts +0 -3
  171. package/dist/esm/node/plugin/plugins/buildApp.js +0 -74
  172. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.d.ts +0 -20
  173. package/dist/esm/node/plugin/plugins/buildEntry/index.d.ts +0 -8
  174. package/dist/esm/node/plugin/plugins/distFileNames.d.ts +0 -3
  175. package/dist/esm/node/plugin/plugins/packageJsonFile.d.ts +0 -3
  176. package/dist/esm/node/plugin/plugins/removeRequireHookPlugin.d.ts +0 -3
  177. package/dist/esm/node/plugin/plugins/removeRequireHookPlugin.js +0 -15
  178. package/dist/esm/node/plugin/plugins/suppressRollupWarning.d.ts +0 -3
  179. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.d.ts +0 -2
  180. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.js +0 -17
  181. package/dist/esm/node/plugin/shared/viteIsSSR.d.ts +0 -11
  182. package/dist/esm/node/plugin/shared/viteIsSSR.js +0 -29
  183. package/dist-cjs-fixup.mjs +0 -41
@@ -0,0 +1,7 @@
1
+ export { pluginBuildEntry };
2
+ export { set_macro_ASSETS_MANIFEST };
3
+ import type { Plugin, Rollup } from 'vite';
4
+ type Bundle = Rollup.OutputBundle;
5
+ type Options = Rollup.NormalizedOutputOptions;
6
+ declare function pluginBuildEntry(): Plugin[];
7
+ declare function set_macro_ASSETS_MANIFEST(options: Options, bundle: Bundle, assetsJsonFilePath: string): Promise<void>;
@@ -1,23 +1,24 @@
1
- export { buildEntry };
2
- export { set_ASSETS_MANIFEST };
1
+ export { pluginBuildEntry };
2
+ export { set_macro_ASSETS_MANIFEST };
3
3
  import { serverProductionEntryPlugin } from '@brillout/vite-plugin-server-entry/plugin';
4
4
  import { virtualFileIdImportUserCodeServer } from '../../../shared/virtual-files/virtualFileImportUserCode.js';
5
5
  import { assert, projectInfo, toPosixPath } from '../../utils.js';
6
6
  import fs from 'fs/promises';
7
7
  import path from 'path';
8
8
  import { createRequire } from 'module';
9
- // @ts-ignore Shimmed by dist-cjs-fixup.js for CJS build.
9
+ // @ts-ignore import.meta.url is shimmed at dist/cjs by dist-cjs-fixup.js.
10
10
  const importMetaUrl = import.meta.url;
11
11
  const require_ = createRequire(importMetaUrl);
12
12
  import { isUsingClientRouter } from '../extractExportNamesPlugin.js';
13
13
  import { assertBuildInfo, getViteConfigRuntime } from '../../../runtime/globalContext.js';
14
14
  import { getOutDirs } from '../../shared/getOutDirs.js';
15
15
  const ASSETS_MANIFEST = '__VITE_ASSETS_MANIFEST__';
16
- function buildEntry() {
16
+ function pluginBuildEntry() {
17
17
  let config;
18
18
  return [
19
19
  {
20
- name: 'vike:buildEntry',
20
+ name: 'vike:build:pluginBuildEntry',
21
+ apply: 'build',
21
22
  enforce: 'post',
22
23
  async configResolved(config_) {
23
24
  config = config_;
@@ -58,13 +59,12 @@ function getServerProductionEntryCode(config) {
58
59
  ].join('\n');
59
60
  return importerCode;
60
61
  }
61
- /** Set the value of the ASSETS_MANIFEST constant inside dist/server/entry.js (or dist/server/index.js) */
62
- async function set_ASSETS_MANIFEST(options, bundle) {
62
+ // Set the value of the ASSETS_MANIFEST constant inside dist/server/entry.js (or dist/server/index.js)
63
+ async function set_macro_ASSETS_MANIFEST(options, bundle, assetsJsonFilePath) {
63
64
  const { dir } = options;
64
65
  assert(dir);
65
66
  const chunkPath = find_ASSETS_MANIFEST(bundle);
66
67
  const chunkFilePath = path.join(dir, chunkPath);
67
- const assetsJsonFilePath = path.join(dir, '..', 'assets.json');
68
68
  const [assetsJsonString, chunkFileContent] = await Promise.all([
69
69
  await fs.readFile(assetsJsonFilePath, 'utf8'),
70
70
  await fs.readFile(chunkFilePath, 'utf8')
@@ -88,7 +88,7 @@ function find_ASSETS_MANIFEST(bundle) {
88
88
  function getImportPath(config) {
89
89
  // We resolve filePathAbsolute even if we don't use it: we use require.resolve() as an assertion that the relative path is correct
90
90
  const filePathAbsolute = toPosixPath(
91
- // [RELATIVE_PATH_FROM_DIST] Current file: node_modules/vike/dist/esm/node/plugin/plugins/buildEntry/index.js
91
+ // [RELATIVE_PATH_FROM_DIST] Current file: node_modules/vike/dist/esm/node/plugin/plugins/pluginBuildEntry/index.js
92
92
  require_.resolve(`../../../../../../dist/esm/__internal/index.js`));
93
93
  if (
94
94
  // Let's implement a new config if a user needs the import to be a relative path instead of 'vike/__internal' (AFAIK a relative path is needed only if a framework has npm package 'vike' as direct dependency instead of a peer dependency and if the user of that framework uses pnpm)
@@ -0,0 +1,3 @@
1
+ export { pluginDistFileNames };
2
+ import type { Plugin } from 'vite';
3
+ declare function pluginDistFileNames(): Plugin;
@@ -1,15 +1,15 @@
1
- export { distFileNames };
1
+ export { pluginDistFileNames };
2
2
  // Attempt to preserve file structure of `.page.js` files:
3
3
  // - https://github.com/vikejs/vike/commit/11a4c49e5403aa7c37c8020c462b499425b41854
4
4
  // - Blocker: https://github.com/rollup/rollup/issues/4724
5
- import { assertPosixPath, assert, assertUsage, isArray, isCallable } from '../utils.js';
5
+ import { assertPosixPath, assert, assertUsage, isArray, isCallable } from '../../utils.js';
6
6
  import path from 'path';
7
7
  import crypto from 'crypto';
8
- import { getAssetsDir } from '../shared/getAssetsDir.js';
9
- import { assertModuleId, getModuleFilePathAbsolute } from '../shared/getFilePath.js';
10
- function distFileNames() {
8
+ import { getAssetsDir } from '../../shared/getAssetsDir.js';
9
+ import { assertModuleId, getModuleFilePathAbsolute } from '../../shared/getFilePath.js';
10
+ function pluginDistFileNames() {
11
11
  return {
12
- name: 'vike:distFileNames',
12
+ name: 'vike:build:pluginDistFileNames',
13
13
  apply: 'build',
14
14
  enforce: 'post',
15
15
  configResolved(config) {
@@ -28,7 +28,7 @@ function distFileNames() {
28
28
  else {
29
29
  // If a user needs this:
30
30
  // - assertUsage() that the naming provided by the user ends with `.[hash][extname]`
31
- // - It's needed for getHash() of fixServerAssets()
31
+ // - It's needed for getHash() of handleAssetsManifest()
32
32
  // - Asset URLs should always contain a hash: it's paramount for caching assets.
33
33
  // - If rollupOutput.assetFileNames is a function then use a wrapper function to apply the assertUsage()
34
34
  assertUsage(false, "Setting Vite's configuration build.rollupOptions.output.assetFileNames is currently forbidden. Reach out if you need to use.");
@@ -0,0 +1,3 @@
1
+ export { pluginDistPackageJsonFile };
2
+ import type { Plugin } from 'vite';
3
+ declare function pluginDistPackageJsonFile(): Plugin;
@@ -6,19 +6,20 @@
6
6
  * require() of dist/server/pageFiles.js from node_modules/vike/dist/esm/node/runtime/page-files/setup.js is an ES module file as it is a .js file whose nearest parent package.json contains "type": "module" which defines all .js files in that package scope as ES modules.
7
7
  * Reproduction: https://github.com/brillout/vite-plugin-ssr-server-import-syntax
8
8
  */
9
- export { packageJsonFile };
10
- import { rollupIsEsm } from '../shared/rollupIsEsm.js';
11
- import { viteIsSSR } from '../shared/viteIsSSR.js';
12
- function packageJsonFile() {
9
+ // TODO/refactor: prefix all other plugins with `plugin` as well?
10
+ export { pluginDistPackageJsonFile };
11
+ import { rollupIsEsm } from '../../shared/rollupIsEsm.js';
12
+ import { isViteServerBuild } from '../../shared/isViteServerBuild.js';
13
+ function pluginDistPackageJsonFile() {
13
14
  let config;
14
15
  return {
15
- name: 'vike:packageJsonFile',
16
+ name: 'vike:build:pluginDistPackageJsonFile',
16
17
  apply: 'build',
17
18
  configResolved(config_) {
18
19
  config = config_;
19
20
  },
20
21
  generateBundle(options, bundle) {
21
- if (!viteIsSSR(config))
22
+ if (!isViteServerBuild(config))
22
23
  return;
23
24
  const isEsm = rollupIsEsm(options);
24
25
  const fileName = 'package.json';
@@ -0,0 +1,3 @@
1
+ export { pluginSuppressRollupWarning };
2
+ import type { Plugin } from 'vite';
3
+ declare function pluginSuppressRollupWarning(): Plugin;
@@ -1,8 +1,8 @@
1
1
  // Suppress Rollup warnings `Generated an empty chunk: "index.page.server"`
2
- export { suppressRollupWarning };
3
- function suppressRollupWarning() {
2
+ export { pluginSuppressRollupWarning };
3
+ function pluginSuppressRollupWarning() {
4
4
  return {
5
- name: 'vike:suppressRollupWarning',
5
+ name: 'vike:build:pluginSuppressRollupWarning',
6
6
  apply: 'build',
7
7
  enforce: 'post',
8
8
  async configResolved(config) {
@@ -0,0 +1,3 @@
1
+ export { build };
2
+ import type { Plugin } from 'vite';
3
+ declare function build(): Plugin[];
@@ -0,0 +1,19 @@
1
+ export { build };
2
+ import { pluginBuildApp } from './build/pluginBuildApp.js';
3
+ import { pluginDistPackageJsonFile } from './build/pluginDistPackageJsonFile.js';
4
+ import { pluginSuppressRollupWarning } from './build/pluginSuppressRollupWarning.js';
5
+ import { pluginDistFileNames } from './build/pluginDistFileNames.js';
6
+ import { pluginAutoFullBuild } from './build/pluginAutoFullBuild.js';
7
+ import { pluginBuildEntry } from './build/pluginBuildEntry.js';
8
+ import { pluginBuildConfig } from './build/pluginBuildConfig.js';
9
+ function build() {
10
+ return [
11
+ ...pluginBuildConfig(),
12
+ ...pluginBuildApp(),
13
+ ...pluginAutoFullBuild(),
14
+ ...pluginBuildEntry(),
15
+ pluginDistPackageJsonFile(),
16
+ pluginSuppressRollupWarning(),
17
+ pluginDistFileNames()
18
+ ];
19
+ }
@@ -1,5 +1,7 @@
1
1
  export { commonConfig };
2
- import { type InlineConfig, type Plugin } from 'vite';
2
+ export { getVikeConfigPublic };
3
+ export type { VikeConfigPublic };
4
+ import { type InlineConfig, type Plugin, type ResolvedConfig, type UserConfig } from 'vite';
3
5
  import { type VikeConfigObject } from './importUserCode/v1-design/getVikeConfig.js';
4
6
  import type { PrerenderContextPublic } from '../../prerender/runPrerender.js';
5
7
  declare module 'vite' {
@@ -9,11 +11,19 @@ declare module 'vite' {
9
11
  _root?: string;
10
12
  _baseViteOriginal?: string;
11
13
  _viteConfigEnhanced?: InlineConfig;
12
- vike?: {
13
- config: VikeConfigObject['global']['config'];
14
- pages: VikeConfigObject['pages'];
15
- prerenderContext?: PrerenderContextPublic;
16
- };
14
+ _vike?: VikeConfigPublic;
15
+ _vikeConfigObject?: VikeConfigObject;
17
16
  }
18
17
  }
18
+ type VikeConfigPublic = {
19
+ config: VikeConfigObject['global']['config'];
20
+ pages: VikeConfigObject['pages'];
21
+ prerenderContext?: PrerenderContextPublic;
22
+ };
19
23
  declare function commonConfig(vikeVitePluginOptions: unknown): Plugin[];
24
+ /**
25
+ * Get all the information Vike knows about the app in your Vite plugin.
26
+ *
27
+ * https://vike.dev/getVikeConfig
28
+ */
29
+ declare function getVikeConfigPublic(config: ResolvedConfig | UserConfig): VikeConfigPublic;
@@ -1,7 +1,8 @@
1
1
  export { commonConfig };
2
+ export { getVikeConfigPublic };
2
3
  import { mergeConfig } from 'vite';
3
4
  import { assert, assertUsage, assertWarning, findPackageJson, hasProp, isDevCheck, isDocker, isObject } from '../utils.js';
4
- import { assertRollupInput } from './buildConfig.js';
5
+ import { assertRollupInput } from './build/pluginBuildConfig.js';
5
6
  import { installRequireShim_setUserRootDir } from '@brillout/require-shim';
6
7
  import pc from '@brillout/picocolors';
7
8
  import path from 'path';
@@ -11,7 +12,8 @@ import { isViteCliCall } from '../shared/isViteCliCall.js';
11
12
  import { isVikeCliOrApi } from '../../api/context.js';
12
13
  import { getVikeConfig2 } from './importUserCode/v1-design/getVikeConfig.js';
13
14
  import { assertViteRoot, getViteRoot, normalizeViteRoot } from '../../api/prepareViteApiCall.js';
14
- import { isPrerenderEnabled, temp_disablePrerenderAutoRun } from '../../prerender/context.js';
15
+ import { temp_disablePrerenderAutoRun } from '../../prerender/context.js';
16
+ import { resolvePrerenderConfigGlobal } from '../../prerender/resolvePrerenderConfig.js';
15
17
  const pluginName = 'vike:commonConfig';
16
18
  function commonConfig(vikeVitePluginOptions) {
17
19
  return [
@@ -30,13 +32,14 @@ function commonConfig(vikeVitePluginOptions) {
30
32
  _isDev: isDev,
31
33
  _root: root,
32
34
  _vikeVitePluginOptions: vikeVitePluginOptions,
33
- vike: {
35
+ _vikeConfigObject: vikeConfig,
36
+ _vike: {
34
37
  pages: vikeConfig.pages,
35
38
  config: vikeConfig.global.config
36
39
  },
37
40
  // TODO/v1-release: remove https://github.com/vikejs/vike/issues/2122
38
41
  configVikePromise: Promise.resolve({
39
- prerender: isPrerenderEnabled(vikeConfig)
42
+ prerender: resolvePrerenderConfigGlobal(vikeConfig).isPrerenderingEnabled
40
43
  })
41
44
  };
42
45
  }
@@ -168,3 +171,18 @@ function temp_supportOldInterface(config) {
168
171
  }
169
172
  assert(false);
170
173
  }
174
+ // TODO/soon rename:
175
+ // - `getVikeConfig()` => `resolveVikeConfig()` ?
176
+ // - `getVikeConfigPublic()` => `getVikeConfig()`
177
+ // - `VikeConfigPublic` => `VikeConfig` ?
178
+ // - `VikeConfigObject` => `VikeConfigInternal` ?
179
+ /**
180
+ * Get all the information Vike knows about the app in your Vite plugin.
181
+ *
182
+ * https://vike.dev/getVikeConfig
183
+ */
184
+ function getVikeConfigPublic(config) {
185
+ const vikeConfig = config._vike;
186
+ assert(vikeConfig);
187
+ return vikeConfig;
188
+ }
@@ -5,7 +5,7 @@ import { assert } from '../../utils.js';
5
5
  import { createRequire } from 'module';
6
6
  import { dirname } from 'path';
7
7
  import { fileURLToPath } from 'url';
8
- // @ts-ignore Shimmed by dist-cjs-fixup.js for CJS build.
8
+ // @ts-ignore import.meta.url is shimmed at dist/cjs by dist-cjs-fixup.js.
9
9
  const importMetaUrl = import.meta.url;
10
10
  const require_ = createRequire(importMetaUrl);
11
11
  const __dirname_ = dirname(fileURLToPath(importMetaUrl));
@@ -1,8 +1,8 @@
1
1
  export { determineOptimizeDeps };
2
2
  import { findPageFiles } from '../../shared/findPageFiles.js';
3
3
  import { assert, assertIsNpmPackageImport, createDebugger, isArray, unique } from '../../utils.js';
4
- import { getVikeConfig } from '../importUserCode/v1-design/getVikeConfig.js';
5
- import { analyzeClientEntries } from '../buildConfig.js';
4
+ import { getVikeConfig, isOverriden } from '../importUserCode/v1-design/getVikeConfig.js';
5
+ import { analyzeClientEntries } from '../build/pluginBuildConfig.js';
6
6
  import { virtualFileIdImportUserCodeClientCR, virtualFileIdImportUserCodeClientSR } from '../../../shared/virtual-files/virtualFileImportUserCode.js';
7
7
  import { getFilePathResolved } from '../../shared/getFilePath.js';
8
8
  const debug = createDebugger('vike:optimizeDeps');
@@ -44,11 +44,11 @@ async function getPageDeps(config, pageConfigs) {
44
44
  // V1 design
45
45
  {
46
46
  pageConfigs.forEach((pageConfig) => {
47
- Object.values(pageConfig.configValueSources).forEach((sources) => {
47
+ Object.entries(pageConfig.configValueSources).forEach(([configName, sources]) => {
48
48
  sources
49
- .filter((c) => !c.isOverriden)
49
+ .filter((source) => !isOverriden(source, configName, pageConfig))
50
50
  .forEach((configValueSource) => {
51
- if (!configValueSource.valueIsImportedAtRuntime)
51
+ if (!configValueSource.valueIsLoadedWithImport && !configValueSource.valueIsFilePath)
52
52
  return;
53
53
  const { definedAtFilePath, configEnv } = configValueSource;
54
54
  if (!configEnv.client)
@@ -79,7 +79,7 @@ function devConfig() {
79
79
  if (config.server.middlewareMode || hasHonoViteDevServer)
80
80
  return;
81
81
  return () => {
82
- addSsrMiddleware(server.middlewares, config, false);
82
+ addSsrMiddleware(server.middlewares, config, false, null);
83
83
  };
84
84
  }
85
85
  },
@@ -4,7 +4,7 @@ import { assert, assertPosixPath, assertUsage, assertWarning, escapeRegex, isArr
4
4
  import { sourceMapPassthrough } from '../shared/rollupSourceMap.js';
5
5
  import { getModuleFilePathAbsolute } from '../shared/getFilePath.js';
6
6
  import { normalizeId } from '../shared/normalizeId.js';
7
- import { viteIsSSR_safe } from '../shared/viteIsSSR.js';
7
+ import { isViteServerBuild_safe } from '../shared/isViteServerBuild.js';
8
8
  // TODO/enventually: (after we implemented vike.config.js)
9
9
  // - Make import.meta.env work inside +config.js
10
10
  // - For it to work, we'll probably need the user to define the settings (e.g. `envDir`) for loadEnv() inside vike.config.js instead of vite.config.js
@@ -37,7 +37,7 @@ function envVarsPlugin() {
37
37
  if (!code.includes('import.meta.env.'))
38
38
  return;
39
39
  const isBuild = config.command === 'build';
40
- const isClientSide = !viteIsSSR_safe(config, options);
40
+ const isClientSide = !isViteServerBuild_safe(config, options);
41
41
  Object.entries(envsAll)
42
42
  .filter(([key]) => {
43
43
  // Already handled by Vite
@@ -13,11 +13,11 @@ import { isAsset } from '../shared/isAsset.js';
13
13
  import { getImportStatements } from '../shared/parseEsModule.js';
14
14
  import { sourceMapRemove } from '../shared/rollupSourceMap.js';
15
15
  import pc from '@brillout/picocolors';
16
- import { fixServerAssets_isEnabled } from './buildConfig/fixServerAssets.js';
17
- import { getVikeConfig, isV1Design } from './importUserCode/v1-design/getVikeConfig.js';
16
+ import { handleAssetsManifest_isFixEnabled } from './build/handleAssetsManifest.js';
17
+ import { getVikeConfig } from './importUserCode/v1-design/getVikeConfig.js';
18
18
  import { assertV1Design } from '../../shared/assertV1Design.js';
19
19
  import { normalizeId } from '../shared/normalizeId.js';
20
- import { viteIsSSR_safe } from '../shared/viteIsSSR.js';
20
+ import { isViteServerBuild_safe } from '../shared/isViteServerBuild.js';
21
21
  const extractAssetsRE = /(\?|&)extractAssets(?:&|$)/;
22
22
  const rawRE = /(\?|&)raw(?:&|$)/;
23
23
  const urlRE = /(\?|&)url(?:&|$)/;
@@ -26,7 +26,7 @@ const debug = createDebugger('vike:extractAssets');
26
26
  function extractAssetsPlugin() {
27
27
  let config;
28
28
  let vikeConfig;
29
- let isServerAssetsFixEnabled;
29
+ let isFixEnabled;
30
30
  return [
31
31
  // This plugin removes all JavaScript from server-side only code, so that only CSS imports remains. (And also satic files imports e.g. `import logoURL from './logo.svg.js'`).
32
32
  {
@@ -39,14 +39,14 @@ function extractAssetsPlugin() {
39
39
  if (!extractAssetsRE.test(id)) {
40
40
  return;
41
41
  }
42
- if (isServerAssetsFixEnabled) {
43
- // I'm guessing isServerAssetsFixEnabled can only be true when mixing both designs: https://github.com/vikejs/vike/issues/1480
42
+ if (isFixEnabled) {
43
+ // I'm guessing isFixEnabled can only be true when mixing both designs: https://github.com/vikejs/vike/issues/1480
44
44
  assertV1Design(vikeConfig.pageConfigs, true);
45
45
  assert(false);
46
46
  }
47
47
  // TODO/now: add meta.default
48
48
  assert(vikeConfig.global.config.includeAssetsImportedByServer ?? true);
49
- assert(!viteIsSSR_safe(config, options));
49
+ assert(!isViteServerBuild_safe(config, options));
50
50
  const importStatements = await getImportStatements(src);
51
51
  const moduleNames = getImportedModules(importStatements);
52
52
  const code = moduleNames.map((moduleName) => `import '${moduleName}';`).join('\n');
@@ -63,7 +63,7 @@ function extractAssetsPlugin() {
63
63
  // - Vite's `vite:resolve` plugin; https://github.com/vitejs/vite/blob/d649daba7682791178b711d9a3e44a6b5d00990c/packages/vite/src/node/plugins/resolve.ts#L105
64
64
  enforce: 'pre',
65
65
  async resolveId(source, importer, options) {
66
- if (viteIsSSR_safe(config, options)) {
66
+ if (isViteServerBuild_safe(config, options)) {
67
67
  // When building for the server, there should never be a `?extractAssets` query
68
68
  assert(!extractAssetsRE.test(source));
69
69
  assert(importer === undefined || !extractAssetsRE.test(importer));
@@ -140,8 +140,8 @@ function extractAssetsPlugin() {
140
140
  async configResolved(config_) {
141
141
  config = config_;
142
142
  vikeConfig = await getVikeConfig(config);
143
- isServerAssetsFixEnabled = fixServerAssets_isEnabled() && (await isV1Design(config));
144
- if (!isServerAssetsFixEnabled) {
143
+ isFixEnabled = handleAssetsManifest_isFixEnabled(config);
144
+ if (!isFixEnabled) {
145
145
  // https://github.com/vikejs/vike/issues/1060
146
146
  assertUsage(!config.plugins.find((p) => p.name === 'vite-tsconfig-paths'), 'vite-tsconfig-paths not supported, remove it and use vite.config.js#resolve.alias instead');
147
147
  }
@@ -5,7 +5,7 @@ import { assert, getFileExtension, createDebugger, getGlobalObject, assertUsage
5
5
  import { getExportNames } from '../shared/parseEsModule.js';
6
6
  import { sourceMapRemove } from '../shared/rollupSourceMap.js';
7
7
  import { normalizeId } from '../shared/normalizeId.js';
8
- import { viteIsSSR_options } from '../shared/viteIsSSR.js';
8
+ import { isViteServerBuild_options } from '../shared/isViteServerBuild.js';
9
9
  const extractExportNamesRE = /(\?|&)extractExportNames(?:&|$)/;
10
10
  const debug = createDebugger('vike:extractExportNames');
11
11
  const globalObject = getGlobalObject('plugins/extractExportNamesPlugin.ts', {});
@@ -16,7 +16,7 @@ function extractExportNamesPlugin() {
16
16
  enforce: 'post',
17
17
  async transform(src, id, options) {
18
18
  id = normalizeId(id);
19
- const isClientSide = !viteIsSSR_options(options);
19
+ const isClientSide = !isViteServerBuild_options(options);
20
20
  if (extractExportNamesRE.test(id)) {
21
21
  const code = await getExtractExportNamesCode(src, isClientSide, !isDev, id);
22
22
  debug('id ' + id, ['result:\n' + code.code.trim(), 'src:\n' + src.trim()]);
@@ -55,10 +55,13 @@ function fileEnv() {
55
55
  Array.from(this.getModuleIds())
56
56
  .filter((id) => !skip(id))
57
57
  .forEach((moduleId) => {
58
- const { importers, dynamicImporters } = this.getModuleInfo(moduleId);
58
+ const mod = this.getModuleInfo(moduleId);
59
+ const { importers } = mod;
59
60
  if (importers.length === 0) {
60
61
  // Dynamic imports can only be verified at runtime
61
- assert(dynamicImporters.length > 0);
62
+ /* This assertion can fail: https://github.com/vikejs/vike/issues/2227
63
+ assert(dynamicImporters.length > 0)
64
+ */
62
65
  return;
63
66
  }
64
67
  assertFileEnv(moduleId, !!config.build.ssr, importers, false);
@@ -7,12 +7,12 @@ import path from 'path';
7
7
  import { getVirtualFilePageConfigs } from './v1-design/virtual-files/getVirtualFilePageConfigs.js';
8
8
  import { isV1Design as isV1Design_ } from './v1-design/getVikeConfig.js';
9
9
  import { getOutDirs } from '../../shared/getOutDirs.js';
10
- import { viteIsSSR_options } from '../../shared/viteIsSSR.js';
10
+ import { isViteServerBuild_options } from '../../shared/isViteServerBuild.js';
11
11
  async function getVirtualFileImportUserCode(id, options, vikeConfig, config, isDev) {
12
12
  const idParsed = isVirtualFileIdImportUserCode(id);
13
13
  assert(idParsed);
14
14
  const { isForClientSide, isClientRouting } = idParsed;
15
- assert(isForClientSide === !viteIsSSR_options(options));
15
+ assert(isForClientSide === !isViteServerBuild_options(options));
16
16
  const code = await getCode(config, vikeConfig, isForClientSide, isClientRouting, isDev, id);
17
17
  return code;
18
18
  }
@@ -69,7 +69,7 @@ ${await getVirtualFilePageConfigs(isForClientSide, isDev, id, isClientRouting, c
69
69
 
70
70
  `;
71
71
  // We still use import.meta.glob() when using th V1 design in order to not break the V1 design deprecation warning
72
- const isV1Design = await isV1Design_(config);
72
+ const isV1Design = isV1Design_(config);
73
73
  // Old design => no + files => only to enable pre-rendering is setting `vike({prerender})` in vite.config.js
74
74
  const isPrerendering = !!vikeConfig.global.config.prerender;
75
75
  fileTypes
@@ -21,11 +21,8 @@ function importUserCode() {
21
21
  vikeConfig = await getVikeConfig(config_);
22
22
  config = config_;
23
23
  // TODO/v1-release: remove
24
- {
25
- const isV1 = await isV1Design(config);
26
- if (!isV1)
27
- config.experimental.importGlobRestoreExtension = true;
28
- }
24
+ if (!isV1Design(config))
25
+ config.experimental.importGlobRestoreExtension = true;
29
26
  },
30
27
  resolveId(id) {
31
28
  if (isVirtualFileId(id)) {
@@ -29,7 +29,7 @@ function assertExtensionName(plusFile) {
29
29
  assertUsage(name, `Vike extension name missing: the config ${filePathToShowToUser} must define the setting ${pc.cyan('name')}`);
30
30
  }
31
31
  function assertExtensionsRequire(pageConfig) {
32
- const plusFilesRelevantList = Object.values(pageConfig.plusFiles).flat(1);
32
+ const plusFilesRelevantList = pageConfig.plusFiles;
33
33
  // Collect extensions
34
34
  const extensions = {};
35
35
  plusFilesRelevantList.forEach((plusFile) => {
@@ -63,8 +63,8 @@ function getConfigRequireValue(plusFile) {
63
63
  const confVal = getConfVal(plusFile, 'require');
64
64
  if (!confVal)
65
65
  return null;
66
- assert(confVal.configValueLoaded);
67
- const require = confVal.configValue;
66
+ assert(confVal.valueIsLoaded);
67
+ const require = confVal.value;
68
68
  const { filePathToShowToUserResolved } = plusFile.filePath;
69
69
  assert(filePathToShowToUserResolved);
70
70
  assertUsage(isObjectOfStrings(require), `The setting ${pc.bold('require')} defined at ${filePathToShowToUserResolved} should be an object with string values (${pc.bold('Record<string, string>')}).`);
@@ -74,8 +74,8 @@ function getNameValue(plusFile) {
74
74
  const confVal = getConfVal(plusFile, 'name');
75
75
  if (!confVal)
76
76
  return null;
77
- assert(confVal.configValueLoaded);
78
- const name = confVal.configValue;
77
+ assert(confVal.valueIsLoaded);
78
+ const name = confVal.value;
79
79
  const filePathToShowToUser = getFilePathToShowToUser(plusFile);
80
80
  assertUsage(typeof name === 'string', `The setting ${pc.bold('name')} defined at ${filePathToShowToUser} should be a string.`);
81
81
  return name;
@@ -31,7 +31,12 @@ const configDefinitionsBuiltIn = {
31
31
  cumulative: true
32
32
  },
33
33
  route: {
34
- env: { server: true, client: 'if-client-routing' },
34
+ env: {
35
+ server: true,
36
+ client: 'if-client-routing',
37
+ // For vite-plugin-vercel
38
+ config: true
39
+ },
35
40
  eager: true
36
41
  },
37
42
  guard: {
@@ -157,7 +162,7 @@ const configDefinitionsBuiltIn = {
157
162
  'string'
158
163
  ]
159
164
  },
160
- viteEnvironmentAPI: {
165
+ vite6BuilderApp: {
161
166
  env: { config: true },
162
167
  global: true,
163
168
  type: 'boolean'
@@ -0,0 +1 @@
1
+ export declare const ignorePatternsBuiltIn: readonly ["**/node_modules/**", "**/ejected/**", "**/*.telefunc.*", "**/*.generated.*"];
@@ -0,0 +1,13 @@
1
+ export const ignorePatternsBuiltIn = [
2
+ '**/node_modules/**',
3
+ // Ejected Vike extensions, see https://github.com/snake-py/eject
4
+ '**/ejected/**',
5
+ // Allow:
6
+ // ```bash
7
+ // +Page.js
8
+ // +Page.telefunc.js
9
+ // ```
10
+ '**/*.telefunc.*',
11
+ // https://github.com/vikejs/vike/discussions/2222
12
+ '**/*.generated.*'
13
+ ];
@@ -1,7 +1,7 @@
1
1
  export { crawlPlusFiles };
2
2
  export { isPlusFile };
3
3
  export { getPlusFileValueConfigName };
4
- declare function crawlPlusFiles(userRootDir: string, outDirAbsoluteFilesystem: null | string): Promise<{
4
+ declare function crawlPlusFiles(userRootDir: string): Promise<{
5
5
  filePathAbsoluteUserRootDir: string;
6
6
  }[]>;
7
7
  declare function isPlusFile(filePath: string): boolean;