vike 0.4.142 → 0.4.143-commit-dc6fea0

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 (170) hide show
  1. package/dist/cjs/node/plugin/index.js +2 -2
  2. package/dist/cjs/node/plugin/plugins/buildConfig.js +4 -5
  3. package/dist/cjs/node/plugin/plugins/commonConfig.js +2 -7
  4. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +2 -2
  5. package/dist/cjs/node/plugin/plugins/envVars.js +3 -5
  6. package/dist/cjs/node/plugin/plugins/importUserCode/generateEagerImport.js +19 -8
  7. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +2 -2
  8. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +1 -1
  9. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getFilePathToShowToUser.js +6 -0
  10. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +122 -124
  11. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +37 -27
  12. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +50 -80
  13. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/helpers.js +12 -3
  14. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.js +25 -25
  15. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.js +19 -16
  16. package/dist/cjs/node/plugin/plugins/suppressRollupWarning.js +16 -3
  17. package/dist/cjs/node/plugin/shared/{getConfigValueSource.js → getConfigValueSourcesRelevant.js} +1 -12
  18. package/dist/cjs/node/plugin/shared/loggerNotProd/errorWithCodeSnippet.js +1 -1
  19. package/dist/cjs/node/plugin/shared/loggerNotProd.js +3 -3
  20. package/dist/cjs/node/plugin/utils.js +1 -2
  21. package/dist/cjs/node/prerender/runPrerender.js +13 -16
  22. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +1 -1
  23. package/dist/cjs/node/runtime/html/stream.js +4 -1
  24. package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -2
  25. package/dist/cjs/node/runtime/renderPage/loadPageFilesServerSide.js +2 -2
  26. package/dist/cjs/node/runtime/renderPage/log404/index.js +10 -5
  27. package/dist/cjs/node/shared/virtual-files/virtualFilePageConfigValuesAll.js +1 -1
  28. package/dist/cjs/shared/error-page.js +1 -1
  29. package/dist/cjs/shared/getPageFiles/assertPageConfigs.js +13 -13
  30. package/dist/cjs/shared/getPageFiles/getExports.js +3 -3
  31. package/dist/cjs/shared/getPageFiles/parseGlobResults.js +9 -43
  32. package/dist/cjs/shared/getPageFiles/parsePageConfigsSerialized.js +62 -0
  33. package/dist/cjs/shared/page-configs/assertExports.js +60 -0
  34. package/dist/cjs/shared/page-configs/loadConfigValues.js +18 -0
  35. package/dist/cjs/shared/page-configs/parseConfigValuesImported.js +50 -0
  36. package/dist/cjs/shared/page-configs/utils.js +1 -1
  37. package/dist/cjs/shared/route/loadPageRoutes.js +11 -13
  38. package/dist/cjs/shared/route/resolvePrecedence.js +32 -11
  39. package/dist/cjs/shared/route/resolveRedirects.js +1 -1
  40. package/dist/cjs/shared/route/resolveRouteFunction.js +1 -0
  41. package/dist/cjs/shared/route/resolveRouteString.js +99 -43
  42. package/dist/cjs/shared/utils.js +1 -1
  43. package/dist/cjs/types/defineConfig.js +7 -0
  44. package/dist/cjs/types/index.js +3 -0
  45. package/dist/cjs/utils/getFilePathAbsolute.js +16 -12
  46. package/dist/cjs/utils/objectAssign.js +3 -1
  47. package/dist/cjs/utils/parseUrl.js +6 -1
  48. package/dist/cjs/utils/projectInfo.js +1 -1
  49. package/dist/cjs/utils/requireResolve.js +60 -0
  50. package/dist/esm/__internal/index.d.ts +3 -3
  51. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +2 -2
  52. package/dist/esm/client/client-routing-runtime/getPageContext.d.ts +2 -2
  53. package/dist/esm/client/client-routing-runtime/getPageId.d.ts +2 -2
  54. package/dist/esm/client/client-routing-runtime/prefetch.js +3 -1
  55. package/dist/esm/client/client-routing-runtime/useClientRouter.js +2 -2
  56. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
  57. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +2 -2
  58. package/dist/esm/client/shared/loadPageFilesClientSide.d.ts +2 -2
  59. package/dist/esm/client/shared/loadPageFilesClientSide.js +2 -2
  60. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
  61. package/dist/esm/node/plugin/index.js +3 -2
  62. package/dist/esm/node/plugin/plugins/buildConfig.js +4 -5
  63. package/dist/esm/node/plugin/plugins/commonConfig.js +2 -7
  64. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -1
  65. package/dist/esm/node/plugin/plugins/envVars.js +4 -6
  66. package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.d.ts +13 -2
  67. package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.js +19 -8
  68. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +2 -2
  69. package/dist/esm/node/plugin/plugins/importUserCode/index.js +2 -2
  70. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getFilePathToShowToUser.d.ts +19 -2
  71. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getFilePathToShowToUser.js +6 -0
  72. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +3 -2
  73. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +2 -2
  74. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +123 -125
  75. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.d.ts +5 -0
  76. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +35 -25
  77. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.d.ts +3 -0
  78. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +49 -79
  79. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/helpers.js +10 -1
  80. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.d.ts +18 -6
  81. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.js +25 -25
  82. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.d.ts +2 -2
  83. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.js +19 -16
  84. package/dist/esm/node/plugin/plugins/suppressRollupWarning.js +16 -3
  85. package/dist/esm/node/plugin/shared/{getConfigValueSource.d.ts → getConfigValueSourcesRelevant.d.ts} +0 -2
  86. package/dist/esm/node/plugin/shared/{getConfigValueSource.js → getConfigValueSourcesRelevant.js} +0 -11
  87. package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet.js +2 -2
  88. package/dist/esm/node/plugin/shared/loggerNotProd.js +4 -4
  89. package/dist/esm/node/plugin/utils.d.ts +1 -2
  90. package/dist/esm/node/plugin/utils.js +1 -2
  91. package/dist/esm/node/prerender/runPrerender.js +13 -16
  92. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +1 -1
  93. package/dist/esm/node/runtime/html/injectAssets.d.ts +2 -2
  94. package/dist/esm/node/runtime/html/serializePageContextClientSide.d.ts +2 -2
  95. package/dist/esm/node/runtime/html/stream.js +4 -1
  96. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
  97. package/dist/esm/node/runtime/renderPage/analyzePage.js +2 -2
  98. package/dist/esm/node/runtime/renderPage/createHttpResponseObject.d.ts +2 -2
  99. package/dist/esm/node/runtime/renderPage/debugPageFiles.d.ts +2 -2
  100. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +2 -2
  101. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
  102. package/dist/esm/node/runtime/renderPage/loadPageFilesServerSide.d.ts +2 -2
  103. package/dist/esm/node/runtime/renderPage/loadPageFilesServerSide.js +2 -2
  104. package/dist/esm/node/runtime/renderPage/log404/index.js +10 -5
  105. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
  106. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +13 -13
  107. package/dist/esm/node/shared/getClientEntryFilePath.d.ts +2 -2
  108. package/dist/esm/node/shared/virtual-files/virtualFilePageConfigValuesAll.js +1 -1
  109. package/dist/esm/shared/addIs404ToPageProps.d.ts +2 -2
  110. package/dist/esm/shared/addUrlComputedProps.d.ts +4 -2
  111. package/dist/esm/shared/error-page.d.ts +3 -3
  112. package/dist/esm/shared/error-page.js +1 -1
  113. package/dist/esm/shared/getPageFiles/analyzeClientSide.d.ts +2 -2
  114. package/dist/esm/shared/getPageFiles/assertPageConfigs.d.ts +5 -5
  115. package/dist/esm/shared/getPageFiles/assertPageConfigs.js +12 -12
  116. package/dist/esm/shared/getPageFiles/getExports.d.ts +2 -2
  117. package/dist/esm/shared/getPageFiles/getExports.js +1 -1
  118. package/dist/esm/shared/getPageFiles/parseGlobResults.d.ts +3 -3
  119. package/dist/esm/shared/getPageFiles/parseGlobResults.js +9 -43
  120. package/dist/esm/shared/getPageFiles/parsePageConfigsSerialized.d.ts +6 -0
  121. package/dist/esm/shared/getPageFiles/parsePageConfigsSerialized.js +59 -0
  122. package/dist/esm/shared/getPageFiles/setPageFiles.d.ts +3 -3
  123. package/dist/esm/shared/page-configs/Config.d.ts +201 -14
  124. package/dist/esm/shared/page-configs/PageConfig.d.ts +60 -39
  125. package/dist/esm/shared/page-configs/assertExports.d.ts +6 -0
  126. package/dist/esm/shared/page-configs/assertExports.js +54 -0
  127. package/dist/esm/shared/page-configs/findPageConfig.d.ts +2 -2
  128. package/dist/esm/shared/page-configs/loadConfigValues.d.ts +3 -0
  129. package/dist/esm/shared/page-configs/loadConfigValues.js +15 -0
  130. package/dist/esm/shared/page-configs/parseConfigValuesImported.d.ts +3 -0
  131. package/dist/esm/shared/page-configs/parseConfigValuesImported.js +44 -0
  132. package/dist/esm/shared/page-configs/utils.d.ts +3 -2
  133. package/dist/esm/shared/page-configs/utils.js +1 -1
  134. package/dist/esm/shared/route/executeGuardHook.d.ts +2 -2
  135. package/dist/esm/shared/route/index.d.ts +3 -3
  136. package/dist/esm/shared/route/loadPageRoutes.d.ts +2 -2
  137. package/dist/esm/shared/route/loadPageRoutes.js +11 -13
  138. package/dist/esm/shared/route/resolvePrecedence.js +33 -12
  139. package/dist/esm/shared/route/resolveRedirects.js +1 -1
  140. package/dist/esm/shared/route/resolveRouteFunction.js +1 -0
  141. package/dist/esm/shared/route/resolveRouteString.d.ts +21 -4
  142. package/dist/esm/shared/route/resolveRouteString.js +98 -42
  143. package/dist/esm/shared/types.d.ts +8 -6
  144. package/dist/esm/shared/utils.d.ts +1 -1
  145. package/dist/esm/shared/utils.js +1 -1
  146. package/dist/esm/types/defineConfig.d.ts +3 -0
  147. package/dist/esm/types/defineConfig.js +4 -0
  148. package/dist/esm/types/index.d.ts +3 -1
  149. package/dist/esm/types/index.js +1 -1
  150. package/dist/esm/utils/getFilePathAbsolute.d.ts +2 -2
  151. package/dist/esm/utils/getFilePathAbsolute.js +15 -11
  152. package/dist/esm/utils/objectAssign.js +3 -1
  153. package/dist/esm/utils/parseUrl.js +6 -1
  154. package/dist/esm/utils/projectInfo.d.ts +1 -1
  155. package/dist/esm/utils/projectInfo.js +1 -1
  156. package/dist/esm/utils/requireResolve.d.ts +2 -0
  157. package/dist/esm/utils/requireResolve.js +57 -0
  158. package/package.json +3 -3
  159. package/dist/cjs/shared/page-configs/loadPageCode.js +0 -63
  160. package/dist/cjs/utils/addFileExtensionsToRequireResolve.js +0 -23
  161. package/dist/cjs/utils/assertDefaultExport.js +0 -53
  162. package/dist/esm/shared/page-configs/loadPageCode.d.ts +0 -3
  163. package/dist/esm/shared/page-configs/loadPageCode.js +0 -57
  164. package/dist/esm/utils/addFileExtensionsToRequireResolve.d.ts +0 -2
  165. package/dist/esm/utils/addFileExtensionsToRequireResolve.js +0 -20
  166. package/dist/esm/utils/assertDefaultExport.d.ts +0 -8
  167. package/dist/esm/utils/assertDefaultExport.js +0 -47
  168. /package/dist/cjs/shared/getPageFiles/{assertExports.js → assert_exports_old_design.js} +0 -0
  169. /package/dist/esm/shared/getPageFiles/{assertExports.d.ts → assert_exports_old_design.d.ts} +0 -0
  170. /package/dist/esm/shared/getPageFiles/{assertExports.js → assert_exports_old_design.js} +0 -0
@@ -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.assertRouteString = exports.analyzeRouteString = exports.isStaticRouteString = exports.getUrlFromRouteString = exports.resolveRouteString = void 0;
6
+ exports.parseRouteString = exports.assertRouteString = exports.analyzeRouteString = exports.isStaticRouteString = exports.getUrlFromRouteString = exports.resolveRouteString = void 0;
7
7
  const utils_js_1 = require("../utils.js");
8
8
  const utils_js_2 = require("./utils.js");
9
9
  const picocolors_1 = __importDefault(require("@brillout/picocolors"));
@@ -11,44 +11,105 @@ const PARAM_TOKEN_NEW = '@';
11
11
  // TODO/v1-release: remove
12
12
  const PARAM_TOKEN_OLD = ':';
13
13
  function assertRouteString(routeString, errPrefix = 'Invalid') {
14
- (0, utils_js_2.assert)(errPrefix.endsWith('Invalid') || errPrefix.endsWith('invalid'));
15
- (0, utils_js_2.assertUsage)(routeString !== '', `${errPrefix} Route String ${highlight(routeString)} (empty string): set it to ${highlight('/')} instead`);
16
- (0, utils_js_2.assertUsage)(routeString.startsWith('/') || routeString === '*', `${errPrefix} Route String ${highlight(routeString)}: Route Strings should start with a leading slash ${highlight('/')} (or be ${highlight('*')})`);
14
+ let errPrefix2 = `${errPrefix} Route String ${highlight(routeString)}`;
15
+ (0, utils_js_2.assertUsage)(routeString !== '', `${errPrefix2} (empty string): set it to ${highlight('/')} instead`);
16
+ (0, utils_js_2.assertUsage)(['/', '*'].includes(routeString[0]), `${errPrefix2}: it should start with ${highlight('/')} or ${highlight('*')}`);
17
+ (0, utils_js_2.assertUsage)(!routeString.includes('**'), `${errPrefix2}: set it to ${highlight(routeString.split('**').join('*'))} instead`);
17
18
  }
18
19
  exports.assertRouteString = assertRouteString;
19
20
  function resolveRouteString(routeString, urlPathname) {
20
21
  assertRouteString(routeString);
21
- (0, utils_js_2.assert)(urlPathname.startsWith('/'));
22
- const routeSegments = routeString.split('/');
23
- const urlSegments = urlPathname.split('/');
24
- const routeParams = {};
25
- assertGlob(routeString);
26
- if (routeString === '*') {
27
- routeString = '/*';
28
- }
29
- for (let i = 0; i < Math.max(routeSegments.length, urlSegments.length); i++) {
30
- const routeSegment = routeSegments[i];
31
- const urlSegment = urlSegments[i];
32
- if (routeSegment === '*') {
33
- routeParams['*'] = urlSegments.slice(Math.max(1, i)).join('/');
34
- return { routeParams };
22
+ const segments = parseRouteString(routeString);
23
+ const routeRegexStrInner = segments
24
+ .map((segment) => {
25
+ if (segment.param) {
26
+ return '[^/]+';
35
27
  }
36
- else if (routeSegment && isParam(routeSegment)) {
37
- (0, utils_js_1.assertWarning)(!routeSegment.startsWith(PARAM_TOKEN_OLD), `Outdated Route String ${picocolors_1.default.cyan(routeString)}, use ${picocolors_1.default.cyan(routeString.split(PARAM_TOKEN_OLD).join(PARAM_TOKEN_NEW))} instead.`, { onlyOnce: true });
38
- if (!urlSegment) {
39
- return null;
28
+ if (segment.glob) {
29
+ if (segment.isLastDir) {
30
+ return '|/.*';
40
31
  }
41
- routeParams[routeSegment.slice(1)] = urlSegment;
42
- }
43
- else {
44
- if ((routeSegment || '') !== (urlSegment || '')) {
45
- return null;
32
+ else {
33
+ return '.*';
46
34
  }
47
35
  }
48
- }
36
+ // segment.static
37
+ return (0, utils_js_1.escapeRegex)(segment.static);
38
+ })
39
+ .map((s) => `(${s})`)
40
+ .join('');
41
+ const routeRegex = new RegExp(`^${routeRegexStrInner}/?$`);
42
+ const routeRegexMatch = urlPathname.match(routeRegex);
43
+ /* DEBUG
44
+ console.log()
45
+ console.log('routeString', routeString)
46
+ console.log('urlPathname', urlPathname)
47
+ console.log('routeSegments', segments)
48
+ console.log('routeRegex', routeRegex)
49
+ console.log('routeRegexMatch', routeRegexMatch)
50
+ //*/
51
+ if (!routeRegexMatch)
52
+ return null;
53
+ const routeParams = {};
54
+ const [_, ...segmentsValue] = routeRegexMatch;
55
+ let globIdx = 0;
56
+ const hasMultipleGlobs = segments.filter((segment) => segment.glob).length > 1;
57
+ segments.forEach((segment, i) => {
58
+ let val = segmentsValue[i];
59
+ if (segment.param) {
60
+ routeParams[segment.param] = val;
61
+ }
62
+ if (segment.glob) {
63
+ const param = `*${hasMultipleGlobs ? ++globIdx : ''}`;
64
+ if (segment.isLastDir)
65
+ val = val.slice(1);
66
+ routeParams[param] = val;
67
+ }
68
+ });
49
69
  return { routeParams };
50
70
  }
51
71
  exports.resolveRouteString = resolveRouteString;
72
+ function parseRouteString(routeString) {
73
+ const segments = [];
74
+ const pushStatic = (s) => {
75
+ const segmentLast = segments[segments.length - 1];
76
+ if (segmentLast?.static) {
77
+ segmentLast.static += s;
78
+ }
79
+ else {
80
+ segments.push({ static: s });
81
+ }
82
+ };
83
+ const parts = routeString.split('/');
84
+ parts.forEach((s, i) => {
85
+ const isFirst = i === 0;
86
+ const isLast = i === parts.length - 1;
87
+ if (isParam(s)) {
88
+ (0, utils_js_1.assertWarning)(!s.startsWith(PARAM_TOKEN_OLD), `Outdated Route String ${highlight(routeString)}, use ${highlight(routeString.split(PARAM_TOKEN_OLD).join(PARAM_TOKEN_NEW))} instead`, { onlyOnce: true });
89
+ if (!isFirst)
90
+ pushStatic('/');
91
+ segments.push({ param: s.slice(1) });
92
+ }
93
+ else {
94
+ if (s === '*' && isLast && routeString !== '*' && routeString !== '/*') {
95
+ segments.push({ glob: true, isLastDir: true });
96
+ }
97
+ else {
98
+ if (!isFirst)
99
+ pushStatic('/');
100
+ s.split('*').forEach((s, i) => {
101
+ if (i !== 0)
102
+ segments.push({ glob: true });
103
+ if (s !== '') {
104
+ pushStatic(s);
105
+ }
106
+ });
107
+ }
108
+ }
109
+ });
110
+ return segments;
111
+ }
112
+ exports.parseRouteString = parseRouteString;
52
113
  function getUrlFromRouteString(routeString) {
53
114
  (0, utils_js_2.assert)(routeString.startsWith('/'));
54
115
  if (isStaticRouteString(routeString)) {
@@ -58,24 +119,19 @@ function getUrlFromRouteString(routeString) {
58
119
  return null;
59
120
  }
60
121
  exports.getUrlFromRouteString = getUrlFromRouteString;
61
- function assertGlob(routeString) {
62
- const numberOfGlobChars = routeString.split('*').length - 1;
63
- (0, utils_js_2.assertUsage)(numberOfGlobChars <= 1, `Invalid Route String ${highlight(routeString)}: Route Strings aren't allowed to contain more than one glob ${highlight('*')} (use a Route Function instead)`);
64
- (0, utils_js_2.assertUsage)(numberOfGlobChars === 0 || (numberOfGlobChars === 1 && routeString.endsWith('*')), `Invalid Route String ${highlight(routeString)}: make sure it ends with ${highlight('*')} or use a Route Function`);
65
- }
66
122
  function analyzeRouteString(routeString) {
67
- const routeSegments = routeString.split('/').filter((routeSegment) => routeSegment !== '' && routeSegment !== '*');
68
- let numberOfStaticSegmentsBeginning = 0;
69
- for (const routeSegment of routeSegments) {
70
- if (isParam(routeSegment)) {
123
+ const segments = parseRouteString(routeString);
124
+ const countStaticParts = (s) => s?.split('/').filter(Boolean).length || 0;
125
+ let numberOfStaticPartsBeginning = 0;
126
+ for (const segment of segments) {
127
+ if (!segment.static)
71
128
  break;
72
- }
73
- numberOfStaticSegmentsBeginning++;
129
+ numberOfStaticPartsBeginning += countStaticParts(segment.static);
74
130
  }
75
- const numberOfStaticSegements = routeSegments.filter((s) => !isParam(s)).length;
76
- const numberOfParameterSegments = routeSegments.filter((s) => isParam(s)).length;
77
- const isCatchAll = routeString.endsWith('*');
78
- return { numberOfParameterSegments, numberOfStaticSegmentsBeginning, numberOfStaticSegements, isCatchAll };
131
+ const numberOfStaticParts = segments.map((s) => countStaticParts(s.static)).reduce((sum, a) => sum + a, 0);
132
+ const numberOfParams = segments.filter((s) => s.param).length;
133
+ const numberOfGlobs = segments.filter((s) => s.glob).length;
134
+ return { numberOfStaticPartsBeginning, numberOfStaticParts, numberOfParams, numberOfGlobs };
79
135
  }
80
136
  exports.analyzeRouteString = analyzeRouteString;
81
137
  function isParam(routeSegment) {
@@ -38,6 +38,6 @@ __exportStar(require("../utils/projectInfo.js"), exports);
38
38
  __exportStar(require("../utils/hasPropertyGetter.js"), exports);
39
39
  __exportStar(require("../utils/isPromise.js"), exports);
40
40
  __exportStar(require("../utils/checkType.js"), exports);
41
- __exportStar(require("../utils/assertDefaultExport.js"), exports);
42
41
  __exportStar(require("../utils/objectEntries.js"), exports);
43
42
  __exportStar(require("../utils/getValuePrintable.js"), exports);
43
+ __exportStar(require("../utils/escapeRegex.js"), exports);
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineConfig = void 0;
4
+ function defineConfig(config) {
5
+ return config;
6
+ }
7
+ exports.defineConfig = defineConfig;
@@ -1,2 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defineConfig = void 0;
4
+ var defineConfig_js_1 = require("./defineConfig.js");
5
+ Object.defineProperty(exports, "defineConfig", { enumerable: true, get: function () { return defineConfig_js_1.defineConfig; } });
@@ -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.getFilePathVite = exports.getFilePathAbsolute = void 0;
6
+ exports.getFilePathRelativeToUserRootDir = exports.getFilePathAbsolute = void 0;
7
7
  const filesystemPathHandling_js_1 = require("./filesystemPathHandling.js");
8
8
  const assert_js_1 = require("./assert.js");
9
9
  const path_1 = __importDefault(require("path"));
@@ -47,20 +47,24 @@ function getFilePathAbsolute(filePath, config) {
47
47
  return filePathAbsolute;
48
48
  }
49
49
  exports.getFilePathAbsolute = getFilePathAbsolute;
50
- function getFilePathVite(filePath, userRootDir, alwaysRelativeToRoot = false) {
51
- (0, filesystemPathHandling_js_1.assertPosixPath)(filePath);
50
+ function getFilePathRelativeToUserRootDir(filePathAbsolute, userRootDir, alwaysRelative = false) {
51
+ (0, filesystemPathHandling_js_1.assertPosixPath)(filePathAbsolute);
52
52
  (0, filesystemPathHandling_js_1.assertPosixPath)(userRootDir);
53
- const filePathRelativeToRoot = path_1.default.posix.relative(userRootDir, filePath);
54
- if (!filePath.startsWith(userRootDir)) {
55
- if (alwaysRelativeToRoot) {
56
- return filePathRelativeToRoot;
53
+ let filePathRelativeToUserRootDir = path_1.default.posix.relative(userRootDir, filePathAbsolute);
54
+ if (filePathAbsolute.startsWith(userRootDir)) {
55
+ (0, assert_js_1.assert)(!filePathRelativeToUserRootDir.startsWith('.') && !filePathRelativeToUserRootDir.startsWith('/'),
56
+ // Surprinsingly, this assertion seem to fail sometimes: https://github.com/vikejs/vike/issues/1139
57
+ { filePathRelativeToUserRootDir, filePathAbsolute, userRootDir });
58
+ filePathRelativeToUserRootDir = `/${filePathRelativeToUserRootDir}`;
59
+ return filePathRelativeToUserRootDir;
60
+ }
61
+ else {
62
+ if (alwaysRelative) {
63
+ return filePathRelativeToUserRootDir;
57
64
  }
58
65
  else {
59
- return filePath;
66
+ return filePathAbsolute;
60
67
  }
61
68
  }
62
- (0, assert_js_1.assert)(!filePathRelativeToRoot.startsWith('.') && !filePathRelativeToRoot.startsWith('/'));
63
- const filePathVite = `/${filePathRelativeToRoot}`;
64
- return filePathVite;
65
69
  }
66
- exports.getFilePathVite = getFilePathVite;
70
+ exports.getFilePathRelativeToUserRootDir = getFilePathRelativeToUserRootDir;
@@ -5,6 +5,8 @@ exports.objectAssign = void 0;
5
5
  // - With type inference
6
6
  // - Preserves property descriptors, which we need for preserving the getters added by addUrlComputedProps()
7
7
  function objectAssign(obj, objAddendum) {
8
- Object.defineProperties(obj, Object.getOwnPropertyDescriptors(objAddendum));
8
+ if (objAddendum) {
9
+ Object.defineProperties(obj, Object.getOwnPropertyDescriptors(objAddendum));
10
+ }
9
11
  }
10
12
  exports.objectAssign = objectAssign;
@@ -112,7 +112,10 @@ function parsePathname(urlWithoutHashNorSearch, baseServer) {
112
112
  else {
113
113
  // In the browser, this is the Base URL of the current URL
114
114
  // Safe access `window?.document?.baseURI` for users who shim `window` in Node.js
115
- const base = (typeof window !== 'undefined' && window?.document?.baseURI) || baseServer;
115
+ let baseURI = typeof window !== 'undefined' && window?.document?.baseURI;
116
+ if (baseURI)
117
+ baseURI = parseOrigin(baseURI).pathname;
118
+ const base = baseURI || baseServer;
116
119
  const pathname = resolveUrlPathnameRelative(urlWithoutHashNorSearch, base);
117
120
  // We need to parse the origin in case `base === window.document.baseURI`
118
121
  const parsed = parseOrigin(pathname);
@@ -155,6 +158,8 @@ function resolveUrlPathnameRelative(pathnameRelative, base) {
155
158
  let pathnameAbsolute = stack.join('/');
156
159
  if (baseRestoreTrailingSlash && !pathnameAbsolute.endsWith('/'))
157
160
  pathnameAbsolute += '/';
161
+ if (!pathnameAbsolute.startsWith('/'))
162
+ pathnameAbsolute = '/' + pathnameAbsolute;
158
163
  return pathnameAbsolute;
159
164
  }
160
165
  /* Not needed anymore?
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.projectInfo = void 0;
4
4
  const assertSingleInstance_js_1 = require("./assertSingleInstance.js");
5
- const PROJECT_VERSION = '0.4.142';
5
+ const PROJECT_VERSION = '0.4.143-commit-dc6fea0';
6
6
  const projectInfo = {
7
7
  projectName: 'Vike',
8
8
  projectVersion: PROJECT_VERSION,
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requireResolve = void 0;
4
+ const assert_js_1 = require("./assert.js");
5
+ const assertIsNotBrowser_js_1 = require("./assertIsNotBrowser.js");
6
+ const assertIsNotProductionRuntime_js_1 = require("./assertIsNotProductionRuntime.js");
7
+ const filesystemPathHandling_js_1 = require("./filesystemPathHandling.js");
8
+ const isScriptFile_js_1 = require("./isScriptFile.js");
9
+ const module_1 = require("module");
10
+ // @ts-ignore Shimed by dist-cjs-fixup.js for CJS build.
11
+ const importMetaUrl = `file://${__filename}`;
12
+ const require_ = (0, module_1.createRequire)(importMetaUrl);
13
+ (0, assertIsNotBrowser_js_1.assertIsNotBrowser)();
14
+ (0, assertIsNotProductionRuntime_js_1.assertIsNotProductionRuntime)();
15
+ function requireResolve(importPath, cwd) {
16
+ (0, filesystemPathHandling_js_1.assertPosixPath)(cwd);
17
+ const clean = addFileExtensionsToRequireResolve();
18
+ importPath = removeFileExtention(importPath);
19
+ let importedFile;
20
+ try {
21
+ importedFile = require_.resolve(importPath, { paths: [cwd] });
22
+ }
23
+ catch {
24
+ importedFile = null;
25
+ }
26
+ finally {
27
+ clean();
28
+ }
29
+ if (importedFile) {
30
+ importedFile = (0, filesystemPathHandling_js_1.toPosixPath)(importedFile);
31
+ }
32
+ return importedFile;
33
+ }
34
+ exports.requireResolve = requireResolve;
35
+ function removeFileExtention(importPath) {
36
+ for (const ext of isScriptFile_js_1.scriptFileExtensionList) {
37
+ const suffix = `.${ext}`;
38
+ if (importPath.endsWith(suffix)) {
39
+ return importPath.slice(0, -1 * suffix.length);
40
+ }
41
+ }
42
+ return importPath;
43
+ }
44
+ function addFileExtensionsToRequireResolve() {
45
+ const added = [];
46
+ isScriptFile_js_1.scriptFileExtensionList.forEach((ext) => {
47
+ (0, assert_js_1.assert)(!ext.includes('.'));
48
+ ext = `.${ext}`;
49
+ if (!require.extensions[ext]) {
50
+ require.extensions[ext] = require.extensions['.js'];
51
+ added.push(ext);
52
+ }
53
+ });
54
+ const clean = () => {
55
+ added.forEach((ext) => {
56
+ delete require.extensions[ext];
57
+ });
58
+ };
59
+ return clean;
60
+ }
@@ -1,8 +1,8 @@
1
1
  import { route, type PageRoutes } from '../shared/route/index.js';
2
2
  import { type PageFile } from '../shared/getPageFiles.js';
3
- import { PageConfig } from '../shared/page-configs/PageConfig.js';
3
+ import { PageConfigRuntime } from '../shared/page-configs/PageConfig.js';
4
4
  export { route, getPagesAndRoutes };
5
- export type { PageRoutes, PageFile, PageConfig };
5
+ export type { PageRoutes, PageFile, PageConfigRuntime as PageConfig };
6
6
  /**
7
7
  * Used by {@link https://github.com/magne4000/vite-plugin-vercel|vite-plugin-vercel}
8
8
  * to compute some rewrite rules and extract { isr } configs.
@@ -12,6 +12,6 @@ export type { PageRoutes, PageFile, PageConfig };
12
12
  declare function getPagesAndRoutes(): Promise<{
13
13
  pageRoutes: PageRoutes;
14
14
  pageFilesAll: PageFile[];
15
- pageConfigs: PageConfig[];
15
+ pageConfigs: PageConfigRuntime[];
16
16
  allPageIds: string[];
17
17
  }>;
@@ -8,8 +8,8 @@ declare function createPageContext<T extends {
8
8
  _baseServer: string;
9
9
  _isProduction: boolean;
10
10
  _pageFilesAll: import("../../shared/getPageFiles/getPageFileObject.js").PageFile[];
11
- _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfig[];
12
- _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobal;
11
+ _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
12
+ _pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
13
13
  _allPageIds: string[];
14
14
  _pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
15
15
  _onBeforeRouteHook: import("../../shared/route/executeOnBeforeRouteHook.js").OnBeforeRouteHook | null;
@@ -5,7 +5,7 @@ export { isAlreadyServerSideRouted };
5
5
  import type { PageContextExports, PageFile } from '../../shared/getPageFiles.js';
6
6
  import type { PageContextUrlComputedPropsInternal } from '../../shared/addUrlComputedProps.js';
7
7
  import { PageContextForRoute } from '../../shared/route/index.js';
8
- import type { PageConfig } from '../../shared/page-configs/PageConfig.js';
8
+ import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
9
9
  import type { PageContextForPassToClientWarning } from '../shared/getPageContextProxyForUser.js';
10
10
  type PageContextAddendum = {
11
11
  _pageId: string;
@@ -23,7 +23,7 @@ declare function getPageContextErrorPage(pageContext: {
23
23
  _allPageIds: string[];
24
24
  _isFirstRenderAttempt: boolean;
25
25
  _pageFilesAll: PageFile[];
26
- _pageConfigs: PageConfig[];
26
+ _pageConfigs: PageConfigRuntime[];
27
27
  } & PageContextPassThrough): Promise<PageContextAddendum>;
28
28
  declare function checkIf404(err: unknown): boolean;
29
29
  declare function isAlreadyServerSideRouted(err: unknown): boolean;
@@ -2,9 +2,9 @@ export { getPageId };
2
2
  declare function getPageId(url: string): Promise<{
3
3
  pageId: null;
4
4
  pageFilesAll: import("../../shared/getPageFiles/getPageFileObject.js").PageFile[];
5
- pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfig[];
5
+ pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
6
6
  } | {
7
7
  pageId: string;
8
8
  pageFilesAll: import("../../shared/getPageFiles/getPageFileObject.js").PageFile[];
9
- pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfig[];
9
+ pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
10
10
  }>;
@@ -18,7 +18,9 @@ const linkPrefetchHandlerAdded = new Map();
18
18
  * @param url - The URL of the page you want to prefetch.
19
19
  */
20
20
  async function prefetch(url) {
21
- assertUsage(checkIfClientRouting(), 'prefetch() only works with Client Routing, see https://vike.dev/prefetch', { showStackTrace: true });
21
+ assertUsage(checkIfClientRouting(), 'prefetch() only works with Client Routing, see https://vike.dev/prefetch', {
22
+ showStackTrace: true
23
+ });
22
24
  assertUsage(!isExternalLink(url), `You are trying to prefetch the URL ${url} of another domain which cannot be prefetched`, { showStackTrace: true });
23
25
  if (isAlreadyPrefetched(url))
24
26
  return;
@@ -103,7 +103,7 @@ function useClientRouter() {
103
103
  // Start transition before any await's
104
104
  if (renderingNumber > 1) {
105
105
  if (isTransitioning === false) {
106
- globalObject.onPageTransitionStart?.(pageContextBase);
106
+ await globalObject.onPageTransitionStart?.(pageContextBase);
107
107
  isTransitioning = true;
108
108
  }
109
109
  }
@@ -265,7 +265,7 @@ function useClientRouter() {
265
265
  else if (renderingNumber === renderingCounter) {
266
266
  if (pageContext.exports.onPageTransitionEnd) {
267
267
  assertHook(pageContext, 'onPageTransitionEnd');
268
- pageContext.exports.onPageTransitionEnd(pageContext);
268
+ await pageContext.exports.onPageTransitionEnd(pageContext);
269
269
  }
270
270
  isTransitioning = false;
271
271
  }
@@ -8,7 +8,7 @@ declare function getPageContext(): Promise<{
8
8
  _hasPageContextFromClient: boolean;
9
9
  } & {
10
10
  _pageFilesAll: import("../../shared/getPageFiles/getPageFileObject.js").PageFile[];
11
- _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfig[];
11
+ _pageConfigs: import("../../shared/page-configs/PageConfig.js").PageConfigRuntime[];
12
12
  } & import("../../shared/getPageFiles/getExports.js").PageContextExports & {
13
13
  _pageFilesLoaded: import("../../shared/getPageFiles/getPageFileObject.js").PageFile[];
14
14
  }>;
@@ -1,11 +1,11 @@
1
1
  export { executeOnRenderClientHook };
2
2
  import type { PageFile, PageContextExports } from '../../shared/getPageFiles.js';
3
3
  import { type PageContextForUserConsumptionClientSide } from './preparePageContextForUserConsumptionClientSide.js';
4
- import type { PageConfig } from '../../shared/page-configs/PageConfig.js';
4
+ import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
5
5
  declare function executeOnRenderClientHook<PC extends {
6
6
  _pageFilesLoaded: PageFile[];
7
7
  urlOriginal?: string;
8
8
  urlPathname?: string;
9
9
  _pageId: string;
10
- _pageConfigs: PageConfig[];
10
+ _pageConfigs: PageConfigRuntime[];
11
11
  } & PageContextExports & PageContextForUserConsumptionClientSide>(pageContext: PC, isClientRouting: boolean): Promise<void>;
@@ -1,8 +1,8 @@
1
1
  import { type PageFile, type PageContextExports } from '../../shared/getPageFiles.js';
2
- import type { PageConfig } from '../../shared/page-configs/PageConfig.js';
2
+ import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
3
3
  export { loadPageFilesClientSide };
4
4
  export { isErrorFetchingStaticAssets };
5
- declare function loadPageFilesClientSide(pageFilesAll: PageFile[], pageConfigs: PageConfig[], pageId: string): Promise<PageContextExports & {
5
+ declare function loadPageFilesClientSide(pageFilesAll: PageFile[], pageConfigs: PageConfigRuntime[], pageId: string): Promise<PageContextExports & {
6
6
  _pageFilesLoaded: PageFile[];
7
7
  }>;
8
8
  declare function isErrorFetchingStaticAssets(err: unknown): boolean;
@@ -1,6 +1,6 @@
1
1
  import { getPageFilesClientSide, getExports } from '../../shared/getPageFiles.js';
2
2
  import { findPageConfig } from '../../shared/page-configs/findPageConfig.js';
3
- import { loadPageCode } from '../../shared/page-configs/loadPageCode.js';
3
+ import { loadConfigValues } from '../../shared/page-configs/loadConfigValues.js';
4
4
  export { loadPageFilesClientSide };
5
5
  export { isErrorFetchingStaticAssets };
6
6
  const stamp = '__whileFetchingAssets';
@@ -13,7 +13,7 @@ async function loadPageFilesClientSide(pageFilesAll, pageConfigs, pageId) {
13
13
  try {
14
14
  // prettier-ignore
15
15
  const result = await Promise.all([
16
- pageConfig && loadPageCode(pageConfig, isDev),
16
+ pageConfig && loadConfigValues(pageConfig, isDev),
17
17
  ...pageFilesClientSide.map((p) => p.loadFile?.()),
18
18
  ]);
19
19
  pageConfigLoaded = result[0];
@@ -1,11 +1,11 @@
1
1
  export { preparePageContextForUserConsumptionClientSide };
2
2
  export type { PageContextForUserConsumptionClientSide };
3
3
  import type { PageContextExports } from '../../shared/getPageFiles.js';
4
- import type { PageConfig } from '../../shared/page-configs/PageConfig.js';
4
+ import type { PageConfigRuntime } from '../../shared/page-configs/PageConfig.js';
5
5
  import { PageContextForPassToClientWarning } from './getPageContextProxyForUser.js';
6
6
  type PageContextForUserConsumptionClientSide = PageContextExports & PageContextForPassToClientWarning & {
7
7
  _pageId: string;
8
- _pageConfigs: PageConfig[];
8
+ _pageConfigs: PageConfigRuntime[];
9
9
  };
10
10
  declare function preparePageContextForUserConsumptionClientSide<T extends PageContextForUserConsumptionClientSide>(pageContext: T, isClientRouting: boolean): T & {
11
11
  Page: unknown;
@@ -1,5 +1,6 @@
1
1
  export default plugin;
2
2
  export { plugin };
3
+ // TODO/v1-release: remove
3
4
  export { plugin as ssr };
4
5
  import { assertUsage, markEnvAsVite } from './utils.js';
5
6
  import { buildConfig } from './plugins/buildConfig.js';
@@ -48,7 +49,7 @@ function plugin(vikeConfig) {
48
49
  ];
49
50
  return plugins;
50
51
  }
51
- // Enable `const ssr = require('vike/plugin')`.
52
+ // Enable `const vike = require('vike/plugin')`.
52
53
  // - This lives at the end of the file to ensure it happens after all assignments to `exports`.
53
54
  // - This is only used for the CJS build; we wrap it in a try-catch for the ESM build.
54
55
  try {
@@ -59,6 +60,6 @@ catch { }
59
60
  Object.defineProperty(plugin, 'apply', {
60
61
  enumerable: true,
61
62
  get: () => {
62
- assertUsage(false, `Add ${pc.cyan('ssr()')} instead of ${pc.cyan('ssr')} to vite.config.js#plugins (i.e. call the function and add the return value instead of adding the function itself)`, { showStackTrace: true });
63
+ 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 });
63
64
  }
64
65
  });
@@ -50,8 +50,10 @@ function buildConfig() {
50
50
  },
51
51
  async writeBundle(options, bundle) {
52
52
  const manifestEntry = bundle[manifestTempFile];
53
- if (generateManifest) {
54
- assert(manifestEntry);
53
+ /* Fails with @vitejs/plugin-legacy because writeBundle() is called twice during the client build (once for normal client assets and a second time for legacy assets), see reproduction at https://github.com/vikejs/vike/issues/1154
54
+ assert(generateManifest === !!manifestEntry)
55
+ */
56
+ if (manifestEntry) {
55
57
  const { dir } = options;
56
58
  assert(dir);
57
59
  const manifestFilePathOld = path.join(dir, manifestEntry.fileName);
@@ -61,9 +63,6 @@ function buildConfig() {
61
63
  const manifestFilePathNew = path.join(dir, '..', 'assets.json');
62
64
  await fs.rename(manifestFilePathOld, manifestFilePathNew);
63
65
  }
64
- else {
65
- assert(!manifestEntry);
66
- }
67
66
  }
68
67
  };
69
68
  }
@@ -14,12 +14,7 @@ function commonConfig() {
14
14
  {
15
15
  name: 'vike-commonConfig-1',
16
16
  config: () => ({
17
- appType: 'custom',
18
- ssr: {
19
- // Needed as long as Vike is published as CJS.
20
- // TODO: can we remove this once Vike is published as ESM?
21
- external: ['vike', 'vike/server']
22
- }
17
+ appType: 'custom'
23
18
  }),
24
19
  configResolved(config) {
25
20
  installRequireShim_setUserRootDir(config.root);
@@ -70,5 +65,5 @@ function assertEsm(userViteRoot) {
70
65
  }
71
66
  assert(dir.endsWith('/'));
72
67
  dir = pc.dim(dir);
73
- assertWarning(packageJson.type === 'module', `We recommend setting ${dir}package.json#type to "module" (and therefore writing ESM code instead of CJS code), see https://vike.dev/CJS`, { onlyOnce: true });
68
+ assertWarning(packageJson.type === 'module', `We recommend setting ${dir}package.json#type to "module", see https://vike.dev/CJS`, { onlyOnce: true });
74
69
  }
@@ -2,7 +2,7 @@ export { determineOptimizeDeps };
2
2
  import { findPageFiles } from '../../shared/findPageFiles.js';
3
3
  import { assert, getFilePathAbsolute, isNotNullish, isNpmPackageImport, unique } from '../../utils.js';
4
4
  import { getVikeConfig } from '../importUserCode/v1-design/getVikeConfig.js';
5
- import { getConfigValueSourcesRelevant } from '../../shared/getConfigValueSource.js';
5
+ import { getConfigValueSourcesRelevant } from '../../shared/getConfigValueSourcesRelevant.js';
6
6
  import { analyzeClientEntries } from '../buildConfig.js';
7
7
  import { virtualFileIdImportUserCodeClientCR, virtualFileIdImportUserCodeClientSR } from '../../../shared/virtual-files/virtualFileImportUserCode.js';
8
8
  async function determineOptimizeDeps(config, configVike, isDev) {
@@ -1,6 +1,6 @@
1
1
  export { envVarsPlugin };
2
2
  import { loadEnv } from 'vite';
3
- import { assert, assertPosixPath, assertUsage, assertWarning, getFilePathVite, lowerFirst } from '../utils.js';
3
+ import { assert, assertPosixPath, assertUsage, assertWarning, getFilePathRelativeToUserRootDir, lowerFirst } from '../utils.js';
4
4
  function envVarsPlugin() {
5
5
  let envsAll;
6
6
  let config;
@@ -41,11 +41,9 @@ function envVarsPlugin() {
41
41
  if (isPrivate && isClientSide) {
42
42
  if (!code.includes(varName))
43
43
  return;
44
- const filePathVite = getFilePathVite(id, config.root);
45
- const errMsgAddendum = isBuild
46
- ? ''
47
- : ' (vike will prevent your app from building for production)';
48
- const errMsg = `${varName} used in ${filePathVite} and therefore included in client-side bundle which can be be a security leak${errMsgAddendum}, remove ${varName} or rename ${key} to ${keyPublic}, see https://vike.dev/env`;
44
+ const filePathToShowToUser = getFilePathRelativeToUserRootDir(id, config.root);
45
+ const errMsgAddendum = isBuild ? '' : ' (vike will prevent your app from building for production)';
46
+ const errMsg = `${varName} used in ${filePathToShowToUser} and therefore included in client-side bundle which can be be a security leak${errMsgAddendum}, remove ${varName} or rename ${key} to ${keyPublic}, see https://vike.dev/env`;
49
47
  if (isBuild) {
50
48
  assertUsage(false, errMsg);
51
49
  }