vike 0.4.223 → 0.4.224-commit-00ed9fe

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 (183) hide show
  1. package/dist/cjs/node/api/build.js +4 -37
  2. package/dist/cjs/node/api/prepareViteApiCall.js +9 -3
  3. package/dist/cjs/node/plugin/index.js +8 -20
  4. package/dist/cjs/node/plugin/plugins/baseUrls.js +3 -1
  5. package/dist/cjs/node/plugin/plugins/{buildConfig/fixServerAssets.js → build/handleAssetsManifest.js} +130 -52
  6. package/dist/cjs/node/plugin/plugins/build/pluginAutoFullBuild.js +145 -0
  7. package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +52 -0
  8. package/dist/cjs/node/plugin/plugins/{buildConfig.js → build/pluginBuildConfig.js} +22 -84
  9. package/dist/cjs/node/plugin/plugins/{buildEntry/index.js → build/pluginBuildEntry.js} +9 -9
  10. package/dist/cjs/node/plugin/plugins/{distFileNames.js → build/pluginDistFileNames.js} +7 -7
  11. package/dist/cjs/node/plugin/plugins/{packageJsonFile.js → build/pluginDistPackageJsonFile.js} +6 -6
  12. package/dist/cjs/node/plugin/plugins/{suppressRollupWarning.js → build/pluginSuppressRollupWarning.js} +3 -3
  13. package/dist/cjs/node/plugin/plugins/build.js +21 -0
  14. package/dist/cjs/node/plugin/plugins/commonConfig.js +22 -4
  15. package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +1 -1
  16. package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
  17. package/dist/cjs/node/plugin/plugins/devConfig/index.js +1 -1
  18. package/dist/cjs/node/plugin/plugins/envVars.js +2 -2
  19. package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +9 -9
  20. package/dist/cjs/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
  21. package/dist/cjs/node/plugin/plugins/fileEnv.js +5 -2
  22. package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -3
  23. package/dist/cjs/node/plugin/plugins/importUserCode/index.js +2 -5
  24. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +5 -5
  25. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +7 -2
  26. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +16 -0
  27. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +50 -64
  28. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +2 -1
  29. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +3 -3
  30. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +19 -7
  31. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +277 -212
  32. package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/virtual-files/getVirtualFilePageConfigValuesAll.js +4 -4
  33. package/dist/cjs/node/plugin/plugins/previewConfig.js +12 -7
  34. package/dist/cjs/node/plugin/shared/addSsrMiddleware.js +5 -1
  35. package/dist/cjs/node/plugin/shared/findPageFiles.js +3 -3
  36. package/dist/cjs/node/plugin/shared/getOutDirs.js +8 -7
  37. package/dist/cjs/node/plugin/shared/isViteServerBuild.js +47 -0
  38. package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +1 -1
  39. package/dist/cjs/node/plugin/utils.js +1 -0
  40. package/dist/cjs/node/prerender/context.js +3 -8
  41. package/dist/cjs/node/prerender/resolvePrerenderConfig.js +30 -21
  42. package/dist/cjs/node/prerender/runPrerender.js +28 -30
  43. package/dist/cjs/node/prerender/utils.js +1 -0
  44. package/dist/cjs/node/runtime/html/stream.js +7 -0
  45. package/dist/cjs/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +13 -5
  46. package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +2 -4
  47. package/dist/cjs/node/runtime/renderPage/logErrorHint.js +13 -2
  48. package/dist/cjs/node/runtime/renderPage.js +6 -10
  49. package/dist/cjs/shared/getPageContextUrlComputed.js +1 -1
  50. package/dist/cjs/shared/page-configs/getConfigValueBuildTime.js +2 -5
  51. package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +3 -1
  52. package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +20 -9
  53. package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
  54. package/dist/cjs/utils/debug.js +2 -1
  55. package/dist/cjs/utils/findFile.js +1 -1
  56. package/dist/cjs/utils/findPackageJson.js +1 -1
  57. package/dist/cjs/utils/isFilePathAbsoluteFilesystem.js +10 -4
  58. package/dist/cjs/utils/parseUrl-extras.js +1 -0
  59. package/dist/cjs/utils/path.js +1 -0
  60. package/dist/cjs/utils/requireResolve.js +11 -4
  61. package/dist/cjs/utils/sorter.js +0 -3
  62. package/dist/esm/client/client-routing-runtime/index.d.ts +1 -0
  63. package/dist/esm/client/client-routing-runtime/index.js +1 -0
  64. package/dist/esm/client/client-routing-runtime/renderPageClientSide.d.ts +8 -0
  65. package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +10 -1
  66. package/dist/esm/node/api/build.js +4 -4
  67. package/dist/esm/node/api/prepareViteApiCall.js +9 -3
  68. package/dist/esm/node/plugin/index.d.ts +2 -1
  69. package/dist/esm/node/plugin/index.js +4 -17
  70. package/dist/esm/node/plugin/plugins/baseUrls.js +3 -1
  71. package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.d.ts +18 -0
  72. package/dist/esm/node/plugin/plugins/{buildConfig/fixServerAssets.js → build/handleAssetsManifest.js} +131 -53
  73. package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.d.ts +5 -0
  74. package/dist/esm/node/plugin/plugins/build/pluginAutoFullBuild.js +140 -0
  75. package/dist/esm/node/plugin/plugins/build/pluginBuildApp.d.ts +3 -0
  76. package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +50 -0
  77. package/dist/esm/node/plugin/plugins/{buildConfig.d.ts → build/pluginBuildConfig.d.ts} +3 -3
  78. package/dist/esm/node/plugin/plugins/{buildConfig.js → build/pluginBuildConfig.js} +22 -81
  79. package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.d.ts +7 -0
  80. package/dist/esm/node/plugin/plugins/{buildEntry/index.js → build/pluginBuildEntry.js} +9 -9
  81. package/dist/esm/node/plugin/plugins/build/pluginDistFileNames.d.ts +3 -0
  82. package/dist/esm/node/plugin/plugins/{distFileNames.js → build/pluginDistFileNames.js} +7 -7
  83. package/dist/esm/node/plugin/plugins/build/pluginDistPackageJsonFile.d.ts +3 -0
  84. package/dist/esm/node/plugin/plugins/{packageJsonFile.js → build/pluginDistPackageJsonFile.js} +7 -6
  85. package/dist/esm/node/plugin/plugins/build/pluginSuppressRollupWarning.d.ts +3 -0
  86. package/dist/esm/node/plugin/plugins/{suppressRollupWarning.js → build/pluginSuppressRollupWarning.js} +3 -3
  87. package/dist/esm/node/plugin/plugins/build.d.ts +3 -0
  88. package/dist/esm/node/plugin/plugins/build.js +19 -0
  89. package/dist/esm/node/plugin/plugins/commonConfig.d.ts +16 -6
  90. package/dist/esm/node/plugin/plugins/commonConfig.js +22 -4
  91. package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +1 -1
  92. package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +5 -5
  93. package/dist/esm/node/plugin/plugins/devConfig/index.js +1 -1
  94. package/dist/esm/node/plugin/plugins/envVars.js +2 -2
  95. package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +10 -10
  96. package/dist/esm/node/plugin/plugins/extractExportNamesPlugin.js +2 -2
  97. package/dist/esm/node/plugin/plugins/fileEnv.js +5 -2
  98. package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -3
  99. package/dist/esm/node/plugin/plugins/importUserCode/index.js +2 -5
  100. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/assertExtensions.js +5 -5
  101. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +7 -2
  102. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.d.ts +1 -0
  103. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +13 -0
  104. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.d.ts +1 -1
  105. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +50 -64
  106. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +2 -1
  107. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/getPlusFilesAll.js +3 -3
  108. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +0 -1
  109. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +20 -8
  110. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +8 -6
  111. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +279 -214
  112. package/dist/esm/node/plugin/plugins/importUserCode/v1-design/virtual-files/getVirtualFilePageConfigValuesAll.js +4 -4
  113. package/dist/esm/node/plugin/plugins/previewConfig.js +12 -7
  114. package/dist/esm/node/plugin/shared/addSsrMiddleware.d.ts +1 -1
  115. package/dist/esm/node/plugin/shared/addSsrMiddleware.js +5 -1
  116. package/dist/esm/node/plugin/shared/findPageFiles.js +3 -3
  117. package/dist/esm/node/plugin/shared/getHttpRequestAsyncStore.js +1 -3
  118. package/dist/esm/node/plugin/shared/getOutDirs.d.ts +2 -2
  119. package/dist/esm/node/plugin/shared/getOutDirs.js +8 -7
  120. package/dist/esm/node/plugin/shared/isViteServerBuild.d.ts +15 -0
  121. package/dist/esm/node/plugin/shared/isViteServerBuild.js +45 -0
  122. package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +1 -1
  123. package/dist/esm/node/plugin/utils.d.ts +1 -0
  124. package/dist/esm/node/plugin/utils.js +1 -0
  125. package/dist/esm/node/prerender/context.d.ts +0 -2
  126. package/dist/esm/node/prerender/context.js +4 -9
  127. package/dist/esm/node/prerender/resolvePrerenderConfig.d.ts +11 -6
  128. package/dist/esm/node/prerender/resolvePrerenderConfig.js +31 -22
  129. package/dist/esm/node/prerender/runPrerender.d.ts +7 -25
  130. package/dist/esm/node/prerender/runPrerender.js +29 -31
  131. package/dist/esm/node/prerender/utils.d.ts +1 -0
  132. package/dist/esm/node/prerender/utils.js +1 -0
  133. package/dist/esm/node/runtime/globalContext.d.ts +3 -2
  134. package/dist/esm/node/runtime/html/stream.js +7 -0
  135. package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.d.ts +3 -1
  136. package/dist/esm/node/runtime/renderPage/createHttpResponse/assertNoInfiniteHttpRedirect.js +14 -6
  137. package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +3 -1
  138. package/dist/esm/node/runtime/renderPage/createHttpResponse.js +2 -4
  139. package/dist/esm/node/runtime/renderPage/logErrorHint.js +13 -2
  140. package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +165 -5
  141. package/dist/esm/node/runtime/renderPage.js +7 -11
  142. package/dist/esm/shared/getPageContextUrlComputed.js +1 -1
  143. package/dist/esm/shared/page-configs/Config.d.ts +12 -2
  144. package/dist/esm/shared/page-configs/PageConfig.d.ts +5 -5
  145. package/dist/esm/shared/page-configs/getConfigValueBuildTime.js +2 -5
  146. package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +3 -1
  147. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.d.ts +2 -0
  148. package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +20 -9
  149. package/dist/esm/types/index.d.ts +2 -0
  150. package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
  151. package/dist/esm/utils/PROJECT_VERSION.js +1 -1
  152. package/dist/esm/utils/debug.js +2 -1
  153. package/dist/esm/utils/findFile.js +1 -1
  154. package/dist/esm/utils/findPackageJson.js +1 -1
  155. package/dist/esm/utils/isFilePathAbsoluteFilesystem.js +8 -2
  156. package/dist/esm/utils/parseUrl-extras.js +1 -0
  157. package/dist/esm/utils/path.js +1 -0
  158. package/dist/esm/utils/projectInfo.d.ts +1 -1
  159. package/dist/esm/utils/requireResolve.js +11 -4
  160. package/dist/esm/utils/sorter.d.ts +18 -5
  161. package/dist/esm/utils/sorter.js +0 -3
  162. package/package.json +9 -16
  163. package/dist/cjs/node/plugin/plugins/autoFullBuild.js +0 -119
  164. package/dist/cjs/node/plugin/plugins/buildApp.js +0 -76
  165. package/dist/cjs/node/plugin/plugins/removeRequireHookPlugin.js +0 -17
  166. package/dist/cjs/node/plugin/shared/getFullBuildInlineConfig.js +0 -20
  167. package/dist/cjs/node/plugin/shared/viteIsSSR.js +0 -31
  168. package/dist/esm/node/plugin/plugins/autoFullBuild.d.ts +0 -3
  169. package/dist/esm/node/plugin/plugins/autoFullBuild.js +0 -114
  170. package/dist/esm/node/plugin/plugins/buildApp.d.ts +0 -3
  171. package/dist/esm/node/plugin/plugins/buildApp.js +0 -74
  172. package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.d.ts +0 -20
  173. package/dist/esm/node/plugin/plugins/buildEntry/index.d.ts +0 -8
  174. package/dist/esm/node/plugin/plugins/distFileNames.d.ts +0 -3
  175. package/dist/esm/node/plugin/plugins/packageJsonFile.d.ts +0 -3
  176. package/dist/esm/node/plugin/plugins/removeRequireHookPlugin.d.ts +0 -3
  177. package/dist/esm/node/plugin/plugins/removeRequireHookPlugin.js +0 -15
  178. package/dist/esm/node/plugin/plugins/suppressRollupWarning.d.ts +0 -3
  179. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.d.ts +0 -2
  180. package/dist/esm/node/plugin/shared/getFullBuildInlineConfig.js +0 -17
  181. package/dist/esm/node/plugin/shared/viteIsSSR.d.ts +0 -11
  182. package/dist/esm/node/plugin/shared/viteIsSSR.js +0 -29
  183. package/dist-cjs-fixup.mjs +0 -41
@@ -34,7 +34,7 @@ function assertExtensionName(plusFile) {
34
34
  (0, utils_js_1.assertUsage)(name, `Vike extension name missing: the config ${filePathToShowToUser} must define the setting ${picocolors_1.default.cyan('name')}`);
35
35
  }
36
36
  function assertExtensionsRequire(pageConfig) {
37
- const plusFilesRelevantList = Object.values(pageConfig.plusFiles).flat(1);
37
+ const plusFilesRelevantList = pageConfig.plusFiles;
38
38
  // Collect extensions
39
39
  const extensions = {};
40
40
  plusFilesRelevantList.forEach((plusFile) => {
@@ -68,8 +68,8 @@ function getConfigRequireValue(plusFile) {
68
68
  const confVal = (0, getVikeConfig_js_1.getConfVal)(plusFile, 'require');
69
69
  if (!confVal)
70
70
  return null;
71
- (0, utils_js_1.assert)(confVal.configValueLoaded);
72
- const require = confVal.configValue;
71
+ (0, utils_js_1.assert)(confVal.valueIsLoaded);
72
+ const require = confVal.value;
73
73
  const { filePathToShowToUserResolved } = plusFile.filePath;
74
74
  (0, utils_js_1.assert)(filePathToShowToUserResolved);
75
75
  (0, utils_js_1.assertUsage)((0, isObjectOfStrings_js_1.isObjectOfStrings)(require), `The setting ${picocolors_1.default.bold('require')} defined at ${filePathToShowToUserResolved} should be an object with string values (${picocolors_1.default.bold('Record<string, string>')}).`);
@@ -79,8 +79,8 @@ function getNameValue(plusFile) {
79
79
  const confVal = (0, getVikeConfig_js_1.getConfVal)(plusFile, 'name');
80
80
  if (!confVal)
81
81
  return null;
82
- (0, utils_js_1.assert)(confVal.configValueLoaded);
83
- const name = confVal.configValue;
82
+ (0, utils_js_1.assert)(confVal.valueIsLoaded);
83
+ const name = confVal.value;
84
84
  const filePathToShowToUser = getFilePathToShowToUser(plusFile);
85
85
  (0, utils_js_1.assertUsage)(typeof name === 'string', `The setting ${picocolors_1.default.bold('name')} defined at ${filePathToShowToUser} should be a string.`);
86
86
  return name;
@@ -33,7 +33,12 @@ const configDefinitionsBuiltIn = {
33
33
  cumulative: true
34
34
  },
35
35
  route: {
36
- env: { server: true, client: 'if-client-routing' },
36
+ env: {
37
+ server: true,
38
+ client: 'if-client-routing',
39
+ // For vite-plugin-vercel
40
+ config: true
41
+ },
37
42
  eager: true
38
43
  },
39
44
  guard: {
@@ -159,7 +164,7 @@ const configDefinitionsBuiltIn = {
159
164
  'string'
160
165
  ]
161
166
  },
162
- viteEnvironmentAPI: {
167
+ vite6BuilderApp: {
163
168
  env: { config: true },
164
169
  global: true,
165
170
  type: 'boolean'
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ignorePatternsBuiltIn = void 0;
4
+ exports.ignorePatternsBuiltIn = [
5
+ '**/node_modules/**',
6
+ // Ejected Vike extensions, see https://github.com/snake-py/eject
7
+ '**/ejected/**',
8
+ // Allow:
9
+ // ```bash
10
+ // +Page.js
11
+ // +Page.telefunc.js
12
+ // ```
13
+ '**/*.telefunc.*',
14
+ // https://github.com/vikejs/vike/discussions/2222
15
+ '**/*.generated.*'
16
+ ];
@@ -8,51 +8,43 @@ exports.isPlusFile = isPlusFile;
8
8
  exports.getPlusFileValueConfigName = getPlusFileValueConfigName;
9
9
  const utils_js_1 = require("../../../../utils.js");
10
10
  const path_1 = __importDefault(require("path"));
11
- const fast_glob_1 = __importDefault(require("fast-glob"));
11
+ const tinyglobby_1 = require("tinyglobby");
12
12
  const child_process_1 = require("child_process");
13
13
  const util_1 = require("util");
14
14
  const transpileAndExecuteFile_js_1 = require("./transpileAndExecuteFile.js");
15
15
  const getEnvVarObject_js_1 = require("../../../../shared/getEnvVarObject.js");
16
+ const picocolors_1 = __importDefault(require("@brillout/picocolors"));
17
+ const picomatch_1 = __importDefault(require("picomatch"));
18
+ const ignorePatternsBuiltIn_js_1 = require("./crawlPlusFiles/ignorePatternsBuiltIn.js");
16
19
  const execA = (0, util_1.promisify)(child_process_1.exec);
17
20
  const debug = (0, utils_js_1.createDebugger)('vike:crawl');
18
21
  (0, utils_js_1.assertIsNotProductionRuntime)();
19
22
  (0, utils_js_1.assertIsSingleModuleInstance)('getVikeConfig/crawlPlusFiles.ts');
20
23
  let gitIsNotUsable = false;
21
- async function crawlPlusFiles(userRootDir, outDirAbsoluteFilesystem) {
24
+ async function crawlPlusFiles(userRootDir) {
22
25
  (0, utils_js_1.assertPosixPath)(userRootDir);
23
- //*/
24
- const outDirRelativeFromUserRootDir = null;
25
- /*/
26
- assertPosixPath(outDirAbsoluteFilesystem)
27
- let outDirRelativeFromUserRootDir: string | null = path.posix.relative(userRootDir, outDirAbsoluteFilesystem)
28
- if (outDirRelativeFromUserRootDir.startsWith('../')) {
29
- // config.outDir is outside of config.root => it's going to be ignored anyways
30
- outDirRelativeFromUserRootDir = null
31
- }
32
- //*/
33
- (0, utils_js_1.assert)(outDirRelativeFromUserRootDir === null ||
34
- /* Not true if outDirRelativeFromUserRootDir starts with a hidden directory (i.e. a directory with a name that starts with `.`)
35
- !outDirRelativeFromUserRootDir.startsWith('.') &&
36
- */
37
- (!outDirRelativeFromUserRootDir.startsWith('./') &&
38
- //
39
- !outDirRelativeFromUserRootDir.startsWith('../')));
26
+ (0, utils_js_1.assertFilePathAbsoluteFilesystem)(userRootDir);
27
+ const userSettings = getUserSettings();
28
+ const { ignorePatterns, ignoreMatchers } = getIgnore(userSettings);
40
29
  // Crawl
41
- const filesGit = !isGitCrawlDisabled() && (await gitLsFiles(userRootDir, outDirRelativeFromUserRootDir));
30
+ const filesGit = userSettings.git !== false && (await gitLsFiles(userRootDir, ignorePatterns, ignoreMatchers));
42
31
  const filesGitNothingFound = !filesGit || filesGit.length === 0;
43
- const filesGlob = (filesGitNothingFound || debug.isActivated) && (await fastGlob(userRootDir, outDirRelativeFromUserRootDir));
32
+ const filesGlob = (filesGitNothingFound || debug.isActivated) && (await tinyglobby(userRootDir, ignorePatterns));
44
33
  let files = !filesGitNothingFound
45
34
  ? filesGit
46
- : // Fallback to fast-glob for users that dynamically generate plus files. (Assuming that no plus file is found because of the user's .gitignore list.)
35
+ : // Fallback to tinyglobby for users that dynamically generate plus files. (Assuming that no plus file is found because of the user's .gitignore list.)
47
36
  filesGlob;
48
37
  (0, utils_js_1.assert)(files);
49
- if (debug.isActivated)
50
- (0, utils_js_1.assert)((0, utils_js_1.deepEqual)(filesGlob, filesGit), "Git and glob results aren't matching.");
38
+ if (debug.isActivated) {
39
+ (0, utils_js_1.assert)(filesGit);
40
+ (0, utils_js_1.assert)(filesGlob);
41
+ (0, utils_js_1.assertWarning)((0, utils_js_1.deepEqual)(filesGlob.slice().sort(), filesGit.slice().sort()), "Git and glob results aren't matching.", { onlyOnce: false });
42
+ }
51
43
  // Filter build files
52
44
  files = files.filter((filePath) => !(0, transpileAndExecuteFile_js_1.isTemporaryBuildFile)(filePath));
53
45
  // Normalize
54
46
  const plusFiles = files.map((filePath) => {
55
- // Both `$ git-ls files` and fast-glob return posix paths
47
+ // Both `$ git-ls files` and tinyglobby return posix paths
56
48
  (0, utils_js_1.assertPosixPath)(filePath);
57
49
  (0, utils_js_1.assert)(!filePath.startsWith(userRootDir));
58
50
  const filePathAbsoluteUserRootDir = path_1.default.posix.join('/', filePath);
@@ -61,8 +53,8 @@ async function crawlPlusFiles(userRootDir, outDirAbsoluteFilesystem) {
61
53
  });
62
54
  return plusFiles;
63
55
  }
64
- // Same as fastGlob() but using `$ git ls-files`
65
- async function gitLsFiles(userRootDir, outDirRelativeFromUserRootDir) {
56
+ // Same as tinyglobby() but using `$ git ls-files`
57
+ async function gitLsFiles(userRootDir, ignorePatterns, ignoreMatchers) {
66
58
  if (gitIsNotUsable)
67
59
  return null;
68
60
  // Preserve UTF-8 file paths.
@@ -70,8 +62,6 @@ async function gitLsFiles(userRootDir, outDirRelativeFromUserRootDir) {
70
62
  // https://stackoverflow.com/questions/22827239/how-to-make-git-properly-display-utf-8-encoded-pathnames-in-the-console-window/22828826#22828826
71
63
  // https://stackoverflow.com/questions/15884180/how-do-i-override-git-configuration-options-by-command-line-parameters/15884261#15884261
72
64
  const preserveUTF8 = '-c core.quotepath=off';
73
- const ignoreAsPatterns = getIgnoreAsPatterns(outDirRelativeFromUserRootDir);
74
- const ignoreAsFilterFn = getIgnoreAsFilterFn(outDirRelativeFromUserRootDir);
75
65
  const cmd = [
76
66
  'git',
77
67
  preserveUTF8,
@@ -81,7 +71,7 @@ async function gitLsFiles(userRootDir, outDirRelativeFromUserRootDir) {
81
71
  // Performance gain is non-negligible.
82
72
  // - https://github.com/vikejs/vike/pull/1688#issuecomment-2166206648
83
73
  // - When node_modules/ is untracked the performance gain could be significant?
84
- ...ignoreAsPatterns.map((pattern) => `--exclude="${pattern}"`),
74
+ ...ignorePatterns.map((pattern) => `--exclude="${pattern}"`),
85
75
  // --others --exclude-standard => list untracked files (--others) while using .gitignore (--exclude-standard)
86
76
  // --cached => list tracked files
87
77
  '--others --exclude-standard --cached'
@@ -116,7 +106,7 @@ async function gitLsFiles(userRootDir, outDirRelativeFromUserRootDir) {
116
106
  if (!path_1.default.posix.basename(filePath).startsWith('+'))
117
107
  continue;
118
108
  // We have to repeat the same exclusion logic here because the option --exclude of `$ git ls-files` only applies to untracked files. (We use --exclude only to speed up the `$ git ls-files` command.)
119
- if (!ignoreAsFilterFn(filePath))
109
+ if (ignoreMatchers.some((m) => m(filePath)))
120
110
  continue;
121
111
  // JavaScript file?
122
112
  if (!(0, utils_js_1.isScriptFile)(filePath))
@@ -128,15 +118,15 @@ async function gitLsFiles(userRootDir, outDirRelativeFromUserRootDir) {
128
118
  }
129
119
  return files;
130
120
  }
131
- // Same as gitLsFiles() but using fast-glob
132
- async function fastGlob(userRootDir, outDirRelativeFromUserRootDir) {
121
+ // Same as gitLsFiles() but using tinyglobby
122
+ async function tinyglobby(userRootDir, ignorePatterns) {
133
123
  const pattern = `**/+*.${utils_js_1.scriptFileExtensions}`;
134
124
  const options = {
135
- ignore: getIgnoreAsPatterns(outDirRelativeFromUserRootDir),
125
+ ignore: ignorePatterns,
136
126
  cwd: userRootDir,
137
127
  dot: false
138
128
  };
139
- const files = await (0, fast_glob_1.default)(pattern, options);
129
+ const files = await (0, tinyglobby_1.glob)(pattern, options);
140
130
  // Make build deterministic, in order to get a stable generated hash for dist/client/assets/entries/entry-client-routing.${hash}.js
141
131
  // https://github.com/vikejs/vike/pull/1750
142
132
  files.sort();
@@ -147,32 +137,6 @@ async function fastGlob(userRootDir, outDirRelativeFromUserRootDir) {
147
137
  }
148
138
  return files;
149
139
  }
150
- // Same as getIgnoreAsFilterFn() but as glob pattern
151
- function getIgnoreAsPatterns(outDirRelativeFromUserRootDir) {
152
- const ignoreAsPatterns = [
153
- '**/node_modules/**',
154
- '**/ejected/**',
155
- // Allow:
156
- // ```
157
- // +Page.js
158
- // +Page.telefunc.js
159
- // ```
160
- '**/*.telefunc.*'
161
- ];
162
- if (outDirRelativeFromUserRootDir) {
163
- (0, utils_js_1.assert)(!outDirRelativeFromUserRootDir.startsWith('/'));
164
- ignoreAsPatterns.push(`${outDirRelativeFromUserRootDir}/**`);
165
- }
166
- return ignoreAsPatterns;
167
- }
168
- // Same as getIgnoreAsPatterns() but for Array.filter()
169
- function getIgnoreAsFilterFn(outDirRelativeFromUserRootDir) {
170
- (0, utils_js_1.assert)(outDirRelativeFromUserRootDir === null || !outDirRelativeFromUserRootDir.startsWith('/'));
171
- return (file) => !file.includes('node_modules/') &&
172
- !file.includes('ejected/') &&
173
- !file.includes('.telefunc.') &&
174
- (outDirRelativeFromUserRootDir === null || !file.startsWith(`${outDirRelativeFromUserRootDir}/`));
175
- }
176
140
  // Whether Git is installed and whether we can use it
177
141
  async function isGitNotUsable(userRootDir) {
178
142
  // Check Git version
@@ -227,9 +191,19 @@ async function runCmd2(cmd, cwd) {
227
191
  stderr = stderr.toString().trim();
228
192
  return { stdout, stderr };
229
193
  }
230
- function isGitCrawlDisabled() {
231
- const crawSettings = (0, getEnvVarObject_js_1.getEnvVarObject)('VIKE_CRAWL');
232
- return crawSettings?.git === false;
194
+ function getUserSettings() {
195
+ const userSettings = (0, getEnvVarObject_js_1.getEnvVarObject)('VIKE_CRAWL') ?? {};
196
+ const wrongUsage = (settingName, settingType) => `Setting ${picocolors_1.default.cyan(settingName)} in VIKE_CRAWL should be a ${picocolors_1.default.cyan(settingType)}`;
197
+ (0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(userSettings, 'git', 'boolean') || (0, utils_js_1.hasProp)(userSettings, 'git', 'undefined'), wrongUsage('git', 'boolean'));
198
+ (0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(userSettings, 'ignore', 'string[]') ||
199
+ (0, utils_js_1.hasProp)(userSettings, 'ignore', 'string') ||
200
+ (0, utils_js_1.hasProp)(userSettings, 'ignore', 'undefined'), wrongUsage('git', 'string or an array of strings'));
201
+ (0, utils_js_1.assertUsage)((0, utils_js_1.hasProp)(userSettings, 'ignoreBuiltIn', 'boolean') || (0, utils_js_1.hasProp)(userSettings, 'ignoreBuiltIn', 'undefined'), wrongUsage('ignoreBuiltIn', 'boolean'));
202
+ const settingNames = ['git', 'ignore', 'ignoreBuiltIn'];
203
+ Object.keys(userSettings).forEach((name) => {
204
+ (0, utils_js_1.assertUsage)(settingNames.includes(name), `Unknown setting ${picocolors_1.default.bold(picocolors_1.default.red(name))} in VIKE_CRAWL`);
205
+ });
206
+ return userSettings;
233
207
  }
234
208
  function isPlusFile(filePath) {
235
209
  (0, utils_js_1.assertPosixPath)(filePath);
@@ -265,3 +239,15 @@ function assertNoUnexpectedPlusSign(filePath: string, fileName: string) {
265
239
  )
266
240
  }
267
241
  */
242
+ function getIgnore(userSettings) {
243
+ const ignorePatternsSetByUser = [userSettings.ignore].flat().filter(utils_js_1.isNotNullish);
244
+ const { ignoreBuiltIn } = userSettings;
245
+ const ignorePatterns = [...(ignoreBuiltIn === false ? [] : ignorePatternsBuiltIn_js_1.ignorePatternsBuiltIn), ...ignorePatternsSetByUser];
246
+ const ignoreMatchers = ignorePatterns.map((p) => (0, picomatch_1.default)(p, {
247
+ // We must pass the same settings than tinyglobby
248
+ // https://github.com/SuperchupuDev/tinyglobby/blob/fcfb08a36c3b4d48d5488c21000c95a956d9797c/src/index.ts#L191-L194
249
+ dot: false,
250
+ nocase: false
251
+ }));
252
+ return { ignorePatterns, ignoreMatchers };
253
+ }
@@ -44,6 +44,7 @@ function getLogicalPath(locationId, ignoredDirs, removeParenthesesDirs) {
44
44
  assertIsPath(logicalPath);
45
45
  return logicalPath;
46
46
  }
47
+ // See getPlusFilesRelevant() and getPlusFilesOrdered()
47
48
  function sortAfterInheritanceOrder(locationId1, locationId2, locationIdPage) {
48
49
  assertLocationId(locationId1);
49
50
  assertLocationId(locationId2);
@@ -52,7 +53,7 @@ function sortAfterInheritanceOrder(locationId1, locationId2, locationIdPage) {
52
53
  const inheritanceRoot1 = getInheritanceRoot(locationId1);
53
54
  const inheritanceRoot2 = getInheritanceRoot(locationId2);
54
55
  const inheritanceRootPage = getInheritanceRoot(locationIdPage);
55
- // sortAfterInheritanceOrder() only works if both locationId1 and locationId2 are inherited by the same page
56
+ // Only works if both locationId1 and locationId2 are inherited by the same page
56
57
  (0, utils_js_1.assert)(isInherited(locationId1, locationIdPage));
57
58
  (0, utils_js_1.assert)(isInherited(locationId2, locationIdPage));
58
59
  // Equivalent assertion (see isInherited() implementation)
@@ -11,7 +11,7 @@ const resolvePointerImport_js_1 = require("./resolvePointerImport.js");
11
11
  const getFilePath_js_1 = require("../../../../shared/getFilePath.js");
12
12
  const assertExtensions_js_1 = require("./assertExtensions.js");
13
13
  async function getPlusFilesAll(userRootDir, esbuildCache) {
14
- const plusFiles = await findPlusFiles(userRootDir, null);
14
+ const plusFiles = await findPlusFiles(userRootDir);
15
15
  const configFiles = [];
16
16
  const valueFiles = [];
17
17
  plusFiles.forEach((f) => {
@@ -114,8 +114,8 @@ function getPlusFileFromConfigFile(configFile, isExtensionConfig, locationId, us
114
114
  function sortMakeDeterministic(plusFile1, plusFile2) {
115
115
  return plusFile1.filePath.filePathAbsoluteVite < plusFile2.filePath.filePathAbsoluteVite ? -1 : 1;
116
116
  }
117
- async function findPlusFiles(userRootDir, outDirRoot) {
118
- const files = await (0, crawlPlusFiles_js_1.crawlPlusFiles)(userRootDir, outDirRoot);
117
+ async function findPlusFiles(userRootDir) {
118
+ const files = await (0, crawlPlusFiles_js_1.crawlPlusFiles)(userRootDir);
119
119
  const plusFiles = files.map(({ filePathAbsoluteUserRootDir }) => (0, getFilePath_js_1.getFilePathResolved)({ filePathAbsoluteUserRootDir, userRootDir }));
120
120
  return plusFiles;
121
121
  }
@@ -15,13 +15,14 @@ const import_1 = require("@brillout/import");
15
15
  const utils_js_1 = require("../../../../utils.js");
16
16
  const transformPointerImports_js_1 = require("./transformPointerImports.js");
17
17
  const getVikeConfig_js_1 = require("../getVikeConfig.js");
18
- require("source-map-support/register.js");
18
+ const source_map_support_1 = __importDefault(require("source-map-support"));
19
19
  const getFilePath_js_1 = require("../../../../shared/getFilePath.js");
20
20
  const module_1 = require("module");
21
- // @ts-ignore Shimmed by dist-cjs-fixup.js for CJS build.
21
+ // @ts-ignore `file://${__filename}` is shimmed at dist/cjs by dist-cjs-fixup.js.
22
22
  const importMetaUrl = `file://${__filename}`;
23
23
  const require_ = (0, module_1.createRequire)(importMetaUrl);
24
24
  (0, utils_js_1.assertIsNotProductionRuntime)();
25
+ installSourceMapSupport();
25
26
  const debug = (0, utils_js_1.createDebugger)('vike:pointer-imports');
26
27
  const debugEsbuildResolve = (0, utils_js_1.createDebugger)('vike:esbuild-resolve');
27
28
  if (debugEsbuildResolve.isActivated)
@@ -168,14 +169,17 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
168
169
  // - vike@0.4.162 started soft-requiring Vike extensions to set the name config.
169
170
  // - In practice, it seems like it requires some (non-trivial?) refactoring.
170
171
  isVikeExtensionImport;
172
+ // Externalize npm package imports
171
173
  (0, utils_js_1.assertPosixPath)(importPathResolved);
172
- const isNodeModules = importPathResolved.includes('/node_modules/');
174
+ const isNpmPkgImport = importPathResolved.includes('/node_modules/') ||
175
+ // Linked npm packages
176
+ !importPathResolved.startsWith(userRootDir);
173
177
  const isExternal = isPointerImport ||
174
178
  // Performance: npm package imports can be externalized. (We could as well let esbuild transpile /node_modules/ code but it's useless as /node_modules/ code is already built. It would unnecessarily slow down transpilation.)
175
- isNodeModules;
179
+ isNpmPkgImport;
176
180
  if (!isExternal) {
177
181
  // User-land config code (i.e. not runtime code) => let esbuild transpile it
178
- (0, utils_js_1.assert)(!isPointerImport && !isNodeModules);
182
+ (0, utils_js_1.assert)(!isPointerImport && !isNpmPkgImport);
179
183
  if (debug.isActivated)
180
184
  debug('onResolved()', { args, resolved, isPointerImport, isExternal });
181
185
  return resolved;
@@ -194,7 +198,7 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
194
198
  userRootDir
195
199
  });
196
200
  // We assuming that path aliases always resolve inside `userRootDir`.
197
- if (filePathAbsoluteUserRootDir && !isNodeModules) {
201
+ if (filePathAbsoluteUserRootDir && !isNpmPkgImport) {
198
202
  // `importPathOriginal` is a path alias.
199
203
  // - We have to use esbuild's path alias resolution, because:
200
204
  // - Vike doesn't resolve path aliases at all.
@@ -216,7 +220,7 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
216
220
  // Import of runtime code => handled by Vike
217
221
  isPointerImport ||
218
222
  // Import of config code => loaded by Node.js at build-time
219
- isNodeModules);
223
+ isNpmPkgImport);
220
224
  pointerImports[importPathTranspiled] = isPointerImport;
221
225
  return { external: true, path: importPathTranspiled };
222
226
  });
@@ -403,3 +407,11 @@ function cleanEsbuildErrors(errors) {
403
407
  // ```
404
408
  !note.text.includes('as external to exclude it from the bundle'))));
405
409
  }
410
+ function installSourceMapSupport() {
411
+ // Don't break Vitest's source mapping
412
+ if ((0, utils_js_1.isVitest)())
413
+ return;
414
+ // How about other test runners?
415
+ // Should we call installSourceMapSupport() lazily in transpileAndExecuteFile() instead?
416
+ source_map_support_1.default.install();
417
+ }