vike 0.4.267 → 0.4.268-commit-45c1759

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 (204) hide show
  1. package/RenderErrorPage.js +2 -2
  2. package/abort.js +2 -2
  3. package/dist/client/__internal/index.d.ts +2 -0
  4. package/dist/client/__internal/index.js +3 -0
  5. package/dist/client/runtime-client-routing/createPageContextClient.d.ts +5 -0
  6. package/dist/client/runtime-client-routing/getGlobalContextClientInternal.d.ts +5 -0
  7. package/dist/client/runtime-client-routing/getPageContextFromHooks.d.ts +26 -2
  8. package/dist/client/runtime-client-routing/getPageContextFromHooks.js +4 -5
  9. package/dist/client/runtime-client-routing/renderPageClient.d.ts +481 -10
  10. package/dist/client/runtime-client-routing/renderPageClient.js +116 -41
  11. package/dist/client/runtime-client-routing/streamedValues.d.ts +5 -0
  12. package/dist/client/runtime-client-routing/streamedValues.js +23 -0
  13. package/dist/client/runtime-server-routing/createPageContextClient.d.ts +5 -0
  14. package/dist/client/runtime-server-routing/entry.js +1 -1
  15. package/dist/client/runtime-server-routing/getGlobalContextClientInternal.d.ts +5 -0
  16. package/dist/client/shared/getGlobalContextClientInternalShared.d.ts +5 -0
  17. package/dist/client/shared/getGlobalContextClientInternalShared.js +2 -0
  18. package/dist/client/shared/getJsonSerializedInHtml.d.ts +2 -2
  19. package/dist/client/shared/getJsonSerializedInHtml.js +9 -6
  20. package/dist/client/shared/loadPageConfigsLazyClientSide.js +0 -4
  21. package/dist/client/shared/removeFoucBuster.js +14 -3
  22. package/dist/client/shared/streamedValues/asyncIterable.d.ts +4 -0
  23. package/dist/client/shared/streamedValues/asyncIterable.js +26 -0
  24. package/dist/client/shared/streamedValues/lines.d.ts +11 -0
  25. package/dist/client/shared/streamedValues/lines.js +19 -0
  26. package/dist/client/shared/streamedValues/promise.d.ts +4 -0
  27. package/dist/client/shared/streamedValues/promise.js +19 -0
  28. package/dist/client/shared/streamedValues/readableStream.d.ts +4 -0
  29. package/dist/client/shared/streamedValues/readableStream.js +44 -0
  30. package/dist/client/shared/streamedValues/registry.d.ts +21 -0
  31. package/dist/client/shared/streamedValues/registry.js +40 -0
  32. package/dist/client/shared/streamedValues.d.ts +7 -0
  33. package/dist/client/shared/streamedValues.js +82 -0
  34. package/dist/node/api/dev.js +15 -1
  35. package/dist/node/api/resolveViteConfigUser.js +2 -2
  36. package/dist/node/api/serverEntryDev.d.ts +10 -0
  37. package/dist/node/api/serverEntryDev.js +125 -0
  38. package/dist/node/createDevMiddleware.js +12 -0
  39. package/dist/node/prerender/resolvePrerenderConfig.d.ts +1 -1
  40. package/dist/node/prerender/resolvePrerenderConfig.js +4 -1
  41. package/dist/node/prerender/runPrerender.d.ts +18 -18
  42. package/dist/node/prerender/runPrerender.js +61 -16
  43. package/dist/node/vite/assertEnvVite.js +1 -1
  44. package/dist/node/vite/index.js +2 -0
  45. package/dist/node/vite/plugins/build/handleAssetsManifest.js +6 -2
  46. package/dist/node/vite/plugins/build/pluginBuildApp.js +25 -26
  47. package/dist/node/vite/plugins/build/pluginBuildConfig.d.ts +2 -2
  48. package/dist/node/vite/plugins/build/pluginBuildConfig.js +25 -17
  49. package/dist/node/vite/plugins/build/pluginDistFileNames.js +70 -50
  50. package/dist/node/vite/plugins/build/pluginEnvironmentEntries.d.ts +6 -0
  51. package/dist/node/vite/plugins/build/pluginEnvironmentEntries.js +71 -0
  52. package/dist/node/vite/plugins/build/pluginSuppressRollupWarning.js +19 -17
  53. package/dist/node/vite/plugins/pluginCommon.js +10 -7
  54. package/dist/node/vite/plugins/pluginDev/optimizeDeps.d.ts +2 -2
  55. package/dist/node/vite/plugins/pluginDev/optimizeDeps.js +6 -2
  56. package/dist/node/vite/plugins/pluginReplaceConstantsGlobalThis.js +6 -4
  57. package/dist/node/vite/plugins/pluginUniversalDeploy/getServerConfig.d.ts +3 -0
  58. package/dist/node/vite/plugins/pluginUniversalDeploy/getServerConfig.js +28 -2
  59. package/dist/node/vite/plugins/pluginUniversalDeploy/pluginServerEntryAlias.d.ts +1 -1
  60. package/dist/node/vite/plugins/pluginUniversalDeploy/pluginServerEntryAlias.js +22 -11
  61. package/dist/node/vite/plugins/pluginUniversalDeploy/pluginWrapServerFile.d.ts +4 -0
  62. package/dist/node/vite/plugins/pluginUniversalDeploy/pluginWrapServerFile.js +29 -0
  63. package/dist/node/vite/plugins/pluginUniversalDeploy.js +29 -5
  64. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntry.d.ts +2 -1
  65. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntry.js +29 -12
  66. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntryWithOldDesign.js +3 -2
  67. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFilePageEntry.js +7 -7
  68. package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.d.ts +10 -6
  69. package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.js +5 -11
  70. package/dist/node/vite/plugins/pluginVirtualFiles.js +20 -0
  71. package/dist/node/vite/shared/addSsrMiddleware.js +11 -27
  72. package/dist/node/vite/shared/findPageFiles.d.ts +1 -1
  73. package/dist/node/vite/shared/findPageFiles.js +1 -11
  74. package/dist/node/vite/shared/getAssetsDir.d.ts +3 -2
  75. package/dist/node/vite/shared/getAssetsDir.js +3 -3
  76. package/dist/node/vite/shared/isViteCli.d.ts +3 -3
  77. package/dist/node/vite/shared/isViteCli.js +80 -84
  78. package/dist/node/vite/shared/isViteServerSide.js +2 -7
  79. package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.d.ts +6 -4
  80. package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.js +17 -6
  81. package/dist/node/vite/shared/resolveVikeConfigInternal/transpileAndExecuteFile.js +9 -2
  82. package/dist/node/vite/shared/resolveVikeConfigInternal.d.ts +5 -1
  83. package/dist/node/vite/shared/resolveVikeConfigInternal.js +86 -13
  84. package/dist/server/__internal/fetch-deprecated.d.ts +2 -0
  85. package/dist/server/__internal/fetch-deprecated.js +6 -0
  86. package/dist/server/__internal/fetch.d.ts +9 -0
  87. package/dist/server/__internal/fetch.js +5 -0
  88. package/dist/server/__internal/index.d.ts +4 -0
  89. package/dist/server/__internal/index.js +8 -0
  90. package/dist/server/createPageRenderer.d.ts +2 -2
  91. package/dist/server/createPageRenderer.js +2 -2
  92. package/dist/server/runtime/createDevMiddleware.js +3 -1
  93. package/dist/server/runtime/globalContext.d.ts +69 -10
  94. package/dist/server/runtime/globalContext.js +35 -2
  95. package/dist/server/runtime/index.d.ts +1 -1
  96. package/dist/server/runtime/index.js +1 -1
  97. package/dist/server/runtime/renderPageServer/analyzePage.js +3 -3
  98. package/dist/server/runtime/renderPageServer/createHttpResponse.d.ts +20 -9
  99. package/dist/server/runtime/renderPageServer/createHttpResponse.js +34 -21
  100. package/dist/server/runtime/renderPageServer/createPageContextServer.d.ts +13 -23
  101. package/dist/server/runtime/renderPageServer/csp.d.ts +2 -1
  102. package/dist/server/runtime/renderPageServer/csp.js +2 -1
  103. package/dist/server/runtime/renderPageServer/execHookOnError.js +1 -1
  104. package/dist/server/runtime/renderPageServer/execHookOnRenderHtml.d.ts +9 -0
  105. package/dist/server/runtime/renderPageServer/execHookOnRenderHtml.js +21 -9
  106. package/dist/server/runtime/renderPageServer/getHttpResponseBody.d.ts +2 -2
  107. package/dist/server/runtime/renderPageServer/getHttpResponseBody.js +19 -12
  108. package/dist/server/runtime/renderPageServer/getPageContextJson.d.ts +8 -0
  109. package/dist/server/runtime/renderPageServer/getPageContextJson.js +47 -0
  110. package/dist/server/runtime/renderPageServer/handleErrorWithoutErrorPage.d.ts +2 -0
  111. package/dist/server/runtime/renderPageServer/handleErrorWithoutErrorPage.js +1 -1
  112. package/dist/server/runtime/renderPageServer/handlePageContextRequestUrl.js +2 -2
  113. package/dist/server/runtime/renderPageServer/headersResponse.d.ts +11 -2
  114. package/dist/server/runtime/renderPageServer/headersResponse.js +22 -2
  115. package/dist/server/runtime/renderPageServer/html/injectAssets/getHtmlTags.js +5 -4
  116. package/dist/server/runtime/renderPageServer/html/injectAssets.d.ts +3 -2
  117. package/dist/server/runtime/renderPageServer/html/injectAssets.js +7 -1
  118. package/dist/server/runtime/renderPageServer/html/renderHtml.js +4 -2
  119. package/dist/server/runtime/renderPageServer/html/serializeContext.d.ts +5 -1
  120. package/dist/server/runtime/renderPageServer/html/serializeContext.js +12 -9
  121. package/dist/server/runtime/renderPageServer/html/stream.d.ts +13 -6
  122. package/dist/server/runtime/renderPageServer/html/stream.js +135 -32
  123. package/dist/server/runtime/renderPageServer/html/streamedValuesHtml.d.ts +30 -0
  124. package/dist/server/runtime/renderPageServer/html/streamedValuesHtml.js +92 -0
  125. package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.d.ts +10 -14
  126. package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.js +5 -1
  127. package/dist/server/runtime/renderPageServer/loadPageContextEnvironments.d.ts +15 -0
  128. package/dist/server/runtime/renderPageServer/loadPageContextEnvironments.js +61 -0
  129. package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.d.ts +320 -55
  130. package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.js +21 -12
  131. package/dist/server/runtime/renderPageServer/streamedValues/asyncIterable.d.ts +4 -0
  132. package/dist/server/runtime/renderPageServer/streamedValues/asyncIterable.js +12 -0
  133. package/dist/server/runtime/renderPageServer/streamedValues/lines.d.ts +10 -0
  134. package/dist/server/runtime/renderPageServer/streamedValues/lines.js +49 -0
  135. package/dist/server/runtime/renderPageServer/streamedValues/promise.d.ts +4 -0
  136. package/dist/server/runtime/renderPageServer/streamedValues/promise.js +14 -0
  137. package/dist/server/runtime/renderPageServer/streamedValues/pump.d.ts +10 -0
  138. package/dist/server/runtime/renderPageServer/streamedValues/pump.js +67 -0
  139. package/dist/server/runtime/renderPageServer/streamedValues/readableStream.d.ts +4 -0
  140. package/dist/server/runtime/renderPageServer/streamedValues/readableStream.js +12 -0
  141. package/dist/server/runtime/renderPageServer/streamedValues/registry.d.ts +28 -0
  142. package/dist/server/runtime/renderPageServer/streamedValues/registry.js +33 -0
  143. package/dist/server/runtime/renderPageServer.d.ts +65 -18
  144. package/dist/server/runtime/renderPageServer.js +33 -62
  145. package/dist/server/runtime/universal-middleware/core.d.ts +25 -0
  146. package/dist/server/runtime/universal-middleware/core.js +167 -0
  147. package/dist/server/runtime/universal-middleware/deprecated-export.d.ts +3 -0
  148. package/dist/server/runtime/universal-middleware/deprecated-export.js +10 -0
  149. package/dist/server/runtime/universal-middleware/getMiddlewaresPipe.d.ts +15 -0
  150. package/dist/server/runtime/universal-middleware/getMiddlewaresPipe.js +51 -0
  151. package/dist/server/runtime/universal-middleware/vikeUniversalMiddleware.d.ts +9 -0
  152. package/dist/server/runtime/universal-middleware/vikeUniversalMiddleware.js +22 -0
  153. package/dist/shared-server-client/createGlobalContextShared.d.ts +8 -0
  154. package/dist/shared-server-client/createGlobalContextShared.js +2 -1
  155. package/dist/shared-server-client/getPageContextPublicShared.js +0 -2
  156. package/dist/shared-server-client/getPageFiles/parseVirtualFileExportsGlobalEntry.d.ts +8 -0
  157. package/dist/shared-server-client/getPageFiles/parseVirtualFileExportsGlobalEntry.js +17 -7
  158. package/dist/shared-server-client/hooks/execHook.d.ts +1 -1
  159. package/dist/shared-server-client/hooks/execHook.js +2 -2
  160. package/dist/shared-server-client/page-configs/serialize/serializeConfigValues.js +2 -0
  161. package/dist/shared-server-client/route/abort.d.ts +1 -1
  162. package/dist/shared-server-client/route/abort.js +4 -2
  163. package/dist/shared-server-client/streamedValues.d.ts +22 -0
  164. package/dist/shared-server-client/streamedValues.js +24 -0
  165. package/dist/shared-server-node/vike-environments.d.ts +4 -0
  166. package/dist/shared-server-node/vike-environments.js +10 -0
  167. package/dist/shared-server-node/virtualFileId.d.ts +7 -5
  168. package/dist/shared-server-node/virtualFileId.js +42 -42
  169. package/dist/types/Config.d.ts +11 -3
  170. package/dist/types/GlobalContext.d.ts +3 -3
  171. package/dist/types/PageConfig.d.ts +13 -5
  172. package/dist/types/PageContext.d.ts +18 -10
  173. package/dist/types/PageContext.js +1 -0
  174. package/dist/types/Server.d.ts +1 -1
  175. package/dist/types/VikeNamespace.d.ts +1 -1
  176. package/dist/types/index.d.ts +1 -0
  177. package/dist/utils/PROJECT_VERSION.d.ts +1 -1
  178. package/dist/utils/PROJECT_VERSION.js +1 -1
  179. package/dist/utils/assertViteVersion.d.ts +1 -3
  180. package/dist/utils/assertViteVersion.js +6 -9
  181. package/dist/utils/catchInfiniteLoop.js +33 -11
  182. package/dist/utils/deepEqual.d.ts +2 -1
  183. package/dist/utils/deepEqual.js +21 -6
  184. package/dist/utils/getContentTypeFromUrl.d.ts +2 -0
  185. package/dist/utils/getContentTypeFromUrl.js +39 -0
  186. package/dist/utils/injectRollupInputs.d.ts +2 -2
  187. package/dist/utils/injectRollupInputs.js +2 -2
  188. package/dist/utils/installUncaughtErrorHandlers.js +9 -0
  189. package/dist/utils/isDev.js +2 -7
  190. package/dist/utils/parseUrl-extras.js +4 -0
  191. package/fetch.js +2 -2
  192. package/modifyUrl.js +2 -2
  193. package/package.json +42 -26
  194. package/routing.js +2 -2
  195. package/universal-middleware.js +2 -2
  196. package/vike-server.d.ts +14 -0
  197. package/dist/node/vite/plugins/pluginUniversalDeploy/pluginUnwrapProdOptions.d.ts +0 -4
  198. package/dist/node/vite/plugins/pluginUniversalDeploy/pluginUnwrapProdOptions.js +0 -22
  199. package/dist/server/runtime/fetch.d.ts +0 -10
  200. package/dist/server/runtime/fetch.js +0 -5
  201. package/dist/server/runtime/universal-middleware.d.ts +0 -10
  202. package/dist/server/runtime/universal-middleware.js +0 -27
  203. package/dist/shared-server-client/addIs404ToPageProps.d.ts +0 -2
  204. package/dist/shared-server-client/addIs404ToPageProps.js +0 -17
@@ -2,22 +2,12 @@ export { findPageFiles };
2
2
  import { glob } from 'tinyglobby';
3
3
  import { scriptFileExtensionPattern } from '../../../utils/isScriptFile.js';
4
4
  import { toPosixPath } from '../../../utils/path.js';
5
- import { assertWarning } from '../../../utils/assert.js';
6
- import pc from '@brillout/picocolors';
7
5
  import { getOutDirs } from './getOutDirs.js';
8
6
  import '../assertEnvVite.js';
9
- async function findPageFiles(config, fileTypes, isDev) {
7
+ async function findPageFiles(config, fileTypes) {
10
8
  const cwd = config.root;
11
9
  const { outDirRoot } = getOutDirs(config, undefined);
12
- const timeBase = new Date().getTime();
13
10
  let pageFiles = await glob(fileTypes.map((fileType) => `**/*${fileType}.${scriptFileExtensionPattern}`), { ignore: ['**/node_modules/**', `${outDirRoot}/**`], cwd, dot: false, expandDirectories: false });
14
11
  pageFiles = pageFiles.map((p) => '/' + toPosixPath(p));
15
- const time = new Date().getTime() - timeBase;
16
- if (isDev) {
17
- // We only warn in dev, because while building it's expected to take a long time as tinyglobby is competing for resources with other tasks
18
- assertWarning(time < 1.5 * 1000, `Finding your page files ${pc.cyan('**/*.page.*')} took an unexpected long time (${time}ms). Reach out to the vike maintainer.`, {
19
- onlyOnce: 'slow-page-files-search',
20
- });
21
- }
22
12
  return pageFiles;
23
13
  }
@@ -1,4 +1,5 @@
1
1
  export { getAssetsDir };
2
- import type { ResolvedConfig } from 'vite';
3
2
  import '../assertEnvVite.js';
4
- declare function getAssetsDir(config: ResolvedConfig): string;
3
+ declare function getAssetsDir(build: {
4
+ assetsDir: string;
5
+ }): string;
@@ -1,9 +1,9 @@
1
1
  export { getAssetsDir };
2
2
  import { assertUsage } from '../../../utils/assert.js';
3
3
  import '../assertEnvVite.js';
4
- function getAssetsDir(config) {
5
- let { assetsDir } = config.build;
6
- assertUsage(assetsDir, `${assetsDir} cannot be an empty string`);
4
+ function getAssetsDir(build) {
5
+ let { assetsDir } = build;
6
+ assertUsage(assetsDir, "Vite's build.assetsDir cannot be an empty string");
7
7
  assetsDir = assetsDir.split(/\/|\\/).filter(Boolean).join('/');
8
8
  return assetsDir;
9
9
  }
@@ -1,6 +1,6 @@
1
1
  export { isViteCli };
2
2
  export { getViteCliArgs };
3
- export { getViteBuildCliArgs };
3
+ export { getViteCliArgsMinimal };
4
4
  export { getViteCliCommand };
5
5
  import '../assertEnvVite.js';
6
6
  declare function isViteCli(): boolean;
@@ -12,8 +12,8 @@ type ConfigFromCli = {
12
12
  };
13
13
  type ViteCommand = 'dev' | 'build' | 'optimize' | 'preview';
14
14
  declare function getViteCliCommand(): ViteCommand | null;
15
- declare function getViteBuildCliArgs(): null | ConfigFromCli;
16
- declare function getViteCliArgs(): null | {
15
+ declare function getViteCliArgsMinimal(): null | {
17
16
  root: string | undefined;
18
17
  configFile: string | undefined;
19
18
  };
19
+ declare function getViteCliArgs(): null | ConfigFromCli;
@@ -1,7 +1,8 @@
1
1
  export { isViteCli };
2
2
  export { getViteCliArgs };
3
- export { getViteBuildCliArgs };
3
+ export { getViteCliArgsMinimal };
4
4
  export { getViteCliCommand };
5
+ // Copied from Vite's CLI
5
6
  import { assert } from '../../../utils/assert.js';
6
7
  import { isObject } from '../../../utils/isObject.js';
7
8
  import { isToolCli } from '../../../utils/isToolCli.js';
@@ -11,48 +12,23 @@ const desc = 'vike:vite-cli-simulation';
11
12
  function isViteCli() {
12
13
  return isToolCli('vite');
13
14
  }
14
- function getViteCliCommand() {
15
- if (!isViteCli())
16
- return null;
17
- let command;
18
- const setCommand = (cmd) => {
19
- assert(command === undefined);
20
- command = cmd;
15
+ function parseViteCli() {
16
+ let viteCli;
17
+ const onCommand = (command) => (root, options) => {
18
+ assert(viteCli === undefined);
19
+ assert(root === undefined || typeof root === 'string');
20
+ assert(isObject(options));
21
+ // Same as Vite: duplicated options => the last value wins
22
+ for (const [key, value] of Object.entries(options)) {
23
+ if (Array.isArray(value))
24
+ options[key] = value[value.length - 1];
25
+ }
26
+ assert(options.config === undefined || typeof options.config === 'string');
27
+ viteCli = { command, root, options };
21
28
  };
22
- // Copied & adapted from Vite
23
- // https://github.com/vitejs/vite/blob/d3e7eeefa91e1992f47694d16fe4dbe708c4d80e/packages/vite/src/node/cli.ts#L186-L188
24
- const cli = cac(desc);
25
- // dev
26
- cli
27
- .command('[root]', desc)
28
- .alias('serve')
29
- .alias('dev')
30
- .action(() => {
31
- setCommand('dev');
32
- });
33
- // build
34
- cli.command('build [root]', desc).action(() => {
35
- setCommand('build');
36
- });
37
- // optimize
38
- cli.command('optimize [root]', desc).action(() => {
39
- setCommand('optimize');
40
- });
41
- // preview
42
- cli.command('preview [root]', desc).action(() => {
43
- setCommand('preview');
44
- });
45
- cli.parse();
46
- assert(command);
47
- return command;
48
- }
49
- function getViteBuildCliArgs() {
50
- if (!isViteCli())
51
- return null;
52
- // Copied & adapted from Vite
29
+ // We need to declare all Vite's options, otherwise cac consumes the next argument as the value of boolean options (e.g. `vite build --emptyOutDir some-root`).
53
30
  const cli = cac(desc);
54
31
  // Common configs
55
- // https://github.com/vitejs/vite/blob/d3e7eeefa91e1992f47694d16fe4dbe708c4d80e/packages/vite/src/node/cli.ts#L169-L182
56
32
  cli
57
33
  .option('-c, --config <file>', desc)
58
34
  .option('--base <path>', desc)
@@ -62,8 +38,22 @@ function getViteBuildCliArgs() {
62
38
  .option('-d, --debug [feat]', desc)
63
39
  .option('-f, --filter <filter>', desc)
64
40
  .option('-m, --mode <mode>', desc);
65
- // Build configs
66
- // https://github.com/vitejs/vite/blob/d3e7eeefa91e1992f47694d16fe4dbe708c4d80e/packages/vite/src/node/cli.ts#L286-L322
41
+ // dev
42
+ cli
43
+ .command('[root]', desc)
44
+ .alias('serve')
45
+ .alias('dev')
46
+ .option('--host [host]', desc)
47
+ .option('--port <port>', desc)
48
+ .option('--open [path]', desc)
49
+ .option('--cors', desc)
50
+ .option('--strictPort', desc)
51
+ .option('--force', desc)
52
+ .option('--experimentalBundle', desc)
53
+ // Options that this copy doesn't declare (e.g. added by newer Vite versions) are still validated by Vite's own CLI, which throws `Unknown option` for options Vite doesn't know
54
+ .allowUnknownOptions()
55
+ .action(onCommand('dev'));
56
+ // build
67
57
  cli
68
58
  .command('build [root]', desc)
69
59
  .option('--target <target>', desc)
@@ -71,35 +61,61 @@ function getViteBuildCliArgs() {
71
61
  .option('--assetsDir <dir>', desc)
72
62
  .option('--assetsInlineLimit <number>', desc)
73
63
  .option('--ssr [entry]', desc)
74
- .option('--sourcemap', desc)
64
+ .option('--sourcemap [output]', desc)
75
65
  .option('--minify [minifier]', desc)
76
66
  .option('--manifest [name]', desc)
77
67
  .option('--ssrManifest [name]', desc)
78
68
  .option('--emptyOutDir', desc)
79
69
  .option('-w, --watch', desc)
80
70
  .option('--app', desc)
81
- .action((root, options) => {
82
- assert(isObject(options));
83
- assert(root === undefined || typeof root === 'string');
84
- assert(options.config === undefined || typeof options.config === 'string');
85
- // https://github.com/vitejs/vite/blob/d3e7eeefa91e1992f47694d16fe4dbe708c4d80e/packages/vite/src/node/cli.ts#L331-L346
86
- const buildOptions = cleanGlobalCLIOptions(cleanBuilderCLIOptions(options));
87
- configFromCli = {
88
- root,
89
- base: options.base,
90
- mode: options.mode,
91
- configFile: options.config,
92
- configLoader: options.configLoader,
93
- logLevel: options.logLevel,
94
- clearScreen: options.clearScreen,
95
- build: buildOptions,
96
- ...(options.app ? { builder: {} } : {}),
97
- };
98
- });
99
- let configFromCli = null;
71
+ .allowUnknownOptions()
72
+ .action(onCommand('build'));
73
+ // optimize
74
+ cli.command('optimize [root]', desc).option('--force', desc).allowUnknownOptions().action(onCommand('optimize'));
75
+ // preview
76
+ cli
77
+ .command('preview [root]', desc)
78
+ .option('--host [host]', desc)
79
+ .option('--port <port>', desc)
80
+ .option('--strictPort', desc)
81
+ .option('--open [path]', desc)
82
+ .option('--outDir <dir>', desc)
83
+ .allowUnknownOptions()
84
+ .action(onCommand('preview'));
100
85
  cli.parse();
101
- return configFromCli;
102
- // https://github.com/vitejs/vite/blob/d3e7eeefa91e1992f47694d16fe4dbe708c4d80e/packages/vite/src/node/cli.ts#L99
86
+ assert(viteCli);
87
+ return viteCli;
88
+ }
89
+ function getViteCliCommand() {
90
+ if (!isViteCli())
91
+ return null;
92
+ return parseViteCli().command;
93
+ }
94
+ function getViteCliArgsMinimal() {
95
+ if (!isViteCli())
96
+ return null;
97
+ const { root, options } = parseViteCli();
98
+ return { root, configFile: options.config };
99
+ }
100
+ function getViteCliArgs() {
101
+ if (!isViteCli())
102
+ return null;
103
+ const { command, root, options } = parseViteCli();
104
+ if (command !== 'build')
105
+ return null;
106
+ // Like Vite: all options except the global ones go to `build`
107
+ const buildOptions = cleanGlobalCLIOptions(cleanBuilderCLIOptions(options));
108
+ return {
109
+ root,
110
+ base: options.base,
111
+ mode: options.mode,
112
+ configFile: options.config,
113
+ configLoader: options.configLoader,
114
+ logLevel: options.logLevel,
115
+ clearScreen: options.clearScreen,
116
+ build: buildOptions,
117
+ ...(options.app ? { builder: {} } : {}),
118
+ };
103
119
  function cleanGlobalCLIOptions(options) {
104
120
  const ret = { ...options };
105
121
  delete ret['--'];
@@ -129,29 +145,9 @@ function getViteBuildCliArgs() {
129
145
  }
130
146
  return ret;
131
147
  }
132
- // https://github.com/vitejs/vite/blob/d3e7eeefa91e1992f47694d16fe4dbe708c4d80e/packages/vite/src/node/cli.ts#L141
133
148
  function cleanBuilderCLIOptions(options) {
134
149
  const ret = { ...options };
135
150
  delete ret.app;
136
151
  return ret;
137
152
  }
138
153
  }
139
- function getViteCliArgs() {
140
- if (!isViteCli())
141
- return null;
142
- const cli = cac(desc);
143
- cli.option('-c, --config <file>', desc);
144
- let result = null;
145
- const setResult = (root, options) => {
146
- assert(root === undefined || typeof root === 'string');
147
- assert(isObject(options));
148
- assert(options.config === undefined || typeof options.config === 'string');
149
- result = { root, configFile: options.config };
150
- };
151
- cli.command('[root]', desc).alias('serve').alias('dev').action(setResult);
152
- cli.command('build [root]', desc).action(setResult);
153
- cli.command('optimize [root]', desc).action(setResult);
154
- cli.command('preview [root]', desc).action(setResult);
155
- cli.parse();
156
- return result;
157
- }
@@ -4,8 +4,7 @@ export { isViteServerSide_onlySsrEnv };
4
4
  export { isViteServerSide_extraSafe };
5
5
  export { isViteServerSide_applyToEnvironment };
6
6
  export { isViteServerSide_configEnvironment };
7
- import { viteVersionMin } from '../../../utils/assertViteVersion.js';
8
- import { assert, assertUsage } from '../../../utils/assert.js';
7
+ import { assert } from '../../../utils/assert.js';
9
8
  import '../assertEnvVite.js';
10
9
  function isViteServerSide_impl(configGlobal, viteEnv) {
11
10
  assert(!('consumer' in configGlobal)); // make sure configGlobal isn't viteEnv.config
@@ -60,11 +59,7 @@ function isViteServerSide_extraSafe(config, viteEnv, options) {
60
59
  optionsSsr: options?.ssr ?? null,
61
60
  };
62
61
  assert(options, debug);
63
- /* TO-DO/eventually: use internal assert() instead of assertUsage() once we can use this.meta.viteVersion — see utils/assertViteVersion.ts
64
- assert(typeof options.ssr === 'boolean', debug)
65
- /*/
66
- assertUsage(typeof options.ssr === 'boolean', `You're using an old Vite version — update Vite to ${viteVersionMin} or above.`);
67
- //*/
62
+ assert(typeof options.ssr === 'boolean', debug);
68
63
  assert(options.ssr === isServerSide, debug);
69
64
  return isServerSide;
70
65
  }
@@ -56,11 +56,13 @@ type ConfigDefinition = {
56
56
  }) => boolean);
57
57
  /** Whether changes to the configuration should trigger a Vite restart. */
58
58
  vite?: boolean;
59
- /** @experimental */
60
- _computed?: (pageConfig: PageConfigBuildTimeBeforeComputed) => unknown;
61
- /** @experimental */
59
+ /** @internal */
60
+ _computed?: (pageConfig: PageConfigBuildTimeBeforeComputed, isDev: boolean) => unknown;
61
+ /** @internal */
62
62
  _valueIsFilePath?: true;
63
- /** @experimental */
63
+ /** @internal */
64
+ _valueNotLoadedAtRuntime?: true;
65
+ /** @internal */
64
66
  _userEffectDefinedAtFilePath?: DefinedAtFilePath;
65
67
  isDefinedByPeerDependency?: undefined;
66
68
  } | ConfigDefinitionDefinedByPeerDependency;
@@ -53,14 +53,15 @@ const metaBuiltIn = {
53
53
  route: {
54
54
  env: {
55
55
  server: true,
56
- client: 'if-client-routing',
56
+ client: true,
57
+ clientRoutingOnly: true,
57
58
  // For vite-plugin-vercel
58
59
  config: true,
59
60
  },
60
61
  eager: true,
61
62
  },
62
63
  guard: {
63
- env: { server: true, client: 'if-client-routing' },
64
+ env: { server: true, client: true, clientRoutingOnly: true },
64
65
  },
65
66
  data: {
66
67
  env: { server: true },
@@ -70,7 +71,7 @@ const metaBuiltIn = {
70
71
  cumulative: true,
71
72
  },
72
73
  iKnowThePerformanceRisksOfAsyncRouteFunctions: {
73
- env: { server: true, client: 'if-client-routing' },
74
+ env: { server: true, client: true, clientRoutingOnly: true },
74
75
  eager: true,
75
76
  },
76
77
  filesystemRoutingRoot: {
@@ -114,12 +115,13 @@ const metaBuiltIn = {
114
115
  hasServerOnlyHook: {
115
116
  env: { client: true },
116
117
  eager: true,
117
- _computed: (pageConfig) => {
118
+ _computed: (pageConfig, isDev) => {
118
119
  const sources = ['data', 'onBeforeRender', 'onCreatePageContext', 'guard']
119
120
  .map((hookName) => getConfigValueSourcesRelevant(hookName, {
120
- isForClientSide: false,
121
+ environmentName: 'server',
121
122
  // TO-DO/eventually/remove-server-router: let's eventually remove support for Server Routing
122
123
  isClientRouting: true,
124
+ isDev,
123
125
  }, pageConfig))
124
126
  .flat(1)
125
127
  // Server-only
@@ -243,6 +245,15 @@ const metaBuiltIn = {
243
245
  server: {
244
246
  env: { server: true },
245
247
  global: true,
248
+ // virtual:vike:global-entry:server shouldn't import +server.js
249
+ // - Otherwise a +server.js calling `await getGlobalContext()` would wait for itself and hang indefinitely
250
+ _valueNotLoadedAtRuntime: true,
251
+ },
252
+ serverEntry: {
253
+ // The value is merely the file path of the server entry, which becomes dist/server/index.mjs — Vike never loads it as a config value
254
+ env: { config: true },
255
+ global: true,
256
+ _valueIsFilePath: true,
246
257
  },
247
258
  precompress: {
248
259
  env: { config: true },
@@ -253,7 +264,7 @@ const metaBuiltIn = {
253
264
  global: true,
254
265
  },
255
266
  onBeforeRoute: {
256
- env: { server: true, client: 'if-client-routing' },
267
+ env: { server: true, client: true, clientRoutingOnly: true },
257
268
  eager: true,
258
269
  global: true,
259
270
  },
@@ -505,12 +505,19 @@ function getConfigExecutionErrorIntroMsg(err) {
505
505
  const errIntroMsg = execErrIntroMsg.get(err);
506
506
  return errIntroMsg ?? null;
507
507
  }
508
+ const processId = crypto.randomUUID();
508
509
  function getTemporaryBuildFilePath(filePathAbsoluteFilesystem, code) {
509
510
  assertPosixPath(filePathAbsoluteFilesystem);
510
511
  const fileDir = path.posix.dirname(filePathAbsoluteFilesystem);
511
512
  const filename = path.posix.basename(filePathAbsoluteFilesystem);
512
- // Using content hash in file path, so that the cache of dynamic `import()` behaves as we want.
513
- const fileHash = crypto.createHash('md5').update(code).digest('hex').slice(0, 12);
513
+ const fileHash = crypto
514
+ .createHash('md5')
515
+ // Using content hash in file path, so that the cache of dynamic `import()` behaves as we want.
516
+ .update(code)
517
+ // Parallel processes shouldn't overwrite each other's temporary file
518
+ .update(processId)
519
+ .digest('hex')
520
+ .slice(0, 12);
514
521
  // Syntax with semicolon `build:${/*...*/}` doesn't work on Windows: https://github.com/vikejs/vike/issues/800#issuecomment-1517329455
515
522
  const filePathTmp = path.posix.join(fileDir, `${filename}.build-${fileHash}.mjs`);
516
523
  assert(isTemporaryBuildFile(filePathTmp));
@@ -3,6 +3,7 @@ export type { VikeConfig };
3
3
  export { getVikeConfigInternal };
4
4
  export { getVikeConfigInternalOptional };
5
5
  export { setVikeConfigContext };
6
+ export { setViteEnvironmentNames };
6
7
  export { isVikeConfigContextSet };
7
8
  export { reloadVikeConfig };
8
9
  export { isV1Design };
@@ -36,6 +37,7 @@ type VikeConfigInternal = GlobalConfigPublic & {
36
37
  _pageConfigGlobal: PageConfigGlobalBuildTime;
37
38
  _vikeConfigDependencies: Set<string>;
38
39
  _extensions: PlusFile[];
40
+ _additionalEnvironmentNames: string[];
39
41
  prerenderContext: PrerenderContext;
40
42
  };
41
43
  declare function reloadVikeConfig(): void;
@@ -53,6 +55,7 @@ type VikeConfig = Pick<VikeConfigInternal, 'config' | 'pages' | 'prerenderContex
53
55
  dangerouslyUseInternals: DangerouslyUseInternals<VikeConfigInternal>;
54
56
  };
55
57
  declare function setVikeConfigContext(vikeConfigCtx_: VikeConfigContext): void;
58
+ declare function setViteEnvironmentNames(viteEnvironmentNames: string[]): Promise<void>;
56
59
  declare function isVikeConfigContextSet(): boolean;
57
60
  declare function getVikeConfigInternalOptional(): Promise<null | VikeConfigInternal>;
58
61
  declare function isV1Design(): boolean;
@@ -74,8 +77,9 @@ declare function getConfigDefinitionOptional(configDefinitions: ConfigDefinition
74
77
  isGlobalLocation: boolean;
75
78
  }) => boolean);
76
79
  vite?: boolean;
77
- _computed?: (pageConfig: PageConfigBuildTimeBeforeComputed) => unknown;
80
+ _computed?: (pageConfig: PageConfigBuildTimeBeforeComputed, isDev: boolean) => unknown;
78
81
  _valueIsFilePath?: true;
82
+ _valueNotLoadedAtRuntime?: true;
79
83
  _userEffectDefinedAtFilePath?: DefinedAtFilePath;
80
84
  isDefinedByPeerDependency?: undefined;
81
85
  } | null;