vike 0.4.143 → 0.4.144-commit-68c730d
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.
- package/dist/cjs/node/plugin/index.js +2 -2
- package/dist/cjs/node/plugin/plugins/buildConfig.js +1 -1
- package/dist/cjs/node/plugin/plugins/config/index.js +1 -1
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +31 -30
- package/dist/cjs/node/plugin/plugins/importUserCode/generateEagerImport.js +19 -8
- package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +19 -10
- package/dist/cjs/node/plugin/plugins/importUserCode/index.js +4 -4
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getFilePathToShowToUser.js +7 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +4 -4
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +251 -209
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +11 -35
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +60 -95
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/helpers.js +12 -5
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +18 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.js +25 -25
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.js +25 -24
- package/dist/cjs/node/plugin/shared/findPageFiles.js +2 -1
- package/dist/cjs/node/plugin/shared/{getConfigValueSource.js → getConfigValueSourcesRelevant.js} +1 -12
- package/dist/cjs/node/plugin/shared/loggerNotProd.js +1 -1
- package/dist/cjs/node/plugin/utils.js +2 -3
- package/dist/cjs/node/prerender/runPrerender.js +18 -20
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +1 -1
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +2 -2
- package/dist/cjs/node/runtime/renderPage/loadPageFilesServerSide.js +2 -2
- package/dist/cjs/node/runtime/renderPage/log404/index.js +10 -5
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -2
- package/dist/cjs/node/runtime/renderPage.js +1 -1
- package/dist/cjs/node/shared/getClientEntryFilePath.js +1 -7
- package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/cjs/shared/error-page.js +1 -1
- package/dist/cjs/shared/getPageFiles/getExports.js +8 -11
- package/dist/cjs/shared/getPageFiles/parseGlobResults.js +10 -44
- package/dist/cjs/shared/hooks/getHook.js +3 -1
- package/dist/cjs/shared/page-configs/assertExports.js +60 -0
- package/dist/cjs/shared/page-configs/getExportPath.js +9 -10
- package/dist/cjs/shared/page-configs/loadConfigValues.js +18 -0
- package/dist/cjs/shared/page-configs/serialize/PageConfigSerialized.js +2 -0
- package/dist/cjs/shared/page-configs/serialize/assertPageConfigs.js +19 -0
- package/dist/cjs/shared/page-configs/serialize/parseConfigValuesImported.js +56 -0
- package/dist/cjs/shared/page-configs/serialize/parsePageConfigs.js +65 -0
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValue.js +58 -0
- package/dist/cjs/shared/page-configs/utils.js +65 -42
- package/dist/cjs/shared/route/loadPageRoutes.js +12 -15
- package/dist/cjs/shared/route/resolveRedirects.js +1 -1
- package/dist/cjs/shared/route/resolveRouteFunction.js +1 -0
- package/dist/cjs/shared/utils.js +0 -1
- package/dist/cjs/utils/getFilePathAbsolute.js +11 -11
- package/dist/cjs/utils/getOutDirs.js +25 -18
- package/dist/cjs/utils/getValuePrintable.js +1 -1
- package/dist/cjs/utils/objectAssign.js +3 -1
- package/dist/cjs/utils/parseUrl.js +1 -1
- package/dist/cjs/utils/projectInfo.js +1 -1
- package/dist/cjs/utils/{resolve.js → requireResolve.js} +3 -3
- package/dist/cjs/utils/warnIfErrorIsNotObject.js +1 -1
- package/dist/esm/__internal/index.d.ts +3 -3
- package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/getPageContext.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/getPageId.d.ts +2 -2
- package/dist/esm/client/client-routing-runtime/useClientRouter.js +3 -3
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +1 -1
- package/dist/esm/client/shared/executeOnRenderClientHook.d.ts +2 -2
- package/dist/esm/client/shared/loadPageFilesClientSide.d.ts +2 -2
- package/dist/esm/client/shared/loadPageFilesClientSide.js +2 -2
- package/dist/esm/client/shared/preparePageContextForUserConsumptionClientSide.d.ts +2 -2
- package/dist/esm/node/plugin/index.js +3 -2
- package/dist/esm/node/plugin/plugins/buildConfig.js +2 -2
- package/dist/esm/node/plugin/plugins/config/index.js +2 -2
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +31 -30
- package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.d.ts +13 -2
- package/dist/esm/node/plugin/plugins/importUserCode/generateEagerImport.js +19 -8
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +20 -11
- package/dist/esm/node/plugin/plugins/importUserCode/index.js +5 -5
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getFilePathToShowToUser.d.ts +20 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getFilePathToShowToUser.js +7 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +5 -4
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +4 -4
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +4 -4
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +252 -210
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigValuesAll.js +11 -32
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.d.ts +3 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVirtualFilePageConfigs.js +60 -95
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/helpers.d.ts +3 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/helpers.js +12 -5
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.d.ts +7 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isRuntimeEnvMatch.js +15 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.d.ts +18 -6
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/replaceImportStatements.js +25 -25
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.d.ts +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/transpileAndExecuteFile.js +25 -24
- package/dist/esm/node/plugin/shared/findPageFiles.js +3 -2
- package/dist/esm/node/plugin/shared/{getConfigValueSource.d.ts → getConfigValueSourcesRelevant.d.ts} +0 -2
- package/dist/esm/node/plugin/shared/{getConfigValueSource.js → getConfigValueSourcesRelevant.js} +0 -11
- package/dist/esm/node/plugin/shared/loggerNotProd.js +2 -2
- package/dist/esm/node/plugin/utils.d.ts +1 -2
- package/dist/esm/node/plugin/utils.js +2 -3
- package/dist/esm/node/prerender/runPrerender.js +20 -22
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +1 -1
- package/dist/esm/node/runtime/html/injectAssets.d.ts +2 -2
- package/dist/esm/node/runtime/html/serializePageContextClientSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/analyzePage.js +2 -2
- package/dist/esm/node/runtime/renderPage/createHttpResponseObject.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/debugPageFiles.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/loadPageFilesServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/loadPageFilesServerSide.js +2 -2
- package/dist/esm/node/runtime/renderPage/log404/index.js +10 -5
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +13 -13
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -2
- package/dist/esm/node/runtime/renderPage.js +1 -1
- package/dist/esm/node/shared/getClientEntryFilePath.d.ts +2 -2
- package/dist/esm/node/shared/getClientEntryFilePath.js +2 -8
- package/dist/esm/shared/addIs404ToPageProps.d.ts +2 -2
- package/dist/esm/shared/addUrlComputedProps.d.ts +4 -2
- package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/esm/shared/error-page.d.ts +3 -3
- package/dist/esm/shared/error-page.js +1 -1
- package/dist/esm/shared/getPageFiles/analyzeClientSide.d.ts +2 -2
- package/dist/esm/shared/getPageFiles/getExports.d.ts +3 -4
- package/dist/esm/shared/getPageFiles/getExports.js +7 -10
- package/dist/esm/shared/getPageFiles/parseGlobResults.d.ts +3 -3
- package/dist/esm/shared/getPageFiles/parseGlobResults.js +9 -43
- package/dist/esm/shared/getPageFiles/setPageFiles.d.ts +3 -3
- package/dist/esm/shared/hooks/getHook.js +3 -1
- package/dist/esm/shared/page-configs/Config.d.ts +201 -14
- package/dist/esm/shared/page-configs/PageConfig.d.ts +80 -73
- package/dist/esm/shared/page-configs/assertExports.d.ts +6 -0
- package/dist/esm/shared/page-configs/assertExports.js +54 -0
- package/dist/esm/shared/page-configs/findPageConfig.d.ts +2 -2
- package/dist/esm/shared/page-configs/getExportPath.d.ts +1 -1
- package/dist/esm/shared/page-configs/getExportPath.js +9 -10
- package/dist/esm/shared/page-configs/loadConfigValues.d.ts +3 -0
- package/dist/esm/shared/page-configs/loadConfigValues.js +15 -0
- package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.d.ts +32 -0
- package/dist/esm/shared/page-configs/serialize/PageConfigSerialized.js +1 -0
- package/dist/esm/shared/page-configs/serialize/assertPageConfigs.d.ts +5 -0
- package/dist/esm/shared/page-configs/serialize/assertPageConfigs.js +16 -0
- package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.d.ts +4 -0
- package/dist/esm/shared/page-configs/serialize/parseConfigValuesImported.js +50 -0
- package/dist/esm/shared/page-configs/serialize/parsePageConfigs.d.ts +7 -0
- package/dist/esm/shared/page-configs/serialize/parsePageConfigs.js +62 -0
- package/dist/esm/shared/page-configs/serialize/serializeConfigValue.d.ts +8 -0
- package/dist/esm/shared/page-configs/serialize/serializeConfigValue.js +52 -0
- package/dist/esm/shared/page-configs/utils.d.ts +21 -14
- package/dist/esm/shared/page-configs/utils.js +64 -41
- package/dist/esm/shared/route/executeGuardHook.d.ts +2 -2
- package/dist/esm/shared/route/index.d.ts +3 -3
- package/dist/esm/shared/route/loadPageRoutes.d.ts +2 -2
- package/dist/esm/shared/route/loadPageRoutes.js +13 -16
- package/dist/esm/shared/route/resolveRedirects.js +1 -1
- package/dist/esm/shared/route/resolveRouteFunction.js +1 -0
- package/dist/esm/shared/types.d.ts +8 -6
- package/dist/esm/shared/utils.d.ts +0 -1
- package/dist/esm/shared/utils.js +0 -1
- package/dist/esm/types/index.d.ts +2 -1
- package/dist/esm/utils/getFilePathAbsolute.d.ts +1 -1
- package/dist/esm/utils/getFilePathAbsolute.js +11 -11
- package/dist/esm/utils/getOutDirs.d.ts +0 -2
- package/dist/esm/utils/getOutDirs.js +24 -17
- package/dist/esm/utils/getValuePrintable.js +1 -1
- package/dist/esm/utils/objectAssign.js +3 -1
- package/dist/esm/utils/parseUrl.js +1 -1
- package/dist/esm/utils/projectInfo.d.ts +1 -1
- package/dist/esm/utils/projectInfo.js +1 -1
- package/dist/esm/utils/requireResolve.d.ts +2 -0
- package/dist/esm/utils/{resolve.js → requireResolve.js} +2 -2
- package/dist/esm/utils/warnIfErrorIsNotObject.js +1 -1
- package/package.json +2 -3
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/isConfigEnvMatch.js +0 -13
- package/dist/cjs/shared/getPageFiles/assertPageConfigs.js +0 -19
- package/dist/cjs/shared/page-configs/loadPageCode.js +0 -63
- package/dist/cjs/utils/assertDefaultExport.js +0 -53
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isConfigEnvMatch.d.ts +0 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/isConfigEnvMatch.js +0 -10
- package/dist/esm/shared/getPageFiles/assertPageConfigs.d.ts +0 -5
- package/dist/esm/shared/getPageFiles/assertPageConfigs.js +0 -16
- package/dist/esm/shared/page-configs/loadPageCode.d.ts +0 -3
- package/dist/esm/shared/page-configs/loadPageCode.js +0 -57
- package/dist/esm/utils/assertDefaultExport.d.ts +0 -8
- package/dist/esm/utils/assertDefaultExport.js +0 -47
- package/dist/esm/utils/resolve.d.ts +0 -2
- /package/dist/cjs/shared/getPageFiles/{assertExports.js → assert_exports_old_design.js} +0 -0
- /package/dist/esm/shared/getPageFiles/{assertExports.d.ts → assert_exports_old_design.d.ts} +0 -0
- /package/dist/esm/shared/getPageFiles/{assertExports.js → assert_exports_old_design.js} +0 -0
|
@@ -1,27 +1,28 @@
|
|
|
1
1
|
export { transpileAndExecuteFile };
|
|
2
2
|
export { getConfigBuildErrorFormatted };
|
|
3
|
-
export {
|
|
3
|
+
export { getConfigExecutionErrorIntroMsg as getConfigExecutionErrorIntroMsg };
|
|
4
4
|
export { isTmpFile };
|
|
5
5
|
import { build, formatMessages } from 'esbuild';
|
|
6
6
|
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,
|
|
10
|
+
import { assertPosixPath, getRandomId, assertIsNotProductionRuntime, assert, unique, assertWarning, isObject, toPosixPath, assertUsage } from '../../../utils.js';
|
|
11
11
|
import { isImportData, replaceImportStatements } from './replaceImportStatements.js';
|
|
12
12
|
import { vikeConfigDependencies } from './getVikeConfig.js';
|
|
13
13
|
import 'source-map-support/register.js';
|
|
14
14
|
import { getFilePathToShowToUser } from './getFilePathToShowToUser.js';
|
|
15
|
+
import { assertExportsOfConfigFile } from '../../../../../shared/page-configs/assertExports.js';
|
|
15
16
|
assertIsNotProductionRuntime();
|
|
16
17
|
async function transpileAndExecuteFile(filePath, isValueFile, userRootDir) {
|
|
17
18
|
const { code, fileImports } = await transpileFile(filePath, isValueFile, userRootDir);
|
|
18
|
-
const { fileExports } = await executeFile(filePath, code, fileImports);
|
|
19
|
+
const { fileExports } = await executeFile(filePath, code, fileImports, isValueFile);
|
|
19
20
|
return { fileExports };
|
|
20
21
|
}
|
|
21
22
|
async function transpileFile(filePath, isValueFile, userRootDir) {
|
|
22
|
-
const {
|
|
23
|
-
assertPosixPath(
|
|
24
|
-
vikeConfigDependencies.add(
|
|
23
|
+
const { filePathAbsoluteFilesystem } = filePath;
|
|
24
|
+
assertPosixPath(filePathAbsoluteFilesystem);
|
|
25
|
+
vikeConfigDependencies.add(filePathAbsoluteFilesystem);
|
|
25
26
|
let code = await transpileWithEsbuild(filePath, isValueFile, userRootDir);
|
|
26
27
|
let fileImports = null;
|
|
27
28
|
{
|
|
@@ -35,9 +36,9 @@ async function transpileFile(filePath, isValueFile, userRootDir) {
|
|
|
35
36
|
}
|
|
36
37
|
function transpileImports(codeOriginal, filePath, isValueFile) {
|
|
37
38
|
// Do we need to remove the imports?
|
|
38
|
-
const {
|
|
39
|
-
assertPosixPath(
|
|
40
|
-
const isHeader = isHeaderFile(
|
|
39
|
+
const { filePathAbsoluteFilesystem } = filePath;
|
|
40
|
+
assertPosixPath(filePathAbsoluteFilesystem);
|
|
41
|
+
const isHeader = isHeaderFile(filePathAbsoluteFilesystem);
|
|
41
42
|
const isPageConfigFile = !isValueFile;
|
|
42
43
|
if (!isHeader && !isPageConfigFile) {
|
|
43
44
|
return null;
|
|
@@ -59,7 +60,7 @@ function transpileImports(codeOriginal, filePath, isValueFile) {
|
|
|
59
60
|
return { code, fileImports };
|
|
60
61
|
}
|
|
61
62
|
async function transpileWithEsbuild(filePath, bundle, userRootDir) {
|
|
62
|
-
const entryFilePath = filePath.
|
|
63
|
+
const entryFilePath = filePath.filePathAbsoluteFilesystem;
|
|
63
64
|
const entryFileDir = path.posix.dirname(entryFilePath);
|
|
64
65
|
const options = {
|
|
65
66
|
platform: 'node',
|
|
@@ -124,19 +125,19 @@ async function transpileWithEsbuild(filePath, bundle, userRootDir) {
|
|
|
124
125
|
Object.keys(result.metafile.inputs).forEach((filePathRelative) => {
|
|
125
126
|
filePathRelative = toPosixPath(filePathRelative);
|
|
126
127
|
assertPosixPath(userRootDir);
|
|
127
|
-
const
|
|
128
|
-
vikeConfigDependencies.add(
|
|
128
|
+
const filePathAbsoluteFilesystem = path.posix.join(userRootDir, filePathRelative);
|
|
129
|
+
vikeConfigDependencies.add(filePathAbsoluteFilesystem);
|
|
129
130
|
});
|
|
130
131
|
}
|
|
131
132
|
const code = result.outputFiles[0].text;
|
|
132
133
|
assert(typeof code === 'string');
|
|
133
134
|
return code;
|
|
134
135
|
}
|
|
135
|
-
async function executeFile(filePath, code, fileImports) {
|
|
136
|
-
const {
|
|
136
|
+
async function executeFile(filePath, code, fileImports, isValueFile) {
|
|
137
|
+
const { filePathAbsoluteFilesystem, filePathRelativeToUserRootDir } = filePath;
|
|
137
138
|
// Alternative to using a temporary file: https://github.com/vitejs/vite/pull/13269
|
|
138
139
|
// - But seems to break source maps, so I don't think it's worth it
|
|
139
|
-
const filePathTmp = getFilePathTmp(
|
|
140
|
+
const filePathTmp = getFilePathTmp(filePathAbsoluteFilesystem);
|
|
140
141
|
fs.writeFileSync(filePathTmp, code);
|
|
141
142
|
const clean = () => fs.unlinkSync(filePathTmp);
|
|
142
143
|
let fileExports = {};
|
|
@@ -157,10 +158,10 @@ async function executeFile(filePath, code, fileImports) {
|
|
|
157
158
|
// - import() returns `[Module: null prototype] { default: { onRenderClient: '...' }}`
|
|
158
159
|
// - We don't need this special object
|
|
159
160
|
fileExports = { ...fileExports };
|
|
160
|
-
if (fileImports) {
|
|
161
|
+
if (fileImports && !isValueFile) {
|
|
161
162
|
assert(filePathRelativeToUserRootDir !== undefined);
|
|
162
|
-
const
|
|
163
|
-
|
|
163
|
+
const filePathToShowToUser = filePathRelativeToUserRootDir ?? filePathAbsoluteFilesystem;
|
|
164
|
+
assertImportsAreReExported(fileImports, fileExports, filePathToShowToUser);
|
|
164
165
|
}
|
|
165
166
|
return { fileExports };
|
|
166
167
|
}
|
|
@@ -185,7 +186,7 @@ async function formatBuildErr(err, filePath) {
|
|
|
185
186
|
err[formatted] = `${msgIntro}\n${msgEsbuild}`;
|
|
186
187
|
}
|
|
187
188
|
const execErrIntroMsg = new WeakMap();
|
|
188
|
-
function
|
|
189
|
+
function getConfigExecutionErrorIntroMsg(err) {
|
|
189
190
|
if (!isObject(err))
|
|
190
191
|
return null;
|
|
191
192
|
const errIntroMsg = execErrIntroMsg.get(err);
|
|
@@ -206,17 +207,17 @@ function isTmpFile(filePath) {
|
|
|
206
207
|
const fileName = path.posix.basename(filePath);
|
|
207
208
|
return fileName.startsWith(tmpPrefix);
|
|
208
209
|
}
|
|
209
|
-
function
|
|
210
|
-
|
|
210
|
+
function assertImportsAreReExported(fileImports, fileExports, filePathToShowToUser) {
|
|
211
|
+
assertExportsOfConfigFile(fileExports, filePathToShowToUser);
|
|
211
212
|
const exportedStrings = getExportedStrings(fileExports.default);
|
|
212
213
|
Object.values(exportedStrings).forEach((exportVal) => {
|
|
213
214
|
if (typeof exportVal !== 'string')
|
|
214
215
|
return;
|
|
215
216
|
if (!isImportData(exportVal))
|
|
216
217
|
return;
|
|
217
|
-
const
|
|
218
|
+
const importString = exportVal;
|
|
218
219
|
fileImports.forEach((fileImport) => {
|
|
219
|
-
if (fileImport.
|
|
220
|
+
if (fileImport.importString === importString) {
|
|
220
221
|
fileImport.isReExported = true;
|
|
221
222
|
}
|
|
222
223
|
});
|
|
@@ -228,7 +229,7 @@ function assertFileImports(fileImports, fileExports, filePath) {
|
|
|
228
229
|
const importNamesUnused = fileImportsUnused.map((fi) => pc.cyan(fi.importLocalName)).join(', ');
|
|
229
230
|
const singular = fileImportsUnused.length === 1;
|
|
230
231
|
assertUsage(fileImportsUnused.length === 0, [
|
|
231
|
-
`${
|
|
232
|
+
`${filePathToShowToUser} imports the following:`,
|
|
232
233
|
...importStatements.map((s) => pc.cyan(` ${s}`)),
|
|
233
234
|
`But the import${singular ? '' : 's'} ${importNamesUnused} ${singular ? "isn't" : "aren't"} re-exported at ${pc.cyan('export default { ... }')} and therefore ${singular ? 'has' : 'have'} no effect, see explanation at https://vike.dev/header-file`
|
|
234
235
|
].join('\n'));
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
export { findPageFiles };
|
|
2
2
|
import glob from 'fast-glob';
|
|
3
|
-
import { assertWarning, toPosixPath, scriptFileExtensions } from '../utils.js';
|
|
3
|
+
import { assertWarning, toPosixPath, scriptFileExtensions, getOutDirs } from '../utils.js';
|
|
4
4
|
import pc from '@brillout/picocolors';
|
|
5
5
|
async function findPageFiles(config, fileTypes, isDev) {
|
|
6
6
|
const cwd = config.root;
|
|
7
|
+
const { outDirRoot } = getOutDirs(config);
|
|
7
8
|
const timeBase = new Date().getTime();
|
|
8
|
-
let pageFiles = await glob(fileTypes.map((fileType) => `**/*${fileType}.${scriptFileExtensions}`), { ignore: ['**/node_modules/**'], cwd, dot: false });
|
|
9
|
+
let pageFiles = await glob(fileTypes.map((fileType) => `**/*${fileType}.${scriptFileExtensions}`), { ignore: ['**/node_modules/**', `${outDirRoot}/**`], cwd, dot: false });
|
|
9
10
|
pageFiles = pageFiles.map((p) => '/' + toPosixPath(p));
|
|
10
11
|
const time = new Date().getTime() - timeBase;
|
|
11
12
|
if (isDev) {
|
package/dist/esm/node/plugin/shared/{getConfigValueSource.d.ts → getConfigValueSourcesRelevant.d.ts}
RENAMED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
export { getConfigValueSource };
|
|
2
1
|
export { getConfigValueSourcesRelevant };
|
|
3
2
|
import type { ConfigValueSource, PageConfigBuildTime } from '../../../shared/page-configs/PageConfig.js';
|
|
4
|
-
declare function getConfigValueSource(pageConfig: PageConfigBuildTime, configName: string): null | ConfigValueSource;
|
|
5
3
|
declare function getConfigValueSourcesRelevant(pageConfig: PageConfigBuildTime): (ConfigValueSource & {
|
|
6
4
|
configName: string;
|
|
7
5
|
})[];
|
package/dist/esm/node/plugin/shared/{getConfigValueSource.js → getConfigValueSourcesRelevant.js}
RENAMED
|
@@ -1,17 +1,6 @@
|
|
|
1
|
-
export { getConfigValueSource };
|
|
2
1
|
export { getConfigValueSourcesRelevant };
|
|
3
2
|
import { assert, assertIsNotBrowser } from '../../shared/utils.js';
|
|
4
3
|
assertIsNotBrowser();
|
|
5
|
-
function getConfigValueSource(pageConfig, configName) {
|
|
6
|
-
// Doesn't exist on the client-side, but we are on the server-side as attested by assertIsNotBrowser()
|
|
7
|
-
assert(pageConfig.configValueSources);
|
|
8
|
-
const sources = pageConfig.configValueSources[configName];
|
|
9
|
-
if (!sources)
|
|
10
|
-
return null;
|
|
11
|
-
const configValueSource = sources[0];
|
|
12
|
-
assert(configValueSource);
|
|
13
|
-
return configValueSource;
|
|
14
|
-
}
|
|
15
4
|
function getConfigValueSourcesRelevant(pageConfig) {
|
|
16
5
|
const configValueSourcesRelevant = Object.entries(pageConfig.configValueSources).map(([configName, sources]) => {
|
|
17
6
|
const configValueSource = sources[0];
|
|
@@ -18,7 +18,7 @@ import { assert, assertIsNotProductionRuntime, getAssertErrMsg, isUserHookError,
|
|
|
18
18
|
import { getHttpRequestAsyncStore } from './getHttpRequestAsyncStore.js';
|
|
19
19
|
import { isErrorDebug } from './isErrorDebug.js';
|
|
20
20
|
import { isErrorWithCodeSnippet, getPrettyErrorWithCodeSnippet } from './loggerNotProd/errorWithCodeSnippet.js';
|
|
21
|
-
import {
|
|
21
|
+
import { getConfigExecutionErrorIntroMsg, getConfigBuildErrorFormatted } from '../plugins/importUserCode/v1-design/transpileAndExecuteFile.js';
|
|
22
22
|
import { logWithVikeTag, logWithViteTag, logDirectly, isFirstLog, screenHasErrors, clearScreen } from './loggerNotProd/log.js';
|
|
23
23
|
import pc from '@brillout/picocolors';
|
|
24
24
|
import { setAlreadyLogged } from '../../runtime/renderPage/isNewError.js';
|
|
@@ -108,7 +108,7 @@ function logConfigError(err) {
|
|
|
108
108
|
warnIfErrorIsNotObject(err);
|
|
109
109
|
const category = getConfigCategory();
|
|
110
110
|
{
|
|
111
|
-
const errIntroMsg =
|
|
111
|
+
const errIntroMsg = getConfigExecutionErrorIntroMsg(err);
|
|
112
112
|
if (errIntroMsg) {
|
|
113
113
|
assert(stripAnsi(errIntroMsg).startsWith('Failed to execute'));
|
|
114
114
|
logWithVikeTag(errIntroMsg, 'error', category);
|
|
@@ -2,8 +2,7 @@ export * from '../runtime/utils.js';
|
|
|
2
2
|
export * from '../../utils/viteIsSSR.js';
|
|
3
3
|
export * from '../../utils/getFilePathAbsolute.js';
|
|
4
4
|
export * from '../../utils/getDependencyPackageJson.js';
|
|
5
|
-
export * from '../../utils/
|
|
6
|
-
export * from '../../utils/assertDefaultExport.js';
|
|
5
|
+
export * from '../../utils/requireResolve.js';
|
|
7
6
|
export * from '../../utils/arrayIncludes.js';
|
|
8
7
|
export * from '../../utils/isDev.js';
|
|
9
8
|
export * from '../../utils/objectKeys.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Utils needed by
|
|
1
|
+
// Utils needed by Vike's Vite plugin.
|
|
2
2
|
// We assume all runtime entries will load this utils.ts file
|
|
3
3
|
import { onLoad } from './onLoad.js';
|
|
4
4
|
onLoad();
|
|
@@ -8,8 +8,7 @@ export * from '../runtime/utils.js';
|
|
|
8
8
|
export * from '../../utils/viteIsSSR.js';
|
|
9
9
|
export * from '../../utils/getFilePathAbsolute.js';
|
|
10
10
|
export * from '../../utils/getDependencyPackageJson.js';
|
|
11
|
-
export * from '../../utils/
|
|
12
|
-
export * from '../../utils/assertDefaultExport.js';
|
|
11
|
+
export * from '../../utils/requireResolve.js';
|
|
13
12
|
export * from '../../utils/arrayIncludes.js';
|
|
14
13
|
export * from '../../utils/isDev.js';
|
|
15
14
|
export * from '../../utils/objectKeys.js';
|
|
@@ -5,7 +5,7 @@ export { prerenderForceExit };
|
|
|
5
5
|
import '../runtime/page-files/setup.js';
|
|
6
6
|
import path from 'path';
|
|
7
7
|
import { route } from '../../shared/route/index.js';
|
|
8
|
-
import { assert, assertUsage, assertWarning, hasProp, projectInfo, objectAssign, isObjectWithKeys, isCallable,
|
|
8
|
+
import { assert, assertUsage, assertWarning, hasProp, projectInfo, objectAssign, isObjectWithKeys, isCallable, getOutDirs, hasPropertyGetter, assertPosixPath, urlToFile, executeHook, isPlainObject, setNodeEnvToProduction } from './utils.js';
|
|
9
9
|
import { pLimit } from '../../utils/pLimit.js';
|
|
10
10
|
import { prerenderPage, prerender404Page, getRenderContext, getPageContextInitEnhanced } from '../runtime/renderPage/renderPageAlreadyRouted.js';
|
|
11
11
|
import pc from '@brillout/picocolors';
|
|
@@ -16,8 +16,8 @@ import { getConfigVike } from '../shared/getConfigVike.js';
|
|
|
16
16
|
import { getPageFilesServerSide } from '../../shared/getPageFiles.js';
|
|
17
17
|
import { getPageContextRequestUrl } from '../../shared/getPageContextRequestUrl.js';
|
|
18
18
|
import { getUrlFromRouteString } from '../../shared/route/resolveRouteString.js';
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
19
|
+
import { getConfigValue, getConfigValueFilePathToShowToUser, getHookFilePathToShowToUser } from '../../shared/page-configs/utils.js';
|
|
20
|
+
import { loadConfigValues } from '../../shared/page-configs/loadConfigValues.js';
|
|
21
21
|
import { isErrorPage } from '../../shared/error-page.js';
|
|
22
22
|
import { addUrlComputedProps } from '../../shared/addUrlComputedProps.js';
|
|
23
23
|
import { assertPathIsFilesystemAbsolute } from '../../utils/assertPathIsFilesystemAbsolute.js';
|
|
@@ -44,7 +44,7 @@ async function runPrerender(options, manuallyTriggered) {
|
|
|
44
44
|
const viteConfig = await resolveConfig(options.viteConfig || {}, 'vike pre-rendering', 'production');
|
|
45
45
|
assertLoadedConfig(viteConfig, options);
|
|
46
46
|
const configVike = await getConfigVike(viteConfig);
|
|
47
|
-
const { outDirClient, outDirRoot } =
|
|
47
|
+
const { outDirClient, outDirRoot } = getOutDirs(viteConfig);
|
|
48
48
|
const { root } = viteConfig;
|
|
49
49
|
const prerenderConfig = configVike.prerender;
|
|
50
50
|
if (!prerenderConfig) {
|
|
@@ -87,12 +87,13 @@ async function collectDoNoPrerenderList(renderContext, doNotPrerenderList, concu
|
|
|
87
87
|
const configName = 'prerender';
|
|
88
88
|
const configValue = getConfigValue(pageConfig, configName, 'boolean');
|
|
89
89
|
if (configValue?.value === false) {
|
|
90
|
-
const
|
|
90
|
+
const configValueFilePathToShowToUser = getConfigValueFilePathToShowToUser(configValue);
|
|
91
|
+
assert(configValueFilePathToShowToUser);
|
|
91
92
|
doNotPrerenderList.push({
|
|
92
93
|
pageId: pageConfig.pageId,
|
|
93
94
|
setByConfigName: 'prerender',
|
|
94
95
|
setByConfigValue: false,
|
|
95
|
-
setByConfigFile:
|
|
96
|
+
setByConfigFile: configValueFilePathToShowToUser
|
|
96
97
|
});
|
|
97
98
|
}
|
|
98
99
|
});
|
|
@@ -143,13 +144,12 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, renderContext,
|
|
|
143
144
|
// V1 design
|
|
144
145
|
await Promise.all(renderContext.pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
|
|
145
146
|
const hookName = 'onBeforePrerenderStart';
|
|
146
|
-
const pageConfigLoaded = await
|
|
147
|
+
const pageConfigLoaded = await loadConfigValues(pageConfig, false);
|
|
147
148
|
const configValue = getConfigValue(pageConfigLoaded, hookName);
|
|
148
149
|
if (!configValue)
|
|
149
150
|
return;
|
|
150
151
|
const hookFn = configValue.value;
|
|
151
|
-
const
|
|
152
|
-
const hookFilePath = definedAtInfo.filePath;
|
|
152
|
+
const hookFilePath = getHookFilePathToShowToUser(configValue);
|
|
153
153
|
assert(hookFilePath);
|
|
154
154
|
assertHookFn(hookFn, { hookName, hookFilePath });
|
|
155
155
|
onBeforePrerenderStartHooks.push({
|
|
@@ -281,20 +281,18 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
|
|
|
281
281
|
let onPrerenderStartHook;
|
|
282
282
|
// V1 design
|
|
283
283
|
if (renderContext.pageConfigs.length > 0) {
|
|
284
|
-
const
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
284
|
+
const { pageConfigGlobal } = renderContext;
|
|
285
|
+
const configValue = pageConfigGlobal.configValues.onPrerenderStart;
|
|
286
|
+
if (configValue?.value) {
|
|
287
|
+
const { value: hookFn } = configValue;
|
|
288
|
+
// config.onPrerenderStart isn't a computed nor a cumulative config => definedAtInfo should always be defined
|
|
289
|
+
const hookFilePath = getHookFilePathToShowToUser(configValue);
|
|
290
290
|
assert(hookFilePath);
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
};
|
|
297
|
-
}
|
|
291
|
+
onPrerenderStartHook = {
|
|
292
|
+
hookFn,
|
|
293
|
+
hookName: 'onPrerenderStart',
|
|
294
|
+
hookFilePath
|
|
295
|
+
};
|
|
298
296
|
}
|
|
299
297
|
}
|
|
300
298
|
// Old design
|
|
@@ -106,7 +106,7 @@ async function getHtmlTags(pageContext, injectToStream, injectFilter) {
|
|
|
106
106
|
if (!isHtmlOnly) {
|
|
107
107
|
// Don't allow the user to manipulate with injectFilter(): injecting <script type="application/json"> before the stream can break the app when:
|
|
108
108
|
// - using https://vike.dev/stream#initial-data-after-stream-end
|
|
109
|
-
// - `pageContext` is modified during the stream, e.g. /
|
|
109
|
+
// - `pageContext` is modified during the stream, e.g. https://github.com/brillout/vike-with-pinia which uses https://vuejs.org/api/composition-api-lifecycle.html#onserverprefetch
|
|
110
110
|
// The <script> tags are handled separately by vike down below.
|
|
111
111
|
htmlTags.push({
|
|
112
112
|
// Needs to be called after `resolvePageContextPromise()`
|
|
@@ -6,7 +6,7 @@ import type { PageAsset } from '../renderPage/getPageAssets.js';
|
|
|
6
6
|
import type { HtmlPart } from './renderHtml.js';
|
|
7
7
|
import { type PreloadFilter } from './injectAssets/getHtmlTags.js';
|
|
8
8
|
import type { InjectToStream } from './stream/react-streaming.js';
|
|
9
|
-
import type {
|
|
9
|
+
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
10
10
|
import type { PageContextSerialization } from './serializePageContextClientSide.js';
|
|
11
11
|
type PageContextInjectAssets = {
|
|
12
12
|
urlPathname: string;
|
|
@@ -19,7 +19,7 @@ type PageContextInjectAssets = {
|
|
|
19
19
|
hookName: 'onRenderHtml' | 'render';
|
|
20
20
|
};
|
|
21
21
|
_baseServer: string;
|
|
22
|
-
_pageConfigs:
|
|
22
|
+
_pageConfigs: PageConfigRuntime[];
|
|
23
23
|
is404: null | boolean;
|
|
24
24
|
} & PageContextSerialization;
|
|
25
25
|
declare function injectHtmlTagsToString(htmlParts: HtmlPart[], pageContext: PageContextInjectAssets & {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
export { serializePageContextClientSide };
|
|
2
2
|
export { serializePageContextAbort };
|
|
3
3
|
export type { PageContextSerialization };
|
|
4
|
-
import type {
|
|
4
|
+
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
5
5
|
import type { UrlRedirect } from '../../../shared/route/abort.js';
|
|
6
6
|
type PageContextSerialization = {
|
|
7
7
|
_pageId: string;
|
|
8
8
|
_passToClient: string[];
|
|
9
|
-
_pageConfigs:
|
|
9
|
+
_pageConfigs: PageConfigRuntime[];
|
|
10
10
|
is404: null | boolean;
|
|
11
11
|
pageProps?: Record<string, unknown>;
|
|
12
12
|
_isError?: true;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { analyzePage };
|
|
2
2
|
import type { PageFile } from '../../../shared/getPageFiles/getPageFileObject.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
4
4
|
import { type AnalysisResult } from '../../../shared/getPageFiles/analyzePageClientSide.js';
|
|
5
|
-
declare function analyzePage(pageFilesAll: PageFile[], pageConfig: null |
|
|
5
|
+
declare function analyzePage(pageFilesAll: PageFile[], pageConfig: null | PageConfigRuntime, pageId: string): AnalysisResult;
|
|
@@ -26,14 +26,14 @@ function analyzePage(pageFilesAll, pageConfig, pageId) {
|
|
|
26
26
|
}
|
|
27
27
|
/* Remove?
|
|
28
28
|
Object.values(pageConfig.configElements).forEach((configElement) => {
|
|
29
|
-
if (configElement.
|
|
29
|
+
if (configElement.importPath) {
|
|
30
30
|
const { env } = configElement
|
|
31
31
|
assert(env)
|
|
32
32
|
const onlyAssets = env === 'server-only'
|
|
33
33
|
const eagerlyImported = env === '_routing-eager'
|
|
34
34
|
if (onlyAssets || eagerlyImported) {
|
|
35
35
|
clientDependencies.push({
|
|
36
|
-
id: configElement.
|
|
36
|
+
id: configElement.importPath,
|
|
37
37
|
onlyAssets,
|
|
38
38
|
eagerlyImported
|
|
39
39
|
})
|
|
@@ -4,7 +4,7 @@ export { createHttpResponseObjectRedirect };
|
|
|
4
4
|
export type { HttpResponse };
|
|
5
5
|
import type { GetPageAssets } from './getPageAssets.js';
|
|
6
6
|
import type { HtmlRender } from '../html/renderHtml.js';
|
|
7
|
-
import type {
|
|
7
|
+
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
8
8
|
import type { RenderHook } from './executeOnRenderHtmlHook.js';
|
|
9
9
|
import type { RedirectStatusCode, AbortStatusCode, UrlRedirect } from '../../../shared/route/abort.js';
|
|
10
10
|
import { HttpResponseBody } from './getHttpResponseBody.js';
|
|
@@ -21,7 +21,7 @@ declare function createHttpResponseObject(htmlRender: null | HtmlRender, renderH
|
|
|
21
21
|
is404: null | boolean;
|
|
22
22
|
errorWhileRendering: null | Error;
|
|
23
23
|
__getPageAssets: GetPageAssets;
|
|
24
|
-
_pageConfigs:
|
|
24
|
+
_pageConfigs: PageConfigRuntime[];
|
|
25
25
|
abortStatusCode?: AbortStatusCode;
|
|
26
26
|
}): Promise<HttpResponse | null>;
|
|
27
27
|
declare function createHttpResponsePageContextJson(pageContextSerialized: string): Promise<HttpResponse>;
|
|
@@ -3,7 +3,7 @@ export type { PageContextDebug };
|
|
|
3
3
|
import { RouteMatches } from '../../../shared/route/index.js';
|
|
4
4
|
import type { ClientDependency } from '../../../shared/getPageFiles/analyzePageClientSide/ClientDependency.js';
|
|
5
5
|
import type { PageFile } from '../../../shared/getPageFiles.js';
|
|
6
|
-
import type {
|
|
6
|
+
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
7
7
|
type PageContextDebug = {
|
|
8
8
|
_routeMatches: 'ROUTE_ERROR' | RouteMatches;
|
|
9
9
|
};
|
|
@@ -12,7 +12,7 @@ declare function debugPageFiles({ pageContext, isHtmlOnly, isClientRouting, page
|
|
|
12
12
|
urlOriginal: string;
|
|
13
13
|
_pageId: string;
|
|
14
14
|
_pageFilesAll: PageFile[];
|
|
15
|
-
_pageConfigs:
|
|
15
|
+
_pageConfigs: PageConfigRuntime[];
|
|
16
16
|
} & PageContextDebug;
|
|
17
17
|
isHtmlOnly: boolean;
|
|
18
18
|
isClientRouting: boolean;
|
|
@@ -3,7 +3,7 @@ export type { RenderHook };
|
|
|
3
3
|
import { type HtmlRender } from '../html/renderHtml.js';
|
|
4
4
|
import type { PageAsset } from './getPageAssets.js';
|
|
5
5
|
import { type PageContextForUserConsumptionServerSide } from './preparePageContextForUserConsumptionServerSide.js';
|
|
6
|
-
import type {
|
|
6
|
+
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
7
7
|
import type { PageContextSerialization } from '../html/serializePageContextClientSide.js';
|
|
8
8
|
type GetPageAssets = () => Promise<PageAsset[]>;
|
|
9
9
|
type RenderHook = {
|
|
@@ -13,7 +13,7 @@ type RenderHook = {
|
|
|
13
13
|
type HookName = 'onRenderHtml' | 'render';
|
|
14
14
|
declare function executeOnRenderHtmlHook(pageContext: PageContextForUserConsumptionServerSide & PageContextSerialization & {
|
|
15
15
|
_pageId: string;
|
|
16
|
-
_pageConfigs:
|
|
16
|
+
_pageConfigs: PageConfigRuntime[];
|
|
17
17
|
__getPageAssets: GetPageAssets;
|
|
18
18
|
_isHtmlOnly: boolean;
|
|
19
19
|
_baseServer: string;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
export { handleErrorWithoutErrorPage };
|
|
2
2
|
import type { PageContextAfterRender } from './renderPageAlreadyRouted.js';
|
|
3
|
-
import type {
|
|
3
|
+
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
4
4
|
declare function handleErrorWithoutErrorPage<PageContext extends {
|
|
5
5
|
isClientSideNavigation: boolean;
|
|
6
6
|
errorWhileRendering: null | Error;
|
|
7
7
|
is404: null | boolean;
|
|
8
8
|
_pageId: null;
|
|
9
|
-
_pageConfigs:
|
|
9
|
+
_pageConfigs: PageConfigRuntime[];
|
|
10
10
|
urlOriginal: string;
|
|
11
11
|
}>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
|
|
@@ -5,11 +5,11 @@ import { type PageFile } from '../../../shared/getPageFiles.js';
|
|
|
5
5
|
import { PromiseType } from '../utils.js';
|
|
6
6
|
import { PageContextGetPageAssets, type PageAsset } from './getPageAssets.js';
|
|
7
7
|
import { type PageContextDebug } from './debugPageFiles.js';
|
|
8
|
-
import type {
|
|
8
|
+
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
9
9
|
type PageContext_loadPageFilesServerSide = PageContextGetPageAssets & PageContextDebug & {
|
|
10
10
|
urlOriginal: string;
|
|
11
11
|
_pageFilesAll: PageFile[];
|
|
12
|
-
_pageConfigs:
|
|
12
|
+
_pageConfigs: PageConfigRuntime[];
|
|
13
13
|
};
|
|
14
14
|
type PageFiles = PromiseType<ReturnType<typeof loadPageFilesServerSide>>;
|
|
15
15
|
declare function loadPageFilesServerSide(pageContext: {
|
|
@@ -7,7 +7,7 @@ import { debugPageFiles } from './debugPageFiles.js';
|
|
|
7
7
|
import { findPageConfig } from '../../../shared/page-configs/findPageConfig.js';
|
|
8
8
|
import { analyzePage } from './analyzePage.js';
|
|
9
9
|
import { getGlobalContext } from '../globalContext.js';
|
|
10
|
-
import {
|
|
10
|
+
import { loadConfigValues } from '../../../shared/page-configs/loadConfigValues.js';
|
|
11
11
|
async function loadPageFilesServerSide(pageContext) {
|
|
12
12
|
const pageConfig = findPageConfig(pageContext._pageConfigs, pageContext._pageId); // Make pageConfig globally available as pageContext._pageConfig?
|
|
13
13
|
const [{ config, configEntries, exports, exportsAll, pageExports, pageFilesLoaded, pageConfigLoaded }] = await Promise.all([
|
|
@@ -82,7 +82,7 @@ async function loadPageFilesServerSide(pageContext) {
|
|
|
82
82
|
}
|
|
83
83
|
async function loadPageFiles(pageFilesAll, pageConfig, pageId, isDev) {
|
|
84
84
|
const pageFilesServerSide = getPageFilesServerSide(pageFilesAll, pageId);
|
|
85
|
-
const pageConfigLoaded = !pageConfig ? null : await
|
|
85
|
+
const pageConfigLoaded = !pageConfig ? null : await loadConfigValues(pageConfig, isDev);
|
|
86
86
|
await Promise.all(pageFilesServerSide.map((p) => p.loadFile?.()));
|
|
87
87
|
const { config, configEntries, exports, exportsAll, pageExports } = getExports(pageFilesServerSide, pageConfigLoaded);
|
|
88
88
|
return {
|
|
@@ -67,8 +67,8 @@ function getPagesAndRoutesInfo(pageRoutes) {
|
|
|
67
67
|
...entries
|
|
68
68
|
];
|
|
69
69
|
const terminalWidth = getTerminalWidth() || 134;
|
|
70
|
-
let width2 = Math.max(...linesContent.map(({ routeTypeSrc }) => routeTypeSrc.length));
|
|
71
|
-
let width3 = Math.max(...linesContent.map(({ routeDefinedBy }) => routeDefinedBy.length));
|
|
70
|
+
let width2 = Math.max(...linesContent.map(({ routeTypeSrc }) => stripAnsi(routeTypeSrc).length));
|
|
71
|
+
let width3 = Math.max(...linesContent.map(({ routeDefinedBy }) => stripAnsi(routeDefinedBy).length));
|
|
72
72
|
let width1 = terminalWidth - width3 - width2 - 10;
|
|
73
73
|
linesContent.forEach((lineContent) => {
|
|
74
74
|
let { routeStr } = lineContent;
|
|
@@ -83,9 +83,9 @@ function getPagesAndRoutesInfo(pageRoutes) {
|
|
|
83
83
|
});
|
|
84
84
|
width1 = Math.max(...linesContent.map(({ routeStr }) => stripAnsi(routeStr).length));
|
|
85
85
|
let lines = linesContent.map(({ routeStr, routeTypeSrc, routeDefinedBy }, i) => {
|
|
86
|
-
let cell1 =
|
|
87
|
-
let cell2 =
|
|
88
|
-
let cell3 =
|
|
86
|
+
let cell1 = padEnd(routeStr, width1 + (stripAnsi(routeStr).length - stripAnsi(routeStr).length));
|
|
87
|
+
let cell2 = padEnd(routeTypeSrc, width2);
|
|
88
|
+
let cell3 = padEnd(routeDefinedBy, width3);
|
|
89
89
|
const isHeader = i === 0;
|
|
90
90
|
if (isHeader) {
|
|
91
91
|
cell1 = pc.dim(cell1);
|
|
@@ -119,6 +119,11 @@ function truncateRouteFunction(routeStr, lenMax) {
|
|
|
119
119
|
routeStr = truncateString(routeStr, lenMax, (s) => pc.dim(s));
|
|
120
120
|
return routeStr;
|
|
121
121
|
}
|
|
122
|
+
/** Same as String.prototype.padEnd but with stripAnsi() */
|
|
123
|
+
function padEnd(str, width) {
|
|
124
|
+
const padWidth = Math.max(0, width - stripAnsi(str).length);
|
|
125
|
+
return str + ''.padEnd(padWidth, ' ');
|
|
126
|
+
}
|
|
122
127
|
function removeNonAscii(str) {
|
|
123
128
|
// https://stackoverflow.com/questions/20856197/remove-non-ascii-character-in-string/20856346#20856346
|
|
124
129
|
return str.replace(/[^\x00-\x7F]/g, '');
|
package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { preparePageContextForUserConsumptionServerSide };
|
|
2
2
|
export type { PageContextForUserConsumptionServerSide };
|
|
3
3
|
import { PageContextUrlComputedPropsInternal } from '../../../shared/addUrlComputedProps.js';
|
|
4
|
-
import type {
|
|
4
|
+
import type { PageConfigRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
5
5
|
import type { ConfigEntries, ExportsAll } from '../../../shared/getPageFiles/getExports.js';
|
|
6
6
|
import { PageContextBuiltInServerInternal } from '../../../shared/types.js';
|
|
7
7
|
type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal & {
|
|
@@ -18,7 +18,7 @@ type PageContextForUserConsumptionServerSide = PageContextBuiltInServerInternal
|
|
|
18
18
|
exports: Record<string, unknown>;
|
|
19
19
|
exportsAll: ExportsAll;
|
|
20
20
|
_pageId: string;
|
|
21
|
-
_pageConfigs:
|
|
21
|
+
_pageConfigs: PageConfigRuntime[];
|
|
22
22
|
is404: null | boolean;
|
|
23
23
|
isClientSideNavigation: boolean;
|
|
24
24
|
pageProps?: Record<string, unknown>;
|
|
@@ -10,7 +10,7 @@ import { type PageFile } from '../../../shared/getPageFiles.js';
|
|
|
10
10
|
import { type PageContextUrlComputedPropsInternal } from '../../../shared/addUrlComputedProps.js';
|
|
11
11
|
import { HttpResponse } from './createHttpResponseObject.js';
|
|
12
12
|
import { PageContext_loadPageFilesServerSide, type PageFiles } from './loadPageFilesServerSide.js';
|
|
13
|
-
import type {
|
|
13
|
+
import type { PageConfigRuntime, PageConfigGlobalRuntime } from '../../../shared/page-configs/PageConfig.js';
|
|
14
14
|
import { type PageRoutes } from '../../../shared/route/loadPageRoutes.js';
|
|
15
15
|
import type { OnBeforeRouteHook } from '../../../shared/route/executeOnBeforeRouteHook.js';
|
|
16
16
|
type PageContextAfterRender = {
|
|
@@ -42,8 +42,8 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
42
42
|
_baseAssets: string | null;
|
|
43
43
|
_includeAssetsImportedByServer: boolean;
|
|
44
44
|
_pageFilesAll: PageFile[];
|
|
45
|
-
_pageConfigs:
|
|
46
|
-
_pageConfigGlobal:
|
|
45
|
+
_pageConfigs: PageConfigRuntime[];
|
|
46
|
+
_pageConfigGlobal: PageConfigGlobalRuntime;
|
|
47
47
|
_allPageIds: string[];
|
|
48
48
|
_pageRoutes: PageRoutes;
|
|
49
49
|
_onBeforeRouteHook: OnBeforeRouteHook | null;
|
|
@@ -89,8 +89,8 @@ declare function prerenderPage(pageContext: PageContextInitEnhanced & PageFiles
|
|
|
89
89
|
_baseAssets: string | null;
|
|
90
90
|
_includeAssetsImportedByServer: boolean;
|
|
91
91
|
_pageFilesAll: PageFile[];
|
|
92
|
-
_pageConfigs:
|
|
93
|
-
_pageConfigGlobal:
|
|
92
|
+
_pageConfigs: PageConfigRuntime[];
|
|
93
|
+
_pageConfigGlobal: PageConfigGlobalRuntime;
|
|
94
94
|
_allPageIds: string[];
|
|
95
95
|
_pageRoutes: PageRoutes;
|
|
96
96
|
_onBeforeRouteHook: OnBeforeRouteHook | null;
|
|
@@ -137,8 +137,8 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
|
|
|
137
137
|
_baseAssets: string | null;
|
|
138
138
|
_includeAssetsImportedByServer: boolean;
|
|
139
139
|
_pageFilesAll: PageFile[];
|
|
140
|
-
_pageConfigs:
|
|
141
|
-
_pageConfigGlobal:
|
|
140
|
+
_pageConfigs: PageConfigRuntime[];
|
|
141
|
+
_pageConfigGlobal: PageConfigGlobalRuntime;
|
|
142
142
|
_allPageIds: string[];
|
|
143
143
|
_pageRoutes: PageRoutes;
|
|
144
144
|
_onBeforeRouteHook: OnBeforeRouteHook | null;
|
|
@@ -184,8 +184,8 @@ declare function prerender404Page(renderContext: RenderContext, pageContextInit_
|
|
|
184
184
|
_baseAssets: string | null;
|
|
185
185
|
_includeAssetsImportedByServer: boolean;
|
|
186
186
|
_pageFilesAll: PageFile[];
|
|
187
|
-
_pageConfigs:
|
|
188
|
-
_pageConfigGlobal:
|
|
187
|
+
_pageConfigs: PageConfigRuntime[];
|
|
188
|
+
_pageConfigGlobal: PageConfigGlobalRuntime;
|
|
189
189
|
_allPageIds: string[];
|
|
190
190
|
_pageRoutes: PageRoutes;
|
|
191
191
|
_onBeforeRouteHook: OnBeforeRouteHook | null;
|
|
@@ -239,8 +239,8 @@ declare function getPageContextInitEnhanced(pageContextInit: {
|
|
|
239
239
|
_baseAssets: string | null;
|
|
240
240
|
_includeAssetsImportedByServer: boolean;
|
|
241
241
|
_pageFilesAll: PageFile[];
|
|
242
|
-
_pageConfigs:
|
|
243
|
-
_pageConfigGlobal:
|
|
242
|
+
_pageConfigs: PageConfigRuntime[];
|
|
243
|
+
_pageConfigGlobal: PageConfigGlobalRuntime;
|
|
244
244
|
_allPageIds: string[];
|
|
245
245
|
_pageRoutes: PageRoutes;
|
|
246
246
|
_onBeforeRouteHook: OnBeforeRouteHook | null;
|
|
@@ -256,8 +256,8 @@ declare function getPageContextInitEnhanced(pageContextInit: {
|
|
|
256
256
|
};
|
|
257
257
|
type RenderContext = {
|
|
258
258
|
pageFilesAll: PageFile[];
|
|
259
|
-
pageConfigs:
|
|
260
|
-
pageConfigGlobal:
|
|
259
|
+
pageConfigs: PageConfigRuntime[];
|
|
260
|
+
pageConfigGlobal: PageConfigGlobalRuntime;
|
|
261
261
|
allPageIds: string[];
|
|
262
262
|
pageRoutes: PageRoutes;
|
|
263
263
|
onBeforeRouteHook: OnBeforeRouteHook | null;
|