vike 0.4.183 → 0.4.184

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 (48) hide show
  1. package/dist/cjs/node/plugin/index.js +2 -2
  2. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +3 -5
  3. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +1 -1
  4. package/dist/cjs/node/plugin/plugins/setGlobalContext.js +7 -0
  5. package/dist/cjs/node/plugin/utils.js +1 -1
  6. package/dist/cjs/node/runtime/globalContext.js +9 -6
  7. package/dist/cjs/node/runtime/html/stream.js +6 -4
  8. package/dist/cjs/node/runtime/utils.js +2 -0
  9. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  10. package/dist/cjs/utils/assertNodeEnv.js +5 -4
  11. package/dist/cjs/utils/includes.js +14 -0
  12. package/dist/cjs/utils/isDev.js +8 -24
  13. package/dist/cjs/utils/objectEntries.js +9 -0
  14. package/dist/cjs/utils/objectEntriesForEach.js +8 -0
  15. package/dist/cjs/utils/objectFromEntries.js +8 -0
  16. package/dist/cjs/utils/objectKeys.js +1 -21
  17. package/dist/esm/node/plugin/index.js +2 -2
  18. package/dist/esm/node/plugin/plugins/importUserCode/index.js +4 -6
  19. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +2 -2
  20. package/dist/esm/node/plugin/plugins/setGlobalContext.js +8 -1
  21. package/dist/esm/node/plugin/utils.d.ts +1 -1
  22. package/dist/esm/node/plugin/utils.js +1 -1
  23. package/dist/esm/node/runtime/globalContext.d.ts +2 -0
  24. package/dist/esm/node/runtime/globalContext.js +8 -5
  25. package/dist/esm/node/runtime/html/stream.js +6 -4
  26. package/dist/esm/node/runtime/utils.d.ts +2 -0
  27. package/dist/esm/node/runtime/utils.js +2 -0
  28. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  29. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  30. package/dist/esm/utils/assertNodeEnv.d.ts +1 -1
  31. package/dist/esm/utils/assertNodeEnv.js +5 -4
  32. package/dist/esm/utils/includes.d.ts +2 -0
  33. package/dist/esm/utils/includes.js +10 -0
  34. package/dist/esm/utils/isDev.d.ts +1 -5
  35. package/dist/esm/utils/isDev.js +7 -23
  36. package/dist/esm/utils/objectEntries.d.ts +2 -0
  37. package/dist/esm/utils/objectEntries.js +5 -0
  38. package/dist/esm/utils/objectEntriesForEach.d.ts +2 -0
  39. package/dist/esm/utils/objectEntriesForEach.js +4 -0
  40. package/dist/esm/utils/objectFromEntries.d.ts +2 -0
  41. package/dist/esm/utils/objectFromEntries.js +4 -0
  42. package/dist/esm/utils/objectKeys.d.ts +1 -8
  43. package/dist/esm/utils/objectKeys.js +1 -22
  44. package/dist/esm/utils/projectInfo.d.ts +1 -1
  45. package/package.json +2 -2
  46. package/dist/cjs/utils/arrayIncludes.js +0 -7
  47. package/dist/esm/utils/arrayIncludes.d.ts +0 -1
  48. package/dist/esm/utils/arrayIncludes.js +0 -3
@@ -74,7 +74,7 @@ Object.defineProperty(plugin, 'apply', {
74
74
  (0, utils_js_2.assertUsage)(false, `Add ${picocolors_1.default.cyan('vike()')} instead of ${picocolors_1.default.cyan('vike')} to vite.config.js#plugins (i.e. call the function and add the return value instead of adding the function itself)`, { showStackTrace: true });
75
75
  }
76
76
  });
77
- // node_modules/vike/package.json#peerDependencies.vite isn't enough as users can ignore it
77
+ // package.json#peerDependencies isn't enough as users can ignore it
78
78
  function assertViteVersion() {
79
- (0, utils_js_2.assertVersion)('Vite', vite_1.version, '4.4.0');
79
+ (0, utils_js_2.assertVersion)('Vite', vite_1.version, '5.1.0');
80
80
  }
@@ -18,11 +18,11 @@ const getFilePath_js_1 = require("../../shared/getFilePath.js");
18
18
  function importUserCode() {
19
19
  let config;
20
20
  let configVike;
21
- let isDev_;
21
+ let isDev;
22
22
  return {
23
23
  name: 'vike:importUserCode',
24
24
  config(_, env) {
25
- isDev_ = (0, utils_js_1.isDev3)(env);
25
+ isDev = (0, utils_js_1.isDev3)(env);
26
26
  return {
27
27
  experimental: {
28
28
  // TODO/v1-release: remove
@@ -50,10 +50,10 @@ function importUserCode() {
50
50
  }
51
51
  },
52
52
  async load(id, options) {
53
- const isDev = isDev_ !== null ? isDev_ : (0, utils_js_1.isDev1)();
54
53
  if (!(0, utils_js_1.isVirtualFileId)(id))
55
54
  return undefined;
56
55
  id = (0, utils_js_1.getVirtualFileId)(id);
56
+ (0, utils_js_1.assert)(typeof isDev === 'boolean');
57
57
  if ((0, virtualFilePageConfigValuesAll_js_1.isVirtualFileIdPageConfigValuesAll)(id)) {
58
58
  const code = await (0, getVirtualFilePageConfigValuesAll_js_1.getVirtualFilePageConfigValuesAll)(id, isDev, config);
59
59
  return code;
@@ -64,8 +64,6 @@ function importUserCode() {
64
64
  }
65
65
  },
66
66
  configureServer(server) {
67
- if (isDev_ === null)
68
- (0, utils_js_1.isDev1_onConfigureServer)();
69
67
  handleFileAddRemove(server, config);
70
68
  }
71
69
  };
@@ -976,7 +976,7 @@ function isGlobalConfig(configName) {
976
976
  if (configName === 'prerender')
977
977
  return false;
978
978
  const configNamesGlobal = getConfigNamesGlobal();
979
- return (0, utils_js_1.arrayIncludes)(configNamesGlobal, configName);
979
+ return (0, utils_js_1.includes)(configNamesGlobal, configName);
980
980
  }
981
981
  function getConfigNamesGlobal() {
982
982
  return Object.keys(configDefinitionsBuiltIn_js_1.configDefinitionsBuiltInGlobal);
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setGlobalContext = void 0;
4
4
  const globalContext_js_1 = require("../../runtime/globalContext.js");
5
+ const utils_js_1 = require("../utils.js");
5
6
  function setGlobalContext() {
6
7
  return {
7
8
  name: 'vike:setGlobalContext',
@@ -11,6 +12,12 @@ function setGlobalContext() {
11
12
  handler(viteDevServer) {
12
13
  (0, globalContext_js_1.setGlobalContext_viteDevServer)(viteDevServer);
13
14
  }
15
+ },
16
+ config: {
17
+ handler(_, env) {
18
+ const isDev = (0, utils_js_1.isDev3)(env);
19
+ (0, globalContext_js_1.setGlobalContext_isDev)(isDev);
20
+ }
14
21
  }
15
22
  };
16
23
  }
@@ -23,7 +23,7 @@ __exportStar(require("../runtime/utils.js"), exports);
23
23
  // Utils only needed by `plugin/*`
24
24
  __exportStar(require("../../utils/viteIsSSR.js"), exports);
25
25
  __exportStar(require("../../utils/requireResolve.js"), exports);
26
- __exportStar(require("../../utils/arrayIncludes.js"), exports);
26
+ __exportStar(require("../../utils/includes.js"), exports);
27
27
  __exportStar(require("../../utils/isDev.js"), exports);
28
28
  __exportStar(require("../../utils/getMostSimilar.js"), exports);
29
29
  __exportStar(require("../../utils/getRandomId.js"), exports);
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getRuntimeManifest = exports.setGlobalContext_prerender = exports.setGlobalContext_viteDevServer = exports.getViteConfig = exports.getViteDevServer = exports.getGlobalContext = exports.initGlobalContext = exports.getGlobalContextAsync = exports.getGlobalContextSync = void 0;
6
+ exports.getRuntimeManifest = exports.setGlobalContext_prerender = exports.setGlobalContext_isDev = exports.setGlobalContext_viteDevServer = exports.getViteConfig = exports.getViteDevServer = exports.getGlobalContext = exports.initGlobalContext = exports.getGlobalContextAsync = exports.getGlobalContextSync = void 0;
7
7
  const utils_js_1 = require("./utils.js");
8
8
  const loadImportBuild_js_1 = require("./globalContext/loadImportBuild.js");
9
9
  const getPageFiles_js_1 = require("../../shared/getPageFiles.js");
@@ -61,11 +61,14 @@ function setGlobalContext_viteDevServer(viteDevServer) {
61
61
  if (globalObject.viteDevServer)
62
62
  return;
63
63
  (0, utils_js_1.assert)(!globalObject.globalContext);
64
- (0, utils_js_1.assert)(!globalObject.globalContext);
65
64
  globalObject.viteConfig = viteDevServer.config;
66
65
  globalObject.viteDevServer = viteDevServer;
67
66
  }
68
67
  exports.setGlobalContext_viteDevServer = setGlobalContext_viteDevServer;
68
+ function setGlobalContext_isDev(isDev) {
69
+ globalObject.isDev = isDev;
70
+ }
71
+ exports.setGlobalContext_isDev = setGlobalContext_isDev;
69
72
  function getViteDevServer() {
70
73
  return globalObject.viteDevServer ?? null;
71
74
  }
@@ -84,12 +87,12 @@ exports.getViteConfig = getViteConfig;
84
87
  async function initGlobalContext(isPrerendering = false, outDir) {
85
88
  if (globalObject.globalContext)
86
89
  return;
87
- const { viteDevServer, viteConfig } = globalObject;
88
- (0, utils_js_1.assertNodeEnv_runtime)(!!viteDevServer);
89
- const isProduction = !viteDevServer;
90
- if (!isProduction) {
90
+ const { viteDevServer, viteConfig, isDev } = globalObject;
91
+ (0, utils_js_1.assertNodeEnv_runtime)(isDev ?? false);
92
+ if (isDev) {
91
93
  (0, utils_js_1.assert)(viteConfig);
92
94
  (0, utils_js_1.assert)(!isPrerendering);
95
+ (0, utils_js_1.assert)(viteDevServer);
93
96
  const configVike = await (0, getConfigVike_js_1.getConfigVike)(viteConfig);
94
97
  const pluginManifest = getRuntimeManifest(configVike);
95
98
  globalObject.globalContext = {
@@ -43,15 +43,17 @@ async function streamReadableNodeToString(readableNode) {
43
43
  });
44
44
  }
45
45
  async function streamReadableWebToString(readableWeb) {
46
- let str = '';
47
46
  const reader = readableWeb.getReader();
47
+ const decoder = new TextDecoder();
48
+ let str = '';
48
49
  while (true) {
49
50
  const { done, value } = await reader.read();
50
- if (done) {
51
+ if (done)
51
52
  break;
52
- }
53
- str += value;
53
+ str += decoder.decode(value, { stream: true });
54
54
  }
55
+ // https://github.com/vikejs/vike/pull/1799#discussion_r1713554096
56
+ str += decoder.decode();
55
57
  return str;
56
58
  }
57
59
  exports.streamReadableWebToString = streamReadableWebToString;
@@ -55,6 +55,8 @@ __exportStar(require("../../utils/isNotNullish.js"), exports);
55
55
  __exportStar(require("../../utils/isScriptFile.js"), exports);
56
56
  __exportStar(require("../../utils/removeFileExtention.js"), exports);
57
57
  __exportStar(require("../../utils/objectKeys.js"), exports);
58
+ __exportStar(require("../../utils/objectEntries.js"), exports);
59
+ __exportStar(require("../../utils/objectFromEntries.js"), exports);
58
60
  __exportStar(require("../../utils/getFileExtension.js"), exports);
59
61
  __exportStar(require("../../utils/assertIsNotProductionRuntime.js"), exports);
60
62
  __exportStar(require("../../utils/virtual-files.js"), exports);
@@ -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.183';
5
+ exports.PROJECT_VERSION = '0.4.184';
@@ -24,17 +24,18 @@ function assertNodeEnv_build() {
24
24
  assertNodeEnvIsNotDev('building');
25
25
  }
26
26
  exports.assertNodeEnv_build = assertNodeEnv_build;
27
- function assertNodeEnv_runtime(viteDevServerExists) {
27
+ function assertNodeEnv_runtime(isViteDev) {
28
28
  const nodeEnv = getNodeEnv();
29
29
  if (nodeEnv === null || nodeEnv === 'test')
30
30
  return;
31
- const isDev = isNodeEnvDev();
31
+ const isNodeDev = isNodeEnvDev();
32
32
  // Calling Vite's createServer() is enough for hasViteDevServer to be true, even without actually adding Vite's development middleware to the server: https://github.com/vikejs/vike/issues/792#issuecomment-1516830759
33
- if (viteDevServerExists === isDev)
33
+ if (isViteDev === isNodeDev)
34
34
  return;
35
35
  const nodeEnvDesc = getNodeEnvDesc();
36
36
  // TODO: make it assertUsage() again once #1528 is implemented.
37
- (0, assert_js_1.assertWarning)(false, `Vite's development server was${viteDevServerExists ? '' : "n't"} instantiated while the ${nodeEnvDesc} which is contradictory, see https://vike.dev/NODE_ENV`, { onlyOnce: true });
37
+ const errMsg = `Running ${isViteDev ? picocolors_1.default.cyan('$ vite dev') : 'app in production'} while the ${nodeEnvDesc} which is contradictory, see https://vike.dev/NODE_ENV`;
38
+ (0, assert_js_1.assertWarning)(false, errMsg, { onlyOnce: true });
38
39
  }
39
40
  exports.assertNodeEnv_runtime = assertNodeEnv_runtime;
40
41
  function assertNodeEnv_onVikePluginLoad() {
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.includes = void 0;
4
+ // https://stackoverflow.com/questions/56565528/typescript-const-assertions-how-to-use-array-prototype-includes/74213179#74213179
5
+ /** Same as Array.prototype.includes() but with type inference */
6
+ function includes(values, x) {
7
+ return values.includes(x);
8
+ }
9
+ exports.includes = includes;
10
+ /*
11
+ export function includes<Arr extends any[] | readonly any[]>(arr: Arr, el: unknown): el is Arr[number] {
12
+ return arr.includes(el as any)
13
+ }
14
+ */
@@ -1,35 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isDev3 = exports.isDev2 = exports.isDev1_onConfigureServer = exports.isDev1 = void 0;
3
+ exports.isDev3 = exports.isDev2 = void 0;
4
+ const assert_js_1 = require("./assert.js");
4
5
  function isDev3(configEnv) {
5
6
  const { isPreview, command } = configEnv;
6
7
  if (command !== 'serve')
7
8
  return false;
8
- if (typeof isPreview === 'boolean')
9
- return !isPreview;
10
- // isPreview is undefined in older Vite versions, see https://github.com/vitejs/vite/commit/93fce55
11
- return null;
9
+ // `isPreview` is `undefined` in older Vite versions.
10
+ // https://github.com/vitejs/vite/pull/14855
11
+ // https://github.com/vitejs/vite/pull/15695O
12
+ // - Released at `vite@5.1.0`: https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md#510-beta4-2024-01-26:~:text=fix(preview)%3A%20set%20isPreview%20true%20(%2315695)%20(93fce55)%2C%20closes%20%2315695
13
+ (0, assert_js_1.assert)(typeof isPreview === 'boolean');
14
+ return !isPreview;
12
15
  }
13
16
  exports.isDev3 = isDev3;
14
- // ********
15
- // Method 1 - reliable
16
- // ********
17
- const assert_js_1 = require("./assert.js");
18
- const getGlobalObject_js_1 = require("./getGlobalObject.js");
19
- const globalObject = (0, getGlobalObject_js_1.getGlobalObject)('utils/isDev.ts', { isDev: false, isDev_wasCalled: false });
20
- function isDev1() {
21
- globalObject.isDev_wasCalled = true;
22
- return globalObject.isDev;
23
- }
24
- exports.isDev1 = isDev1;
25
- function isDev1_onConfigureServer() {
26
- // configureServer() is called more than once when user presses Vite's dev server reload hotkey <r>
27
- if (globalObject.isDev)
28
- return;
29
- (0, assert_js_1.assert)(!globalObject.isDev_wasCalled);
30
- globalObject.isDev = true;
31
- }
32
- exports.isDev1_onConfigureServer = isDev1_onConfigureServer;
33
17
  function isDev2(config) {
34
18
  const isDev = config.command === 'serve' &&
35
19
  // Mode is 'development' by default: https://github.com/vitejs/vite/blob/bf9c49f521b7a6730231c35754d5e1f9c3a6a16e/packages/vite/src/node/config.ts#L383
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.objectEntries = void 0;
4
+ // https://stackoverflow.com/questions/60141960/typescript-key-value-relation-preserving-object-entries-type/75337277#75337277
5
+ /** Same as Object.entries() but with type inference */
6
+ function objectEntries(obj) {
7
+ return Object.entries(obj);
8
+ }
9
+ exports.objectEntries = objectEntries;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.objectEntriesForEach = void 0;
4
+ /** Same as Object.entries().forEach() but with type inference */
5
+ function objectEntriesForEach(obj, iterator) {
6
+ Object.entries(obj).forEach(([key, val]) => iterator(key, val));
7
+ }
8
+ exports.objectEntriesForEach = objectEntriesForEach;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.objectFromEntries = void 0;
4
+ /** Same as Object.fromEntries() but with type inference */
5
+ function objectFromEntries(arr) {
6
+ return Object.fromEntries(arr);
7
+ }
8
+ exports.objectFromEntries = objectFromEntries;
@@ -1,18 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.objectKeys = exports.objectFromEntries = exports.objectEntries = void 0;
4
- // export { forEach }
5
- // https://stackoverflow.com/questions/60141960/typescript-key-value-relation-preserving-object-entries-type/75337277#75337277
6
- /** Same as Object.entries() but with type inference */
7
- function objectEntries(obj) {
8
- return Object.entries(obj);
9
- }
10
- exports.objectEntries = objectEntries;
11
- /** Same as Object.fromEntries() but with type inference */
12
- function objectFromEntries(arr) {
13
- return Object.fromEntries(arr);
14
- }
15
- exports.objectFromEntries = objectFromEntries;
3
+ exports.objectKeys = void 0;
16
4
  // https://stackoverflow.com/questions/52856496/typescript-object-keys-return-string
17
5
  // https://github.com/sindresorhus/ts-extras/blob/main/source/object-keys.ts
18
6
  /** Same as Object.keys() but with type inference */
@@ -20,11 +8,3 @@ function objectKeys(obj) {
20
8
  return Object.keys(obj);
21
9
  }
22
10
  exports.objectKeys = objectKeys;
23
- /* Not used yet, but can be quite useful.
24
- function forEach<Obj extends object>(
25
- obj: Obj,
26
- iterator: <Key extends keyof Obj>(key: Key, val: Obj[Key]) => void
27
- ): void {
28
- Object.entries(obj).forEach(([key, val]) => iterator(key as keyof Obj, val))
29
- }
30
- //*/
@@ -68,7 +68,7 @@ Object.defineProperty(plugin, 'apply', {
68
68
  assertUsage(false, `Add ${pc.cyan('vike()')} instead of ${pc.cyan('vike')} to vite.config.js#plugins (i.e. call the function and add the return value instead of adding the function itself)`, { showStackTrace: true });
69
69
  }
70
70
  });
71
- // node_modules/vike/package.json#peerDependencies.vite isn't enough as users can ignore it
71
+ // package.json#peerDependencies isn't enough as users can ignore it
72
72
  function assertViteVersion() {
73
- assertVersion('Vite', version, '4.4.0');
73
+ assertVersion('Vite', version, '5.1.0');
74
74
  }
@@ -3,7 +3,7 @@ import { normalizePath } from 'vite';
3
3
  import { getConfigVike } from '../../../shared/getConfigVike.js';
4
4
  import { getVirtualFilePageConfigValuesAll } from './v1-design/getVirtualFilePageConfigValuesAll.js';
5
5
  import { getVirtualFileImportUserCode } from './getVirtualFileImportUserCode.js';
6
- import { assert, assertPosixPath, getOutDirs, getVirtualFileId, isDev1, isDev1_onConfigureServer, isDev3, isVirtualFileId, resolveVirtualFileId } from '../../utils.js';
6
+ import { assert, assertPosixPath, getOutDirs, getVirtualFileId, isDev3, isVirtualFileId, resolveVirtualFileId } from '../../utils.js';
7
7
  import { isVirtualFileIdPageConfigValuesAll } from '../../../shared/virtual-files/virtualFilePageConfigValuesAll.js';
8
8
  import { isVirtualFileIdImportUserCode } from '../../../shared/virtual-files/virtualFileImportUserCode.js';
9
9
  import { vikeConfigDependencies, reloadVikeConfig, isVikeConfigFile } from './v1-design/getVikeConfig.js';
@@ -13,11 +13,11 @@ import { getModuleFilePath } from '../../shared/getFilePath.js';
13
13
  function importUserCode() {
14
14
  let config;
15
15
  let configVike;
16
- let isDev_;
16
+ let isDev;
17
17
  return {
18
18
  name: 'vike:importUserCode',
19
19
  config(_, env) {
20
- isDev_ = isDev3(env);
20
+ isDev = isDev3(env);
21
21
  return {
22
22
  experimental: {
23
23
  // TODO/v1-release: remove
@@ -45,10 +45,10 @@ function importUserCode() {
45
45
  }
46
46
  },
47
47
  async load(id, options) {
48
- const isDev = isDev_ !== null ? isDev_ : isDev1();
49
48
  if (!isVirtualFileId(id))
50
49
  return undefined;
51
50
  id = getVirtualFileId(id);
51
+ assert(typeof isDev === 'boolean');
52
52
  if (isVirtualFileIdPageConfigValuesAll(id)) {
53
53
  const code = await getVirtualFilePageConfigValuesAll(id, isDev, config);
54
54
  return code;
@@ -59,8 +59,6 @@ function importUserCode() {
59
59
  }
60
60
  },
61
61
  configureServer(server) {
62
- if (isDev_ === null)
63
- isDev1_onConfigureServer();
64
62
  handleFileAddRemove(server, config);
65
63
  }
66
64
  };
@@ -4,7 +4,7 @@ export { vikeConfigDependencies };
4
4
  export { isVikeConfigFile };
5
5
  export { isV1Design };
6
6
  export { getConfigValueInterfaceFile };
7
- import { assertPosixPath, assert, isObject, assertUsage, assertWarning, objectEntries, hasProp, arrayIncludes, assertIsNotProductionRuntime, getMostSimilar, joinEnglish, lowerFirst, getOutDirs, assertKeys, objectKeys, objectFromEntries, makeFirst, isNpmPackageImport, reverse } from '../../../utils.js';
7
+ import { assertPosixPath, assert, isObject, assertUsage, assertWarning, objectEntries, hasProp, includes, assertIsNotProductionRuntime, getMostSimilar, joinEnglish, lowerFirst, getOutDirs, assertKeys, objectKeys, objectFromEntries, makeFirst, isNpmPackageImport, reverse } from '../../../utils.js';
8
8
  import path from 'path';
9
9
  import { configDefinitionsBuiltIn, configDefinitionsBuiltInGlobal } from './getVikeConfig/configDefinitionsBuiltIn.js';
10
10
  import { getLocationId, getFilesystemRouteString, getFilesystemRouteDefinedBy, isInherited, sortAfterInheritanceOrder, isGlobalLocation, applyFilesystemRoutingRootEffect } from './getVikeConfig/filesystemRouting.js';
@@ -971,7 +971,7 @@ function isGlobalConfig(configName) {
971
971
  if (configName === 'prerender')
972
972
  return false;
973
973
  const configNamesGlobal = getConfigNamesGlobal();
974
- return arrayIncludes(configNamesGlobal, configName);
974
+ return includes(configNamesGlobal, configName);
975
975
  }
976
976
  function getConfigNamesGlobal() {
977
977
  return Object.keys(configDefinitionsBuiltInGlobal);
@@ -1,5 +1,6 @@
1
1
  export { setGlobalContext };
2
- import { setGlobalContext_viteDevServer } from '../../runtime/globalContext.js';
2
+ import { setGlobalContext_isDev, setGlobalContext_viteDevServer } from '../../runtime/globalContext.js';
3
+ import { isDev3 } from '../utils.js';
3
4
  function setGlobalContext() {
4
5
  return {
5
6
  name: 'vike:setGlobalContext',
@@ -9,6 +10,12 @@ function setGlobalContext() {
9
10
  handler(viteDevServer) {
10
11
  setGlobalContext_viteDevServer(viteDevServer);
11
12
  }
13
+ },
14
+ config: {
15
+ handler(_, env) {
16
+ const isDev = isDev3(env);
17
+ setGlobalContext_isDev(isDev);
18
+ }
12
19
  }
13
20
  };
14
21
  }
@@ -1,7 +1,7 @@
1
1
  export * from '../runtime/utils.js';
2
2
  export * from '../../utils/viteIsSSR.js';
3
3
  export * from '../../utils/requireResolve.js';
4
- export * from '../../utils/arrayIncludes.js';
4
+ export * from '../../utils/includes.js';
5
5
  export * from '../../utils/isDev.js';
6
6
  export * from '../../utils/getMostSimilar.js';
7
7
  export * from '../../utils/getRandomId.js';
@@ -7,7 +7,7 @@ export * from '../runtime/utils.js';
7
7
  // Utils only needed by `plugin/*`
8
8
  export * from '../../utils/viteIsSSR.js';
9
9
  export * from '../../utils/requireResolve.js';
10
- export * from '../../utils/arrayIncludes.js';
10
+ export * from '../../utils/includes.js';
11
11
  export * from '../../utils/isDev.js';
12
12
  export * from '../../utils/getMostSimilar.js';
13
13
  export * from '../../utils/getRandomId.js';
@@ -5,6 +5,7 @@ export { getGlobalContext };
5
5
  export { getViteDevServer };
6
6
  export { getViteConfig };
7
7
  export { setGlobalContext_viteDevServer };
8
+ export { setGlobalContext_isDev };
8
9
  export { setGlobalContext_prerender };
9
10
  export { getRuntimeManifest };
10
11
  import type { ViteManifest } from '../shared/ViteManifest.js';
@@ -47,6 +48,7 @@ declare function getGlobalContextSync(): GlobalContextPublic;
47
48
  /** @experimental https://vike.dev/getGlobalContext */
48
49
  declare function getGlobalContextAsync(): Promise<GlobalContextPublic>;
49
50
  declare function setGlobalContext_viteDevServer(viteDevServer: ViteDevServer): void;
51
+ declare function setGlobalContext_isDev(isDev: boolean): void;
50
52
  declare function getViteDevServer(): ViteDevServer | null;
51
53
  declare function setGlobalContext_prerender(viteConfig: ResolvedConfig): void;
52
54
  declare function getViteConfig(): ResolvedConfig | null;
@@ -7,6 +7,7 @@ export { getGlobalContext };
7
7
  export { getViteDevServer };
8
8
  export { getViteConfig };
9
9
  export { setGlobalContext_viteDevServer };
10
+ export { setGlobalContext_isDev };
10
11
  export { setGlobalContext_prerender };
11
12
  export { getRuntimeManifest };
12
13
  import { assert, assertNodeEnv_runtime, assertUsage, assertWarning, getGlobalObject, isPlainObject, objectAssign, objectKeys } from './utils.js';
@@ -63,10 +64,12 @@ function setGlobalContext_viteDevServer(viteDevServer) {
63
64
  if (globalObject.viteDevServer)
64
65
  return;
65
66
  assert(!globalObject.globalContext);
66
- assert(!globalObject.globalContext);
67
67
  globalObject.viteConfig = viteDevServer.config;
68
68
  globalObject.viteDevServer = viteDevServer;
69
69
  }
70
+ function setGlobalContext_isDev(isDev) {
71
+ globalObject.isDev = isDev;
72
+ }
70
73
  function getViteDevServer() {
71
74
  return globalObject.viteDevServer ?? null;
72
75
  }
@@ -82,12 +85,12 @@ function getViteConfig() {
82
85
  async function initGlobalContext(isPrerendering = false, outDir) {
83
86
  if (globalObject.globalContext)
84
87
  return;
85
- const { viteDevServer, viteConfig } = globalObject;
86
- assertNodeEnv_runtime(!!viteDevServer);
87
- const isProduction = !viteDevServer;
88
- if (!isProduction) {
88
+ const { viteDevServer, viteConfig, isDev } = globalObject;
89
+ assertNodeEnv_runtime(isDev ?? false);
90
+ if (isDev) {
89
91
  assert(viteConfig);
90
92
  assert(!isPrerendering);
93
+ assert(viteDevServer);
91
94
  const configVike = await getConfigVike(viteConfig);
92
95
  const pluginManifest = getRuntimeManifest(configVike);
93
96
  globalObject.globalContext = {
@@ -54,15 +54,17 @@ async function streamReadableNodeToString(readableNode) {
54
54
  });
55
55
  }
56
56
  async function streamReadableWebToString(readableWeb) {
57
- let str = '';
58
57
  const reader = readableWeb.getReader();
58
+ const decoder = new TextDecoder();
59
+ let str = '';
59
60
  while (true) {
60
61
  const { done, value } = await reader.read();
61
- if (done) {
62
+ if (done)
62
63
  break;
63
- }
64
- str += value;
64
+ str += decoder.decode(value, { stream: true });
65
65
  }
66
+ // https://github.com/vikejs/vike/pull/1799#discussion_r1713554096
67
+ str += decoder.decode();
66
68
  return str;
67
69
  }
68
70
  async function stringToStreamReadableNode(str) {
@@ -36,6 +36,8 @@ export * from '../../utils/isNotNullish.js';
36
36
  export * from '../../utils/isScriptFile.js';
37
37
  export * from '../../utils/removeFileExtention.js';
38
38
  export * from '../../utils/objectKeys.js';
39
+ export * from '../../utils/objectEntries.js';
40
+ export * from '../../utils/objectFromEntries.js';
39
41
  export * from '../../utils/getFileExtension.js';
40
42
  export * from '../../utils/assertIsNotProductionRuntime.js';
41
43
  export * from '../../utils/virtual-files.js';
@@ -39,6 +39,8 @@ export * from '../../utils/isNotNullish.js';
39
39
  export * from '../../utils/isScriptFile.js';
40
40
  export * from '../../utils/removeFileExtention.js';
41
41
  export * from '../../utils/objectKeys.js';
42
+ export * from '../../utils/objectEntries.js';
43
+ export * from '../../utils/objectFromEntries.js';
42
44
  export * from '../../utils/getFileExtension.js';
43
45
  export * from '../../utils/assertIsNotProductionRuntime.js';
44
46
  export * from '../../utils/virtual-files.js';
@@ -1 +1 @@
1
- export declare const PROJECT_VERSION: "0.4.183";
1
+ export declare const PROJECT_VERSION: "0.4.184";
@@ -1,2 +1,2 @@
1
1
  // Automatically updated by @brillout/release-me
2
- export const PROJECT_VERSION = '0.4.183';
2
+ export const PROJECT_VERSION = '0.4.184';
@@ -4,7 +4,7 @@ export { assertNodeEnv_onVikePluginLoad };
4
4
  export { handleNodeEnv_prerender };
5
5
  export { handleNodeEnv_vitePluginVercel };
6
6
  declare function assertNodeEnv_build(): void;
7
- declare function assertNodeEnv_runtime(viteDevServerExists: boolean): void;
7
+ declare function assertNodeEnv_runtime(isViteDev: boolean): void;
8
8
  declare function assertNodeEnv_onVikePluginLoad(): void;
9
9
  declare function handleNodeEnv_prerender(): void;
10
10
  declare function handleNodeEnv_vitePluginVercel(): void;
@@ -24,17 +24,18 @@ assertIsNotBrowser();
24
24
  function assertNodeEnv_build() {
25
25
  assertNodeEnvIsNotDev('building');
26
26
  }
27
- function assertNodeEnv_runtime(viteDevServerExists) {
27
+ function assertNodeEnv_runtime(isViteDev) {
28
28
  const nodeEnv = getNodeEnv();
29
29
  if (nodeEnv === null || nodeEnv === 'test')
30
30
  return;
31
- const isDev = isNodeEnvDev();
31
+ const isNodeDev = isNodeEnvDev();
32
32
  // Calling Vite's createServer() is enough for hasViteDevServer to be true, even without actually adding Vite's development middleware to the server: https://github.com/vikejs/vike/issues/792#issuecomment-1516830759
33
- if (viteDevServerExists === isDev)
33
+ if (isViteDev === isNodeDev)
34
34
  return;
35
35
  const nodeEnvDesc = getNodeEnvDesc();
36
36
  // TODO: make it assertUsage() again once #1528 is implemented.
37
- assertWarning(false, `Vite's development server was${viteDevServerExists ? '' : "n't"} instantiated while the ${nodeEnvDesc} which is contradictory, see https://vike.dev/NODE_ENV`, { onlyOnce: true });
37
+ const errMsg = `Running ${isViteDev ? pc.cyan('$ vite dev') : 'app in production'} while the ${nodeEnvDesc} which is contradictory, see https://vike.dev/NODE_ENV`;
38
+ assertWarning(false, errMsg, { onlyOnce: true });
38
39
  }
39
40
  function assertNodeEnv_onVikePluginLoad() {
40
41
  const nodeEnv = getNodeEnv();
@@ -0,0 +1,2 @@
1
+ /** Same as Array.prototype.includes() but with type inference */
2
+ export declare function includes<T>(values: readonly T[], x: unknown): x is T;
@@ -0,0 +1,10 @@
1
+ // https://stackoverflow.com/questions/56565528/typescript-const-assertions-how-to-use-array-prototype-includes/74213179#74213179
2
+ /** Same as Array.prototype.includes() but with type inference */
3
+ export function includes(values, x) {
4
+ return values.includes(x);
5
+ }
6
+ /*
7
+ export function includes<Arr extends any[] | readonly any[]>(arr: Arr, el: unknown): el is Arr[number] {
8
+ return arr.includes(el as any)
9
+ }
10
+ */
@@ -1,10 +1,6 @@
1
- export { isDev1 };
2
- export { isDev1_onConfigureServer };
3
1
  export { isDev2 };
4
2
  export { isDev3 };
5
3
  import type { ConfigEnv } from 'vite';
6
- declare function isDev3(configEnv: ConfigEnv): null | boolean;
7
- declare function isDev1(): boolean;
8
- declare function isDev1_onConfigureServer(): void | undefined;
4
+ declare function isDev3(configEnv: ConfigEnv): boolean;
9
5
  import type { ResolvedConfig } from 'vite';
10
6
  declare function isDev2(config: ResolvedConfig): boolean;
@@ -1,32 +1,16 @@
1
- export { isDev1 };
2
- export { isDev1_onConfigureServer };
3
1
  export { isDev2 };
4
2
  export { isDev3 };
3
+ import { assert } from './assert.js';
5
4
  function isDev3(configEnv) {
6
5
  const { isPreview, command } = configEnv;
7
6
  if (command !== 'serve')
8
7
  return false;
9
- if (typeof isPreview === 'boolean')
10
- return !isPreview;
11
- // isPreview is undefined in older Vite versions, see https://github.com/vitejs/vite/commit/93fce55
12
- return null;
13
- }
14
- // ********
15
- // Method 1 - reliable
16
- // ********
17
- import { assert } from './assert.js';
18
- import { getGlobalObject } from './getGlobalObject.js';
19
- const globalObject = getGlobalObject('utils/isDev.ts', { isDev: false, isDev_wasCalled: false });
20
- function isDev1() {
21
- globalObject.isDev_wasCalled = true;
22
- return globalObject.isDev;
23
- }
24
- function isDev1_onConfigureServer() {
25
- // configureServer() is called more than once when user presses Vite's dev server reload hotkey <r>
26
- if (globalObject.isDev)
27
- return;
28
- assert(!globalObject.isDev_wasCalled);
29
- globalObject.isDev = true;
8
+ // `isPreview` is `undefined` in older Vite versions.
9
+ // https://github.com/vitejs/vite/pull/14855
10
+ // https://github.com/vitejs/vite/pull/15695O
11
+ // - Released at `vite@5.1.0`: https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md#510-beta4-2024-01-26:~:text=fix(preview)%3A%20set%20isPreview%20true%20(%2315695)%20(93fce55)%2C%20closes%20%2315695
12
+ assert(typeof isPreview === 'boolean');
13
+ return !isPreview;
30
14
  }
31
15
  function isDev2(config) {
32
16
  const isDev = config.command === 'serve' &&
@@ -0,0 +1,2 @@
1
+ /** Same as Object.entries() but with type inference */
2
+ export declare function objectEntries<T extends object>(obj: T): [keyof T, T[keyof T]][];
@@ -0,0 +1,5 @@
1
+ // https://stackoverflow.com/questions/60141960/typescript-key-value-relation-preserving-object-entries-type/75337277#75337277
2
+ /** Same as Object.entries() but with type inference */
3
+ export function objectEntries(obj) {
4
+ return Object.entries(obj);
5
+ }
@@ -0,0 +1,2 @@
1
+ /** Same as Object.entries().forEach() but with type inference */
2
+ export declare function objectEntriesForEach<Obj extends object>(obj: Obj, iterator: <Key extends keyof Obj>(key: Key, val: Obj[Key]) => void): void;
@@ -0,0 +1,4 @@
1
+ /** Same as Object.entries().forEach() but with type inference */
2
+ export function objectEntriesForEach(obj, iterator) {
3
+ Object.entries(obj).forEach(([key, val]) => iterator(key, val));
4
+ }
@@ -0,0 +1,2 @@
1
+ /** Same as Object.fromEntries() but with type inference */
2
+ export declare function objectFromEntries<T extends [PropertyKey, unknown][]>(arr: T): Record<T[number][0], T[number][1]>;
@@ -0,0 +1,4 @@
1
+ /** Same as Object.fromEntries() but with type inference */
2
+ export function objectFromEntries(arr) {
3
+ return Object.fromEntries(arr);
4
+ }
@@ -1,9 +1,2 @@
1
- export { objectEntries };
2
- export { objectFromEntries };
3
- export { objectKeys };
4
- /** Same as Object.entries() but with type inference */
5
- declare function objectEntries<T extends object>(obj: T): [keyof T, T[keyof T]][];
6
- /** Same as Object.fromEntries() but with type inference */
7
- declare function objectFromEntries<T extends [PropertyKey, unknown][]>(arr: T): Record<T[number][0], T[number][1]>;
8
1
  /** Same as Object.keys() but with type inference */
9
- declare function objectKeys<T extends object>(obj: T): (keyof T)[];
2
+ export declare function objectKeys<T extends object>(obj: T): (keyof T)[];
@@ -1,27 +1,6 @@
1
- export { objectEntries };
2
- export { objectFromEntries };
3
- export { objectKeys };
4
- // export { forEach }
5
- // https://stackoverflow.com/questions/60141960/typescript-key-value-relation-preserving-object-entries-type/75337277#75337277
6
- /** Same as Object.entries() but with type inference */
7
- function objectEntries(obj) {
8
- return Object.entries(obj);
9
- }
10
- /** Same as Object.fromEntries() but with type inference */
11
- function objectFromEntries(arr) {
12
- return Object.fromEntries(arr);
13
- }
14
1
  // https://stackoverflow.com/questions/52856496/typescript-object-keys-return-string
15
2
  // https://github.com/sindresorhus/ts-extras/blob/main/source/object-keys.ts
16
3
  /** Same as Object.keys() but with type inference */
17
- function objectKeys(obj) {
4
+ export function objectKeys(obj) {
18
5
  return Object.keys(obj);
19
6
  }
20
- /* Not used yet, but can be quite useful.
21
- function forEach<Obj extends object>(
22
- obj: Obj,
23
- iterator: <Key extends keyof Obj>(key: Key, val: Obj[Key]) => void
24
- ): void {
25
- Object.entries(obj).forEach(([key, val]) => iterator(key as keyof Obj, val))
26
- }
27
- //*/
@@ -1,4 +1,4 @@
1
1
  export declare const projectInfo: {
2
2
  projectName: "Vike";
3
- projectVersion: "0.4.183";
3
+ projectVersion: "0.4.184";
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vike",
3
- "version": "0.4.183",
3
+ "version": "0.4.184",
4
4
  "scripts": {
5
5
  "dev": "tsc --watch",
6
6
  "build": "rimraf dist/ && pnpm run build:esm && pnpm run build:cjs",
@@ -148,7 +148,7 @@
148
148
  },
149
149
  "peerDependencies": {
150
150
  "react-streaming": ">=0.3.42",
151
- "vite": ">=4.4.0"
151
+ "vite": ">=5.1.0"
152
152
  },
153
153
  "peerDependenciesMeta": {
154
154
  "react-streaming": {
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.arrayIncludes = void 0;
4
- function arrayIncludes(arr, el) {
5
- return arr.includes(el);
6
- }
7
- exports.arrayIncludes = arrayIncludes;
@@ -1 +0,0 @@
1
- export declare function arrayIncludes<Arr extends any[] | readonly any[]>(arr: Arr, el: unknown): el is Arr[number];
@@ -1,3 +0,0 @@
1
- export function arrayIncludes(arr, el) {
2
- return arr.includes(el);
3
- }