vike 0.4.162 → 0.4.163-commit-407cb5c

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 (49) hide show
  1. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +7 -4
  2. package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +9 -5
  3. package/dist/cjs/node/plugin/plugins/buildConfig.js +24 -18
  4. package/dist/cjs/node/plugin/plugins/commonConfig.js +8 -2
  5. package/dist/cjs/node/plugin/plugins/distFileNames.js +4 -9
  6. package/dist/cjs/node/plugin/plugins/importBuild/index.js +2 -3
  7. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +6 -1
  8. package/dist/cjs/node/plugin/shared/getAssetsDir.js +11 -0
  9. package/dist/cjs/node/runtime/globalContext/loadImportBuild.js +3 -3
  10. package/dist/cjs/node/runtime/globalContext.js +47 -6
  11. package/dist/cjs/node/runtime/index-common.js +4 -1
  12. package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +19 -19
  13. package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +12 -12
  14. package/dist/cjs/node/runtime/renderPage/getPageAssets.js +5 -5
  15. package/dist/cjs/node/runtime/renderPage/logErrorHint.js +9 -13
  16. package/dist/cjs/node/runtime/renderPage.js +3 -0
  17. package/dist/cjs/shared/page-configs/serialize/serializeConfigValue.js +4 -11
  18. package/dist/cjs/utils/projectInfo.js +1 -1
  19. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +20 -14
  20. package/dist/esm/client/shared/getPageContextProxyForUser.js +19 -2
  21. package/dist/esm/node/plugin/plugins/autoFullBuild.js +7 -4
  22. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.d.ts +2 -2
  23. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +10 -6
  24. package/dist/esm/node/plugin/plugins/buildConfig.js +24 -18
  25. package/dist/esm/node/plugin/plugins/commonConfig.js +9 -3
  26. package/dist/esm/node/plugin/plugins/distFileNames.js +1 -6
  27. package/dist/esm/node/plugin/plugins/importBuild/index.js +2 -3
  28. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +3 -3
  29. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +6 -1
  30. package/dist/esm/node/plugin/shared/getAssetsDir.d.ts +3 -0
  31. package/dist/esm/node/plugin/shared/getAssetsDir.js +8 -0
  32. package/dist/esm/node/runtime/globalContext/loadImportBuild.d.ts +2 -2
  33. package/dist/esm/node/runtime/globalContext/loadImportBuild.js +3 -3
  34. package/dist/esm/node/runtime/globalContext.d.ts +11 -2
  35. package/dist/esm/node/runtime/globalContext.js +49 -6
  36. package/dist/esm/node/runtime/index-common.d.ts +1 -0
  37. package/dist/esm/node/runtime/index-common.js +1 -0
  38. package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.d.ts +1 -1
  39. package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +19 -19
  40. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.d.ts +1 -1
  41. package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +12 -12
  42. package/dist/esm/node/runtime/renderPage/getPageAssets.js +5 -5
  43. package/dist/esm/node/runtime/renderPage/logErrorHint.js +10 -11
  44. package/dist/esm/node/runtime/renderPage.js +3 -0
  45. package/dist/esm/shared/page-configs/PageConfig.d.ts +1 -0
  46. package/dist/esm/shared/page-configs/serialize/serializeConfigValue.js +5 -9
  47. package/dist/esm/utils/projectInfo.d.ts +2 -2
  48. package/dist/esm/utils/projectInfo.js +1 -1
  49. package/package.json +2 -1
@@ -11,6 +11,7 @@ const getConfigVike_js_1 = require("../../shared/getConfigVike.js");
11
11
  const isViteCliCall_js_1 = require("../shared/isViteCliCall.js");
12
12
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
13
13
  const logErrorHint_js_1 = require("../../runtime/renderPage/logErrorHint.js");
14
+ const buildConfig_js_1 = require("./buildConfig.js");
14
15
  let forceExit = false;
15
16
  function autoFullBuild() {
16
17
  let config;
@@ -64,10 +65,12 @@ async function triggerFullBuild(config, configVike, bundle) {
64
65
  return; // already triggered
65
66
  if (isDisabled(configVike))
66
67
  return;
67
- /* Is this @vitejs/plugin-legacy workaround still needed? Should we re-implement it?
68
- // vike.json missing => it isn't a `$ vite build` call (e.g. @vitejs/plugin-legacy calls Vite's build() API) => skip
69
- if (!bundle['vike.json']) return
70
- */
68
+ // Workaround for @vitejs/plugin-legacy
69
+ // - The legacy plugin triggers its own Rollup build for the client-side.
70
+ // - The legacy plugin doesn't generate a manifest => we can use that to detect the legacy plugin build.
71
+ // - Issue & reproduction: https://github.com/vikejs/vike/issues/1154#issuecomment-1965954636
72
+ if (!bundle[buildConfig_js_1.manifestTempFile])
73
+ return;
71
74
  const configFromCli = !(0, isViteCliCall_js_1.isViteCliCall)() ? null : (0, isViteCliCall_js_1.getViteConfigFromCli)();
72
75
  const configInline = {
73
76
  ...configFromCli,
@@ -10,6 +10,7 @@ const fs_1 = require("fs");
10
10
  const utils_js_1 = require("../../utils.js");
11
11
  const virtualFilePageConfigValuesAll_js_1 = require("../../../shared/virtual-files/virtualFilePageConfigValuesAll.js");
12
12
  const buildConfig_js_1 = require("../buildConfig.js");
13
+ const getAssetsDir_js_1 = require("../../shared/getAssetsDir.js");
13
14
  /**
14
15
  * true => use workaround config.build.ssrEmitAssets
15
16
  * false => use workaround extractAssets plugin
@@ -23,11 +24,12 @@ function fixServerAssets_isEnabled() {
23
24
  }
24
25
  exports.fixServerAssets_isEnabled = fixServerAssets_isEnabled;
25
26
  /** https://github.com/vikejs/vike/issues/1339 */
26
- async function fixServerAssets(outDirs) {
27
+ async function fixServerAssets(config) {
28
+ const outDirs = (0, utils_js_1.getOutDirs)(config);
27
29
  const clientManifest = await loadManifest(outDirs.outDirClient);
28
30
  const serverManifest = await loadManifest(outDirs.outDirServer);
29
31
  const { clientManifestMod, filesToCopy } = addServerAssets(clientManifest, serverManifest);
30
- await copyAssets(filesToCopy, outDirs);
32
+ await copyAssets(filesToCopy, config);
31
33
  return clientManifestMod;
32
34
  }
33
35
  exports.fixServerAssets = fixServerAssets;
@@ -39,11 +41,13 @@ async function loadManifest(outDir) {
39
41
  (0, utils_js_1.assert)(manifest);
40
42
  return manifest;
41
43
  }
42
- async function copyAssets(filesToCopy, { outDirClient, outDirServer }) {
43
- const assetsDirServer = path_1.default.posix.join(outDirServer, 'assets');
44
+ async function copyAssets(filesToCopy, config) {
45
+ const { outDirClient, outDirServer } = (0, utils_js_1.getOutDirs)(config);
46
+ const assetsDir = (0, getAssetsDir_js_1.getAssetsDir)(config);
47
+ const assetsDirServer = path_1.default.posix.join(outDirServer, assetsDir);
48
+ (0, utils_js_1.assert)((0, fs_1.existsSync)(assetsDirServer));
44
49
  if (!filesToCopy.length)
45
50
  return;
46
- (0, utils_js_1.assert)((0, fs_1.existsSync)(assetsDirServer));
47
51
  const concurrencyLimit = (0, utils_js_1.pLimit)(10);
48
52
  await Promise.all(filesToCopy.map((file) => concurrencyLimit(() => promises_1.default.cp(path_1.default.posix.join(outDirServer, file), path_1.default.posix.join(outDirClient, file), {
49
53
  recursive: true
@@ -27,13 +27,15 @@ function buildConfig() {
27
27
  let isServerAssetsFixEnabled;
28
28
  let isSsrBuild;
29
29
  let outDirs;
30
+ let config;
30
31
  return {
31
32
  name: 'vike:buildConfig',
32
33
  apply: 'build',
33
34
  enforce: 'post',
34
35
  configResolved: {
35
36
  order: 'post',
36
- async handler(config) {
37
+ async handler(config_) {
38
+ config = config_;
37
39
  assertNodeEnv();
38
40
  assertRollupInput(config);
39
41
  const entries = await getEntries(config);
@@ -66,24 +68,28 @@ function buildConfig() {
66
68
  buildStart() {
67
69
  assertNodeEnv();
68
70
  },
69
- async writeBundle(options, bundle) {
70
- if (isSsrBuild) {
71
- // Ideally we'd move dist/_temp_manifest.json to dist/server/client-assets.json instead of dist/assets.json
72
- // - But we can't because there is no guarentee whether dist/server/ is generated before or after dist/client/ (generating dist/server/ after dist/client/ erases dist/server/client-assets.json)
73
- // - We'll able to do so once we replace `$ vite build` with `$ vike build`
74
- const assetsJsonFilePath = path_1.default.posix.join(outDirs.outDirRoot, 'assets.json');
75
- const clientManifestFilePath = path_1.default.posix.join(outDirs.outDirClient, manifestTempFile);
76
- const serverManifestFilePath = path_1.default.posix.join(outDirs.outDirServer, manifestTempFile);
77
- if (!isServerAssetsFixEnabled) {
78
- await promises_1.default.copyFile(clientManifestFilePath, assetsJsonFilePath);
79
- }
80
- else {
81
- const clientManifestMod = await (0, fixServerAssets_js_1.fixServerAssets)(outDirs);
82
- await promises_1.default.writeFile(assetsJsonFilePath, JSON.stringify(clientManifestMod, null, 2), 'utf-8');
71
+ writeBundle: {
72
+ order: 'post',
73
+ sequential: true,
74
+ async handler(options, bundle) {
75
+ if (isSsrBuild) {
76
+ // Ideally we'd move dist/_temp_manifest.json to dist/server/client-assets.json instead of dist/assets.json
77
+ // - But we can't because there is no guarentee whether dist/server/ is generated before or after dist/client/ (generating dist/server/ after dist/client/ erases dist/server/client-assets.json)
78
+ // - We'll able to do so once we replace `$ vite build` with `$ vike build`
79
+ const assetsJsonFilePath = path_1.default.posix.join(outDirs.outDirRoot, 'assets.json');
80
+ const clientManifestFilePath = path_1.default.posix.join(outDirs.outDirClient, manifestTempFile);
81
+ const serverManifestFilePath = path_1.default.posix.join(outDirs.outDirServer, manifestTempFile);
82
+ if (!isServerAssetsFixEnabled) {
83
+ await promises_1.default.copyFile(clientManifestFilePath, assetsJsonFilePath);
84
+ }
85
+ else {
86
+ const clientManifestMod = await (0, fixServerAssets_js_1.fixServerAssets)(config);
87
+ await promises_1.default.writeFile(assetsJsonFilePath, JSON.stringify(clientManifestMod, null, 2), 'utf-8');
88
+ }
89
+ await promises_1.default.rm(clientManifestFilePath);
90
+ await promises_1.default.rm(serverManifestFilePath);
91
+ await (0, index_js_1.set_constant_ASSETS_MAP)(options, bundle);
83
92
  }
84
- await promises_1.default.rm(clientManifestFilePath);
85
- await promises_1.default.rm(serverManifestFilePath);
86
- await (0, index_js_1.set_constant_ASSETS_MAP)(options, bundle);
87
93
  }
88
94
  }
89
95
  };
@@ -14,16 +14,18 @@ const assertResolveAlias_js_1 = require("./commonConfig/assertResolveAlias.js");
14
14
  // @ts-ignore Shimmed by dist-cjs-fixup.js for CJS build.
15
15
  const importMetaUrl = `file://${__filename}`;
16
16
  const require_ = (0, module_1.createRequire)(importMetaUrl);
17
+ const pluginName = 'vike:commonConfig-1';
17
18
  function commonConfig() {
18
19
  return [
19
20
  {
20
- name: 'vike-commonConfig-1',
21
+ name: pluginName,
21
22
  configResolved(config) {
23
+ assertSingleInstance(config);
22
24
  (0, require_shim_1.installRequireShim_setUserRootDir)(config.root);
23
25
  }
24
26
  },
25
27
  {
26
- name: 'vike-.commonConfig-2',
28
+ name: 'vike:commonConfig-2',
27
29
  enforce: 'post',
28
30
  configResolved: {
29
31
  order: 'post',
@@ -81,3 +83,7 @@ function assertEsm(userViteRoot) {
81
83
  dir = picocolors_1.default.dim(dir);
82
84
  (0, utils_js_1.assertWarning)(packageJson.type === 'module', `We recommend setting ${dir}package.json#type to "module", see https://vike.dev/CJS`, { onlyOnce: true });
83
85
  }
86
+ function assertSingleInstance(config) {
87
+ const numberOfInstances = config.plugins.filter((o) => o.name === pluginName).length;
88
+ (0, utils_js_1.assertUsage)(numberOfInstances === 1, `Vike's Vite plugin (${picocolors_1.default.cyan("import vike from 'vike/plugin'")}) is being added ${numberOfInstances} times to the list of Vite plugins. Make sure to add it only once instead.`);
89
+ }
@@ -9,6 +9,7 @@ exports.distFileNames = void 0;
9
9
  // - Blocker: https://github.com/rollup/rollup/issues/4724
10
10
  const utils_js_1 = require("../utils.js");
11
11
  const path_1 = __importDefault(require("path"));
12
+ const getAssetsDir_js_1 = require("../shared/getAssetsDir.js");
12
13
  function distFileNames() {
13
14
  return {
14
15
  name: 'vike:distFileNames',
@@ -41,7 +42,7 @@ function distFileNames() {
41
42
  }
42
43
  exports.distFileNames = distFileNames;
43
44
  function getAssetFileName(assetInfo, config) {
44
- const assetsDir = getAssetsDir(config);
45
+ const assetsDir = (0, getAssetsDir_js_1.getAssetsDir)(config);
45
46
  const dir = assetsDir + '/static';
46
47
  let { name } = assetInfo;
47
48
  if (!name) {
@@ -69,13 +70,13 @@ function getChunkFileName(_chunkInfo, config) {
69
70
  const isForClientSide = !config.build.ssr;
70
71
  let name = 'chunks/chunk-[hash].js';
71
72
  if (isForClientSide) {
72
- const assetsDir = getAssetsDir(config);
73
+ const assetsDir = (0, getAssetsDir_js_1.getAssetsDir)(config);
73
74
  name = `${assetsDir}/${name}`;
74
75
  }
75
76
  return name;
76
77
  }
77
78
  function getEntryFileName(chunkInfo, config, isEntry) {
78
- const assetsDir = getAssetsDir(config);
79
+ const assetsDir = (0, getAssetsDir_js_1.getAssetsDir)(config);
79
80
  const isForClientSide = !config.build.ssr;
80
81
  let { name } = chunkInfo;
81
82
  (0, utils_js_1.assertPosixPath)(name);
@@ -169,9 +170,3 @@ function getRollupOutputs(config) {
169
170
  }
170
171
  return output;
171
172
  }
172
- function getAssetsDir(config) {
173
- let { assetsDir } = config.build;
174
- (0, utils_js_1.assertUsage)(assetsDir, `${assetsDir} cannot be an empty string`);
175
- assetsDir = assetsDir.split(/\/|\\/).filter(Boolean).join('/');
176
- return assetsDir;
177
- }
@@ -45,12 +45,11 @@ function getEntryCode(config, configVike) {
45
45
  ` import * as pageFiles from '${virtualFileImportUserCode_js_1.virtualFileIdImportUserCodeServer}';`,
46
46
  ` {`,
47
47
  // We first set the values to a variable because of a Rollup bug, and this workaround doesn't work: https://github.com/vikejs/vike/commit/d5f3a4f7aae5a8bc44192e6cbb2bcb9007be188d
48
- ` const clientManifest = ${ASSETS_MAP};`,
48
+ ` const assetsManifest = ${ASSETS_MAP};`,
49
49
  ` const pluginManifest = ${JSON.stringify(vikeManifest, null, 2)};`,
50
50
  ' setImportBuildGetters({',
51
51
  ` pageFiles: () => pageFiles,`,
52
- // TODO: rename clientManifest -> assetManifest
53
- ` clientManifest: () => clientManifest,`,
52
+ ` getAssetsManifest: () => assetsManifest,`,
54
53
  // TODO: rename pluginManifest -> vikeManifest
55
54
  ` pluginManifest: () => pluginManifest,`,
56
55
  ' });',
@@ -474,7 +474,8 @@ function warnOverridenConfigValues(interfaceFileWinner, interfaceFilesOverriden,
474
474
  interfaceFilesOverriden.forEach((interfaceFileLoser) => {
475
475
  const loserFilePath = interfaceFileLoser.filePath.filePathToShowToUser;
476
476
  const winnerFilePath = interfaceFileWinner.filePath.filePathToShowToUser;
477
- (0, utils_js_1.assertWarning)(false, `Config ${configName} defined at ${loserFilePath} is always overwritten by ${configName} defined at ${winnerFilePath}, remove the superfluous ${configName} value defined at ${interfaceFileLoser}`, { onlyOnce: false });
477
+ const confName = picocolors_1.default.cyan(configName);
478
+ (0, utils_js_1.assertWarning)(false, `The value of the config ${confName} defined at ${loserFilePath} is always overwritten by the value defined at ${winnerFilePath}, remove the superfluous value defined at ${loserFilePath}`, { onlyOnce: true });
478
479
  });
479
480
  }
480
481
  function isInterfaceFileUserLand(interfaceFile) {
@@ -515,6 +516,7 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
515
516
  valueIsFilePath: true,
516
517
  configEnv,
517
518
  valueIsImportedAtRuntime: true,
519
+ valueIsDefinedByValueFile: false,
518
520
  definedAt
519
521
  };
520
522
  return configValueSource;
@@ -530,6 +532,7 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
530
532
  locationId,
531
533
  configEnv,
532
534
  valueIsImportedAtRuntime: true,
535
+ valueIsDefinedByValueFile: false,
533
536
  definedAt: import_
534
537
  };
535
538
  // Load fake import
@@ -554,6 +557,7 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
554
557
  value: configValue,
555
558
  configEnv,
556
559
  valueIsImportedAtRuntime: false,
560
+ valueIsDefinedByValueFile: false,
557
561
  definedAt: definedAtConfigFile
558
562
  };
559
563
  return configValueSource;
@@ -566,6 +570,7 @@ async function getConfigValueSource(configName, interfaceFile, configDef, userRo
566
570
  locationId,
567
571
  configEnv,
568
572
  valueIsImportedAtRuntime: !valueAlreadyLoaded,
573
+ valueIsDefinedByValueFile: true,
569
574
  definedAt: {
570
575
  ...interfaceFile.filePath,
571
576
  fileExportPathToShowToUser: configName === interfaceFile.configName
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAssetsDir = void 0;
4
+ const utils_js_1 = require("../utils.js");
5
+ function getAssetsDir(config) {
6
+ let { assetsDir } = config.build;
7
+ (0, utils_js_1.assertUsage)(assetsDir, `${assetsDir} cannot be an empty string`);
8
+ assetsDir = assetsDir.split(/\/|\\/).filter(Boolean).join('/');
9
+ return assetsDir;
10
+ }
11
+ exports.getAssetsDir = getAssetsDir;
@@ -15,12 +15,12 @@ async function loadImportBuild(outDir) {
15
15
  await (0, importServerEntry_js_1.importServerEntry)(outDir);
16
16
  (0, utils_js_1.assert)(buildGetters.getters);
17
17
  }
18
- const [pageFiles, clientManifest, pluginManifest] = await Promise.all([
18
+ const [pageFiles, assetsManifest, pluginManifest] = await Promise.all([
19
19
  buildGetters.getters.pageFiles(),
20
- buildGetters.getters.clientManifest(),
20
+ buildGetters.getters.getAssetsManifest(),
21
21
  buildGetters.getters.pluginManifest()
22
22
  ]);
23
- const buildEntries = { pageFiles, clientManifest, pluginManifest };
23
+ const buildEntries = { pageFiles, assetsManifest, pluginManifest };
24
24
  return buildEntries;
25
25
  }
26
26
  exports.loadImportBuild = loadImportBuild;
@@ -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 = void 0;
6
+ exports.getRuntimeManifest = exports.setGlobalContext_prerender = 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");
@@ -11,12 +11,52 @@ const assertPluginManifest_js_1 = require("../shared/assertPluginManifest.js");
11
11
  const getConfigVike_js_1 = require("../shared/getConfigVike.js");
12
12
  const assertRuntimeManifest_js_1 = require("../shared/assertRuntimeManifest.js");
13
13
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
14
- const globalObject = (0, utils_js_1.getGlobalObject)('globalContext.ts', {});
14
+ let resolveGlobalContext;
15
+ const globalObject = (0, utils_js_1.getGlobalObject)('globalContext.ts', {
16
+ globalContextPromise: new Promise((r) => (resolveGlobalContext = r))
17
+ });
15
18
  function getGlobalContext() {
16
19
  (0, utils_js_1.assert)(globalObject.globalContext);
17
20
  return globalObject.globalContext;
18
21
  }
19
22
  exports.getGlobalContext = getGlobalContext;
23
+ /** @experimental https://vike.dev/getGlobalContext */
24
+ function getGlobalContextSync() {
25
+ (0, utils_js_1.assertUsage)(globalObject.globalContext, "The global context isn't set yet, call getGlobalContextSync() later or use getGlobalContextAsync() instead.");
26
+ return makePublic(globalObject.globalContext);
27
+ }
28
+ exports.getGlobalContextSync = getGlobalContextSync;
29
+ /** @experimental https://vike.dev/getGlobalContext */
30
+ async function getGlobalContextAsync() {
31
+ await globalObject.globalContextPromise;
32
+ (0, utils_js_1.assert)(globalObject.globalContext);
33
+ return makePublic(globalObject.globalContext);
34
+ }
35
+ exports.getGlobalContextAsync = getGlobalContextAsync;
36
+ function makePublic(globalContext) {
37
+ const globalContextPublic = {
38
+ assetsManifest: globalContext.assetsManifest
39
+ };
40
+ // Add internals (and prepended _ prefix to their keys)
41
+ {
42
+ const publicKeys = Object.keys(globalContextPublic);
43
+ (0, utils_js_1.objectKeys)(globalContext)
44
+ .filter((key) => !publicKeys.includes(key))
45
+ .forEach((key) => {
46
+ const keyPublic = `_${key}`;
47
+ Object.defineProperty(globalContextPublic, keyPublic, {
48
+ enumerable: true,
49
+ get() {
50
+ (0, utils_js_1.assertWarning)(false, `Using internal globalContext.${keyPublic} which is discouraged: it may break in any minor version update. Instead, reach out on GitHub and elaborate your use case.`, {
51
+ onlyOnce: true
52
+ });
53
+ return globalContext[key];
54
+ }
55
+ });
56
+ });
57
+ }
58
+ return globalContextPublic;
59
+ }
20
60
  function setGlobalContext_viteDevServer(viteDevServer) {
21
61
  if (globalObject.viteDevServer)
22
62
  return;
@@ -55,7 +95,7 @@ async function initGlobalContext(isPrerendering = false, outDir) {
55
95
  globalObject.globalContext = {
56
96
  isProduction: false,
57
97
  isPrerendering: false,
58
- clientManifest: null,
98
+ assetsManifest: null,
59
99
  pluginManifest: null,
60
100
  viteDevServer,
61
101
  viteConfig,
@@ -70,13 +110,13 @@ async function initGlobalContext(isPrerendering = false, outDir) {
70
110
  else {
71
111
  const buildEntries = await (0, loadImportBuild_js_1.loadImportBuild)(outDir);
72
112
  assertBuildEntries(buildEntries, isPrerendering ?? false);
73
- const { pageFiles, clientManifest, pluginManifest } = buildEntries;
113
+ const { pageFiles, assetsManifest, pluginManifest } = buildEntries;
74
114
  (0, getPageFiles_js_1.setPageFiles)(pageFiles);
75
- assertViteManifest(clientManifest);
115
+ assertViteManifest(assetsManifest);
76
116
  (0, assertPluginManifest_js_1.assertPluginManifest)(pluginManifest);
77
117
  const globalContext = {
78
118
  isProduction: true,
79
- clientManifest,
119
+ assetsManifest,
80
120
  pluginManifest,
81
121
  viteDevServer: null,
82
122
  baseServer: pluginManifest.baseServer,
@@ -104,6 +144,7 @@ async function initGlobalContext(isPrerendering = false, outDir) {
104
144
  globalObject.globalContext = globalContext;
105
145
  }
106
146
  }
147
+ resolveGlobalContext(globalObject.globalContext);
107
148
  }
108
149
  exports.initGlobalContext = initGlobalContext;
109
150
  function getRuntimeManifest(configVike) {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createPageRenderer = exports._injectAssets = exports.version = exports.stampPipe = exports.pipeStream = exports.pipeNodeStream = exports.pipeWebStream = exports.dangerouslySkipEscape = exports.escapeInject = exports.renderPage = void 0;
3
+ exports.createPageRenderer = exports._injectAssets = exports.getGlobalContextAsync = exports.getGlobalContextSync = exports.version = exports.stampPipe = exports.pipeStream = exports.pipeNodeStream = exports.pipeWebStream = exports.dangerouslySkipEscape = exports.escapeInject = exports.renderPage = void 0;
4
4
  var renderPage_js_1 = require("./renderPage.js");
5
5
  Object.defineProperty(exports, "renderPage", { enumerable: true, get: function () { return renderPage_js_1.renderPage; } });
6
6
  var renderHtml_js_1 = require("./html/renderHtml.js");
@@ -13,6 +13,9 @@ Object.defineProperty(exports, "pipeStream", { enumerable: true, get: function (
13
13
  Object.defineProperty(exports, "stampPipe", { enumerable: true, get: function () { return stream_js_1.stampPipe; } });
14
14
  var utils_js_1 = require("./utils.js");
15
15
  Object.defineProperty(exports, "version", { enumerable: true, get: function () { return utils_js_1.PROJECT_VERSION; } });
16
+ var globalContext_js_1 = require("./globalContext.js");
17
+ Object.defineProperty(exports, "getGlobalContextSync", { enumerable: true, get: function () { return globalContext_js_1.getGlobalContextSync; } });
18
+ Object.defineProperty(exports, "getGlobalContextAsync", { enumerable: true, get: function () { return globalContext_js_1.getGlobalContextAsync; } });
16
19
  // TODO/v1-release: remove
17
20
  var injectAssets__public_js_1 = require("./html/injectAssets/injectAssets__public.js");
18
21
  Object.defineProperty(exports, "_injectAssets", { enumerable: true, get: function () { return injectAssets__public_js_1.injectAssets__public; } });
@@ -5,13 +5,13 @@ const utils_js_1 = require("../../utils.js");
5
5
  const assertClientEntryId_js_1 = require("./assertClientEntryId.js");
6
6
  const virtualFilePageConfigValuesAll_js_1 = require("../../../shared/virtual-files/virtualFilePageConfigValuesAll.js");
7
7
  const prependEntriesDir_js_1 = require("../../../shared/prependEntriesDir.js");
8
- function getManifestEntry(id, clientManifest) {
8
+ function getManifestEntry(id, assetsManifest) {
9
9
  (0, assertClientEntryId_js_1.assertClientEntryId)(id);
10
- const debugInfo = getDebugInfo(id, clientManifest);
10
+ const debugInfo = getDebugInfo(id, assetsManifest);
11
11
  // Vike client entry
12
12
  if (id.startsWith('@@vike/')) {
13
13
  const manifestKeyEnd = (0, utils_js_1.slice)(id, '@@vike'.length, 0);
14
- const { manifestKey, manifestEntry } = findEntryWithKeyEnd(manifestKeyEnd, clientManifest, id);
14
+ const { manifestKey, manifestEntry } = findEntryWithKeyEnd(manifestKeyEnd, assetsManifest, id);
15
15
  (0, utils_js_1.assert)(manifestEntry && manifestKey, debugInfo);
16
16
  return { manifestEntry, manifestKey };
17
17
  }
@@ -19,7 +19,7 @@ function getManifestEntry(id, clientManifest) {
19
19
  if ((0, virtualFilePageConfigValuesAll_js_1.isVirtualFileIdPageConfigValuesAll)(id)) {
20
20
  {
21
21
  const manifestKey = id;
22
- const manifestEntry = clientManifest[manifestKey];
22
+ const manifestEntry = assetsManifest[manifestKey];
23
23
  if (manifestEntry) {
24
24
  return { manifestEntry, manifestKey };
25
25
  }
@@ -32,20 +32,20 @@ function getManifestEntry(id, clientManifest) {
32
32
  // - This workaround was implemented to support Vitest runnung /tests/*
33
33
  // - I don't know whether end users actually need this workaround? (I'm not sure what the bug actually is.)
34
34
  const manifestKeyEnd = id;
35
- const { manifestKey, manifestEntry } = getEntryWithKeyEnd(manifestKeyEnd, clientManifest, id);
35
+ const { manifestKey, manifestEntry } = getEntryWithKeyEnd(manifestKeyEnd, assetsManifest, id);
36
36
  (0, utils_js_1.assert)(manifestEntry, debugInfo);
37
37
  return { manifestEntry, manifestKey };
38
38
  }
39
39
  // User files
40
40
  if (id.startsWith('/')) {
41
41
  const manifestKey = id.slice(1);
42
- let manifestEntry = clientManifest[manifestKey];
42
+ let manifestEntry = assetsManifest[manifestKey];
43
43
  (0, utils_js_1.assert)(manifestEntry, debugInfo);
44
44
  return { manifestEntry, manifestKey };
45
45
  }
46
46
  // npm package import
47
47
  if ((0, utils_js_1.isNpmPackageImport)(id)) {
48
- const found = Object.entries(clientManifest).find(([, e]) => e.name === (0, prependEntriesDir_js_1.prependEntriesDir)(id));
48
+ const found = Object.entries(assetsManifest).find(([, e]) => e.name === (0, prependEntriesDir_js_1.prependEntriesDir)(id));
49
49
  (0, utils_js_1.assert)(found);
50
50
  const [manifestKey, manifestEntry] = found;
51
51
  return { manifestEntry, manifestKey };
@@ -57,7 +57,7 @@ function getManifestEntry(id, clientManifest) {
57
57
  (0, utils_js_1.assert)(!manifestKeyEnd.startsWith('/'), debugInfo);
58
58
  manifestKeyEnd = '/' + manifestKeyEnd;
59
59
  {
60
- const { manifestEntry, manifestKey } = findEntryWithKeyEnd(manifestKeyEnd, clientManifest, id);
60
+ const { manifestEntry, manifestKey } = findEntryWithKeyEnd(manifestKeyEnd, assetsManifest, id);
61
61
  if (manifestEntry) {
62
62
  (0, utils_js_1.assert)(manifestKey, debugInfo);
63
63
  return { manifestEntry, manifestKey };
@@ -71,7 +71,7 @@ function getManifestEntry(id, clientManifest) {
71
71
  (0, utils_js_1.assert)(manifestKeyEnd.startsWith('/'), debugInfo);
72
72
  }
73
73
  {
74
- const { manifestEntry, manifestKey } = findEntryWithKeyEnd(manifestKeyEnd, clientManifest, id);
74
+ const { manifestEntry, manifestKey } = findEntryWithKeyEnd(manifestKeyEnd, assetsManifest, id);
75
75
  if (manifestEntry) {
76
76
  (0, utils_js_1.assert)(manifestKey, debugInfo);
77
77
  return { manifestEntry, manifestKey };
@@ -82,11 +82,11 @@ function getManifestEntry(id, clientManifest) {
82
82
  (0, utils_js_1.assert)(false, debugInfo);
83
83
  }
84
84
  exports.getManifestEntry = getManifestEntry;
85
- function findEntryWithKeyEnd(manifestKeyEnd, clientManifest, id) {
86
- const debugInfo = getDebugInfo(id, clientManifest, manifestKeyEnd);
85
+ function findEntryWithKeyEnd(manifestKeyEnd, assetsManifest, id) {
86
+ const debugInfo = getDebugInfo(id, assetsManifest, manifestKeyEnd);
87
87
  (0, utils_js_1.assert)(manifestKeyEnd.startsWith('/'), debugInfo);
88
88
  const manifestKeys = [];
89
- for (const manifestKey in clientManifest) {
89
+ for (const manifestKey in assetsManifest) {
90
90
  if (manifestKey.endsWith(manifestKeyEnd)) {
91
91
  manifestKeys.push(manifestKey);
92
92
  }
@@ -97,13 +97,13 @@ function findEntryWithKeyEnd(manifestKeyEnd, clientManifest, id) {
97
97
  if (!manifestKey) {
98
98
  return { manifestEntry: null, manifestKey: null };
99
99
  }
100
- const manifestEntry = clientManifest[manifestKey];
100
+ const manifestEntry = assetsManifest[manifestKey];
101
101
  return { manifestEntry, manifestKey };
102
102
  }
103
- function getEntryWithKeyEnd(manifestKeyEnd, clientManifest, id) {
104
- const debugInfo = getDebugInfo(id, clientManifest, manifestKeyEnd);
103
+ function getEntryWithKeyEnd(manifestKeyEnd, assetsManifest, id) {
104
+ const debugInfo = getDebugInfo(id, assetsManifest, manifestKeyEnd);
105
105
  const manifestKeys = [];
106
- for (const manifestKey in clientManifest) {
106
+ for (const manifestKey in assetsManifest) {
107
107
  if (manifestKey.endsWith(manifestKeyEnd)) {
108
108
  manifestKeys.push(manifestKey);
109
109
  }
@@ -113,11 +113,11 @@ function getEntryWithKeyEnd(manifestKeyEnd, clientManifest, id) {
113
113
  if (!manifestKey) {
114
114
  return { manifestEntry: null, manifestKey: null };
115
115
  }
116
- const manifestEntry = clientManifest[manifestKey];
116
+ const manifestEntry = assetsManifest[manifestKey];
117
117
  return { manifestEntry, manifestKey };
118
118
  }
119
- function getDebugInfo(id, clientManifest, manifestKeyEnd) {
120
- const manifestKeys = Object.keys(clientManifest);
119
+ function getDebugInfo(id, assetsManifest, manifestKeyEnd) {
120
+ const manifestKeys = Object.keys(assetsManifest);
121
121
  if (manifestKeyEnd === undefined) {
122
122
  return { manifestKeys, id };
123
123
  }
@@ -4,9 +4,9 @@ exports.retrieveAssetsProd = void 0;
4
4
  const utils_js_1 = require("../../utils.js");
5
5
  const getManifestEntry_js_1 = require("./getManifestEntry.js");
6
6
  const extractAssetsQuery_js_1 = require("../../../shared/extractAssetsQuery.js");
7
- function retrieveAssetsProd(clientDependencies, clientManifest, includeAssetsImportedByServer) {
7
+ function retrieveAssetsProd(clientDependencies, assetsManifest, includeAssetsImportedByServer) {
8
8
  let assetUrls = new Set();
9
- (0, utils_js_1.assert)(clientManifest);
9
+ (0, utils_js_1.assert)(assetsManifest);
10
10
  const visistedAssets = new Set();
11
11
  clientDependencies.forEach(({ id, onlyAssets, eagerlyImported }) => {
12
12
  if (eagerlyImported)
@@ -21,18 +21,18 @@ function retrieveAssetsProd(clientDependencies, clientManifest, includeAssetsImp
21
21
  id = (0, extractAssetsQuery_js_1.extractAssetsAddQuery)(id);
22
22
  }
23
23
  }
24
- const { manifestKey } = (0, getManifestEntry_js_1.getManifestEntry)(id, clientManifest);
25
- collectAssets(manifestKey, assetUrls, visistedAssets, clientManifest, onlyAssets);
24
+ const { manifestKey } = (0, getManifestEntry_js_1.getManifestEntry)(id, assetsManifest);
25
+ collectAssets(manifestKey, assetUrls, visistedAssets, assetsManifest, onlyAssets);
26
26
  });
27
- collectSingleStyle(assetUrls, clientManifest);
27
+ collectSingleStyle(assetUrls, assetsManifest);
28
28
  return Array.from(assetUrls);
29
29
  }
30
30
  exports.retrieveAssetsProd = retrieveAssetsProd;
31
- function collectAssets(manifestKey, assetUrls, visistedAssets, manifest, onlyCollectStaticAssets) {
31
+ function collectAssets(manifestKey, assetUrls, visistedAssets, assetsManifest, onlyCollectStaticAssets) {
32
32
  if (visistedAssets.has(manifestKey))
33
33
  return;
34
34
  visistedAssets.add(manifestKey);
35
- const manifestEntry = manifest[manifestKey];
35
+ const manifestEntry = assetsManifest[manifestKey];
36
36
  (0, utils_js_1.assert)(manifestEntry, { manifestKey });
37
37
  const { file } = manifestEntry;
38
38
  if (!onlyCollectStaticAssets) {
@@ -40,9 +40,9 @@ function collectAssets(manifestKey, assetUrls, visistedAssets, manifest, onlyCol
40
40
  }
41
41
  const { imports = [], assets = [], css = [] } = manifestEntry;
42
42
  for (const manifestKey of imports) {
43
- const importManifestEntry = manifest[manifestKey];
43
+ const importManifestEntry = assetsManifest[manifestKey];
44
44
  (0, utils_js_1.assert)(importManifestEntry);
45
- collectAssets(manifestKey, assetUrls, visistedAssets, manifest, onlyCollectStaticAssets);
45
+ collectAssets(manifestKey, assetUrls, visistedAssets, assetsManifest, onlyCollectStaticAssets);
46
46
  }
47
47
  for (const cssAsset of css) {
48
48
  assetUrls.add(`/${cssAsset}`);
@@ -52,9 +52,9 @@ function collectAssets(manifestKey, assetUrls, visistedAssets, manifest, onlyCol
52
52
  }
53
53
  }
54
54
  // Support `config.build.cssCodeSplit: false`, see https://github.com/vikejs/vike/issues/644
55
- function collectSingleStyle(assetUrls, manifest) {
56
- const style = manifest['style.css'];
57
- if (style && Object.values(manifest).filter((asset) => asset.file.endsWith('.css')).length === 1) {
55
+ function collectSingleStyle(assetUrls, assetsManifest) {
56
+ const style = assetsManifest['style.css'];
57
+ if (style && Object.values(assetsManifest).filter((asset) => asset.file.endsWith('.css')).length === 1) {
58
58
  assetUrls.add(`/${style.file}`);
59
59
  }
60
60
  }
@@ -21,9 +21,9 @@ async function getPageAssets(pageContext, clientDependencies, clientEntries) {
21
21
  assetUrls = await (0, retrieveAssetsDev_js_1.retrieveAssetsDev)(clientDependencies, viteDevServer);
22
22
  }
23
23
  else {
24
- const { clientManifest } = globalContext;
25
- clientEntriesSrc = clientEntries.map((clientEntry) => resolveClientEntriesProd(clientEntry, clientManifest));
26
- assetUrls = (0, retrieveAssetsProd_js_1.retrieveAssetsProd)(clientDependencies, clientManifest, pageContext._includeAssetsImportedByServer);
24
+ const { assetsManifest } = globalContext;
25
+ clientEntriesSrc = clientEntries.map((clientEntry) => resolveClientEntriesProd(clientEntry, assetsManifest));
26
+ assetUrls = (0, retrieveAssetsProd_js_1.retrieveAssetsProd)(clientDependencies, assetsManifest, pageContext._includeAssetsImportedByServer);
27
27
  }
28
28
  let pageAssets = [];
29
29
  (0, utils_js_1.unique)([...clientEntriesSrc, ...assetUrls]).forEach((src) => {
@@ -119,8 +119,8 @@ async function resolveClientEntriesDev(clientEntry, viteDevServer) {
119
119
  (0, utils_js_1.assertPosixPath)(filePath);
120
120
  return filePath;
121
121
  }
122
- function resolveClientEntriesProd(clientEntry, clientManifest) {
123
- const { manifestEntry } = (0, getManifestEntry_js_1.getManifestEntry)(clientEntry, clientManifest);
122
+ function resolveClientEntriesProd(clientEntry, assetsManifest) {
123
+ const { manifestEntry } = (0, getManifestEntry_js_1.getManifestEntry)(clientEntry, assetsManifest);
124
124
  (0, utils_js_1.assert)(manifestEntry.isEntry || manifestEntry.isDynamicEntry || clientEntry.endsWith('.css'), { clientEntry });
125
125
  let { file } = manifestEntry;
126
126
  (0, utils_js_1.assert)(!file.startsWith('/'));