vike 0.4.165 → 0.4.166-commit-a5e2596
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 +1 -1
- package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
- package/dist/cjs/node/plugin/plugins/buildConfig/fixServerAssets.js +6 -2
- package/dist/cjs/node/plugin/plugins/buildConfig.js +78 -63
- package/dist/cjs/node/plugin/plugins/commonConfig/assertResolveAlias.js +14 -1
- package/dist/cjs/node/plugin/plugins/config/index.js +1 -1
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +18 -23
- package/dist/cjs/node/plugin/plugins/envVars.js +3 -2
- package/dist/cjs/node/plugin/plugins/extractAssetsPlugin.js +9 -9
- package/dist/cjs/node/plugin/plugins/fileEnv.js +6 -3
- package/dist/cjs/node/plugin/plugins/importUserCode/index.js +6 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +0 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +53 -24
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +6 -6
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +10 -25
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveImportPath.js +32 -35
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +18 -26
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +26 -21
- package/dist/cjs/node/plugin/shared/getFilePath.js +142 -0
- package/dist/cjs/node/plugin/shared/loggerNotProd/errorWithCodeSnippet.js +3 -8
- package/dist/cjs/node/plugin/shared/loggerNotProd.js +2 -1
- package/dist/cjs/node/plugin/utils.js +1 -1
- package/dist/cjs/node/prerender/runPrerender.js +6 -7
- package/dist/cjs/node/prerender/utils.js +2 -1
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +1 -0
- package/dist/cjs/node/runtime/html/injectAssets/injectHtmlTags.js +1 -1
- package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +3 -3
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +2 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +31 -33
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +9 -8
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +6 -12
- package/dist/cjs/node/runtime/renderPage/logErrorHint.js +5 -0
- package/dist/cjs/node/runtime/renderPage.js +34 -21
- package/dist/cjs/node/runtime/utils.js +0 -1
- package/dist/cjs/shared/page-configs/FilePath.js +2 -0
- package/dist/cjs/shared/route/abort.js +2 -1
- package/dist/cjs/shared/route/executeGuardHook.js +2 -1
- package/dist/cjs/shared/route/executeOnBeforeRouteHook.js +2 -1
- package/dist/cjs/shared/route/index.js +2 -3
- package/dist/cjs/shared/route/utils.js +0 -1
- package/dist/cjs/utils/assert.js +2 -0
- package/dist/cjs/utils/assertPathIsFilesystemAbsolute.js +1 -0
- package/dist/cjs/utils/assertSingleInstance.js +6 -5
- package/dist/cjs/utils/assertVersion.js +4 -1
- package/dist/cjs/utils/getGlobalObject.js +21 -6
- package/dist/cjs/utils/isNpmPackage.js +11 -5
- package/dist/cjs/utils/parseUrl.js +8 -1
- package/dist/cjs/utils/projectInfo.js +1 -4
- package/dist/esm/client/client-routing-runtime/history.d.ts +1 -1
- package/dist/esm/client/client-routing-runtime/history.js +5 -5
- package/dist/esm/client/client-routing-runtime/onBrowserHistoryNavigation.js +1 -1
- package/dist/esm/node/plugin/index.js +1 -1
- package/dist/esm/node/plugin/plugins/baseUrls.js +1 -1
- package/dist/esm/node/plugin/plugins/buildConfig/fixServerAssets.js +6 -2
- package/dist/esm/node/plugin/plugins/buildConfig.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/buildConfig.js +79 -64
- package/dist/esm/node/plugin/plugins/commonConfig/assertResolveAlias.js +14 -1
- package/dist/esm/node/plugin/plugins/config/index.js +1 -1
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +19 -24
- package/dist/esm/node/plugin/plugins/envVars.js +4 -3
- package/dist/esm/node/plugin/plugins/extractAssetsPlugin.js +9 -9
- package/dist/esm/node/plugin/plugins/fileEnv.js +7 -4
- package/dist/esm/node/plugin/plugins/importUserCode/index.js +7 -3
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +0 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +54 -25
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/filesystemRouting.js +6 -6
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +11 -26
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveImportPath.d.ts +2 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveImportPath.js +32 -35
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +18 -26
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.d.ts +3 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +26 -21
- package/dist/esm/node/plugin/shared/getFilePath.d.ts +21 -0
- package/dist/esm/node/plugin/shared/getFilePath.js +136 -0
- package/dist/esm/node/plugin/shared/loggerNotProd/errorWithCodeSnippet.js +4 -9
- package/dist/esm/node/plugin/shared/loggerNotProd.js +2 -1
- package/dist/esm/node/plugin/utils.d.ts +1 -1
- package/dist/esm/node/plugin/utils.js +1 -1
- package/dist/esm/node/prerender/runPrerender.js +2 -3
- package/dist/esm/node/prerender/utils.d.ts +2 -1
- package/dist/esm/node/prerender/utils.js +2 -1
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +1 -0
- package/dist/esm/node/runtime/html/injectAssets/injectHtmlTags.js +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +2 -1
- package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +32 -34
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +9 -8
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +7 -13
- package/dist/esm/node/runtime/renderPage/logErrorHint.js +2 -0
- package/dist/esm/node/runtime/renderPage.js +34 -21
- package/dist/esm/node/runtime/utils.d.ts +0 -1
- package/dist/esm/node/runtime/utils.js +0 -1
- package/dist/esm/shared/page-configs/Config/PageContextConfig.d.ts +1 -1
- package/dist/esm/shared/page-configs/FilePath.d.ts +64 -0
- package/dist/esm/shared/page-configs/FilePath.js +1 -0
- package/dist/esm/shared/page-configs/PageConfig.d.ts +1 -42
- package/dist/esm/shared/route/abort.js +2 -1
- package/dist/esm/shared/route/executeGuardHook.js +2 -1
- package/dist/esm/shared/route/executeOnBeforeRouteHook.js +2 -1
- package/dist/esm/shared/route/index.js +2 -3
- package/dist/esm/shared/route/utils.d.ts +0 -1
- package/dist/esm/shared/route/utils.js +0 -1
- package/dist/esm/utils/assert.js +2 -0
- package/dist/esm/utils/assertPathIsFilesystemAbsolute.js +1 -0
- package/dist/esm/utils/assertSingleInstance.d.ts +2 -2
- package/dist/esm/utils/assertSingleInstance.js +5 -4
- package/dist/esm/utils/assertVersion.js +4 -1
- package/dist/esm/utils/debug.d.ts +1 -1
- package/dist/esm/utils/getGlobalObject.d.ts +6 -1
- package/dist/esm/utils/getGlobalObject.js +22 -6
- package/dist/esm/utils/isNpmPackage.d.ts +5 -7
- package/dist/esm/utils/isNpmPackage.js +15 -4
- package/dist/esm/utils/parseUrl.js +8 -1
- package/dist/esm/utils/projectInfo.d.ts +2 -2
- package/dist/esm/utils/projectInfo.js +1 -4
- package/package.json +26 -14
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveFilePath.js +0 -33
- package/dist/cjs/node/runtime/renderPage/getPageAssets/assertClientEntryId.js +0 -19
- package/dist/cjs/utils/getFilePathAbsolute.js +0 -70
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveFilePath.d.ts +0 -5
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolveFilePath.js +0 -27
- package/dist/esm/node/runtime/renderPage/getPageAssets/assertClientEntryId.d.ts +0 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets/assertClientEntryId.js +0 -16
- package/dist/esm/utils/getFilePathAbsolute.d.ts +0 -5
- package/dist/esm/utils/getFilePathAbsolute.js +0 -64
|
@@ -31,7 +31,6 @@ require("../runtime/page-files/setup.js");
|
|
|
31
31
|
const path_1 = __importDefault(require("path"));
|
|
32
32
|
const index_js_1 = require("../../shared/route/index.js");
|
|
33
33
|
const utils_js_1 = require("./utils.js");
|
|
34
|
-
const pLimit_js_1 = require("../../utils/pLimit.js");
|
|
35
34
|
const renderPageAlreadyRouted_js_1 = require("../runtime/renderPage/renderPageAlreadyRouted.js");
|
|
36
35
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
37
36
|
const os_1 = require("os");
|
|
@@ -45,13 +44,13 @@ const helpers_js_1 = require("../../shared/page-configs/helpers.js");
|
|
|
45
44
|
const loadConfigValues_js_1 = require("../../shared/page-configs/loadConfigValues.js");
|
|
46
45
|
const error_page_js_1 = require("../../shared/error-page.js");
|
|
47
46
|
const addUrlComputedProps_js_1 = require("../../shared/addUrlComputedProps.js");
|
|
48
|
-
const assertPathIsFilesystemAbsolute_js_1 = require("../../utils/assertPathIsFilesystemAbsolute.js");
|
|
49
47
|
const abort_js_1 = require("../../shared/route/abort.js");
|
|
50
48
|
const loadUserFilesServerSide_js_1 = require("../runtime/renderPage/loadUserFilesServerSide.js");
|
|
51
49
|
const getHook_js_1 = require("../../shared/hooks/getHook.js");
|
|
52
50
|
const noRouteMatch_js_1 = require("../../shared/route/noRouteMatch.js");
|
|
53
51
|
const getVikeConfig_js_1 = require("../plugin/plugins/importUserCode/v1-design/getVikeConfig.js");
|
|
54
52
|
const logErrorHint_js_1 = require("../runtime/renderPage/logErrorHint.js");
|
|
53
|
+
const executeHook_js_1 = require("../../shared/hooks/executeHook.js");
|
|
55
54
|
async function runPrerenderFromAPI(options = {}) {
|
|
56
55
|
await runPrerender(options, 'prerender()');
|
|
57
56
|
// - We purposely propagate the error to the user land, so that the error interrupts the user land. It's also, I guess, a nice-to-have that the user has control over the error.
|
|
@@ -103,8 +102,8 @@ async function runPrerender(options, manuallyTriggered) {
|
|
|
103
102
|
});
|
|
104
103
|
}
|
|
105
104
|
const { partial = false, noExtraDir = false, parallel = true } = prerenderConfig || {};
|
|
106
|
-
const concurrencyLimit = (0,
|
|
107
|
-
(0,
|
|
105
|
+
const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
|
|
106
|
+
(0, utils_js_1.assertPathIsFilesystemAbsolute)(outDirRoot); // Needed for loadImportBuild(outDir) of @brillout/vite-plugin-server-entry
|
|
108
107
|
await (0, globalContext_js_1.initGlobalContext)(true, outDirRoot);
|
|
109
108
|
const renderContext = await (0, renderPageAlreadyRouted_js_1.getRenderContext)();
|
|
110
109
|
renderContext.pageFilesAll.forEach(assertExportNames);
|
|
@@ -245,7 +244,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, renderContext,
|
|
|
245
244
|
if (doNotPrerenderList.find((p) => p.pageId === pageId)) {
|
|
246
245
|
return;
|
|
247
246
|
}
|
|
248
|
-
const prerenderResult = await (0,
|
|
247
|
+
const prerenderResult = await (0, executeHook_js_1.executeHook)(() => hookFn(), { hookName, hookFilePath, hookTimeout });
|
|
249
248
|
const result = normalizeOnPrerenderHookResult(prerenderResult, hookFilePath, hookName);
|
|
250
249
|
result.forEach(({ url, pageContext }) => {
|
|
251
250
|
{
|
|
@@ -410,7 +409,7 @@ async function callOnPrerenderStartHook(prerenderContext, renderContext) {
|
|
|
410
409
|
pageContext._urlOriginalBeforeHook = pageContext.urlOriginal;
|
|
411
410
|
});
|
|
412
411
|
const docLink = 'https://vike.dev/i18n#pre-rendering';
|
|
413
|
-
let result = await (0,
|
|
412
|
+
let result = await (0, executeHook_js_1.executeHook)(() => hookFn({
|
|
414
413
|
pageContexts: prerenderContext.pageContexts,
|
|
415
414
|
// TODO/v1-release: remove warning
|
|
416
415
|
get prerenderPageContexts() {
|
|
@@ -734,7 +733,7 @@ function assertIsNotAbort(err, urlOr404) {
|
|
|
734
733
|
if (!(0, abort_js_1.isAbortError)(err))
|
|
735
734
|
return;
|
|
736
735
|
const pageContextAbort = err._pageContextAbort;
|
|
737
|
-
const hookLoc = (0,
|
|
736
|
+
const hookLoc = (0, executeHook_js_1.isUserHookError)(err);
|
|
738
737
|
(0, utils_js_1.assert)(hookLoc);
|
|
739
738
|
const thrownBy = ` by ${picocolors_1.default.cyan(`${hookLoc.hookName}()`)} hook defined at ${hookLoc.hookFilePath}`;
|
|
740
739
|
const abortCaller = pageContextAbort._abortCaller;
|
|
@@ -26,6 +26,7 @@ __exportStar(require("../../utils/getOutDirs.js"), exports);
|
|
|
26
26
|
__exportStar(require("../../utils/isPropertyGetter.js"), exports);
|
|
27
27
|
__exportStar(require("../../utils/filesystemPathHandling.js"), exports);
|
|
28
28
|
__exportStar(require("../../utils/urlToFile.js"), exports);
|
|
29
|
-
__exportStar(require("../../shared/hooks/executeHook.js"), exports);
|
|
30
29
|
__exportStar(require("../../utils/isPlainObject.js"), exports);
|
|
31
30
|
__exportStar(require("../../utils/assertNodeEnv.js"), exports);
|
|
31
|
+
__exportStar(require("../../utils/pLimit.js"), exports);
|
|
32
|
+
__exportStar(require("../../utils/assertPathIsFilesystemAbsolute.js"), exports);
|
|
@@ -144,6 +144,7 @@ async function mergeScriptEntries(pageAssets, isProduction) {
|
|
|
144
144
|
function getPageContextJsonScriptTag(pageContext) {
|
|
145
145
|
const pageContextSerialized = (0, sanitizeJson_js_1.sanitizeJson)((0, serializePageContextClientSide_js_1.serializePageContextClientSide)(pageContext));
|
|
146
146
|
const htmlTag = `<script id="vike_pageContext" type="application/json">${pageContextSerialized}</script>`;
|
|
147
|
+
// Used by contra.com https://github.com/gajus
|
|
147
148
|
// @ts-expect-error
|
|
148
149
|
pageContext._pageContextHtmlTag = htmlTag;
|
|
149
150
|
return htmlTag;
|
|
@@ -95,7 +95,7 @@ function injectBreakLines(htmlFragment, before, after) {
|
|
|
95
95
|
const whitespaceExtra = paddingParent ? ' ' : '';
|
|
96
96
|
const whitespace = `${paddingParent}${whitespaceExtra}`;
|
|
97
97
|
const padding = `\n${whitespace}`;
|
|
98
|
-
htmlFragment = htmlFragment.
|
|
98
|
+
htmlFragment = htmlFragment.replace(/<[^\/]/g, (match) => `${padding}${match}`);
|
|
99
99
|
if (isBlankLine) {
|
|
100
100
|
(0, utils_js_1.assert)(htmlFragment.startsWith(padding), { htmlFragment });
|
|
101
101
|
htmlFragment = whitespaceExtra + htmlFragment.slice(padding.length);
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.executeOnBeforeRenderAndDataHooks = void 0;
|
|
4
4
|
const getHook_js_1 = require("../../../shared/hooks/getHook.js");
|
|
5
5
|
const preparePageContextForUserConsumptionServerSide_js_1 = require("./preparePageContextForUserConsumptionServerSide.js");
|
|
6
|
-
const utils_js_1 = require("../utils.js");
|
|
7
6
|
const assertOnBeforeRenderHookReturn_js_1 = require("../../../shared/assertOnBeforeRenderHookReturn.js");
|
|
7
|
+
const executeHook_js_1 = require("../../../shared/hooks/executeHook.js");
|
|
8
8
|
async function executeOnBeforeRenderAndDataHooks(pageContext) {
|
|
9
9
|
if (pageContext._pageContextAlreadyProvidedByOnPrerenderHook) {
|
|
10
10
|
return;
|
|
@@ -16,7 +16,7 @@ async function executeOnBeforeRenderAndDataHooks(pageContext) {
|
|
|
16
16
|
}
|
|
17
17
|
(0, preparePageContextForUserConsumptionServerSide_js_1.preparePageContextForUserConsumptionServerSide)(pageContext);
|
|
18
18
|
if (dataHook) {
|
|
19
|
-
const hookResult = await (0,
|
|
19
|
+
const hookResult = await (0, executeHook_js_1.executeHook)(() => dataHook.hookFn(pageContext), dataHook);
|
|
20
20
|
// Note: hookResult can be anything (e.g. an object) and is to be assigned to pageContext.data
|
|
21
21
|
const pageContextFromHook = {
|
|
22
22
|
data: hookResult
|
|
@@ -24,7 +24,7 @@ async function executeOnBeforeRenderAndDataHooks(pageContext) {
|
|
|
24
24
|
Object.assign(pageContext, pageContextFromHook);
|
|
25
25
|
}
|
|
26
26
|
if (onBeforeRenderHook) {
|
|
27
|
-
const hookResult = await (0,
|
|
27
|
+
const hookResult = await (0, executeHook_js_1.executeHook)(() => onBeforeRenderHook.hookFn(pageContext), onBeforeRenderHook);
|
|
28
28
|
(0, assertOnBeforeRenderHookReturn_js_1.assertOnBeforeRenderHookReturn)(hookResult, onBeforeRenderHook.hookFilePath);
|
|
29
29
|
const pageContextFromHook = hookResult?.pageContext;
|
|
30
30
|
Object.assign(pageContext, pageContextFromHook);
|
|
@@ -13,11 +13,12 @@ const preparePageContextForUserConsumptionServerSide_js_1 = require("./preparePa
|
|
|
13
13
|
const assertHookReturnedObject_js_1 = require("../../../shared/assertHookReturnedObject.js");
|
|
14
14
|
const loggerRuntime_js_1 = require("./loggerRuntime.js");
|
|
15
15
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
16
|
+
const executeHook_js_1 = require("../../../shared/hooks/executeHook.js");
|
|
16
17
|
async function executeOnRenderHtmlHook(pageContext) {
|
|
17
18
|
const { renderHook, hookFn } = getRenderHook(pageContext);
|
|
18
19
|
(0, utils_js_1.objectAssign)(pageContext, { _renderHook: renderHook });
|
|
19
20
|
(0, preparePageContextForUserConsumptionServerSide_js_1.preparePageContextForUserConsumptionServerSide)(pageContext);
|
|
20
|
-
const hookReturnValue = await (0,
|
|
21
|
+
const hookReturnValue = await (0, executeHook_js_1.executeHook)(() => hookFn(pageContext), renderHook);
|
|
21
22
|
const { documentHtml, pageContextProvidedByRenderHook, pageContextPromise, injectFilter } = processHookReturnValue(hookReturnValue, renderHook);
|
|
22
23
|
Object.assign(pageContext, pageContextProvidedByRenderHook);
|
|
23
24
|
(0, utils_js_1.objectAssign)(pageContext, { _pageContextPromise: pageContextPromise });
|
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getManifestEntry = void 0;
|
|
4
4
|
const utils_js_1 = require("../../utils.js");
|
|
5
|
-
const assertClientEntryId_js_1 = require("./assertClientEntryId.js");
|
|
6
5
|
const virtualFilePageConfigValuesAll_js_1 = require("../../../shared/virtual-files/virtualFilePageConfigValuesAll.js");
|
|
7
6
|
const prependEntriesDir_js_1 = require("../../../shared/prependEntriesDir.js");
|
|
8
7
|
function getManifestEntry(id, assetsManifest) {
|
|
9
|
-
(0, assertClientEntryId_js_1.assertClientEntryId)(id);
|
|
10
8
|
const debugInfo = getDebugInfo(id, assetsManifest);
|
|
11
9
|
// Vike client entry
|
|
12
10
|
if (id.startsWith('@@vike/')) {
|
|
@@ -44,42 +42,42 @@ function getManifestEntry(id, assetsManifest) {
|
|
|
44
42
|
return { manifestEntry, manifestKey };
|
|
45
43
|
}
|
|
46
44
|
// npm package import
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
45
|
+
(0, utils_js_1.assertIsNpmPackageImport)(id);
|
|
46
|
+
const found = Object.entries(assetsManifest).find(([, e]) => e.name === (0, prependEntriesDir_js_1.prependEntriesDir)(id));
|
|
47
|
+
(0, utils_js_1.assert)(found);
|
|
48
|
+
const [manifestKey, manifestEntry] = found;
|
|
49
|
+
return { manifestEntry, manifestKey };
|
|
50
|
+
/* Can we remove this?
|
|
53
51
|
// extensions[number].pageConfigsSrcDir
|
|
54
52
|
if (id.startsWith('/node_modules/') || id.startsWith('/../')) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
53
|
+
let manifestKeyEnd = id.split('/node_modules/').slice(-1)[0]
|
|
54
|
+
assert(manifestKeyEnd, debugInfo)
|
|
55
|
+
assert(!manifestKeyEnd.startsWith('/'), debugInfo)
|
|
56
|
+
manifestKeyEnd = '/' + manifestKeyEnd
|
|
57
|
+
{
|
|
58
|
+
const { manifestEntry, manifestKey } = findEntryWithKeyEnd(manifestKeyEnd, assetsManifest, id)
|
|
59
|
+
if (manifestEntry) {
|
|
60
|
+
assert(manifestKey, debugInfo)
|
|
61
|
+
return { manifestEntry, manifestKey }
|
|
65
62
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
63
|
+
}
|
|
64
|
+
{
|
|
65
|
+
assert(manifestKeyEnd.startsWith('/'), debugInfo)
|
|
66
|
+
const dirS = manifestKeyEnd.split('/')
|
|
67
|
+
assert(dirS[0] === '', debugInfo)
|
|
68
|
+
manifestKeyEnd = '/' + dirS.slice(2).join('/')
|
|
69
|
+
assert(manifestKeyEnd.startsWith('/'), debugInfo)
|
|
70
|
+
}
|
|
71
|
+
{
|
|
72
|
+
const { manifestEntry, manifestKey } = findEntryWithKeyEnd(manifestKeyEnd, assetsManifest, id)
|
|
73
|
+
if (manifestEntry) {
|
|
74
|
+
assert(manifestKey, debugInfo)
|
|
75
|
+
return { manifestEntry, manifestKey }
|
|
79
76
|
}
|
|
80
|
-
|
|
77
|
+
}
|
|
78
|
+
assert(false, debugInfo)
|
|
81
79
|
}
|
|
82
|
-
|
|
80
|
+
*/
|
|
83
81
|
}
|
|
84
82
|
exports.getManifestEntry = getManifestEntry;
|
|
85
83
|
function findEntryWithKeyEnd(manifestKeyEnd, assetsManifest, id) {
|
|
@@ -11,15 +11,16 @@ function retrieveAssetsProd(clientDependencies, assetsManifest, includeAssetsImp
|
|
|
11
11
|
clientDependencies.forEach(({ id, onlyAssets, eagerlyImported }) => {
|
|
12
12
|
if (eagerlyImported)
|
|
13
13
|
return; // Eagerly imported assets aren't imported with import() and therefore don't create a new Rollup entry and aren't listed in the manifest file
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
// TODO/v1-release: remove
|
|
15
|
+
if (includeAssetsImportedByServer &&
|
|
16
|
+
onlyAssets &&
|
|
17
|
+
id.includes('.page.server.') &&
|
|
17
18
|
// We assume that all npm packages have already built their files: bundlers (Rollup, esbuild, tsup, ...) extract the CSS out of JavaScript => we can assume JavaScript to not import any CSS/assets.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
!(0, utils_js_1.isNpmPackageImport)(id, {
|
|
20
|
+
// I presume Vite already resolves path aliases when Vite sets the module's id
|
|
21
|
+
cannotBePathAlias: true
|
|
22
|
+
})) {
|
|
23
|
+
id = (0, extractAssetsQuery_js_1.extractAssetsAddQuery)(id);
|
|
23
24
|
}
|
|
24
25
|
const { manifestKey } = (0, getManifestEntry_js_1.getManifestEntry)(id, assetsManifest);
|
|
25
26
|
collectAssets(manifestKey, assetUrls, visistedAssets, assetsManifest, onlyAssets);
|
|
@@ -8,7 +8,6 @@ const inferMediaType_js_1 = require("./inferMediaType.js");
|
|
|
8
8
|
const getManifestEntry_js_1 = require("./getPageAssets/getManifestEntry.js");
|
|
9
9
|
const sortPageAssetsForEarlyHintsHeader_js_1 = require("./getPageAssets/sortPageAssetsForEarlyHintsHeader.js");
|
|
10
10
|
const globalContext_js_1 = require("../globalContext.js");
|
|
11
|
-
const assertClientEntryId_js_1 = require("./getPageAssets/assertClientEntryId.js");
|
|
12
11
|
const import_1 = require("@brillout/import");
|
|
13
12
|
async function getPageAssets(pageContext, clientDependencies, clientEntries) {
|
|
14
13
|
const globalContext = (0, globalContext_js_1.getGlobalContext)();
|
|
@@ -59,7 +58,6 @@ async function getPageAssets(pageContext, clientDependencies, clientEntries) {
|
|
|
59
58
|
}
|
|
60
59
|
exports.getPageAssets = getPageAssets;
|
|
61
60
|
async function resolveClientEntriesDev(clientEntry, viteDevServer) {
|
|
62
|
-
(0, assertClientEntryId_js_1.assertClientEntryId)(clientEntry);
|
|
63
61
|
let root = viteDevServer.config.root;
|
|
64
62
|
(0, utils_js_1.assert)(root);
|
|
65
63
|
root = (0, utils_js_1.toPosixPath)(root);
|
|
@@ -76,11 +74,9 @@ async function resolveClientEntriesDev(clientEntry, viteDevServer) {
|
|
|
76
74
|
(0, utils_js_1.assertPosixPath)(clientEntry);
|
|
77
75
|
let filePath;
|
|
78
76
|
if (clientEntry.startsWith('/')) {
|
|
79
|
-
// User files
|
|
80
77
|
filePath = (0, utils_js_1.pathJoin)(root, clientEntry);
|
|
81
78
|
}
|
|
82
|
-
else
|
|
83
|
-
// Vike client entry
|
|
79
|
+
else {
|
|
84
80
|
const { createRequire } = (await (0, import_1.import_)('module')).default;
|
|
85
81
|
const { dirname } = (await (0, import_1.import_)('path')).default;
|
|
86
82
|
const { fileURLToPath } = (await (0, import_1.import_)('url')).default;
|
|
@@ -91,10 +87,7 @@ async function resolveClientEntriesDev(clientEntry, viteDevServer) {
|
|
|
91
87
|
// @ts-expect-error
|
|
92
88
|
// Bun workaround https://github.com/vikejs/vike/pull/1048
|
|
93
89
|
const res = typeof Bun !== 'undefined' ? (toPath) => Bun.resolveSync(toPath, __dirname_) : require_.resolve;
|
|
94
|
-
if (
|
|
95
|
-
filePath = res(clientEntry);
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
90
|
+
if (clientEntry.startsWith('@@vike/')) {
|
|
98
91
|
(0, utils_js_1.assert)(clientEntry.endsWith('.js'));
|
|
99
92
|
try {
|
|
100
93
|
// For Vitest (which doesn't resolve vike to its dist but to its source files)
|
|
@@ -107,9 +100,10 @@ async function resolveClientEntriesDev(clientEntry, viteDevServer) {
|
|
|
107
100
|
filePath = (0, utils_js_1.toPosixPath)(res(clientEntry.replace('@@vike/dist/esm/client/', '../../../../../dist/esm/client/')));
|
|
108
101
|
}
|
|
109
102
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
103
|
+
else {
|
|
104
|
+
(0, utils_js_1.assertIsNpmPackageImport)(clientEntry);
|
|
105
|
+
filePath = res(clientEntry);
|
|
106
|
+
}
|
|
113
107
|
}
|
|
114
108
|
if (!filePath.startsWith('/')) {
|
|
115
109
|
(0, utils_js_1.assert)(process.platform === 'win32');
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.getHint = exports.isKnownError = exports.isCjsEsmError = exports.logErrorHint = void 0;
|
|
4
7
|
const utils_js_1 = require("../utils.js");
|
|
8
|
+
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
5
9
|
const knownErrors = [
|
|
6
10
|
{
|
|
7
11
|
errMsg: 'jsxDEV is not a function',
|
|
@@ -44,6 +48,7 @@ function getHint(error) {
|
|
|
44
48
|
exports.getHint = getHint;
|
|
45
49
|
function logHint(hint) {
|
|
46
50
|
hint = (0, utils_js_1.formatHintLog)(hint);
|
|
51
|
+
hint = picocolors_1.default.bold(hint);
|
|
47
52
|
console.error(hint);
|
|
48
53
|
}
|
|
49
54
|
function isKnownError(error) {
|
|
@@ -57,7 +57,7 @@ exports.renderPage = renderPage;
|
|
|
57
57
|
async function renderPageAndPrepare(pageContextInit, httpRequestId) {
|
|
58
58
|
// Invalid config
|
|
59
59
|
const handleInvalidConfig = () => {
|
|
60
|
-
(0, loggerRuntime_js_1.logRuntimeInfo)?.(picocolors_1.default.bold(picocolors_1.default.red(
|
|
60
|
+
(0, loggerRuntime_js_1.logRuntimeInfo)?.(picocolors_1.default.bold(picocolors_1.default.red('Error while loading a Vike config file, see error above.')), httpRequestId, 'error');
|
|
61
61
|
const pageContextHttpResponseNull = getPageContextHttpResponseNull(pageContextInit);
|
|
62
62
|
return pageContextHttpResponseNull;
|
|
63
63
|
};
|
|
@@ -209,29 +209,42 @@ function getRequestInfoMessage(urlOriginal) {
|
|
|
209
209
|
}
|
|
210
210
|
function logHttpResponse(urlOriginal, httpRequestId, pageContextReturn) {
|
|
211
211
|
const statusCode = pageContextReturn.httpResponse?.statusCode ?? null;
|
|
212
|
+
let msg;
|
|
213
|
+
let isNominal;
|
|
212
214
|
{
|
|
213
|
-
// If URL doesn't include Base URL
|
|
214
215
|
const { errorWhileRendering } = pageContextReturn;
|
|
215
|
-
const isSkipped = statusCode === null &&
|
|
216
|
-
if (isSkipped)
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
216
|
+
const isSkipped = statusCode === null && !errorWhileRendering;
|
|
217
|
+
if (isSkipped) {
|
|
218
|
+
// - URL doesn't include Base URL
|
|
219
|
+
// - Can we abort earlier so that `logHttpResponse()` and `logHttpRequest()` aren't even called?
|
|
220
|
+
// - Error loading a Vike config file
|
|
221
|
+
// - We should show `HTTP response ${urlOriginal} ERR` instead.
|
|
222
|
+
// - Maybe we can/should make the error available at pageContext.errorWhileRendering
|
|
223
|
+
(0, utils_js_1.assert)(errorWhileRendering === null || errorWhileRendering === undefined);
|
|
224
|
+
msg = `HTTP response ${picocolors_1.default.bold(urlOriginal)} ${picocolors_1.default.dim('null')}`;
|
|
225
|
+
// Erroneous value (it shoud sometimes be `false`) but it's fine as it doesn't seem to have much of an impact.
|
|
226
|
+
isNominal = true;
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
const isSuccess = statusCode !== null && statusCode >= 200 && statusCode <= 399;
|
|
230
|
+
isNominal = isSuccess || statusCode === 404;
|
|
231
|
+
const color = (s) => picocolors_1.default.bold(isSuccess ? picocolors_1.default.green(String(s)) : picocolors_1.default.red(String(s)));
|
|
232
|
+
const isRedirect = statusCode && 300 <= statusCode && statusCode <= 399;
|
|
233
|
+
const type = isRedirect ? 'redirect' : 'response';
|
|
234
|
+
if (isRedirect) {
|
|
235
|
+
(0, utils_js_1.assert)(pageContextReturn.httpResponse);
|
|
236
|
+
const headerRedirect = pageContextReturn.httpResponse.headers
|
|
237
|
+
.slice()
|
|
238
|
+
.reverse()
|
|
239
|
+
.find((header) => header[0] === 'Location');
|
|
240
|
+
(0, utils_js_1.assert)(headerRedirect);
|
|
241
|
+
const urlRedirect = headerRedirect[1];
|
|
242
|
+
urlOriginal = urlRedirect;
|
|
243
|
+
}
|
|
244
|
+
msg = `HTTP ${type} ${picocolors_1.default.bold(urlOriginal)} ${color(statusCode ?? 'ERR')}`;
|
|
245
|
+
}
|
|
233
246
|
}
|
|
234
|
-
(0, loggerRuntime_js_1.logRuntimeInfo)?.(
|
|
247
|
+
(0, loggerRuntime_js_1.logRuntimeInfo)?.(msg, httpRequestId, isNominal ? 'info' : 'error');
|
|
235
248
|
}
|
|
236
249
|
function getPageContextHttpResponseNullWithError(err, pageContextInit) {
|
|
237
250
|
const pageContextHttpResponseNull = {};
|
|
@@ -48,7 +48,6 @@ __exportStar(require("../../utils/isPropertyGetter.js"), exports);
|
|
|
48
48
|
__exportStar(require("../../utils/debug.js"), exports);
|
|
49
49
|
__exportStar(require("../../utils/urlToFile.js"), exports);
|
|
50
50
|
__exportStar(require("../../utils/getGlobalObject.js"), exports);
|
|
51
|
-
__exportStar(require("../../shared/hooks/executeHook.js"), exports);
|
|
52
51
|
__exportStar(require("../../utils/freezePartial.js"), exports);
|
|
53
52
|
__exportStar(require("../../utils/isNpmPackage.js"), exports);
|
|
54
53
|
__exportStar(require("../../utils/isNotNullish.js"), exports);
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.assertNoInfiniteAbortLoop = exports.AbortRender = exports.getPageContextFromAllRewrites = exports.logAbortErrorHandled = exports.isAbortPageContext = exports.isAbortError = exports.RenderErrorPage = exports.render = exports.redirect = void 0;
|
|
7
|
+
const executeHook_js_1 = require("../hooks/executeHook.js");
|
|
7
8
|
const utils_js_1 = require("./utils.js");
|
|
8
9
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
9
10
|
/**
|
|
@@ -121,7 +122,7 @@ function logAbortErrorHandled(err, isProduction, pageContext) {
|
|
|
121
122
|
(0, utils_js_1.assert)(urlCurrent);
|
|
122
123
|
const abortCall = err._pageContextAbort._abortCall;
|
|
123
124
|
(0, utils_js_1.assert)(abortCall);
|
|
124
|
-
const hookLoc = (0,
|
|
125
|
+
const hookLoc = (0, executeHook_js_1.isUserHookError)(err);
|
|
125
126
|
let thrownBy = '';
|
|
126
127
|
if (hookLoc) {
|
|
127
128
|
thrownBy = ` by ${picocolors_1.default.cyan(`${hookLoc.hookName}()`)} hook defined at ${hookLoc.hookFilePath}`;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.executeGuardHook = void 0;
|
|
4
4
|
const getHook_js_1 = require("../hooks/getHook.js");
|
|
5
5
|
const utils_js_1 = require("./utils.js");
|
|
6
|
+
const executeHook_js_1 = require("../hooks/executeHook.js");
|
|
6
7
|
const errIntro = 'The guard() hook defined by';
|
|
7
8
|
async function executeGuardHook(pageContext, prepareForUserConsumption) {
|
|
8
9
|
let hook;
|
|
@@ -22,7 +23,7 @@ async function executeGuardHook(pageContext, prepareForUserConsumption) {
|
|
|
22
23
|
const res = prepareForUserConsumption(pageContext);
|
|
23
24
|
if (res)
|
|
24
25
|
pageContextForUserConsumption = res;
|
|
25
|
-
const hookResult = await (0,
|
|
26
|
+
const hookResult = await (0, executeHook_js_1.executeHook)(() => guard(pageContextForUserConsumption), hook);
|
|
26
27
|
(0, utils_js_1.assertUsage)(hookResult === undefined, `${errIntro} ${hook.hookFilePath} returns a value, but guard() shouldn't return any value`);
|
|
27
28
|
}
|
|
28
29
|
exports.executeGuardHook = executeGuardHook;
|
|
@@ -8,6 +8,7 @@ const assertPageContextProvidedByUser_js_1 = require("../assertPageContextProvid
|
|
|
8
8
|
const utils_js_1 = require("./utils.js");
|
|
9
9
|
const resolveRouteFunction_js_1 = require("./resolveRouteFunction.js");
|
|
10
10
|
const picocolors_1 = __importDefault(require("@brillout/picocolors"));
|
|
11
|
+
const executeHook_js_1 = require("../hooks/executeHook.js");
|
|
11
12
|
async function executeOnBeforeRouteHook(pageContext) {
|
|
12
13
|
const pageContextFromOnBeforeRouteHook = {};
|
|
13
14
|
if (!pageContext._onBeforeRouteHook)
|
|
@@ -41,7 +42,7 @@ async function getPageContextFromHook(onBeforeRouteHook, pageContext) {
|
|
|
41
42
|
let hookReturn = onBeforeRouteHook.hookFn(pageContext);
|
|
42
43
|
(0, resolveRouteFunction_js_1.assertSyncRouting)(hookReturn, `The onBeforeRoute() hook ${onBeforeRouteHook.hookFilePath}`);
|
|
43
44
|
// TODO/v1-release: make executeOnBeforeRouteHook() and route() sync
|
|
44
|
-
hookReturn = await (0,
|
|
45
|
+
hookReturn = await (0, executeHook_js_1.executeHook)(() => hookReturn, onBeforeRouteHook);
|
|
45
46
|
const errPrefix = `The onBeforeRoute() hook defined by ${onBeforeRouteHook.hookFilePath}`;
|
|
46
47
|
(0, utils_js_1.assertUsage)(hookReturn === null ||
|
|
47
48
|
hookReturn === undefined ||
|
|
@@ -39,9 +39,8 @@ async function route(pageContextForRoute) {
|
|
|
39
39
|
(0, utils_js_1.objectAssign)(pageContext, pageContextFromOnBeforeRouteHook);
|
|
40
40
|
// Vike's routing
|
|
41
41
|
const allPageIds = pageContext._allPageIds;
|
|
42
|
-
(0, utils_js_1.
|
|
43
|
-
(0, utils_js_1.
|
|
44
|
-
(0, utils_js_1.assertUsage)(allPageIds.length > 0, "You must create at least one *.page.js file that isn't _default.page.*");
|
|
42
|
+
(0, utils_js_1.assertUsage)(allPageIds.length > 0, 'No page found. You must create at least one page.');
|
|
43
|
+
(0, utils_js_1.assert)(pageContext._pageFilesAll.length > 0 || pageContext._pageConfigs.length > 0);
|
|
45
44
|
const { urlPathname } = pageContext;
|
|
46
45
|
(0, utils_js_1.assert)(urlPathname.startsWith('/'));
|
|
47
46
|
const routeMatches = [];
|
|
@@ -35,7 +35,6 @@ __exportStar(require("../../utils/isStringRecord.js"), exports);
|
|
|
35
35
|
__exportStar(require("../../utils/unique.js"), exports);
|
|
36
36
|
__exportStar(require("../../utils/isBrowser.js"), exports);
|
|
37
37
|
__exportStar(require("../../utils/parseUrl.js"), exports);
|
|
38
|
-
__exportStar(require("../hooks/executeHook.js"), exports);
|
|
39
38
|
__exportStar(require("../../utils/checkType.js"), exports);
|
|
40
39
|
__exportStar(require("../../utils/joinEnglish.js"), exports);
|
|
41
40
|
__exportStar(require("../../utils/projectInfo.js"), exports);
|
package/dist/cjs/utils/assert.js
CHANGED
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.isBug = exports.overwriteAssertProductionLogger = exports.getAssertErrMsg = exports.addOnBeforeLogHook = exports.getProjectError = exports.assertInfo = exports.assertWarning = exports.assertUsage = exports.assert = void 0;
|
|
7
|
+
const assertSingleInstance_js_1 = require("./assertSingleInstance.js");
|
|
7
8
|
const createErrorWithCleanStackTrace_js_1 = require("./createErrorWithCleanStackTrace.js");
|
|
8
9
|
const getGlobalObject_js_1 = require("./getGlobalObject.js");
|
|
9
10
|
const isObject_js_1 = require("./isObject.js");
|
|
@@ -22,6 +23,7 @@ const globalObject = (0, getGlobalObject_js_1.getGlobalObject)('utils/assert.ts'
|
|
|
22
23
|
},
|
|
23
24
|
showStackTraceList: new WeakSet()
|
|
24
25
|
});
|
|
26
|
+
(0, assertSingleInstance_js_1.onAssertModuleLoad)();
|
|
25
27
|
const projectTag = `[vike]`;
|
|
26
28
|
const projectTagWithVersion = `[vike@${projectInfo_js_1.projectInfo.projectVersion}]`;
|
|
27
29
|
const numberOfStackTraceLinesToRemove = 2;
|
|
@@ -10,6 +10,7 @@ const filesystemPathHandling_js_1 = require("./filesystemPathHandling.js");
|
|
|
10
10
|
/** Assert path is absolute from the filesystem root */
|
|
11
11
|
function assertPathIsFilesystemAbsolute(p) {
|
|
12
12
|
(0, filesystemPathHandling_js_1.assertPosixPath)(p);
|
|
13
|
+
(0, assert_js_1.assert)(!p.startsWith('/@fs/'));
|
|
13
14
|
if (process.platform === 'win32') {
|
|
14
15
|
(0, assert_js_1.assert)(path_1.default.win32.isAbsolute(p));
|
|
15
16
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.onAssertModuleLoad = exports.onClientEntry_ClientRouting = exports.onClientEntry_ServerRouting = void 0;
|
|
4
4
|
// - Throw error if there are two different versions of vike loaded
|
|
5
5
|
// - Show warning if entry of Client Routing and entry of Server Routing are both loaded
|
|
6
6
|
// - Show warning if vike is loaded twice
|
|
7
7
|
const unique_js_1 = require("./unique.js");
|
|
8
8
|
const getGlobalObject_js_1 = require("./getGlobalObject.js");
|
|
9
|
+
const projectInfo_js_1 = require("./projectInfo.js");
|
|
9
10
|
/* Use original assertUsage() & assertWarning() after all CJS is removed from node_modules/vike/dist/
|
|
10
11
|
import { assertUsage, assertWarning } from './assert.js'
|
|
11
12
|
*/
|
|
@@ -60,12 +61,12 @@ function onClientEntry_ClientRouting(isProduction) {
|
|
|
60
61
|
assertSingleInstance();
|
|
61
62
|
}
|
|
62
63
|
exports.onClientEntry_ClientRouting = onClientEntry_ClientRouting;
|
|
63
|
-
// Called by utils/
|
|
64
|
-
function
|
|
65
|
-
globalObject.instances.push(projectVersion);
|
|
64
|
+
// Called by utils/assert.ts which is (most certainly) loaded by all entries. That way we don't have to call a callback for every entry. (There are a lot of entries: `client/router/`, `client/`, `node/runtime/`, `node/plugin/`, `node/cli`.)
|
|
65
|
+
function onAssertModuleLoad() {
|
|
66
|
+
globalObject.instances.push(projectInfo_js_1.projectInfo.projectVersion);
|
|
66
67
|
assertSingleInstance();
|
|
67
68
|
}
|
|
68
|
-
exports.
|
|
69
|
+
exports.onAssertModuleLoad = onAssertModuleLoad;
|
|
69
70
|
function assertUsage(condition, errorMessage) {
|
|
70
71
|
if (condition) {
|
|
71
72
|
return;
|
|
@@ -25,9 +25,12 @@ exports.isVersionOrAbove = isVersionOrAbove;
|
|
|
25
25
|
function parseVersion(version) {
|
|
26
26
|
// Remove pre-release tag
|
|
27
27
|
version = version.split('-')[0];
|
|
28
|
+
let partsStr = version.split('.');
|
|
29
|
+
// Git seems to be using a fourth number: https://github.com/git/git/tree/master/Documentation/RelNotes
|
|
30
|
+
partsStr = partsStr.slice(0, 3);
|
|
28
31
|
// major.minor.patch
|
|
29
|
-
const partsStr = version.split('.');
|
|
30
32
|
(0, assert_js_1.assert)(partsStr.length === 3);
|
|
33
|
+
(0, assert_js_1.assert)(partsStr.every((s) => s.length > 0));
|
|
31
34
|
const parts = partsStr.map((s) => parseInt(s, 10));
|
|
32
35
|
return parts;
|
|
33
36
|
}
|
|
@@ -1,13 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getGlobalObject = void 0;
|
|
3
|
+
exports.assertIsSingleModuleInstance = exports.getGlobalObject = void 0;
|
|
4
|
+
const assert_js_1 = require("./assert.js");
|
|
5
|
+
const projectInfo_js_1 = require("./projectInfo.js");
|
|
6
|
+
const projectKey = `_${projectInfo_js_1.projectInfo.projectName.toLowerCase()}`;
|
|
7
|
+
/** Share information across module instances. */
|
|
4
8
|
function getGlobalObject(
|
|
5
|
-
// We use the filename as key
|
|
9
|
+
// We use the filename (or file path) as key. There should be only one getGlobalObject() usage per file. Thus the key should be unique, assuming the filename (or file path) is unique.
|
|
6
10
|
key, defaultValue) {
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
const globalObject = (globalObjectsAll[key] = globalObjectsAll[key] || defaultValue);
|
|
11
|
+
const globalObjects = getGlobalObjects();
|
|
12
|
+
const globalObject = (globalObjects[key] = globalObjects[key] || defaultValue);
|
|
10
13
|
return globalObject;
|
|
11
14
|
}
|
|
12
15
|
exports.getGlobalObject = getGlobalObject;
|
|
13
|
-
|
|
16
|
+
/** Assert that the module is instantiated only once. */
|
|
17
|
+
function assertIsSingleModuleInstance(
|
|
18
|
+
// We use the filename (or file path) as key.
|
|
19
|
+
key) {
|
|
20
|
+
const globalObjects = getGlobalObjects();
|
|
21
|
+
(0, assert_js_1.assert)(!(key in globalObjects));
|
|
22
|
+
}
|
|
23
|
+
exports.assertIsSingleModuleInstance = assertIsSingleModuleInstance;
|
|
24
|
+
function getGlobalObjects() {
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
const globalObjects = (globalThis[projectKey] = globalThis[projectKey] || {});
|
|
27
|
+
return globalObjects;
|
|
28
|
+
}
|