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
@@ -1,53 +1,45 @@
1
1
  export { crawlPlusFiles };
2
2
  export { isPlusFile };
3
3
  export { getPlusFileValueConfigName };
4
- import { assertPosixPath, assert, scriptFileExtensions, assertIsSingleModuleInstance, assertIsNotProductionRuntime, isVersionOrAbove, isScriptFile, scriptFileExtensionList, createDebugger, deepEqual, assertUsage } from '../../../../utils.js';
4
+ import { assertPosixPath, assert, scriptFileExtensions, assertIsSingleModuleInstance, assertIsNotProductionRuntime, isVersionOrAbove, isScriptFile, scriptFileExtensionList, createDebugger, deepEqual, assertUsage, assertFilePathAbsoluteFilesystem, assertWarning, hasProp, isNotNullish } from '../../../../utils.js';
5
5
  import path from 'path';
6
- import glob from 'fast-glob';
6
+ import { glob } from 'tinyglobby';
7
7
  import { exec } from 'child_process';
8
8
  import { promisify } from 'util';
9
9
  import { isTemporaryBuildFile } from './transpileAndExecuteFile.js';
10
10
  import { getEnvVarObject } from '../../../../shared/getEnvVarObject.js';
11
+ import pc from '@brillout/picocolors';
12
+ import picomatch from 'picomatch';
13
+ import { ignorePatternsBuiltIn } from './crawlPlusFiles/ignorePatternsBuiltIn.js';
11
14
  const execA = promisify(exec);
12
15
  const debug = createDebugger('vike:crawl');
13
16
  assertIsNotProductionRuntime();
14
17
  assertIsSingleModuleInstance('getVikeConfig/crawlPlusFiles.ts');
15
18
  let gitIsNotUsable = false;
16
- async function crawlPlusFiles(userRootDir, outDirAbsoluteFilesystem) {
19
+ async function crawlPlusFiles(userRootDir) {
17
20
  assertPosixPath(userRootDir);
18
- //*/
19
- const outDirRelativeFromUserRootDir = null;
20
- /*/
21
- assertPosixPath(outDirAbsoluteFilesystem)
22
- let outDirRelativeFromUserRootDir: string | null = path.posix.relative(userRootDir, outDirAbsoluteFilesystem)
23
- if (outDirRelativeFromUserRootDir.startsWith('../')) {
24
- // config.outDir is outside of config.root => it's going to be ignored anyways
25
- outDirRelativeFromUserRootDir = null
26
- }
27
- //*/
28
- assert(outDirRelativeFromUserRootDir === null ||
29
- /* Not true if outDirRelativeFromUserRootDir starts with a hidden directory (i.e. a directory with a name that starts with `.`)
30
- !outDirRelativeFromUserRootDir.startsWith('.') &&
31
- */
32
- (!outDirRelativeFromUserRootDir.startsWith('./') &&
33
- //
34
- !outDirRelativeFromUserRootDir.startsWith('../')));
21
+ assertFilePathAbsoluteFilesystem(userRootDir);
22
+ const userSettings = getUserSettings();
23
+ const { ignorePatterns, ignoreMatchers } = getIgnore(userSettings);
35
24
  // Crawl
36
- const filesGit = !isGitCrawlDisabled() && (await gitLsFiles(userRootDir, outDirRelativeFromUserRootDir));
25
+ const filesGit = userSettings.git !== false && (await gitLsFiles(userRootDir, ignorePatterns, ignoreMatchers));
37
26
  const filesGitNothingFound = !filesGit || filesGit.length === 0;
38
- const filesGlob = (filesGitNothingFound || debug.isActivated) && (await fastGlob(userRootDir, outDirRelativeFromUserRootDir));
27
+ const filesGlob = (filesGitNothingFound || debug.isActivated) && (await tinyglobby(userRootDir, ignorePatterns));
39
28
  let files = !filesGitNothingFound
40
29
  ? filesGit
41
- : // 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.)
30
+ : // Fallback to tinyglobby for users that dynamically generate plus files. (Assuming that no plus file is found because of the user's .gitignore list.)
42
31
  filesGlob;
43
32
  assert(files);
44
- if (debug.isActivated)
45
- assert(deepEqual(filesGlob, filesGit), "Git and glob results aren't matching.");
33
+ if (debug.isActivated) {
34
+ assert(filesGit);
35
+ assert(filesGlob);
36
+ assertWarning(deepEqual(filesGlob.slice().sort(), filesGit.slice().sort()), "Git and glob results aren't matching.", { onlyOnce: false });
37
+ }
46
38
  // Filter build files
47
39
  files = files.filter((filePath) => !isTemporaryBuildFile(filePath));
48
40
  // Normalize
49
41
  const plusFiles = files.map((filePath) => {
50
- // Both `$ git-ls files` and fast-glob return posix paths
42
+ // Both `$ git-ls files` and tinyglobby return posix paths
51
43
  assertPosixPath(filePath);
52
44
  assert(!filePath.startsWith(userRootDir));
53
45
  const filePathAbsoluteUserRootDir = path.posix.join('/', filePath);
@@ -56,8 +48,8 @@ async function crawlPlusFiles(userRootDir, outDirAbsoluteFilesystem) {
56
48
  });
57
49
  return plusFiles;
58
50
  }
59
- // Same as fastGlob() but using `$ git ls-files`
60
- async function gitLsFiles(userRootDir, outDirRelativeFromUserRootDir) {
51
+ // Same as tinyglobby() but using `$ git ls-files`
52
+ async function gitLsFiles(userRootDir, ignorePatterns, ignoreMatchers) {
61
53
  if (gitIsNotUsable)
62
54
  return null;
63
55
  // Preserve UTF-8 file paths.
@@ -65,8 +57,6 @@ async function gitLsFiles(userRootDir, outDirRelativeFromUserRootDir) {
65
57
  // https://stackoverflow.com/questions/22827239/how-to-make-git-properly-display-utf-8-encoded-pathnames-in-the-console-window/22828826#22828826
66
58
  // https://stackoverflow.com/questions/15884180/how-do-i-override-git-configuration-options-by-command-line-parameters/15884261#15884261
67
59
  const preserveUTF8 = '-c core.quotepath=off';
68
- const ignoreAsPatterns = getIgnoreAsPatterns(outDirRelativeFromUserRootDir);
69
- const ignoreAsFilterFn = getIgnoreAsFilterFn(outDirRelativeFromUserRootDir);
70
60
  const cmd = [
71
61
  'git',
72
62
  preserveUTF8,
@@ -76,7 +66,7 @@ async function gitLsFiles(userRootDir, outDirRelativeFromUserRootDir) {
76
66
  // Performance gain is non-negligible.
77
67
  // - https://github.com/vikejs/vike/pull/1688#issuecomment-2166206648
78
68
  // - When node_modules/ is untracked the performance gain could be significant?
79
- ...ignoreAsPatterns.map((pattern) => `--exclude="${pattern}"`),
69
+ ...ignorePatterns.map((pattern) => `--exclude="${pattern}"`),
80
70
  // --others --exclude-standard => list untracked files (--others) while using .gitignore (--exclude-standard)
81
71
  // --cached => list tracked files
82
72
  '--others --exclude-standard --cached'
@@ -111,7 +101,7 @@ async function gitLsFiles(userRootDir, outDirRelativeFromUserRootDir) {
111
101
  if (!path.posix.basename(filePath).startsWith('+'))
112
102
  continue;
113
103
  // 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.)
114
- if (!ignoreAsFilterFn(filePath))
104
+ if (ignoreMatchers.some((m) => m(filePath)))
115
105
  continue;
116
106
  // JavaScript file?
117
107
  if (!isScriptFile(filePath))
@@ -123,11 +113,11 @@ async function gitLsFiles(userRootDir, outDirRelativeFromUserRootDir) {
123
113
  }
124
114
  return files;
125
115
  }
126
- // Same as gitLsFiles() but using fast-glob
127
- async function fastGlob(userRootDir, outDirRelativeFromUserRootDir) {
116
+ // Same as gitLsFiles() but using tinyglobby
117
+ async function tinyglobby(userRootDir, ignorePatterns) {
128
118
  const pattern = `**/+*.${scriptFileExtensions}`;
129
119
  const options = {
130
- ignore: getIgnoreAsPatterns(outDirRelativeFromUserRootDir),
120
+ ignore: ignorePatterns,
131
121
  cwd: userRootDir,
132
122
  dot: false
133
123
  };
@@ -142,32 +132,6 @@ async function fastGlob(userRootDir, outDirRelativeFromUserRootDir) {
142
132
  }
143
133
  return files;
144
134
  }
145
- // Same as getIgnoreAsFilterFn() but as glob pattern
146
- function getIgnoreAsPatterns(outDirRelativeFromUserRootDir) {
147
- const ignoreAsPatterns = [
148
- '**/node_modules/**',
149
- '**/ejected/**',
150
- // Allow:
151
- // ```
152
- // +Page.js
153
- // +Page.telefunc.js
154
- // ```
155
- '**/*.telefunc.*'
156
- ];
157
- if (outDirRelativeFromUserRootDir) {
158
- assert(!outDirRelativeFromUserRootDir.startsWith('/'));
159
- ignoreAsPatterns.push(`${outDirRelativeFromUserRootDir}/**`);
160
- }
161
- return ignoreAsPatterns;
162
- }
163
- // Same as getIgnoreAsPatterns() but for Array.filter()
164
- function getIgnoreAsFilterFn(outDirRelativeFromUserRootDir) {
165
- assert(outDirRelativeFromUserRootDir === null || !outDirRelativeFromUserRootDir.startsWith('/'));
166
- return (file) => !file.includes('node_modules/') &&
167
- !file.includes('ejected/') &&
168
- !file.includes('.telefunc.') &&
169
- (outDirRelativeFromUserRootDir === null || !file.startsWith(`${outDirRelativeFromUserRootDir}/`));
170
- }
171
135
  // Whether Git is installed and whether we can use it
172
136
  async function isGitNotUsable(userRootDir) {
173
137
  // Check Git version
@@ -222,9 +186,19 @@ async function runCmd2(cmd, cwd) {
222
186
  stderr = stderr.toString().trim();
223
187
  return { stdout, stderr };
224
188
  }
225
- function isGitCrawlDisabled() {
226
- const crawSettings = getEnvVarObject('VIKE_CRAWL');
227
- return crawSettings?.git === false;
189
+ function getUserSettings() {
190
+ const userSettings = getEnvVarObject('VIKE_CRAWL') ?? {};
191
+ const wrongUsage = (settingName, settingType) => `Setting ${pc.cyan(settingName)} in VIKE_CRAWL should be a ${pc.cyan(settingType)}`;
192
+ assertUsage(hasProp(userSettings, 'git', 'boolean') || hasProp(userSettings, 'git', 'undefined'), wrongUsage('git', 'boolean'));
193
+ assertUsage(hasProp(userSettings, 'ignore', 'string[]') ||
194
+ hasProp(userSettings, 'ignore', 'string') ||
195
+ hasProp(userSettings, 'ignore', 'undefined'), wrongUsage('git', 'string or an array of strings'));
196
+ assertUsage(hasProp(userSettings, 'ignoreBuiltIn', 'boolean') || hasProp(userSettings, 'ignoreBuiltIn', 'undefined'), wrongUsage('ignoreBuiltIn', 'boolean'));
197
+ const settingNames = ['git', 'ignore', 'ignoreBuiltIn'];
198
+ Object.keys(userSettings).forEach((name) => {
199
+ assertUsage(settingNames.includes(name), `Unknown setting ${pc.bold(pc.red(name))} in VIKE_CRAWL`);
200
+ });
201
+ return userSettings;
228
202
  }
229
203
  function isPlusFile(filePath) {
230
204
  assertPosixPath(filePath);
@@ -260,3 +234,15 @@ function assertNoUnexpectedPlusSign(filePath: string, fileName: string) {
260
234
  )
261
235
  }
262
236
  */
237
+ function getIgnore(userSettings) {
238
+ const ignorePatternsSetByUser = [userSettings.ignore].flat().filter(isNotNullish);
239
+ const { ignoreBuiltIn } = userSettings;
240
+ const ignorePatterns = [...(ignoreBuiltIn === false ? [] : ignorePatternsBuiltIn), ...ignorePatternsSetByUser];
241
+ const ignoreMatchers = ignorePatterns.map((p) => picomatch(p, {
242
+ // We must pass the same settings than tinyglobby
243
+ // https://github.com/SuperchupuDev/tinyglobby/blob/fcfb08a36c3b4d48d5488c21000c95a956d9797c/src/index.ts#L191-L194
244
+ dot: false,
245
+ nocase: false
246
+ }));
247
+ return { ignorePatterns, ignoreMatchers };
248
+ }
@@ -40,6 +40,7 @@ function getLogicalPath(locationId, ignoredDirs, removeParenthesesDirs) {
40
40
  assertIsPath(logicalPath);
41
41
  return logicalPath;
42
42
  }
43
+ // See getPlusFilesRelevant() and getPlusFilesOrdered()
43
44
  function sortAfterInheritanceOrder(locationId1, locationId2, locationIdPage) {
44
45
  assertLocationId(locationId1);
45
46
  assertLocationId(locationId2);
@@ -48,7 +49,7 @@ function sortAfterInheritanceOrder(locationId1, locationId2, locationIdPage) {
48
49
  const inheritanceRoot1 = getInheritanceRoot(locationId1);
49
50
  const inheritanceRoot2 = getInheritanceRoot(locationId2);
50
51
  const inheritanceRootPage = getInheritanceRoot(locationIdPage);
51
- // sortAfterInheritanceOrder() only works if both locationId1 and locationId2 are inherited by the same page
52
+ // Only works if both locationId1 and locationId2 are inherited by the same page
52
53
  assert(isInherited(locationId1, locationIdPage));
53
54
  assert(isInherited(locationId2, locationIdPage));
54
55
  // Equivalent assertion (see isInherited() implementation)
@@ -9,7 +9,7 @@ import { resolvePointerImport } from './resolvePointerImport.js';
9
9
  import { getFilePathResolved } from '../../../../shared/getFilePath.js';
10
10
  import { assertExtensionsConventions } from './assertExtensions.js';
11
11
  async function getPlusFilesAll(userRootDir, esbuildCache) {
12
- const plusFiles = await findPlusFiles(userRootDir, null);
12
+ const plusFiles = await findPlusFiles(userRootDir);
13
13
  const configFiles = [];
14
14
  const valueFiles = [];
15
15
  plusFiles.forEach((f) => {
@@ -112,8 +112,8 @@ function getPlusFileFromConfigFile(configFile, isExtensionConfig, locationId, us
112
112
  function sortMakeDeterministic(plusFile1, plusFile2) {
113
113
  return plusFile1.filePath.filePathAbsoluteVite < plusFile2.filePath.filePathAbsoluteVite ? -1 : 1;
114
114
  }
115
- async function findPlusFiles(userRootDir, outDirRoot) {
116
- const files = await crawlPlusFiles(userRootDir, outDirRoot);
115
+ async function findPlusFiles(userRootDir) {
116
+ const files = await crawlPlusFiles(userRootDir);
117
117
  const plusFiles = files.map(({ filePathAbsoluteUserRootDir }) => getFilePathResolved({ filePathAbsoluteUserRootDir, userRootDir }));
118
118
  return plusFiles;
119
119
  }
@@ -3,7 +3,6 @@ export { getConfigBuildErrorFormatted };
3
3
  export { getConfigExecutionErrorIntroMsg };
4
4
  export { isTemporaryBuildFile };
5
5
  export type { EsbuildCache };
6
- import 'source-map-support/register.js';
7
6
  import type { FilePathResolved } from '../../../../../../shared/page-configs/FilePath.js';
8
7
  type FileExports = {
9
8
  fileExports: Record<string, unknown>;
@@ -7,16 +7,17 @@ import fs from 'fs';
7
7
  import path from 'path';
8
8
  import pc from '@brillout/picocolors';
9
9
  import { import_ } from '@brillout/import';
10
- import { assertPosixPath, getRandomId, assertIsNotProductionRuntime, assert, assertWarning, isObject, toPosixPath, assertUsage, isPlainJavaScriptFile, createDebugger, assertFilePathAbsoluteFilesystem, assertIsNpmPackageImport, genPromise } from '../../../../utils.js';
10
+ import { assertPosixPath, getRandomId, assertIsNotProductionRuntime, assert, assertWarning, isObject, toPosixPath, assertUsage, isPlainJavaScriptFile, createDebugger, assertFilePathAbsoluteFilesystem, assertIsNpmPackageImport, genPromise, isVitest } from '../../../../utils.js';
11
11
  import { transformPointerImports } from './transformPointerImports.js';
12
12
  import { vikeConfigDependencies } from '../getVikeConfig.js';
13
- import 'source-map-support/register.js';
13
+ import sourceMapSupport from 'source-map-support';
14
14
  import { getFilePathAbsoluteUserRootDir } from '../../../../shared/getFilePath.js';
15
15
  import { createRequire } from 'module';
16
- // @ts-ignore Shimmed by dist-cjs-fixup.js for CJS build.
16
+ // @ts-ignore import.meta.url is shimmed at dist/cjs by dist-cjs-fixup.js.
17
17
  const importMetaUrl = import.meta.url;
18
18
  const require_ = createRequire(importMetaUrl);
19
19
  assertIsNotProductionRuntime();
20
+ installSourceMapSupport();
20
21
  const debug = createDebugger('vike:pointer-imports');
21
22
  const debugEsbuildResolve = createDebugger('vike:esbuild-resolve');
22
23
  if (debugEsbuildResolve.isActivated)
@@ -163,14 +164,17 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
163
164
  // - vike@0.4.162 started soft-requiring Vike extensions to set the name config.
164
165
  // - In practice, it seems like it requires some (non-trivial?) refactoring.
165
166
  isVikeExtensionImport;
167
+ // Externalize npm package imports
166
168
  assertPosixPath(importPathResolved);
167
- const isNodeModules = importPathResolved.includes('/node_modules/');
169
+ const isNpmPkgImport = importPathResolved.includes('/node_modules/') ||
170
+ // Linked npm packages
171
+ !importPathResolved.startsWith(userRootDir);
168
172
  const isExternal = isPointerImport ||
169
173
  // 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.)
170
- isNodeModules;
174
+ isNpmPkgImport;
171
175
  if (!isExternal) {
172
176
  // User-land config code (i.e. not runtime code) => let esbuild transpile it
173
- assert(!isPointerImport && !isNodeModules);
177
+ assert(!isPointerImport && !isNpmPkgImport);
174
178
  if (debug.isActivated)
175
179
  debug('onResolved()', { args, resolved, isPointerImport, isExternal });
176
180
  return resolved;
@@ -189,7 +193,7 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
189
193
  userRootDir
190
194
  });
191
195
  // We assuming that path aliases always resolve inside `userRootDir`.
192
- if (filePathAbsoluteUserRootDir && !isNodeModules) {
196
+ if (filePathAbsoluteUserRootDir && !isNpmPkgImport) {
193
197
  // `importPathOriginal` is a path alias.
194
198
  // - We have to use esbuild's path alias resolution, because:
195
199
  // - Vike doesn't resolve path aliases at all.
@@ -211,7 +215,7 @@ async function transpileWithEsbuild(filePath, userRootDir, transformImports) {
211
215
  // Import of runtime code => handled by Vike
212
216
  isPointerImport ||
213
217
  // Import of config code => loaded by Node.js at build-time
214
- isNodeModules);
218
+ isNpmPkgImport);
215
219
  pointerImports[importPathTranspiled] = isPointerImport;
216
220
  return { external: true, path: importPathTranspiled };
217
221
  });
@@ -398,3 +402,11 @@ function cleanEsbuildErrors(errors) {
398
402
  // ```
399
403
  !note.text.includes('as external to exclude it from the bundle'))));
400
404
  }
405
+ function installSourceMapSupport() {
406
+ // Don't break Vitest's source mapping
407
+ if (isVitest())
408
+ return;
409
+ // How about other test runners?
410
+ // Should we call installSourceMapSupport() lazily in transpileAndExecuteFile() instead?
411
+ sourceMapSupport.install();
412
+ }
@@ -5,10 +5,11 @@ export { vikeConfigDependencies };
5
5
  export { isV1Design };
6
6
  export { getConfVal };
7
7
  export { getConfigDefinitionOptional };
8
+ export { isOverriden };
8
9
  export type { VikeConfigObject };
9
- import type { PageConfigGlobalBuildTime, PageConfigBuildTime } from '../../../../../shared/page-configs/PageConfig.js';
10
+ import type { PageConfigGlobalBuildTime, ConfigValueSource, PageConfigBuildTime } from '../../../../../shared/page-configs/PageConfig.js';
10
11
  import { type ConfigDefinitions, type ConfigDefinitionInternal } from './getVikeConfig/configDefinitionsBuiltIn.js';
11
- import type { ResolvedConfig } from 'vite';
12
+ import type { ResolvedConfig, UserConfig } from 'vite';
12
13
  import { type PageConfigUserFriendly, type PageConfigsUserFriendly } from '../../../../../shared/page-configs/getPageConfigUserFriendly.js';
13
14
  import { type PlusFile } from './getVikeConfig/getPlusFilesAll.js';
14
15
  type VikeConfigObject = {
@@ -23,11 +24,12 @@ declare function getVikeConfig(config: ResolvedConfig, { doNotRestartViteOnError
23
24
  doNotRestartViteOnError?: true;
24
25
  }): Promise<VikeConfigObject>;
25
26
  declare function getVikeConfig2(userRootDir: string, isDev: boolean, vikeVitePluginOptions: unknown): Promise<VikeConfigObject>;
26
- declare function isV1Design(config: ResolvedConfig): Promise<boolean>;
27
+ declare function isV1Design(config: ResolvedConfig | UserConfig): boolean;
27
28
  declare function getConfigDefinitionOptional(configDefinitions: ConfigDefinitions, configName: string): ConfigDefinitionInternal | null;
28
29
  declare function getConfVal(plusFile: PlusFile, configName: string): null | {
29
- configValue: unknown;
30
- configValueLoaded: true;
30
+ value: unknown;
31
+ valueIsLoaded: true;
31
32
  } | {
32
- configValueLoaded: false;
33
+ valueIsLoaded: false;
33
34
  };
35
+ declare function isOverriden(source: ConfigValueSource, configName: string, pageConfig: PageConfigBuildTime | PageConfigGlobalBuildTime): boolean;