vike 0.4.171 → 0.4.172-commit-ea2b76c

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 (201) hide show
  1. package/dist/cjs/node/plugin/plugins/buildConfig.js +3 -4
  2. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +18 -15
  3. package/dist/cjs/node/plugin/plugins/devConfig/index.js +2 -1
  4. package/dist/cjs/node/plugin/plugins/envVars.js +2 -1
  5. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +1 -1
  6. package/dist/cjs/node/plugin/plugins/importUserCode/{generateEagerImport.js → addImportStatement.js} +8 -10
  7. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +0 -1
  8. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -3
  9. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +17 -6
  10. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
  11. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +31 -75
  12. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +4 -43
  13. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +9 -50
  14. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +6 -0
  15. package/dist/cjs/node/plugin/shared/addSsrMiddleware.js +17 -2
  16. package/dist/cjs/node/prerender/runPrerender.js +35 -15
  17. package/dist/cjs/node/prerender/utils.js +1 -0
  18. package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +3 -3
  19. package/dist/cjs/node/runtime/html/injectAssets/getViteDevScripts.js +2 -1
  20. package/dist/cjs/node/runtime/html/injectAssets/mergeScriptTags.js +2 -8
  21. package/dist/cjs/node/runtime/html/renderHtml.js +19 -20
  22. package/dist/cjs/node/runtime/html/stream.js +9 -9
  23. package/dist/cjs/node/runtime/renderPage/analyzePage.js +9 -7
  24. package/dist/cjs/node/runtime/renderPage/createHttpResponseObject/getCacheControl.js +1 -1
  25. package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
  26. package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -8
  27. package/dist/cjs/node/runtime/renderPage/getHttpResponseBody.js +2 -2
  28. package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +4 -5
  29. package/dist/cjs/node/runtime/renderPage/logErrorHint.js +91 -282
  30. package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -2
  31. package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +30 -10
  32. package/dist/cjs/node/runtime/renderPage.js +24 -17
  33. package/dist/cjs/node/runtime/utils.js +2 -0
  34. package/dist/cjs/node/shared/assertV1Design.js +3 -4
  35. package/dist/cjs/shared/getPageContext.js +5 -0
  36. package/dist/cjs/shared/{addUrlComputedProps.js → getPageContextUrlComputed.js} +52 -42
  37. package/dist/cjs/shared/getPageFiles/analyzeClientSide.js +2 -2
  38. package/dist/cjs/shared/getPageFiles/getExports.js +49 -1
  39. package/dist/cjs/shared/getPageFiles/parseGlobResults.js +15 -8
  40. package/dist/cjs/shared/hooks/executeHook.js +22 -3
  41. package/dist/cjs/shared/hooks/getHook.js +2 -2
  42. package/dist/cjs/shared/page-configs/getConfigValue.js +14 -17
  43. package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +70 -0
  44. package/dist/cjs/shared/page-configs/loadConfigValues.js +3 -12
  45. package/dist/cjs/shared/page-configs/serialize/assertPageConfigsSerialized.js +0 -18
  46. package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +110 -16
  47. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +198 -0
  48. package/dist/cjs/shared/route/executeGuardHook.js +1 -1
  49. package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +1 -1
  50. package/dist/cjs/shared/route/index.js +2 -2
  51. package/dist/cjs/shared/route/loadPageRoutes.js +2 -2
  52. package/dist/cjs/shared/route/resolveRouteFunction.js +2 -2
  53. package/dist/cjs/shared/sortPageContext.js +4 -8
  54. package/dist/cjs/shared/utils.js +2 -0
  55. package/dist/cjs/utils/assert.js +1 -1
  56. package/dist/cjs/utils/assertNodeVersion.js +1 -1
  57. package/dist/cjs/utils/changeEnumerable.js +9 -0
  58. package/dist/cjs/utils/escapeHtml.js +14 -0
  59. package/dist/cjs/utils/getPropAccessNotation.js +1 -4
  60. package/dist/cjs/utils/hasProp.js +5 -7
  61. package/dist/cjs/utils/normalizeHeaders.js +13 -0
  62. package/dist/cjs/utils/objectAssign.js +1 -1
  63. package/dist/cjs/utils/objectDefineProperty.js +8 -0
  64. package/dist/cjs/utils/objectKeys.js +8 -4
  65. package/dist/cjs/utils/projectInfo.js +1 -1
  66. package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +6 -4
  67. package/dist/esm/client/client-routing-runtime/createPageContext.js +4 -3
  68. package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +16 -12
  69. package/dist/esm/client/client-routing-runtime/installClientRouter.js +18 -10
  70. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +3 -3
  71. package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +4 -4
  72. package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -0
  73. package/dist/esm/client/server-routing-runtime/utils.js +1 -0
  74. package/dist/esm/client/shared/executeOnRenderClientHook.js +1 -1
  75. package/dist/esm/client/shared/getPageContextProxyForUser.d.ts +3 -2
  76. package/dist/esm/client/shared/getPageContextProxyForUser.js +35 -48
  77. package/dist/esm/client/shared/loadUserFilesClientSide.js +4 -4
  78. package/dist/esm/node/plugin/plugins/buildConfig.js +3 -4
  79. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +18 -15
  80. package/dist/esm/node/plugin/plugins/devConfig/index.js +2 -1
  81. package/dist/esm/node/plugin/plugins/envVars.js +2 -1
  82. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +1 -1
  83. package/dist/esm/node/plugin/plugins/importUserCode/addImportStatement.d.ts +14 -0
  84. package/dist/esm/node/plugin/plugins/importUserCode/{generateEagerImport.js → addImportStatement.js} +7 -9
  85. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +0 -1
  86. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +2 -1
  87. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -3
  88. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +18 -7
  89. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
  90. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +31 -75
  91. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +4 -43
  92. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +9 -50
  93. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.d.ts +1 -0
  94. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +6 -0
  95. package/dist/esm/node/plugin/shared/addSsrMiddleware.js +14 -2
  96. package/dist/esm/node/prerender/runPrerender.js +37 -17
  97. package/dist/esm/node/prerender/utils.d.ts +1 -0
  98. package/dist/esm/node/prerender/utils.js +1 -0
  99. package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +3 -3
  100. package/dist/esm/node/runtime/html/injectAssets/getViteDevScripts.js +3 -2
  101. package/dist/esm/node/runtime/html/injectAssets/mergeScriptTags.d.ts +1 -1
  102. package/dist/esm/node/runtime/html/injectAssets/mergeScriptTags.js +2 -8
  103. package/dist/esm/node/runtime/html/renderHtml.js +19 -20
  104. package/dist/esm/node/runtime/html/stream.d.ts +1 -1
  105. package/dist/esm/node/runtime/html/stream.js +9 -9
  106. package/dist/esm/node/runtime/renderPage/analyzePage.js +9 -7
  107. package/dist/esm/node/runtime/renderPage/createHttpResponseObject/getCacheControl.js +2 -2
  108. package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
  109. package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +8 -8
  110. package/dist/esm/node/runtime/renderPage/getHttpResponseBody.js +2 -2
  111. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +1 -6
  112. package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +4 -5
  113. package/dist/esm/node/runtime/renderPage/logErrorHint.d.ts +2 -6
  114. package/dist/esm/node/runtime/renderPage/logErrorHint.js +92 -283
  115. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
  116. package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +2 -2
  117. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +65 -39
  118. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +31 -11
  119. package/dist/esm/node/runtime/renderPage.js +24 -17
  120. package/dist/esm/node/runtime/utils.d.ts +2 -0
  121. package/dist/esm/node/runtime/utils.js +2 -0
  122. package/dist/esm/node/shared/assertV1Design.d.ts +2 -2
  123. package/dist/esm/node/shared/assertV1Design.js +3 -4
  124. package/dist/esm/shared/VikeNamespace.d.ts +9 -0
  125. package/dist/esm/shared/getPageContext.d.ts +1 -0
  126. package/dist/esm/shared/getPageContext.js +1 -0
  127. package/dist/esm/shared/{addUrlComputedProps.d.ts → getPageContextUrlComputed.d.ts} +23 -21
  128. package/dist/esm/shared/{addUrlComputedProps.js → getPageContextUrlComputed.js} +52 -42
  129. package/dist/esm/shared/getPageFiles/analyzeClientSide.js +3 -3
  130. package/dist/esm/shared/getPageFiles/getExports.d.ts +36 -0
  131. package/dist/esm/shared/getPageFiles/getExports.js +50 -2
  132. package/dist/esm/shared/getPageFiles/parseGlobResults.js +14 -7
  133. package/dist/esm/shared/hooks/executeHook.d.ts +10 -1
  134. package/dist/esm/shared/hooks/executeHook.js +21 -2
  135. package/dist/esm/shared/hooks/getHook.d.ts +2 -2
  136. package/dist/esm/shared/hooks/getHook.js +3 -3
  137. package/dist/esm/shared/page-configs/Config/PageContextConfig.d.ts +2 -2
  138. package/dist/esm/shared/page-configs/PageConfig.d.ts +14 -8
  139. package/dist/esm/shared/page-configs/getConfigValue.d.ts +12 -12
  140. package/dist/esm/shared/page-configs/getConfigValue.js +13 -16
  141. package/dist/esm/shared/page-configs/getConfigValueBuildTime.d.ts +9 -0
  142. package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +67 -0
  143. package/dist/esm/shared/page-configs/loadConfigValues.js +3 -12
  144. package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.d.ts +17 -21
  145. package/dist/esm/shared/page-configs/serialize/assertPageConfigsSerialized.d.ts +1 -5
  146. package/dist/esm/shared/page-configs/serialize/assertPageConfigsSerialized.js +1 -16
  147. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.d.ts +4 -1
  148. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +109 -15
  149. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +5 -0
  150. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +192 -0
  151. package/dist/esm/shared/route/executeGuardHook.js +1 -1
  152. package/dist/esm/shared/route/executeOnBeforeRouteHook.js +1 -1
  153. package/dist/esm/shared/route/index.d.ts +3 -3
  154. package/dist/esm/shared/route/index.js +2 -2
  155. package/dist/esm/shared/route/loadPageRoutes.js +3 -3
  156. package/dist/esm/shared/route/resolveRouteFunction.d.ts +2 -2
  157. package/dist/esm/shared/route/resolveRouteFunction.js +2 -2
  158. package/dist/esm/shared/sortPageContext.js +4 -8
  159. package/dist/esm/shared/types.d.ts +32 -6
  160. package/dist/esm/shared/utils.d.ts +2 -0
  161. package/dist/esm/shared/utils.js +2 -0
  162. package/dist/esm/types/index.d.ts +1 -1
  163. package/dist/esm/utils/assert.js +1 -1
  164. package/dist/esm/utils/assertNodeVersion.js +1 -1
  165. package/dist/esm/utils/changeEnumerable.d.ts +2 -0
  166. package/dist/esm/utils/changeEnumerable.js +5 -0
  167. package/dist/esm/utils/escapeHtml.d.ts +1 -0
  168. package/dist/esm/utils/escapeHtml.js +10 -0
  169. package/dist/esm/utils/getPropAccessNotation.d.ts +1 -2
  170. package/dist/esm/utils/getPropAccessNotation.js +2 -6
  171. package/dist/esm/utils/hasProp.d.ts +4 -13
  172. package/dist/esm/utils/hasProp.js +5 -7
  173. package/dist/esm/utils/normalizeHeaders.d.ts +1 -0
  174. package/dist/esm/utils/normalizeHeaders.js +9 -0
  175. package/dist/esm/utils/objectAssign.js +1 -1
  176. package/dist/esm/utils/objectDefineProperty.d.ts +4 -0
  177. package/dist/esm/utils/objectDefineProperty.js +4 -0
  178. package/dist/esm/utils/objectKeys.d.ts +1 -3
  179. package/dist/esm/utils/objectKeys.js +8 -4
  180. package/dist/esm/utils/projectInfo.d.ts +2 -2
  181. package/dist/esm/utils/projectInfo.js +1 -1
  182. package/package.json +21 -12
  183. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +0 -76
  184. package/dist/cjs/node/plugin/shared/getConfigValueSourcesNotOverriden.js +0 -14
  185. package/dist/cjs/node/shared/getClientEntry.js +0 -12
  186. package/dist/cjs/shared/page-configs/serialize/parseConfigValuesImported.js +0 -85
  187. package/dist/cjs/shared/page-configs/serialize/parseConfigValuesSerialized.js +0 -24
  188. package/dist/cjs/shared/page-configs/serialize/serializeConfigValue.js +0 -50
  189. package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.d.ts +0 -16
  190. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.d.ts +0 -5
  191. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getConfigValuesSerialized.js +0 -70
  192. package/dist/esm/node/plugin/shared/getConfigValueSourcesNotOverriden.d.ts +0 -5
  193. package/dist/esm/node/plugin/shared/getConfigValueSourcesNotOverriden.js +0 -11
  194. package/dist/esm/node/shared/getClientEntry.d.ts +0 -3
  195. package/dist/esm/node/shared/getClientEntry.js +0 -9
  196. package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.d.ts +0 -4
  197. package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.js +0 -82
  198. package/dist/esm/shared/page-configs/serialize/parseConfigValuesSerialized.d.ts +0 -4
  199. package/dist/esm/shared/page-configs/serialize/parseConfigValuesSerialized.js +0 -21
  200. package/dist/esm/shared/page-configs/serialize/serializeConfigValue.d.ts +0 -8
  201. package/dist/esm/shared/page-configs/serialize/serializeConfigValue.js +0 -47
@@ -1,49 +1,89 @@
1
1
  export { logErrorHint };
2
- // For ./logErrorHint/*.spec.ts
3
- export { isCjsEsmError };
4
- export { isKnownError };
5
- export { getHint };
6
- import { assert, formatHintLog, isArray, isNotNullish, isObject, unique } from '../utils.js';
2
+ // For ./logErrorHint/getErrorHint.spec.ts
3
+ export { getErrorHint };
4
+ import { assert, formatHintLog, isObject } from '../utils.js';
7
5
  import pc from '@brillout/picocolors';
8
- const knownErrors = [
6
+ const hintDefault = 'The error could be a CJS/ESM issue, see https://vike.dev/broken-npm-package';
7
+ const hintLinkPrefix = 'To fix this error, see ';
8
+ const errorsMisc = [
9
9
  {
10
10
  errMsg: 'jsxDEV is not a function',
11
- link: 'https://github.com/vikejs/vike/issues/1469#issuecomment-1919518096'
12
- },
13
- {
14
- errMsg: 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components)',
15
- link: 'https://vike.dev/broken-npm-package#react-invalid-component'
11
+ link: 'https://github.com/vikejs/vike/issues/1469#issuecomment-1919518096',
12
+ shouldMentionNodeModules: false
16
13
  },
17
14
  {
18
15
  // ```
19
16
  // Error [RollupError]: Could not resolve "../dist/client/assets.json" from "renderer/+onRenderHtml.tsx"
20
17
  // ```
21
18
  errMsg: 'assets.json',
22
- link: 'https://vike.dev/getGlobalContext'
19
+ link: 'https://vike.dev/getGlobalContext',
20
+ shouldMentionNodeModules: false
21
+ }
22
+ ];
23
+ const errorsReact = [
24
+ {
25
+ errMsg: 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components)',
26
+ link: 'https://vike.dev/broken-npm-package#react-invalid-component',
27
+ // The stack trace can be user-land while the import is coming from node_modules
28
+ shouldMentionNodeModules: false
23
29
  },
24
30
  {
31
+ // React's "Invalid hook call.", see https://github.com/vikejs/vike/discussions/1637#discussioncomment-9424712
32
+ errMsg: "Cannot read properties of null (reading 'useContext')"
33
+ }
34
+ ];
35
+ const errorsCjsEsm_withPreciseLink = [
36
+ {
37
+ // `SyntaxError: Named export '${exportName}' not found. The requested module '${packageName}' is a CommonJS module, which may not support all module.exports as named exports.`
25
38
  errMsg: /Named export.*not found/i,
26
- link: 'https://vike.dev/broken-npm-package#named-export-not-found'
39
+ link: 'https://vike.dev/broken-npm-package#named-export-not-found',
40
+ // It seems that this always points to an npm package import.
41
+ shouldMentionNodeModules: false
27
42
  }
28
43
  ];
44
+ const errorsCjsEsm = [
45
+ { errMsg: 'ERR_UNSUPPORTED_DIR_IMPORT' },
46
+ { errMsg: 'ERR_REQUIRE_ESM' },
47
+ { errMsg: 'Must use import' },
48
+ { errMsg: /Cannot find \S+ '(\S+)' imported from (\S+)/ },
49
+ { errMsg: 'ERR_UNKNOWN_FILE_EXTENSION' },
50
+ { errMsg: /Unknown file extension "\S+" for (\S+)/ },
51
+ // `SyntaxError: Cannot use import statement outside a module`.
52
+ {
53
+ errMsg: 'Cannot use import statement',
54
+ // Since user code is always ESM, this error must always originate from an npm package.
55
+ shouldMentionNodeModules: false
56
+ },
57
+ { errMsg: 'is not exported' },
58
+ { errMsg: 'Cannot read properties of undefined' },
59
+ { errMsg: '.default is not' },
60
+ // Using CJS inside ESM modules.
61
+ { errMsg: 'require is not a function' },
62
+ { errMsg: 'exports is not defined' },
63
+ { errMsg: 'module is not defined' },
64
+ { errMsg: 'window is not defined' },
65
+ { errMsg: 'not defined in ES' },
66
+ { errMsg: "Unexpected token 'export'" }
67
+ ];
29
68
  function logErrorHint(error) {
30
69
  /* Collect errors for ./logErrorHint.spec.ts
31
70
  collectError(error)
32
71
  //*/
33
- const hint = getHint(error);
72
+ const hint = getErrorHint(error);
34
73
  if (hint)
35
74
  logHint(hint);
36
75
  }
37
- function getHint(error) {
76
+ function getErrorHint(error) {
38
77
  {
39
- const link = isKnownError(error);
40
- if (link)
41
- return `To fix this error, see ${link}`;
42
- }
43
- const res = isCjsEsmError(error);
44
- if (res) {
45
- const hint = 'The error seems to be a CJS/ESM issue, see https://vike.dev/broken-npm-package';
46
- return hint;
78
+ const knownErr = isKnownError(error);
79
+ if (knownErr) {
80
+ if (knownErr.link) {
81
+ return hintLinkPrefix + knownErr.link;
82
+ }
83
+ else {
84
+ return hintDefault;
85
+ }
86
+ }
47
87
  }
48
88
  return null;
49
89
  }
@@ -54,266 +94,42 @@ function logHint(hint) {
54
94
  }
55
95
  function isKnownError(error) {
56
96
  const anywhere = getAnywhere(error);
57
- const knownErr = knownErrors.find((knownErorr) => {
58
- return includes(anywhere, knownErorr.errMsg);
97
+ const knownErr = [
98
+ //
99
+ ...errorsMisc,
100
+ ...errorsReact,
101
+ ...errorsCjsEsm_withPreciseLink,
102
+ ...errorsCjsEsm
103
+ ].find((knownErorr) => {
104
+ if (!includesLowercase(anywhere, knownErorr.errMsg))
105
+ return false;
106
+ if (knownErorr.shouldMentionNodeModules !== false && !includesLowercase(anywhere, 'node_modules'))
107
+ return false;
108
+ return true;
59
109
  });
60
110
  if (!knownErr)
61
111
  return false;
62
- return knownErr.link;
63
- }
64
- // `false` -> noop
65
- // `true` -> generic message
66
- // `'some-npm-package'` -> add some-npm-package to `ssr.noExternal`
67
- function isCjsEsmError(error) {
68
- const res = check(error);
69
- if (res === true || res === false)
70
- return res;
71
- const packageNames = normalizeRes(res);
72
- if (packageNames === false)
73
- return packageNames;
74
- packageNames.forEach((packageName) => {
75
- assert(!['vite', 'vike'].includes(packageName));
76
- });
77
- // We don't use this anymore: we could return `true` instead. Shall we remove returning a list of npm packages?
78
- return packageNames;
79
- }
80
- function normalizeRes(res) {
81
- let packageNames = isArray(res) ? res : [res];
82
- packageNames = unique(packageNames.filter(isNotNullish).filter((packageName) => packageName !== '@brillout/import'));
83
- if (packageNames.length === 0)
84
- return false;
85
- return packageNames;
112
+ return knownErr;
86
113
  }
87
- function check(error) {
88
- const message = getErrMessage(error);
89
- const anywhere = getAnywhere(error);
90
- const packageName_stack1 = getPackageName_stack1(error);
91
- const packageName_stack2 = getPackageName_stack2(error);
92
- const isRelatedToNodeModules = !!packageName_stack1 || !!packageName_stack2 || includesNodeModules(message);
93
- /*
94
- const relatedNpmPackages = normalizeArray([
95
- packageName_stack1 || null,
96
- packageName_stack2 || null,
97
- (message && extractFromNodeModulesPath(message)) || null
98
- ])
99
- */
100
- // ERR_UNSUPPORTED_DIR_IMPORT
101
- {
102
- const packageName = parseNodeModulesPathMessage('ERR_UNSUPPORTED_DIR_IMPORT', anywhere);
103
- if (packageName)
104
- return packageName;
105
- }
106
- // ERR_UNKNOWN_FILE_EXTENSION
107
- {
108
- const packageName = parseUnkownFileExtensionMessage(anywhere);
109
- if (packageName)
110
- return packageName;
111
- }
112
- {
113
- const packageName = parseNodeModulesPathMessage('ERR_UNKNOWN_FILE_EXTENSION', anywhere);
114
- if (packageName)
115
- return packageName;
114
+ function includesLowercase(str, substr) {
115
+ if (substr instanceof RegExp) {
116
+ let { flags } = substr;
117
+ if (!flags.includes('i'))
118
+ flags += 'i';
119
+ const regex = new RegExp(substr.source, flags);
120
+ return regex.test(str);
116
121
  }
117
- {
118
- const packageName = parseNodeModulesPathMessage('is not exported', anywhere);
119
- if (packageName)
120
- return packageName;
121
- }
122
- // Using CJS inside ESM modules.
123
- if (includes(anywhere, 'require is not a function') ||
124
- includes(anywhere, 'exports is not defined') ||
125
- includes(anywhere, 'module is not defined') ||
126
- includes(anywhere, 'window is not defined') ||
127
- includes(anywhere, 'not defined in ES')) {
128
- if (packageName_stack1)
129
- return packageName_stack1;
130
- }
131
- if (includes(anywhere, "Unexpected token 'export'")) {
132
- if (packageName_stack2)
133
- return packageName_stack2;
134
- if (packageName_stack1)
135
- return packageName_stack1;
136
- }
137
- // ERR_REQUIRE_ESM
138
- if (includes(anywhere, 'ERR_REQUIRE_ESM')) {
139
- /* The issue is the importer, not the importee.
140
- if (relatedNpmPackages) return relatedNpmPackages
141
- */
142
- {
143
- if (packageName_stack1)
144
- return packageName_stack1;
145
- }
146
- if (isRelatedToNodeModules)
147
- return true;
122
+ if (typeof substr === 'string') {
123
+ return str.toLowerCase().includes(substr.toLowerCase());
148
124
  }
149
- /* The following two wrongfully match user land errors
150
- {
151
- const packageNames = parseNodeModulesPath('ERR_REQUIRE_ESM', anywhere)
152
- if (packageNames) return packageNames
153
- }
154
- {
155
- const packageNames = parseNodeModulesPath('Must use import', anywhere)
156
- if (packageNames) return packageNames
157
- }
158
- */
159
- // `SyntaxError: Named export '${exportName}' not found. The requested module '${packageName}' is a CommonJS module, which may not support all module.exports as named exports.`
160
- {
161
- const packageName = parseImportFrom(anywhere);
162
- if (packageName)
163
- return packageName;
164
- }
165
- if (includes(anywhere, 'Cannot read properties of undefined')) {
166
- if (isRelatedToNodeModules) {
167
- /* We return true because relatedNpmPackages points to the importer but the problematic npm package is the importee
168
- if (relatedNpmPackages) return relatedNpmPackages
169
- */
170
- return true;
171
- }
172
- }
173
- // ERR_MODULE_NOT_FOUND
174
- {
175
- const packageNames = parseCannotFindMessage(anywhere);
176
- if (packageNames)
177
- return packageNames;
178
- }
179
- if (
180
- // `SyntaxError: Cannot use import statement outside a module`.
181
- // Since user code is always ESM, this error must always originate from an npm package.
182
- includes(anywhere, 'Cannot use import statement') ||
183
- // `SyntaxError: Named export '${exportName}' not found. The requested module '${packageName}' is a CommonJS module, which may not support all module.exports as named exports.`
184
- // It seems that this always points to an npm package import.
185
- /Named export.*not found/i.test(anywhere)) {
186
- /* We return true even if fromNodeModules is false because the errors always relate to npm packages.
187
- if (fromNodeModules) return true
188
- */
189
- return true;
190
- }
191
- return false;
192
- }
193
- function parseCannotFindMessage(str) {
194
- const match = /Cannot find \S+ '(\S+)' imported from (\S+)/.exec(str);
195
- if (!match)
196
- return false;
197
- // const packageNameCannotFind = extractFromPath(match[1]!)
198
- const packageNameFrom = extractFromPath(match[2]);
199
- return normalizeArray([
200
- // packageNameCannotFind,
201
- packageNameFrom
202
- ]);
203
- }
204
- function parseUnkownFileExtensionMessage(str) {
205
- const match = /Unknown file extension "\S+" for (\S+)/.exec(str);
206
- if (!match)
207
- return false;
208
- const filePath = match[1];
209
- const packageName = extractFromPath(filePath);
210
- return packageName;
211
- }
212
- function parseImportFrom(str) {
213
- const match = /\bimport\b.*?\bfrom\b\s*?"(.+?)"/.exec(str);
214
- if (!match)
215
- return false;
216
- const importPath = match[1];
217
- const packageName = extractFromPath(importPath);
218
- return packageName;
219
- }
220
- function parseNodeModulesPathMessage(begin, str) {
221
- str = str.replaceAll('\\', '/');
222
- const regex = new RegExp(`${begin}.*(node_modules\\/\\S+)`);
223
- const match = regex.exec(str);
224
- if (!match)
225
- return false;
226
- const importPath = match[1];
227
- return extractFromNodeModulesPath(importPath);
228
- }
229
- function getPackageName_stack1(err) {
230
- const errStack = getErrStack(err);
231
- if (!errStack)
232
- return false;
233
- const firstLineStackTrace = errStack.split('\n').filter((line) => line.startsWith(' at '))[0];
234
- if (!firstLineStackTrace)
235
- return false;
236
- return extractFromNodeModulesPath(firstLineStackTrace);
237
- }
238
- /** See https://github.com/brillout/repro_node-syntax-error#nodejs-behavior */
239
- function getPackageName_stack2(err) {
240
- const errStack = getErrStack(err);
241
- if (!errStack)
242
- return false;
243
- const firstLine = errStack.trim().split('\n')[0];
244
- return extractFromNodeModulesPath(firstLine);
245
- }
246
- function extractFromPath(filePath) {
247
- assert(filePath);
248
- filePath = clean(filePath);
249
- filePath = filePath.replaceAll('\\', '/');
250
- let packageName;
251
- if (!filePath.includes('node_modules/')) {
252
- packageName = filePath;
253
- if (packageName.startsWith('/'))
254
- return null;
255
- if (packageName.startsWith('.'))
256
- return null;
257
- }
258
- else {
259
- packageName = filePath.split('node_modules/').pop();
260
- // This assert is fairly risk, we should eventually remove it
261
- assert(!packageName.startsWith('.'));
262
- // This assert is fairly risk, we should eventually remove it
263
- assert(!packageName.startsWith('/'));
264
- }
265
- if (!packageName)
266
- return null;
267
- packageName = packageName.split('/').slice(0, 2).join('/');
268
- if (!packageName.startsWith('@')) {
269
- packageName = packageName.split('/')[0];
270
- }
271
- packageName = clean(packageName);
272
- return packageName;
273
- }
274
- function clean(packageName) {
275
- const b = ['"', "'", '(', ')'];
276
- if (b.includes(packageName[0])) {
277
- packageName = packageName.slice(1);
278
- }
279
- if (b.includes(packageName[packageName.length - 1])) {
280
- packageName = packageName.slice(0, -1);
281
- }
282
- return packageName;
125
+ assert(false);
283
126
  }
284
- function extractFromNodeModulesPath(str) {
285
- if (!includesNodeModules(str))
286
- return false;
287
- const packageName = extractFromPath(str);
288
- assert(packageName);
289
- return packageName;
290
- }
291
- function includes(str1, str2) {
292
- if (!str1)
293
- return false;
294
- if (str2 instanceof RegExp) {
295
- return str2.test(str1.toLowerCase());
296
- }
297
- if (typeof str2 === 'string') {
298
- return str1.toLowerCase().includes(str2.toLowerCase());
299
- }
300
- return false;
301
- }
302
- function includesNodeModules(str) {
303
- if (!str)
304
- return false;
305
- str = str.replaceAll('\\', '/');
306
- if (!str.includes('node_modules/'))
307
- return false;
308
- if (str.includes('node_modules/vite/'))
309
- return false;
310
- return true;
311
- }
312
- function normalizeArray(arr) {
313
- const arrNormalized = arr.filter(isNotNullish);
314
- if (arrNormalized.length === 0)
315
- return null;
316
- return arrNormalized;
127
+ function getAnywhere(error) {
128
+ const code = getErrCode(error);
129
+ const message = getErrMessage(error);
130
+ const stack = getErrStack(error);
131
+ const anywhere = [code, message, stack].filter(Boolean).join('\n');
132
+ return anywhere;
317
133
  }
318
134
  function getErrMessage(err) {
319
135
  if (!isObject(err))
@@ -342,13 +158,6 @@ function getErrStack(err) {
342
158
  return null;
343
159
  return err.stack;
344
160
  }
345
- function getAnywhere(error) {
346
- const code = getErrCode(error);
347
- const message = getErrMessage(error);
348
- const stack = getErrStack(error);
349
- const anywhere = [code, message, stack].filter(Boolean).join('\n');
350
- return anywhere;
351
- }
352
161
  function collectError(err) {
353
162
  console.log([
354
163
  '{',
@@ -1,6 +1,6 @@
1
1
  export { preparePageContextForUserConsumptionServerSide };
2
2
  export type { PageContextForUserConsumptionServerSide };
3
- import { PageContextUrlComputedPropsInternal } from '../../../shared/addUrlComputedProps.js';
3
+ import { PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
4
4
  import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
5
5
  import type { PageContextExports } from '../../../shared/getPageFiles/getExports.js';
6
6
  import { PageContextBuiltInServerInternal } from '../../../shared/types.js';
@@ -9,7 +9,7 @@ type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal
9
9
  /** @deprecated */
10
10
  url: string;
11
11
  urlPathname: string;
12
- urlParsed: PageContextUrlComputedPropsInternal['urlParsed'];
12
+ urlParsed: PageContextUrlInternal['urlParsed'];
13
13
  routeParams: Record<string, string>;
14
14
  Page: unknown;
15
15
  _pageId: string;
@@ -1,10 +1,10 @@
1
1
  export { preparePageContextForUserConsumptionServerSide };
2
2
  import { assert, isPlainObject, isObject } from '../utils.js';
3
3
  import { sortPageContext } from '../../../shared/sortPageContext.js';
4
- import { assertPageContextUrlComputedProps } from '../../../shared/addUrlComputedProps.js';
4
+ import { assertPageContextUrl } from '../../../shared/getPageContextUrlComputed.js';
5
5
  import { addIs404ToPageProps } from '../../../shared/addIs404ToPageProps.js';
6
6
  function preparePageContextForUserConsumptionServerSide(pageContext) {
7
- assertPageContextUrlComputedProps(pageContext);
7
+ assertPageContextUrl(pageContext);
8
8
  assert(isPlainObject(pageContext.routeParams));
9
9
  assert('Page' in pageContext);
10
10
  assert(isObject(pageContext.pageExports));
@@ -7,7 +7,7 @@ export type { RenderContext };
7
7
  export type { PageContextAfterRender };
8
8
  export type { PageContextInitEnhanced };
9
9
  import { type PageFile } from '../../../shared/getPageFiles.js';
10
- import { type PageContextUrlComputedPropsInternal } from '../../../shared/addUrlComputedProps.js';
10
+ import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
11
11
  import { HttpResponse } from './createHttpResponseObject.js';
12
12
  import { PageContext_loadUserFilesServerSide, type PageFiles } from './loadUserFilesServerSide.js';
13
13
  import type { PageConfigRuntime, PageConfigGlobalRuntime } from '../../../shared/page-configs/PageConfig.js';
@@ -24,7 +24,7 @@ declare function renderPageAlreadyRouted<PageContext extends {
24
24
  routeParams: Record<string, string>;
25
25
  errorWhileRendering: null | Error;
26
26
  _httpRequestId: number;
27
- } & PageContextInitEnhanced & PageContextUrlComputedPropsInternal & PageContext_loadUserFilesServerSide>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
27
+ } & PageContextInitEnhanced & PageContextUrlInternal & PageContext_loadUserFilesServerSide>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
28
28
  declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles & {
29
29
  routeParams: Record<string, string>;
30
30
  _pageId: string;
@@ -37,6 +37,10 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
37
37
  documentHtml: string;
38
38
  pageContextSerialized: null;
39
39
  pageContext: {
40
+ urlOriginal: string;
41
+ headersOriginal?: unknown;
42
+ headers?: unknown;
43
+ } & {
40
44
  _objectCreatedByVike: boolean;
41
45
  _baseServer: string;
42
46
  _baseAssets: string | null;
@@ -49,23 +53,23 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
49
53
  _onBeforeRouteHook: Hook | null;
50
54
  _pageContextInit: {
51
55
  urlOriginal: string;
56
+ headersOriginal?: unknown;
57
+ headers?: unknown;
52
58
  };
53
59
  _urlRewrite: string | null;
54
60
  _urlHandler: ((url: string) => string) | null;
55
61
  isClientSideNavigation: boolean;
56
- urlOriginal: string;
57
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
58
- _urlRewrite: string | null;
59
62
  } & {
63
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
64
+ urlPathname: string;
65
+ url: string;
66
+ } & {
67
+ headers: Record<string, string> | null;
68
+ } & import("../../../shared/getPageFiles.js").PageContextExports & {
60
69
  Page: unknown;
61
70
  _isHtmlOnly: boolean;
62
71
  _passToClient: string[];
63
72
  _pageFilePathsLoaded: string[];
64
- config: Record<string, unknown>;
65
- configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
66
- exports: Record<string, unknown>;
67
- exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
68
- pageExports: Record<string, unknown>;
69
73
  } & {
70
74
  __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
71
75
  } & {
@@ -84,6 +88,10 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
84
88
  documentHtml: string;
85
89
  pageContextSerialized: string;
86
90
  pageContext: {
91
+ urlOriginal: string;
92
+ headersOriginal?: unknown;
93
+ headers?: unknown;
94
+ } & {
87
95
  _objectCreatedByVike: boolean;
88
96
  _baseServer: string;
89
97
  _baseAssets: string | null;
@@ -96,23 +104,23 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
96
104
  _onBeforeRouteHook: Hook | null;
97
105
  _pageContextInit: {
98
106
  urlOriginal: string;
107
+ headersOriginal?: unknown;
108
+ headers?: unknown;
99
109
  };
100
110
  _urlRewrite: string | null;
101
111
  _urlHandler: ((url: string) => string) | null;
102
112
  isClientSideNavigation: boolean;
103
- urlOriginal: string;
104
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
105
- _urlRewrite: string | null;
106
113
  } & {
114
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
115
+ urlPathname: string;
116
+ url: string;
117
+ } & {
118
+ headers: Record<string, string> | null;
119
+ } & import("../../../shared/getPageFiles.js").PageContextExports & {
107
120
  Page: unknown;
108
121
  _isHtmlOnly: boolean;
109
122
  _passToClient: string[];
110
123
  _pageFilePathsLoaded: string[];
111
- config: Record<string, unknown>;
112
- configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
113
- exports: Record<string, unknown>;
114
- exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
115
- pageExports: Record<string, unknown>;
116
124
  } & {
117
125
  __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
118
126
  } & {
@@ -132,6 +140,10 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
132
140
  documentHtml: string;
133
141
  pageContextSerialized: null;
134
142
  pageContext: {
143
+ urlOriginal: string;
144
+ headersOriginal?: unknown;
145
+ headers?: unknown;
146
+ } & {
135
147
  _objectCreatedByVike: boolean;
136
148
  _baseServer: string;
137
149
  _baseAssets: string | null;
@@ -144,23 +156,23 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
144
156
  _onBeforeRouteHook: Hook | null;
145
157
  _pageContextInit: {
146
158
  urlOriginal: string;
159
+ headersOriginal?: unknown;
160
+ headers?: unknown;
147
161
  };
148
162
  _urlRewrite: string | null;
149
163
  _urlHandler: ((url: string) => string) | null;
150
164
  isClientSideNavigation: boolean;
151
- urlOriginal: string;
152
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
153
- _urlRewrite: string | null;
154
165
  } & {
166
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
167
+ urlPathname: string;
168
+ url: string;
169
+ } & {
170
+ headers: Record<string, string> | null;
171
+ } & import("../../../shared/getPageFiles.js").PageContextExports & {
155
172
  Page: unknown;
156
173
  _isHtmlOnly: boolean;
157
174
  _passToClient: string[];
158
175
  _pageFilePathsLoaded: string[];
159
- config: Record<string, unknown>;
160
- configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
161
- exports: Record<string, unknown>;
162
- exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
163
- pageExports: Record<string, unknown>;
164
176
  } & {
165
177
  __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
166
178
  } & {
@@ -179,6 +191,10 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
179
191
  documentHtml: string;
180
192
  pageContextSerialized: string;
181
193
  pageContext: {
194
+ urlOriginal: string;
195
+ headersOriginal?: unknown;
196
+ headers?: unknown;
197
+ } & {
182
198
  _objectCreatedByVike: boolean;
183
199
  _baseServer: string;
184
200
  _baseAssets: string | null;
@@ -191,23 +207,23 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
191
207
  _onBeforeRouteHook: Hook | null;
192
208
  _pageContextInit: {
193
209
  urlOriginal: string;
210
+ headersOriginal?: unknown;
211
+ headers?: unknown;
194
212
  };
195
213
  _urlRewrite: string | null;
196
214
  _urlHandler: ((url: string) => string) | null;
197
215
  isClientSideNavigation: boolean;
198
- urlOriginal: string;
199
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
200
- _urlRewrite: string | null;
201
216
  } & {
217
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
218
+ urlPathname: string;
219
+ url: string;
220
+ } & {
221
+ headers: Record<string, string> | null;
222
+ } & import("../../../shared/getPageFiles.js").PageContextExports & {
202
223
  Page: unknown;
203
224
  _isHtmlOnly: boolean;
204
225
  _passToClient: string[];
205
226
  _pageFilePathsLoaded: string[];
206
- config: Record<string, unknown>;
207
- configEntries: import("../../../shared/getPageFiles/getExports.js").ConfigEntries;
208
- exports: Record<string, unknown>;
209
- exportsAll: import("../../../shared/getPageFiles/getExports.js").ExportsAll;
210
- pageExports: Record<string, unknown>;
211
227
  } & {
212
228
  __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
213
229
  } & {
@@ -226,14 +242,19 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
226
242
  type PageContextInitEnhanced = ReturnType<typeof getPageContextInitEnhanced>;
227
243
  declare function getPageContextInitEnhanced(pageContextInit: {
228
244
  urlOriginal: string;
229
- }, renderContext: RenderContext, { urlComputedPropsNonEnumerable, ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
230
- urlComputedPropsNonEnumerable?: boolean;
245
+ headersOriginal?: unknown;
246
+ headers?: unknown;
247
+ }, renderContext: RenderContext, { ssr: { urlRewrite, urlHandler, isClientSideNavigation } }?: {
231
248
  ssr?: {
232
249
  urlRewrite: null | string;
233
250
  urlHandler: null | ((url: string) => string);
234
251
  isClientSideNavigation: boolean;
235
252
  };
236
253
  }): {
254
+ urlOriginal: string;
255
+ headersOriginal?: unknown;
256
+ headers?: unknown;
257
+ } & {
237
258
  _objectCreatedByVike: boolean;
238
259
  _baseServer: string;
239
260
  _baseAssets: string | null;
@@ -246,13 +267,18 @@ declare function getPageContextInitEnhanced(pageContextInit: {
246
267
  _onBeforeRouteHook: Hook | null;
247
268
  _pageContextInit: {
248
269
  urlOriginal: string;
270
+ headersOriginal?: unknown;
271
+ headers?: unknown;
249
272
  };
250
273
  _urlRewrite: string | null;
251
274
  _urlHandler: ((url: string) => string) | null;
252
275
  isClientSideNavigation: boolean;
253
- urlOriginal: string;
254
- } & import("../../../shared/addUrlComputedProps.js").PageContextUrlComputedPropsClient & {
255
- _urlRewrite: string | null;
276
+ } & {
277
+ urlParsed: import("../../../shared/getPageContextUrlComputed.js").Url;
278
+ urlPathname: string;
279
+ url: string;
280
+ } & {
281
+ headers: Record<string, string> | null;
256
282
  };
257
283
  type RenderContext = {
258
284
  pageFilesAll: PageFile[];