vike 0.4.223-commit-81afe1f → 0.4.224-commit-f0d0f8a

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 (31) hide show
  1. package/dist/cjs/node/plugin/plugins/commonConfig.js +1 -1
  2. package/dist/cjs/node/plugin/plugins/devConfig/index.js +1 -1
  3. package/dist/cjs/node/plugin/plugins/previewConfig.js +12 -7
  4. package/dist/cjs/node/plugin/shared/addSsrMiddleware.js +5 -1
  5. package/dist/cjs/node/prerender/context.js +1 -1
  6. package/dist/cjs/node/prerender/resolvePrerenderConfig.js +8 -1
  7. package/dist/cjs/node/prerender/runPrerender.js +4 -6
  8. package/dist/cjs/node/runtime/html/stream.js +7 -0
  9. package/dist/cjs/node/runtime/renderPage/logErrorHint.js +6 -1
  10. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  11. package/dist/cjs/utils/debug.js +2 -1
  12. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +1 -0
  13. package/dist/esm/node/plugin/plugins/commonConfig.js +1 -1
  14. package/dist/esm/node/plugin/plugins/devConfig/index.js +1 -1
  15. package/dist/esm/node/plugin/plugins/previewConfig.js +12 -7
  16. package/dist/esm/node/plugin/shared/addSsrMiddleware.d.ts +1 -1
  17. package/dist/esm/node/plugin/shared/addSsrMiddleware.js +5 -1
  18. package/dist/esm/node/prerender/context.js +1 -1
  19. package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +2 -1
  20. package/dist/esm/node/prerender/resolvePrerenderConfig.js +8 -1
  21. package/dist/esm/node/prerender/runPrerender.js +4 -6
  22. package/dist/esm/node/runtime/globalContext.d.ts +1 -1
  23. package/dist/esm/node/runtime/html/stream.js +7 -0
  24. package/dist/esm/node/runtime/renderPage/logErrorHint.js +6 -1
  25. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +5 -5
  26. package/dist/esm/types/index.d.ts +2 -0
  27. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  28. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  29. package/dist/esm/utils/debug.js +2 -1
  30. package/dist/esm/utils/projectInfo.d.ts +1 -1
  31. package/package.json +2 -1
@@ -44,7 +44,7 @@ function commonConfig(vikeVitePluginOptions) {
44
44
  },
45
45
  // TODO/v1-release: remove https://github.com/vikejs/vike/issues/2122
46
46
  configVikePromise: Promise.resolve({
47
- prerender: (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig).isEnabled
47
+ prerender: (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig).isPrerenderingEnabled
48
48
  })
49
49
  };
50
50
  }
@@ -84,7 +84,7 @@ function devConfig() {
84
84
  if (config.server.middlewareMode || hasHonoViteDevServer)
85
85
  return;
86
86
  return () => {
87
- (0, addSsrMiddleware_js_1.addSsrMiddleware)(server.middlewares, config, false);
87
+ (0, addSsrMiddleware_js_1.addSsrMiddleware)(server.middlewares, config, false, null);
88
88
  };
89
89
  }
90
90
  },
@@ -11,6 +11,8 @@ const addSsrMiddleware_js_1 = require("../shared/addSsrMiddleware.js");
11
11
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
12
12
  const index_js_1 = require("./devConfig/index.js");
13
13
  const getOutDirs_js_1 = require("../shared/getOutDirs.js");
14
+ const sirv_1 = __importDefault(require("sirv"));
15
+ const resolvePrerenderConfig_js_1 = require("../../prerender/resolvePrerenderConfig.js");
14
16
  function previewConfig() {
15
17
  let config;
16
18
  // let vikeConfig: VikeConfigObject
@@ -37,23 +39,26 @@ function previewConfig() {
37
39
  */
38
40
  return () => {
39
41
  assertDist();
40
- /* We don't use this condition (we wrongfully always use the SSR middleware) because of the regression introduced by https://github.com/vitejs/vite/pull/14756 which stops servering .html files when `appType: 'custom'`.
41
- if (!vikeConfig.global.config.prerender || vikeConfig.global.config.prerender.partial) {
42
- addSsrMiddleware(server.middlewares, config, true)
42
+ // We cannot re-use Vite's static middleware: https://github.com/vitejs/vite/pull/14836#issuecomment-1788540300
43
+ addStaticAssetsMiddleware(server.middlewares);
44
+ const prerenderConfigGlobal = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(config._vikeConfigObject);
45
+ if (!prerenderConfigGlobal.isPrerenderingEnabledForAllPages) {
46
+ (0, addSsrMiddleware_js_1.addSsrMiddleware)(server.middlewares, config, true, prerenderConfigGlobal.isPrerenderingEnabled);
43
47
  }
44
- /*/
45
- (0, addSsrMiddleware_js_1.addSsrMiddleware)(server.middlewares, config, true);
46
- //*/
47
48
  addStatic404Middleware(server.middlewares);
48
49
  };
49
50
  }
50
51
  };
51
52
  function assertDist() {
52
- let { outDirRoot, outDirClient, outDirServer } = (0, getOutDirs_js_1.getOutDirs)(config);
53
+ const { outDirRoot, outDirClient, outDirServer } = (0, getOutDirs_js_1.getOutDirs)(config);
53
54
  [outDirRoot, outDirClient, outDirServer].forEach((outDirAny) => {
54
55
  (0, utils_js_1.assertUsage)(fs_1.default.existsSync(outDirAny), `Cannot run ${picocolors_1.default.cyan('$ vike preview')}: your app isn't built (the build directory ${picocolors_1.default.cyan(outDirAny)} is missing). Make sure to run ${picocolors_1.default.cyan('$ vike build')} before running ${picocolors_1.default.cyan('$ vike preview')}.`);
55
56
  });
56
57
  }
58
+ function addStaticAssetsMiddleware(middlewares) {
59
+ const { outDirClient } = (0, getOutDirs_js_1.getOutDirs)(config);
60
+ middlewares.use((0, sirv_1.default)(outDirClient));
61
+ }
57
62
  function addStatic404Middleware(middlewares) {
58
63
  const { outDirClient } = (0, getOutDirs_js_1.getOutDirs)(config);
59
64
  middlewares.use(config.base, (_, res, next) => {
@@ -7,7 +7,7 @@ exports.addSsrMiddleware = addSsrMiddleware;
7
7
  const renderPage_js_1 = require("../../runtime/renderPage.js");
8
8
  const utils_js_1 = require("../utils.js");
9
9
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
10
- function addSsrMiddleware(middlewares, config, isPreview) {
10
+ function addSsrMiddleware(middlewares, config, isPreview, isPrerenderingEnabled) {
11
11
  middlewares.use(async (req, res, next) => {
12
12
  if (res.headersSent)
13
13
  return next();
@@ -42,6 +42,10 @@ function addSsrMiddleware(middlewares, config, isPreview) {
42
42
  // - We purposely don't use next(err) to align behavior: we use our own/copied implementation of buildErrorMessage() regardless of whether the user uses Vite's dev middleware or Vite's standalone dev server
43
43
  return next();
44
44
  }
45
+ if (pageContext.httpResponse.statusCode === 404 && isPreview && isPrerenderingEnabled) {
46
+ // Serve /dist/client/404.html instead
47
+ return next();
48
+ }
45
49
  const configHeaders = (isPreview && config?.preview?.headers) || config?.server?.headers;
46
50
  if (configHeaders) {
47
51
  for (const [name, value] of Object.entries(configHeaders))
@@ -9,7 +9,7 @@ const resolvePrerenderConfig_js_1 = require("./resolvePrerenderConfig.js");
9
9
  const globalObject = (0, getGlobalObject_js_1.getGlobalObject)('prerender/context.ts', {});
10
10
  function isPrerenderAutoRunEnabled(vikeConfig) {
11
11
  const prerenderConfigGlobal = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig);
12
- return (prerenderConfigGlobal.isEnabled &&
12
+ return (prerenderConfigGlobal.isPrerenderingEnabled &&
13
13
  !(prerenderConfigGlobal || {}).disableAutoRun &&
14
14
  !globalObject.isDisabled &&
15
15
  vikeConfig.global.config.disableAutoFullBuild !== 'prerender');
@@ -24,8 +24,14 @@ function resolvePrerenderConfigGlobal(vikeConfig) {
24
24
  false);
25
25
  (0, utils_js_1.objectAssign)(prerenderConfigGlobal, {
26
26
  defaultLocalValue,
27
- isEnabled: defaultLocalValue || vikeConfig.pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value)
27
+ isPrerenderingEnabledForAllPages: vikeConfig.pageConfigs.length > 0 &&
28
+ vikeConfig.pageConfigs.every((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue),
29
+ isPrerenderingEnabled: vikeConfig.pageConfigs.length > 0 &&
30
+ vikeConfig.pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue)
28
31
  });
32
+ // TODO/next-major remove
33
+ if (vikeConfig.pageConfigs.length === 0 && defaultLocalValue)
34
+ prerenderConfigGlobal.isPrerenderingEnabled = true;
29
35
  return prerenderConfigGlobal;
30
36
  }
31
37
  function resolvePrerenderConfigLocal(pageConfig) {
@@ -35,6 +41,7 @@ function resolvePrerenderConfigLocal(pageConfig) {
35
41
  const values = configValue.value;
36
42
  (0, utils_js_1.assert)((0, utils_js_1.isArray)(values));
37
43
  const value = values[0];
44
+ // TODO/now I believe this assert() can fail
38
45
  (0, utils_js_1.assert)(typeof value === 'boolean');
39
46
  (0, utils_js_1.assert)((0, utils_js_1.isArray)(configValue.definedAtData));
40
47
  const prerenderConfigLocal = { value };
@@ -122,13 +122,11 @@ async function runPrerender(options = {}, standaloneTrigger) {
122
122
  const { root } = viteConfig;
123
123
  const prerenderConfigGlobal = (0, resolvePrerenderConfig_js_1.resolvePrerenderConfigGlobal)(vikeConfig);
124
124
  validatePrerenderConfig(prerenderConfigGlobal);
125
- const { partial, noExtraDir, parallel, defaultLocalValue, isEnabled } = prerenderConfigGlobal;
126
- if (!isEnabled) {
125
+ const { partial, noExtraDir, parallel, defaultLocalValue, isPrerenderingEnabled } = prerenderConfigGlobal;
126
+ if (!isPrerenderingEnabled) {
127
127
  (0, utils_js_1.assert)(standaloneTrigger);
128
- // TODO/now: make it assertUsage() and remove dist/server/entry.mjs whenever possible
129
- (0, utils_js_1.assertWarning)(prerenderConfigGlobal, `You're executing ${picocolors_1.default.cyan(standaloneTrigger)} but you didn't enable pre-rendering. Use the config ${picocolors_1.default.cyan('prerender')} (${picocolors_1.default.underline('https://vike.dev/prerender')}) to enable it.`, {
130
- onlyOnce: true
131
- });
128
+ // TODO/now: make it assertUsage() and remove dist/server/entry.mjs if pre-rendering is completely disabled
129
+ (0, utils_js_1.assertWarning)(false, `You're executing ${picocolors_1.default.cyan(standaloneTrigger)} but you didn't enable pre-rendering. Use the ${picocolors_1.default.cyan('prerender')} setting (${picocolors_1.default.underline('https://vike.dev/prerender')}) to enable pre-rendering for at least one page.`, { onlyOnce: true });
132
130
  }
133
131
  const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
134
132
  await (0, globalContext_js_1.initGlobalContext_runPrerender)();
@@ -164,6 +164,13 @@ function getStreamReadableWeb(htmlRender) {
164
164
  if (isStreamReadableWeb(htmlRender)) {
165
165
  return htmlRender;
166
166
  }
167
+ if (isStreamPipeWeb(htmlRender)) {
168
+ const streamPipeWeb = getStreamPipeWeb(htmlRender);
169
+ (0, utils_js_1.assert)(streamPipeWeb);
170
+ const { readable, writable } = new TransformStream();
171
+ streamPipeWeb(writable);
172
+ return readable;
173
+ }
167
174
  return null;
168
175
  }
169
176
  function pipeToStreamWritableWeb(htmlRender, writable) {
@@ -27,6 +27,10 @@ const errorsMisc = [
27
27
  errMsg: 'assets.json',
28
28
  link: 'https://vike.dev/getGlobalContext',
29
29
  mustMentionNodeModules: false
30
+ },
31
+ {
32
+ errMsg: 'ERR_UNKNOWN_FILE_EXTENSION',
33
+ link: 'https://vike.dev/broken-npm-package#err-unknown-file-extension'
30
34
  }
31
35
  ];
32
36
  const reactInvalidEelement = 'https://vike.dev/broken-npm-package#react-invalid-component';
@@ -77,7 +81,8 @@ const errorsCjsEsm = [
77
81
  { errMsg: 'exports is not defined' },
78
82
  { errMsg: 'module is not defined' },
79
83
  { errMsg: 'not defined in ES' },
80
- { errMsg: "Unexpected token 'export'" }
84
+ { errMsg: "Unexpected token 'export'" },
85
+ { errMsg: 'Failed to resolve entry for package' }
81
86
  ];
82
87
  function logErrorHint(error) {
83
88
  /* Collect errors for ./logErrorHint.spec.ts
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PROJECT_VERSION = void 0;
4
4
  // Automatically updated by @brillout/release-me
5
- exports.PROJECT_VERSION = '0.4.223-commit-81afe1f';
5
+ exports.PROJECT_VERSION = '0.4.224-commit-f0d0f8a';
@@ -16,6 +16,8 @@ const isArray_js_1 = require("./isArray.js");
16
16
  // Avoid this to be loaded in the browser. For isomorphic code: instead of `import { createDebugger } from './utils.js'`, use `globalThis.createDebugger()`.
17
17
  (0, assert_js_1.assert)(!(0, isBrowser_js_1.isBrowser)());
18
18
  globalThis.__brillout_debug_createDebugger = createDebugger;
19
+ // We purposely read process.env.DEBUG early, in order to avoid users from the temptation to set process.env.DEBUG with JavaScript, since reading & writing process.env.DEBUG dynamically leads to inconsistencies: for example https://github.com/vikejs/vike/issues/2239
20
+ const DEBUG = getDEBUG() ?? '';
19
21
  const flags = [
20
22
  'vike:crawl',
21
23
  'vike:error',
@@ -150,7 +152,6 @@ function assertFlagsActivated() {
150
152
  });
151
153
  }
152
154
  function getFlagsActivated() {
153
- const DEBUG = getDEBUG() ?? '';
154
155
  const flagsActivated = DEBUG.match(flagRegex) ?? [];
155
156
  const all = DEBUG.includes('vike:*');
156
157
  return { flagsActivated, all };
@@ -1,5 +1,6 @@
1
1
  export { commonConfig };
2
2
  export { getVikeConfigPublic };
3
+ export type { VikeConfigPublic };
3
4
  import { type InlineConfig, type Plugin, type ResolvedConfig, type UserConfig } from 'vite';
4
5
  import { type VikeConfigObject } from './importUserCode/v1-design/getVikeConfig.js';
5
6
  import type { PrerenderContextPublic } from '../../prerender/runPrerender.js';
@@ -39,7 +39,7 @@ function commonConfig(vikeVitePluginOptions) {
39
39
  },
40
40
  // TODO/v1-release: remove https://github.com/vikejs/vike/issues/2122
41
41
  configVikePromise: Promise.resolve({
42
- prerender: resolvePrerenderConfigGlobal(vikeConfig).isEnabled
42
+ prerender: resolvePrerenderConfigGlobal(vikeConfig).isPrerenderingEnabled
43
43
  })
44
44
  };
45
45
  }
@@ -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
  },
@@ -6,6 +6,8 @@ import { addSsrMiddleware } from '../shared/addSsrMiddleware.js';
6
6
  import pc from '@brillout/picocolors';
7
7
  import { logDockerHint } from './devConfig/index.js';
8
8
  import { getOutDirs, resolveOutDir } from '../shared/getOutDirs.js';
9
+ import sirv from 'sirv';
10
+ import { resolvePrerenderConfigGlobal } from '../../prerender/resolvePrerenderConfig.js';
9
11
  function previewConfig() {
10
12
  let config;
11
13
  // let vikeConfig: VikeConfigObject
@@ -32,23 +34,26 @@ function previewConfig() {
32
34
  */
33
35
  return () => {
34
36
  assertDist();
35
- /* We don't use this condition (we wrongfully always use the SSR middleware) because of the regression introduced by https://github.com/vitejs/vite/pull/14756 which stops servering .html files when `appType: 'custom'`.
36
- if (!vikeConfig.global.config.prerender || vikeConfig.global.config.prerender.partial) {
37
- addSsrMiddleware(server.middlewares, config, true)
37
+ // We cannot re-use Vite's static middleware: https://github.com/vitejs/vite/pull/14836#issuecomment-1788540300
38
+ addStaticAssetsMiddleware(server.middlewares);
39
+ const prerenderConfigGlobal = resolvePrerenderConfigGlobal(config._vikeConfigObject);
40
+ if (!prerenderConfigGlobal.isPrerenderingEnabledForAllPages) {
41
+ addSsrMiddleware(server.middlewares, config, true, prerenderConfigGlobal.isPrerenderingEnabled);
38
42
  }
39
- /*/
40
- addSsrMiddleware(server.middlewares, config, true);
41
- //*/
42
43
  addStatic404Middleware(server.middlewares);
43
44
  };
44
45
  }
45
46
  };
46
47
  function assertDist() {
47
- let { outDirRoot, outDirClient, outDirServer } = getOutDirs(config);
48
+ const { outDirRoot, outDirClient, outDirServer } = getOutDirs(config);
48
49
  [outDirRoot, outDirClient, outDirServer].forEach((outDirAny) => {
49
50
  assertUsage(fs.existsSync(outDirAny), `Cannot run ${pc.cyan('$ vike preview')}: your app isn't built (the build directory ${pc.cyan(outDirAny)} is missing). Make sure to run ${pc.cyan('$ vike build')} before running ${pc.cyan('$ vike preview')}.`);
50
51
  });
51
52
  }
53
+ function addStaticAssetsMiddleware(middlewares) {
54
+ const { outDirClient } = getOutDirs(config);
55
+ middlewares.use(sirv(outDirClient));
56
+ }
52
57
  function addStatic404Middleware(middlewares) {
53
58
  const { outDirClient } = getOutDirs(config);
54
59
  middlewares.use(config.base, (_, res, next) => {
@@ -1,4 +1,4 @@
1
1
  export { addSsrMiddleware };
2
2
  import type { ResolvedConfig, ViteDevServer } from 'vite';
3
3
  type ConnectServer = ViteDevServer['middlewares'];
4
- declare function addSsrMiddleware(middlewares: ConnectServer, config: ResolvedConfig, isPreview: boolean): void;
4
+ declare function addSsrMiddleware(middlewares: ConnectServer, config: ResolvedConfig, isPreview: boolean, isPrerenderingEnabled: boolean | null): void;
@@ -2,7 +2,7 @@ export { addSsrMiddleware };
2
2
  import { renderPage } from '../../runtime/renderPage.js';
3
3
  import { assertWarning } from '../utils.js';
4
4
  import pc from '@brillout/picocolors';
5
- function addSsrMiddleware(middlewares, config, isPreview) {
5
+ function addSsrMiddleware(middlewares, config, isPreview, isPrerenderingEnabled) {
6
6
  middlewares.use(async (req, res, next) => {
7
7
  if (res.headersSent)
8
8
  return next();
@@ -37,6 +37,10 @@ function addSsrMiddleware(middlewares, config, isPreview) {
37
37
  // - We purposely don't use next(err) to align behavior: we use our own/copied implementation of buildErrorMessage() regardless of whether the user uses Vite's dev middleware or Vite's standalone dev server
38
38
  return next();
39
39
  }
40
+ if (pageContext.httpResponse.statusCode === 404 && isPreview && isPrerenderingEnabled) {
41
+ // Serve /dist/client/404.html instead
42
+ return next();
43
+ }
40
44
  const configHeaders = (isPreview && config?.preview?.headers) || config?.server?.headers;
41
45
  if (configHeaders) {
42
46
  for (const [name, value] of Object.entries(configHeaders))
@@ -7,7 +7,7 @@ import { resolvePrerenderConfigGlobal } from './resolvePrerenderConfig.js';
7
7
  const globalObject = getGlobalObject('prerender/context.ts', {});
8
8
  function isPrerenderAutoRunEnabled(vikeConfig) {
9
9
  const prerenderConfigGlobal = resolvePrerenderConfigGlobal(vikeConfig);
10
- return (prerenderConfigGlobal.isEnabled &&
10
+ return (prerenderConfigGlobal.isPrerenderingEnabled &&
11
11
  !(prerenderConfigGlobal || {}).disableAutoRun &&
12
12
  !globalObject.isDisabled &&
13
13
  vikeConfig.global.config.disableAutoFullBuild !== 'prerender');
@@ -9,7 +9,8 @@ declare function resolvePrerenderConfigGlobal(vikeConfig: VikeConfigObject): {
9
9
  disableAutoRun: boolean;
10
10
  } & {
11
11
  defaultLocalValue: boolean;
12
- isEnabled: boolean;
12
+ isPrerenderingEnabledForAllPages: boolean;
13
+ isPrerenderingEnabled: boolean;
13
14
  };
14
15
  declare function resolvePrerenderConfigLocal(pageConfig: PageConfigBuildTime): {
15
16
  value: boolean;
@@ -22,8 +22,14 @@ function resolvePrerenderConfigGlobal(vikeConfig) {
22
22
  false);
23
23
  objectAssign(prerenderConfigGlobal, {
24
24
  defaultLocalValue,
25
- isEnabled: defaultLocalValue || vikeConfig.pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value)
25
+ isPrerenderingEnabledForAllPages: vikeConfig.pageConfigs.length > 0 &&
26
+ vikeConfig.pageConfigs.every((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue),
27
+ isPrerenderingEnabled: vikeConfig.pageConfigs.length > 0 &&
28
+ vikeConfig.pageConfigs.some((pageConfig) => resolvePrerenderConfigLocal(pageConfig)?.value ?? defaultLocalValue)
26
29
  });
30
+ // TODO/next-major remove
31
+ if (vikeConfig.pageConfigs.length === 0 && defaultLocalValue)
32
+ prerenderConfigGlobal.isPrerenderingEnabled = true;
27
33
  return prerenderConfigGlobal;
28
34
  }
29
35
  function resolvePrerenderConfigLocal(pageConfig) {
@@ -33,6 +39,7 @@ function resolvePrerenderConfigLocal(pageConfig) {
33
39
  const values = configValue.value;
34
40
  assert(isArray(values));
35
41
  const value = values[0];
42
+ // TODO/now I believe this assert() can fail
36
43
  assert(typeof value === 'boolean');
37
44
  assert(isArray(configValue.definedAtData));
38
45
  const prerenderConfigLocal = { value };
@@ -84,13 +84,11 @@ async function runPrerender(options = {}, standaloneTrigger) {
84
84
  const { root } = viteConfig;
85
85
  const prerenderConfigGlobal = resolvePrerenderConfigGlobal(vikeConfig);
86
86
  validatePrerenderConfig(prerenderConfigGlobal);
87
- const { partial, noExtraDir, parallel, defaultLocalValue, isEnabled } = prerenderConfigGlobal;
88
- if (!isEnabled) {
87
+ const { partial, noExtraDir, parallel, defaultLocalValue, isPrerenderingEnabled } = prerenderConfigGlobal;
88
+ if (!isPrerenderingEnabled) {
89
89
  assert(standaloneTrigger);
90
- // TODO/now: make it assertUsage() and remove dist/server/entry.mjs whenever possible
91
- assertWarning(prerenderConfigGlobal, `You're executing ${pc.cyan(standaloneTrigger)} but you didn't enable pre-rendering. Use the config ${pc.cyan('prerender')} (${pc.underline('https://vike.dev/prerender')}) to enable it.`, {
92
- onlyOnce: true
93
- });
90
+ // TODO/now: make it assertUsage() and remove dist/server/entry.mjs if pre-rendering is completely disabled
91
+ assertWarning(false, `You're executing ${pc.cyan(standaloneTrigger)} but you didn't enable pre-rendering. Use the ${pc.cyan('prerender')} setting (${pc.underline('https://vike.dev/prerender')}) to enable pre-rendering for at least one page.`, { onlyOnce: true });
94
92
  }
95
93
  const concurrencyLimit = pLimit(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? cpus().length : parallel);
96
94
  await initGlobalContext_runPrerender();
@@ -75,7 +75,7 @@ declare function getUserFiles(): Promise<{
75
75
  pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
76
76
  onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
77
77
  pages: PageConfigsUserFriendly;
78
- config: import("../../shared/page-configs/Config/PageContextConfig.js").ConfigResolved;
78
+ config: import("../../types/index.js").ConfigResolved;
79
79
  }>;
80
80
  declare function setGlobalContext_buildEntry(buildEntry: unknown): Promise<void>;
81
81
  type BuildInfo = {
@@ -159,6 +159,13 @@ function getStreamReadableWeb(htmlRender) {
159
159
  if (isStreamReadableWeb(htmlRender)) {
160
160
  return htmlRender;
161
161
  }
162
+ if (isStreamPipeWeb(htmlRender)) {
163
+ const streamPipeWeb = getStreamPipeWeb(htmlRender);
164
+ assert(streamPipeWeb);
165
+ const { readable, writable } = new TransformStream();
166
+ streamPipeWeb(writable);
167
+ return readable;
168
+ }
162
169
  return null;
163
170
  }
164
171
  function pipeToStreamWritableWeb(htmlRender, writable) {
@@ -23,6 +23,10 @@ const errorsMisc = [
23
23
  errMsg: 'assets.json',
24
24
  link: 'https://vike.dev/getGlobalContext',
25
25
  mustMentionNodeModules: false
26
+ },
27
+ {
28
+ errMsg: 'ERR_UNKNOWN_FILE_EXTENSION',
29
+ link: 'https://vike.dev/broken-npm-package#err-unknown-file-extension'
26
30
  }
27
31
  ];
28
32
  const reactInvalidEelement = 'https://vike.dev/broken-npm-package#react-invalid-component';
@@ -73,7 +77,8 @@ const errorsCjsEsm = [
73
77
  { errMsg: 'exports is not defined' },
74
78
  { errMsg: 'module is not defined' },
75
79
  { errMsg: 'not defined in ES' },
76
- { errMsg: "Unexpected token 'export'" }
80
+ { errMsg: "Unexpected token 'export'" },
81
+ { errMsg: 'Failed to resolve entry for package' }
77
82
  ];
78
83
  function logErrorHint(error) {
79
84
  /* Collect errors for ./logErrorHint.spec.ts
@@ -62,7 +62,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
62
62
  pageRoutes: import("../../../__internal/index.js").PageRoutes;
63
63
  onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
64
64
  pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
65
- config: import("../../../shared/page-configs/Config/PageContextConfig.js").ConfigResolved;
65
+ config: import("../../../types/index.js").ConfigResolved;
66
66
  } & ({
67
67
  isProduction: false;
68
68
  isPrerendering: false;
@@ -148,7 +148,7 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
148
148
  pageRoutes: import("../../../__internal/index.js").PageRoutes;
149
149
  onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
150
150
  pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
151
- config: import("../../../shared/page-configs/Config/PageContextConfig.js").ConfigResolved;
151
+ config: import("../../../types/index.js").ConfigResolved;
152
152
  } & ({
153
153
  isProduction: false;
154
154
  isPrerendering: false;
@@ -235,7 +235,7 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
235
235
  pageRoutes: import("../../../__internal/index.js").PageRoutes;
236
236
  onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
237
237
  pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
238
- config: import("../../../shared/page-configs/Config/PageContextConfig.js").ConfigResolved;
238
+ config: import("../../../types/index.js").ConfigResolved;
239
239
  } & ({
240
240
  isProduction: false;
241
241
  isPrerendering: false;
@@ -321,7 +321,7 @@ declare function prerender404Page(pageContextInit_: Record<string, unknown> | nu
321
321
  pageRoutes: import("../../../__internal/index.js").PageRoutes;
322
322
  onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
323
323
  pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
324
- config: import("../../../shared/page-configs/Config/PageContextConfig.js").ConfigResolved;
324
+ config: import("../../../types/index.js").ConfigResolved;
325
325
  } & ({
326
326
  isProduction: false;
327
327
  isPrerendering: false;
@@ -416,7 +416,7 @@ declare function getPageContextInitEnhanced(pageContextInit: {
416
416
  pageRoutes: import("../../../__internal/index.js").PageRoutes;
417
417
  onBeforeRouteHook: import("../../../shared/hooks/getHook.js").Hook | null;
418
418
  pages: import("../../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
419
- config: import("../../../shared/page-configs/Config/PageContextConfig.js").ConfigResolved;
419
+ config: import("../../../types/index.js").ConfigResolved;
420
420
  } & ({
421
421
  isProduction: false;
422
422
  isPrerendering: false;
@@ -8,9 +8,11 @@ export type { PageContextBuiltInServer } from '../shared/types.js';
8
8
  export type { PageContextBuiltInClientWithClientRouting } from '../shared/types.js';
9
9
  export type { PageContextBuiltInClientWithServerRouting } from '../shared/types.js';
10
10
  export type { Config, ConfigMeta as Meta, ImportString, DataAsync, DataSync, GuardAsync, GuardSync, OnBeforePrerenderStartAsync, OnBeforePrerenderStartSync, OnBeforeRenderAsync, OnBeforeRenderSync, OnBeforeRouteAsync, OnBeforeRouteSync, OnHydrationEndAsync, OnHydrationEndSync, OnPageTransitionEndAsync, OnPageTransitionEndSync, OnPageTransitionStartAsync, OnPageTransitionStartSync, OnPrerenderStartAsync, OnPrerenderStartSync, OnRenderClientAsync, OnRenderClientSync, OnRenderHtmlAsync, OnRenderHtmlSync, RouteAsync, RouteSync, KeepScrollPosition } from '../shared/page-configs/Config.js';
11
+ export type { ConfigResolved } from '../shared/page-configs/Config/PageContextConfig.js';
11
12
  export type { ConfigEnv } from '../shared/page-configs/PageConfig.js';
12
13
  export type { ConfigDefinition, ConfigEffect } from '../node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js';
13
14
  export type { ConfigEntries } from '../shared/page-configs/getPageConfigUserFriendly.js';
15
+ export type { VikeConfigPublic as VikeConfig } from '../node/plugin/plugins/commonConfig.js';
14
16
  export type { UrlPublic as Url } from '../utils/parseUrl.js';
15
17
  export type { InjectFilterEntry } from '../node/runtime/html/injectAssets/getHtmlTags.js';
16
18
  export { defineConfig } from './defineConfig.js';
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: "0.4.223-commit-81afe1f";
1
+ export declare const PROJECT_VERSION: "0.4.224-commit-f0d0f8a";
@@ -1,2 +1,2 @@
1
1
  // Automatically updated by @brillout/release-me
2
- export const PROJECT_VERSION = '0.4.223-commit-81afe1f';
2
+ export const PROJECT_VERSION = '0.4.224-commit-f0d0f8a';
@@ -11,6 +11,8 @@ import { isArray } from './isArray.js';
11
11
  // Avoid this to be loaded in the browser. For isomorphic code: instead of `import { createDebugger } from './utils.js'`, use `globalThis.createDebugger()`.
12
12
  assert(!isBrowser());
13
13
  globalThis.__brillout_debug_createDebugger = createDebugger;
14
+ // We purposely read process.env.DEBUG early, in order to avoid users from the temptation to set process.env.DEBUG with JavaScript, since reading & writing process.env.DEBUG dynamically leads to inconsistencies: for example https://github.com/vikejs/vike/issues/2239
15
+ const DEBUG = getDEBUG() ?? '';
14
16
  const flags = [
15
17
  'vike:crawl',
16
18
  'vike:error',
@@ -145,7 +147,6 @@ function assertFlagsActivated() {
145
147
  });
146
148
  }
147
149
  function getFlagsActivated() {
148
- const DEBUG = getDEBUG() ?? '';
149
150
  const flagsActivated = DEBUG.match(flagRegex) ?? [];
150
151
  const all = DEBUG.includes('vike:*');
151
152
  return { flagsActivated, all };
@@ -1,4 +1,4 @@
1
1
  export declare const projectInfo: {
2
2
  projectName: "Vike";
3
- projectVersion: "0.4.223-commit-81afe1f";
3
+ projectVersion: "0.4.224-commit-f0d0f8a";
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike",
3
- "version": "0.4.223-commit-81afe1f",
3
+ "version": "0.4.224-commit-f0d0f8a",
4
4
  "repository": "https://github.com/vikejs/vike",
5
5
  "exports": {
6
6
  "./server": {
@@ -131,6 +131,7 @@
131
131
  "json5": "^2.0.0",
132
132
  "picomatch": "^4.0.2",
133
133
  "semver": "^7.0.0",
134
+ "sirv": "^3.0.1",
134
135
  "source-map-support": "^0.5.0",
135
136
  "tinyglobby": "^0.2.10",
136
137
  "vite": ">=5.1.0"