vike 0.4.142-commit-acfc159 → 0.4.143-commit-f03b42d

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 (147) 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 +1 -6
  4. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +2 -2
  5. package/dist/cjs/node/plugin/plugins/importUserCode/generateEagerImport.js +19 -8
  6. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +2 -2
  7. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +103 -95
  8. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +37 -27
  9. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +50 -80
  10. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/helpers.js +12 -3
  11. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.js +25 -25
  12. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.js +19 -16
  13. package/dist/cjs/node/plugin/shared/{getConfigValueSource.js → getConfigValueSourcesRelevant.js} +1 -12
  14. package/dist/cjs/node/plugin/shared/loggerNotProd.js +1 -1
  15. package/dist/cjs/node/plugin/utils.js +1 -2
  16. package/dist/cjs/node/prerender/runPrerender.js +13 -16
  17. package/dist/cjs/node/runtime/html/stream.js +4 -1
  18. package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -2
  19. package/dist/cjs/node/runtime/renderPage/loadPageFilesServerSide.js +2 -2
  20. package/dist/cjs/node/shared/virtual-files/virtualFilePageConfigValuesAll.js +1 -1
  21. package/dist/cjs/shared/error-page.js +1 -1
  22. package/dist/cjs/shared/getPageFiles/assertPageConfigs.js +13 -13
  23. package/dist/cjs/shared/getPageFiles/getExports.js +3 -3
  24. package/dist/cjs/shared/getPageFiles/parseGlobResults.js +9 -43
  25. package/dist/cjs/shared/getPageFiles/parsePageConfigsSerialized.js +62 -0
  26. package/dist/cjs/shared/page-configs/assertExports.js +60 -0
  27. package/dist/cjs/shared/page-configs/loadConfigValues.js +18 -0
  28. package/dist/cjs/shared/page-configs/parseConfigValuesImported.js +50 -0
  29. package/dist/cjs/shared/page-configs/utils.js +1 -1
  30. package/dist/cjs/shared/route/loadPageRoutes.js +11 -13
  31. package/dist/cjs/shared/route/resolvePrecedence.js +32 -11
  32. package/dist/cjs/shared/route/resolveRedirects.js +1 -1
  33. package/dist/cjs/shared/route/resolveRouteFunction.js +1 -0
  34. package/dist/cjs/shared/route/resolveRouteString.js +99 -43
  35. package/dist/cjs/shared/utils.js +1 -1
  36. package/dist/cjs/types/defineConfig.js +7 -0
  37. package/dist/cjs/types/index.js +3 -0
  38. package/dist/cjs/utils/objectAssign.js +3 -1
  39. package/dist/cjs/utils/projectInfo.js +1 -1
  40. package/dist/cjs/utils/{resolve.js → requireResolve.js} +3 -3
  41. package/dist/esm/__internal/index.d.ts +3 -3
  42. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +2 -2
  43. package/dist/esm/client/client-routing-runtime/getPageContext.d.ts +2 -2
  44. package/dist/esm/client/client-routing-runtime/getPageId.d.ts +2 -2
  45. package/dist/esm/client/client-routing-runtime/prefetch.js +3 -1
  46. package/dist/esm/client/client-routing-runtime/useClientRouter.js +2 -2
  47. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
  48. package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +2 -2
  49. package/dist/esm/client/shared/loadPageFilesClientSide.d.ts +2 -2
  50. package/dist/esm/client/shared/loadPageFilesClientSide.js +2 -2
  51. package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
  52. package/dist/esm/node/plugin/index.js +3 -2
  53. package/dist/esm/node/plugin/plugins/buildConfig.js +4 -5
  54. package/dist/esm/node/plugin/plugins/commonConfig.js +1 -6
  55. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +1 -1
  56. package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.d.ts +13 -2
  57. package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.js +19 -8
  58. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +2 -2
  59. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getFilePathToShowToUser.d.ts +8 -0
  60. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +2 -2
  61. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +104 -96
  62. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.d.ts +5 -0
  63. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +35 -25
  64. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.d.ts +3 -0
  65. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +49 -79
  66. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/helpers.js +10 -1
  67. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.d.ts +18 -6
  68. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.js +25 -25
  69. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.d.ts +2 -2
  70. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.js +19 -16
  71. package/dist/esm/node/plugin/shared/{getConfigValueSource.d.ts → getConfigValueSourcesRelevant.d.ts} +0 -2
  72. package/dist/esm/node/plugin/shared/{getConfigValueSource.js → getConfigValueSourcesRelevant.js} +0 -11
  73. package/dist/esm/node/plugin/shared/loggerNotProd.js +2 -2
  74. package/dist/esm/node/plugin/utils.d.ts +1 -2
  75. package/dist/esm/node/plugin/utils.js +1 -2
  76. package/dist/esm/node/prerender/runPrerender.js +13 -16
  77. package/dist/esm/node/runtime/html/injectAssets.d.ts +2 -2
  78. package/dist/esm/node/runtime/html/serializePageContextClientSide.d.ts +2 -2
  79. package/dist/esm/node/runtime/html/stream.js +4 -1
  80. package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
  81. package/dist/esm/node/runtime/renderPage/analyzePage.js +2 -2
  82. package/dist/esm/node/runtime/renderPage/createHttpResponseObject.d.ts +2 -2
  83. package/dist/esm/node/runtime/renderPage/debugPageFiles.d.ts +2 -2
  84. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +2 -2
  85. package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
  86. package/dist/esm/node/runtime/renderPage/loadPageFilesServerSide.d.ts +2 -2
  87. package/dist/esm/node/runtime/renderPage/loadPageFilesServerSide.js +2 -2
  88. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
  89. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +13 -13
  90. package/dist/esm/node/shared/getClientEntryFilePath.d.ts +2 -2
  91. package/dist/esm/node/shared/virtual-files/virtualFilePageConfigValuesAll.js +1 -1
  92. package/dist/esm/shared/addIs404ToPageProps.d.ts +2 -2
  93. package/dist/esm/shared/error-page.d.ts +3 -3
  94. package/dist/esm/shared/error-page.js +1 -1
  95. package/dist/esm/shared/getPageFiles/analyzeClientSide.d.ts +2 -2
  96. package/dist/esm/shared/getPageFiles/assertPageConfigs.d.ts +5 -5
  97. package/dist/esm/shared/getPageFiles/assertPageConfigs.js +12 -12
  98. package/dist/esm/shared/getPageFiles/getExports.d.ts +2 -2
  99. package/dist/esm/shared/getPageFiles/getExports.js +1 -1
  100. package/dist/esm/shared/getPageFiles/parseGlobResults.d.ts +3 -3
  101. package/dist/esm/shared/getPageFiles/parseGlobResults.js +9 -43
  102. package/dist/esm/shared/getPageFiles/parsePageConfigsSerialized.d.ts +6 -0
  103. package/dist/esm/shared/getPageFiles/parsePageConfigsSerialized.js +59 -0
  104. package/dist/esm/shared/getPageFiles/setPageFiles.d.ts +3 -3
  105. package/dist/esm/shared/page-configs/Config.d.ts +200 -11
  106. package/dist/esm/shared/page-configs/PageConfig.d.ts +59 -39
  107. package/dist/esm/shared/page-configs/assertExports.d.ts +6 -0
  108. package/dist/esm/shared/page-configs/assertExports.js +54 -0
  109. package/dist/esm/shared/page-configs/findPageConfig.d.ts +2 -2
  110. package/dist/esm/shared/page-configs/loadConfigValues.d.ts +3 -0
  111. package/dist/esm/shared/page-configs/loadConfigValues.js +15 -0
  112. package/dist/esm/shared/page-configs/parseConfigValuesImported.d.ts +3 -0
  113. package/dist/esm/shared/page-configs/parseConfigValuesImported.js +44 -0
  114. package/dist/esm/shared/page-configs/utils.d.ts +3 -2
  115. package/dist/esm/shared/page-configs/utils.js +1 -1
  116. package/dist/esm/shared/route/executeGuardHook.d.ts +2 -2
  117. package/dist/esm/shared/route/index.d.ts +3 -3
  118. package/dist/esm/shared/route/loadPageRoutes.d.ts +2 -2
  119. package/dist/esm/shared/route/loadPageRoutes.js +11 -13
  120. package/dist/esm/shared/route/resolvePrecedence.js +33 -12
  121. package/dist/esm/shared/route/resolveRedirects.js +1 -1
  122. package/dist/esm/shared/route/resolveRouteFunction.js +1 -0
  123. package/dist/esm/shared/route/resolveRouteString.d.ts +21 -4
  124. package/dist/esm/shared/route/resolveRouteString.js +98 -42
  125. package/dist/esm/shared/types.d.ts +7 -6
  126. package/dist/esm/shared/utils.d.ts +1 -1
  127. package/dist/esm/shared/utils.js +1 -1
  128. package/dist/esm/types/defineConfig.d.ts +3 -0
  129. package/dist/esm/types/defineConfig.js +4 -0
  130. package/dist/esm/types/index.d.ts +2 -1
  131. package/dist/esm/types/index.js +1 -1
  132. package/dist/esm/utils/objectAssign.js +3 -1
  133. package/dist/esm/utils/projectInfo.d.ts +1 -1
  134. package/dist/esm/utils/projectInfo.js +1 -1
  135. package/dist/esm/utils/requireResolve.d.ts +2 -0
  136. package/dist/esm/utils/{resolve.js → requireResolve.js} +2 -2
  137. package/package.json +3 -3
  138. package/dist/cjs/shared/page-configs/loadPageCode.js +0 -63
  139. package/dist/cjs/utils/assertDefaultExport.js +0 -53
  140. package/dist/esm/shared/page-configs/loadPageCode.d.ts +0 -3
  141. package/dist/esm/shared/page-configs/loadPageCode.js +0 -57
  142. package/dist/esm/utils/assertDefaultExport.d.ts +0 -8
  143. package/dist/esm/utils/assertDefaultExport.js +0 -47
  144. package/dist/esm/utils/resolve.d.ts +0 -2
  145. /package/dist/cjs/shared/getPageFiles/{assertExports.js → assert_exports_old_design.js} +0 -0
  146. /package/dist/esm/shared/getPageFiles/{assertExports.d.ts → assert_exports_old_design.d.ts} +0 -0
  147. /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; } });
@@ -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;
@@ -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-commit-acfc159';
5
+ const PROJECT_VERSION = '0.4.143-commit-f03b42d';
6
6
  const projectInfo = {
7
7
  projectName: 'Vike',
8
8
  projectVersion: PROJECT_VERSION,
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolve = void 0;
3
+ exports.requireResolve = void 0;
4
4
  const assert_js_1 = require("./assert.js");
5
5
  const assertIsNotBrowser_js_1 = require("./assertIsNotBrowser.js");
6
6
  const assertIsNotProductionRuntime_js_1 = require("./assertIsNotProductionRuntime.js");
@@ -12,7 +12,7 @@ const importMetaUrl = `file://${__filename}`;
12
12
  const require_ = (0, module_1.createRequire)(importMetaUrl);
13
13
  (0, assertIsNotBrowser_js_1.assertIsNotBrowser)();
14
14
  (0, assertIsNotProductionRuntime_js_1.assertIsNotProductionRuntime)();
15
- function resolve(importPath, cwd) {
15
+ function requireResolve(importPath, cwd) {
16
16
  (0, filesystemPathHandling_js_1.assertPosixPath)(cwd);
17
17
  const clean = addFileExtensionsToRequireResolve();
18
18
  importPath = removeFileExtention(importPath);
@@ -31,7 +31,7 @@ function resolve(importPath, cwd) {
31
31
  }
32
32
  return importedFile;
33
33
  }
34
- exports.resolve = resolve;
34
+ exports.requireResolve = requireResolve;
35
35
  function removeFileExtention(importPath) {
36
36
  for (const ext of isScriptFile_js_1.scriptFileExtensionList) {
37
37
  const suffix = `.${ext}`;
@@ -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);
@@ -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,5 +1,16 @@
1
1
  export { generateEagerImport };
2
- declare function generateEagerImport(importPath: string, varCounter?: number, importName?: string): {
3
- importVar: string;
2
+ /**
3
+ * Naming:
4
+ * `import { someExport as someImport } from './some-file'`
5
+ * <=>
6
+ * `{`
7
+ * `importPath: './some-file',`
8
+ * `exportName: 'someExport',`
9
+ * `importName: 'someImport',`
10
+ * `}`
11
+ * We discard the information that the import variable is called `someImport` because we don't need it.
12
+ */
13
+ declare function generateEagerImport(importPath: string, varCounter?: number, exportName?: string): {
14
+ importName: string;
4
15
  importStatement: string;
5
16
  };
@@ -1,18 +1,29 @@
1
1
  export { generateEagerImport };
2
2
  let varCounterGlobal = 0;
3
- function generateEagerImport(importPath, varCounter, importName) {
3
+ /**
4
+ * Naming:
5
+ * `import { someExport as someImport } from './some-file'`
6
+ * <=>
7
+ * `{`
8
+ * `importPath: './some-file',`
9
+ * `exportName: 'someExport',`
10
+ * `importName: 'someImport',`
11
+ * `}`
12
+ * We discard the information that the import variable is called `someImport` because we don't need it.
13
+ */
14
+ function generateEagerImport(importPath, varCounter, exportName) {
4
15
  if (varCounter === undefined)
5
16
  varCounter = varCounterGlobal++;
6
- const importVar = `import_${varCounter}`;
17
+ const importName = `import_${varCounter}`;
7
18
  const importLiteral = (() => {
8
- if (!importName || importName === '*') {
9
- return `* as ${importVar}`;
19
+ if (!exportName || exportName === '*') {
20
+ return `* as ${importName}`;
10
21
  }
11
- if (importName === 'default') {
12
- return importVar;
22
+ if (exportName === 'default') {
23
+ return importName;
13
24
  }
14
- return `{ ${importName} as ${importVar} }`;
25
+ return `{ ${exportName} as ${importName} }`;
15
26
  })();
16
27
  const importStatement = `import ${importLiteral} from '${importPath}';`;
17
- return { importVar, importStatement };
28
+ return { importName, importStatement };
18
29
  }
@@ -121,9 +121,9 @@ function addImport(importPath, fileType, exportNames, isBuild) {
121
121
  return `() => import('${importPath}${query}')`;
122
122
  }
123
123
  else {
124
- const { importVar, importStatement } = generateEagerImport(`${importPath}${query}`);
124
+ const { importName, importStatement } = generateEagerImport(`${importPath}${query}`);
125
125
  fileContent += importStatement + '\n';
126
- return importVar;
126
+ return importName;
127
127
  }
128
128
  })();
129
129
  fileContent += `${mapVar}['${importPath}'] = ${value};\n`;
@@ -1,7 +1,15 @@
1
1
  export { getFilePathToShowToUser };
2
2
  export type { FilePath };
3
3
  type FilePath = {
4
+ /** The file's path relative to the filesystem root.
5
+ *
6
+ * Example: `/home/rom/code/my-app/pages/some-page/Page.js`
7
+ */
4
8
  filePathAbsolute: string;
9
+ /** The file's path relative to the Vite's root (i.e. the user's project root directory).
10
+ *
11
+ * Example: `/pages/some-page/Page.js`
12
+ */
5
13
  filePathRelativeToUserRootDir: null | string;
6
14
  };
7
15
  declare function getFilePathToShowToUser(filePath: FilePath): string;
@@ -2,11 +2,11 @@ export { getVikeConfig };
2
2
  export { reloadVikeConfig };
3
3
  export { vikeConfigDependencies };
4
4
  export { isVikeConfigFile };
5
- import type { PageConfigGlobalData, PageConfigBuildTime } from '../../../../../shared/page-configs/PageConfig.js';
5
+ import type { PageConfigGlobalBuildTime, PageConfigBuildTime } from '../../../../../shared/page-configs/PageConfig.js';
6
6
  import type { ExtensionResolved } from '../../../../../shared/ConfigVike.js';
7
7
  type VikeConfig = {
8
8
  pageConfigs: PageConfigBuildTime[];
9
- pageConfigGlobal: PageConfigGlobalData;
9
+ pageConfigGlobal: PageConfigGlobalBuildTime;
10
10
  globalVikeConfig: Record<string, unknown>;
11
11
  };
12
12
  declare const vikeConfigDependencies: Set<string>;