vike 0.4.228 → 0.4.229-commit-a19745d
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/__internal/index.js +2 -2
- package/dist/cjs/client/client-routing-runtime/globalContext.js +49 -0
- package/dist/cjs/client/server-routing-runtime/globalContext.js +41 -0
- package/dist/cjs/client/server-routing-runtime/utils.js +1 -1
- package/dist/cjs/client/shared/createGetGlobalContextClient.js +58 -0
- package/dist/cjs/client/shared/getJsonSerializedInHtml.js +31 -0
- package/dist/cjs/client/shared/utils.js +22 -0
- package/dist/cjs/node/plugin/index.js +3 -1
- package/dist/cjs/node/plugin/plugins/baseUrls.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/handleAssetsManifest.js +10 -5
- package/dist/cjs/node/plugin/plugins/build/pluginBuildApp.js +1 -1
- package/dist/cjs/node/plugin/plugins/build/pluginBuildConfig.js +3 -10
- package/dist/cjs/node/plugin/plugins/build/pluginBuildEntry.js +9 -5
- package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +9 -5
- package/dist/cjs/node/plugin/plugins/commonConfig/assertResolveAlias.js +1 -1
- package/dist/cjs/node/plugin/plugins/commonConfig.js +14 -3
- package/dist/cjs/node/plugin/plugins/devConfig/determineFsAllowList.js +2 -7
- package/dist/cjs/node/plugin/plugins/devConfig/determineOptimizeDeps.js +6 -1
- package/dist/cjs/node/plugin/plugins/envVars.js +17 -19
- package/dist/cjs/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +3 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +11 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +1 -1
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +2 -2
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +13 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +15 -12
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
- package/dist/cjs/node/plugin/plugins/replaceConstants.js +76 -0
- package/dist/cjs/node/plugin/shared/applyRegExWithMagicString.js +10 -0
- package/dist/cjs/node/plugin/shared/findPageFiles.js +1 -1
- package/dist/cjs/node/plugin/shared/getFilePath.js +2 -2
- package/dist/cjs/node/plugin/shared/resolveClientEntriesDev.js +8 -20
- package/dist/cjs/node/plugin/utils.js +1 -0
- package/dist/cjs/node/prerender/runPrerender.js +44 -41
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +102 -125
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/cjs/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/cjs/node/runtime/html/propKeys.js +47 -0
- package/dist/cjs/node/runtime/html/renderHtml.js +13 -3
- package/dist/cjs/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +37 -67
- package/dist/cjs/node/runtime/index-deprecated.js +9 -38
- package/dist/cjs/node/runtime/index.js +56 -2
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/createHttpResponse.js +8 -3
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +73 -0
- package/dist/cjs/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +2 -2
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +2 -2
- package/dist/cjs/node/runtime/renderPage/getPageAssets/getManifestEntry.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
- package/dist/cjs/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +1 -1
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +3 -3
- package/dist/cjs/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/cjs/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -68
- package/dist/cjs/node/runtime/renderPage.js +102 -81
- package/dist/cjs/node/runtime/universal-middleware.js +7 -1
- package/dist/cjs/node/runtime/utils.js +3 -2
- package/dist/cjs/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/cjs/shared/createGlobalContextShared.js +54 -0
- package/dist/cjs/shared/createPageContextShared.js +17 -0
- package/dist/cjs/shared/getPageFiles/fileTypes.js +1 -1
- package/dist/cjs/shared/hooks/executeHookGeneric.js +18 -0
- package/dist/cjs/shared/hooks/getHook.js +45 -27
- package/dist/cjs/shared/htmlElementIds.js +5 -0
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +3 -7
- package/dist/cjs/shared/route/executeGuardHook.js +1 -1
- package/dist/cjs/shared/route/loadPageRoutes.js +2 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/catchInfiniteLoop.js +3 -3
- package/dist/cjs/utils/debug.js +1 -0
- package/dist/cjs/utils/getPublicProxy.js +27 -0
- package/dist/cjs/utils/isImportPath.js +21 -0
- package/dist/cjs/utils/isScriptFile.js +24 -21
- package/dist/cjs/utils/objectAssign.js +6 -10
- package/dist/cjs/utils/objectReplace.js +4 -4
- package/dist/cjs/utils/{isNpmPackage.js → parseNpmPackage.js} +24 -23
- package/dist/cjs/utils/path.js +12 -2
- package/dist/cjs/utils/requireResolve.js +148 -53
- package/dist/esm/__internal/index.js +3 -3
- package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +29 -10
- package/dist/esm/client/client-routing-runtime/createPageContext.js +23 -22
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +5 -4
- package/dist/esm/client/client-routing-runtime/globalContext.d.ts +20 -0
- package/dist/esm/client/client-routing-runtime/globalContext.js +13 -0
- package/dist/esm/client/client-routing-runtime/initOnLinkClick.js +2 -2
- package/dist/esm/client/client-routing-runtime/prefetch.js +2 -2
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +8 -7
- package/dist/esm/client/client-routing-runtime/utils.d.ts +0 -1
- package/dist/esm/client/client-routing-runtime/utils.js +0 -1
- package/dist/esm/client/index.d.ts +1 -0
- package/dist/esm/client/index.js +4 -0
- package/dist/esm/client/node.js +1 -3
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +36 -0
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +47 -0
- package/dist/esm/client/server-routing-runtime/entry.js +2 -2
- package/dist/esm/client/server-routing-runtime/globalContext.d.ts +17 -0
- package/dist/esm/client/server-routing-runtime/globalContext.js +5 -0
- package/dist/esm/client/server-routing-runtime/utils.d.ts +1 -1
- package/dist/esm/client/server-routing-runtime/utils.js +1 -1
- package/dist/esm/client/shared/createGetGlobalContextClient.d.ts +23 -0
- package/dist/esm/client/shared/createGetGlobalContextClient.js +58 -0
- package/dist/esm/client/shared/executeOnRenderClientHook.js +5 -4
- package/dist/esm/client/shared/{getPageContextSerializedInHtml.d.ts → getJsonSerializedInHtml.d.ts} +2 -0
- package/dist/esm/client/shared/getJsonSerializedInHtml.js +29 -0
- package/dist/esm/client/shared/removeFoucBuster.js +1 -0
- package/dist/esm/client/shared/utils.d.ts +4 -0
- package/dist/esm/client/shared/utils.js +4 -0
- package/dist/esm/node/plugin/index.js +3 -1
- package/dist/esm/node/plugin/plugins/baseUrls.js +2 -2
- package/dist/esm/node/plugin/plugins/build/handleAssetsManifest.js +11 -6
- package/dist/esm/node/plugin/plugins/build/pluginBuildApp.js +2 -2
- package/dist/esm/node/plugin/plugins/build/pluginBuildConfig.js +4 -11
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/build/pluginBuildEntry.js +10 -6
- package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +9 -5
- package/dist/esm/node/plugin/plugins/commonConfig/assertResolveAlias.js +2 -2
- package/dist/esm/node/plugin/plugins/commonConfig.d.ts +2 -0
- package/dist/esm/node/plugin/plugins/commonConfig.js +15 -4
- package/dist/esm/node/plugin/plugins/devConfig/determineFsAllowList.js +3 -8
- package/dist/esm/node/plugin/plugins/devConfig/determineOptimizeDeps.js +7 -2
- package/dist/esm/node/plugin/plugins/envVars.js +18 -20
- package/dist/esm/node/plugin/plugins/importUserCode/getVirtualFileImportUserCode.js +4 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +11 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles/ignorePatternsBuiltIn.js +2 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/crawlPlusFiles.js +2 -2
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/loadFileAtConfigTime.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.d.ts → pointerImports.d.ts} +2 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/{transformPointerImports.js → pointerImports.js} +14 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.d.ts +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/resolvePointerImport.js +20 -19
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/transpileAndExecuteFile.js +15 -12
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig.js +11 -11
- package/dist/esm/node/plugin/plugins/replaceConstants.d.ts +3 -0
- package/dist/esm/node/plugin/plugins/replaceConstants.js +71 -0
- package/dist/esm/node/plugin/shared/applyRegExWithMagicString.d.ts +3 -0
- package/dist/esm/node/plugin/shared/applyRegExWithMagicString.js +8 -0
- package/dist/esm/node/plugin/shared/findPageFiles.js +2 -2
- package/dist/esm/node/plugin/shared/getFilePath.js +3 -3
- package/dist/esm/node/plugin/shared/resolveClientEntriesDev.d.ts +1 -1
- package/dist/esm/node/plugin/shared/resolveClientEntriesDev.js +9 -21
- package/dist/esm/node/plugin/utils.d.ts +1 -0
- package/dist/esm/node/plugin/utils.js +1 -0
- package/dist/esm/node/prerender/runPrerender.d.ts +314 -5
- package/dist/esm/node/prerender/runPrerender.js +48 -45
- package/dist/esm/node/prerender/utils.d.ts +1 -1
- package/dist/esm/node/prerender/utils.js +1 -1
- package/dist/esm/node/runtime/globalContext.d.ts +425 -47
- package/dist/esm/node/runtime/globalContext.js +103 -126
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.d.ts +2 -2
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/esm/node/runtime/html/injectAssets.d.ts +3 -3
- package/dist/esm/node/runtime/html/propKeys.d.ts +8 -0
- package/dist/esm/node/runtime/html/propKeys.js +45 -0
- package/dist/esm/node/runtime/html/renderHtml.js +13 -3
- package/dist/esm/node/runtime/html/{serializePageContextClientSide.d.ts → serializeContext.d.ts} +7 -6
- package/dist/esm/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +36 -67
- package/dist/esm/node/runtime/index-deprecated.d.ts +1 -16
- package/dist/esm/node/runtime/index-deprecated.js +9 -36
- package/dist/esm/node/runtime/index.d.ts +23 -1
- package/dist/esm/node/runtime/index.js +38 -3
- package/dist/esm/node/runtime/renderPage/analyzePage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +5 -4
- package/dist/esm/node/runtime/renderPage/createHttpResponse.js +8 -3
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +155 -0
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +71 -0
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.js +3 -3
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +3 -3
- package/dist/esm/node/runtime/renderPage/getPageAssets/getManifestEntry.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsDev.js +1 -17
- package/dist/esm/node/runtime/renderPage/getPageAssets/retrieveAssetsProd.js +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +3 -3
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/esm/node/runtime/renderPage/log404/index.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +3 -3
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.js +1 -1
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +225 -179
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +4 -69
- package/dist/esm/node/runtime/renderPage.d.ts +146 -7
- package/dist/esm/node/runtime/renderPage.js +105 -84
- package/dist/esm/node/runtime/universal-middleware.js +7 -1
- package/dist/esm/node/runtime/utils.d.ts +3 -2
- package/dist/esm/node/runtime/utils.js +3 -2
- package/dist/esm/shared/VikeNamespace.d.ts +35 -13
- package/dist/esm/shared/assertPageContextProvidedByUser.js +1 -1
- package/dist/esm/shared/createGlobalContextShared.d.ts +39 -0
- package/dist/esm/shared/createGlobalContextShared.js +51 -0
- package/dist/esm/shared/createPageContextShared.d.ts +9 -0
- package/dist/esm/shared/createPageContextShared.js +15 -0
- package/dist/esm/shared/getPageFiles/fileTypes.js +1 -1
- package/dist/esm/shared/hooks/executeHookGeneric.d.ts +8 -0
- package/dist/esm/shared/hooks/executeHookGeneric.js +16 -0
- package/dist/esm/shared/hooks/getHook.d.ts +5 -3
- package/dist/esm/shared/hooks/getHook.js +47 -29
- package/dist/esm/shared/htmlElementIds.d.ts +2 -0
- package/dist/esm/shared/htmlElementIds.js +2 -0
- package/dist/esm/shared/page-configs/Config.d.ts +12 -2
- package/dist/esm/shared/page-configs/getConfigDefinedAt.d.ts +1 -1
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +3 -7
- package/dist/esm/shared/route/executeGuardHook.js +2 -2
- package/dist/esm/shared/route/loadPageRoutes.js +2 -1
- package/dist/esm/shared/types.d.ts +64 -32
- package/dist/esm/types/index.d.ts +1 -5
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/catchInfiniteLoop.js +4 -4
- package/dist/esm/utils/debug.d.ts +1 -1
- package/dist/esm/utils/debug.js +1 -0
- package/dist/esm/utils/getGlobalObject.d.ts +1 -1
- package/dist/esm/utils/getPublicProxy.d.ts +2 -0
- package/dist/esm/utils/getPublicProxy.js +25 -0
- package/dist/esm/utils/isImportPath.d.ts +4 -0
- package/dist/esm/utils/isImportPath.js +19 -0
- package/dist/esm/utils/isScriptFile.d.ts +5 -5
- package/dist/esm/utils/isScriptFile.js +23 -20
- package/dist/esm/utils/objectAssign.d.ts +1 -1
- package/dist/esm/utils/objectAssign.js +6 -10
- package/dist/esm/utils/objectReplace.d.ts +1 -1
- package/dist/esm/utils/objectReplace.js +4 -4
- package/dist/esm/utils/parseNpmPackage.d.ts +19 -0
- package/dist/esm/utils/{isNpmPackage.js → parseNpmPackage.js} +24 -24
- package/dist/esm/utils/path.d.ts +1 -1
- package/dist/esm/utils/path.js +12 -2
- package/dist/esm/utils/requireResolve.d.ts +20 -7
- package/dist/esm/utils/requireResolve.js +148 -53
- package/package.json +14 -13
- package/dist/cjs/node/runtime/index-common.js +0 -27
- package/dist/cjs/utils/makePublicCopy.js +0 -32
- package/dist/esm/client/server-routing-runtime/getPageContext.d.ts +0 -19
- package/dist/esm/client/server-routing-runtime/getPageContext.js +0 -44
- package/dist/esm/client/shared/getPageContextSerializedInHtml.js +0 -20
- package/dist/esm/node/runtime/index-common.d.ts +0 -8
- package/dist/esm/node/runtime/index-common.js +0 -10
- package/dist/esm/utils/isNpmPackage.d.ts +0 -17
- package/dist/esm/utils/makePublicCopy.d.ts +0 -3
- package/dist/esm/utils/makePublicCopy.js +0 -30
package/dist/cjs/utils/path.js
CHANGED
|
@@ -44,6 +44,16 @@ function assertPosixPath(path) {
|
|
|
44
44
|
(0, assert_js_1.assert)(path);
|
|
45
45
|
(0, assert_js_1.assert)(!path.includes('\\'), errMsg(path));
|
|
46
46
|
}
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
// See also `import { isImportPathRelative } from './isImportPath.js'`
|
|
48
|
+
function pathIsRelative(path) {
|
|
49
|
+
assertPosixPath(path);
|
|
50
|
+
if (path.startsWith('./') || path.startsWith('../')) {
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
/* Not true if `path` starts with a hidden directory (i.e. a directory with a name that starts with `.`)
|
|
55
|
+
assert(!path.startsWith('.'))
|
|
56
|
+
*/
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
49
59
|
}
|
|
@@ -3,10 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.requireResolve = requireResolve;
|
|
7
6
|
exports.requireResolveOptional = requireResolveOptional;
|
|
8
|
-
exports.
|
|
9
|
-
exports.
|
|
7
|
+
exports.requireResolveOptionalDir = requireResolveOptionalDir;
|
|
8
|
+
exports.requireResolveNpmPackage = requireResolveNpmPackage;
|
|
9
|
+
exports.requireResolveVikeDistFile = requireResolveVikeDistFile;
|
|
10
|
+
exports.getVikeNodeModulesRoot = getVikeNodeModulesRoot;
|
|
10
11
|
const assert_js_1 = require("./assert.js");
|
|
11
12
|
const assertIsNotBrowser_js_1 = require("./assertIsNotBrowser.js");
|
|
12
13
|
const assertSetup_js_1 = require("./assertSetup.js");
|
|
@@ -14,68 +15,132 @@ const path_js_1 = require("./path.js");
|
|
|
14
15
|
const isScriptFile_js_1 = require("./isScriptFile.js");
|
|
15
16
|
const node_module_1 = require("node:module");
|
|
16
17
|
const node_path_1 = __importDefault(require("node:path"));
|
|
18
|
+
const parseNpmPackage_js_1 = require("./parseNpmPackage.js");
|
|
19
|
+
const isNullish_js_1 = require("./isNullish.js");
|
|
20
|
+
const debug_js_1 = require("./debug.js");
|
|
17
21
|
// @ts-ignore `file:///${__filename.split('\\').join('/')}` is shimmed at dist/cjs by dist-cjs-fixup.js.
|
|
18
22
|
const importMetaUrl = `file:///${__filename.split('\\').join('/')}`;
|
|
19
|
-
|
|
23
|
+
(0, path_js_1.assertPosixPath)(importMetaUrl);
|
|
20
24
|
(0, assertIsNotBrowser_js_1.assertIsNotBrowser)();
|
|
21
25
|
(0, assertSetup_js_1.assertIsNotProductionRuntime)();
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
const debug = (0, debug_js_1.createDebugger)('vike:resolve');
|
|
27
|
+
// - We still can't use import.meta.resolve() as of 23.1.0 (November 2024) because `parent` argument requires an experimental flag.
|
|
28
|
+
// - https://stackoverflow.com/questions/54977743/do-require-resolve-for-es-modules#comment139581675_62272600
|
|
29
|
+
// - Passing context to createRequire(context) isn't equivalent to passing it to the `paths` argument of require.resolve()
|
|
30
|
+
// - https://github.com/brillout/require-test
|
|
31
|
+
// - In practice, I guess it doesn't make a difference? It just seems to be small Node.js weirdness.
|
|
32
|
+
// - The argument createRequire(argument) seems to be overriden by the `paths` argument require.resolve()
|
|
33
|
+
// - For example, passing an empty array to `paths` kills the argument passed to `createRequire()`
|
|
34
|
+
// - Thus, when `paths` is defined, then the context needs to be passed to both createRequire() as well as the `paths` argument of require.resolve()
|
|
35
|
+
function requireResolve_(importPath, importerFilePath, { userRootDir, doNotHandleFileExtension } = {}) {
|
|
24
36
|
(0, path_js_1.assertPosixPath)(importPath);
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
37
|
+
const contexts = importerFilePath
|
|
38
|
+
? [importerFilePath]
|
|
39
|
+
: [userRootDir ? getFakeImporterFile(userRootDir) : importMetaUrl];
|
|
40
|
+
addExtraContextForNpmPackageImport(contexts, { importPath, userRootDir });
|
|
41
|
+
let importPathResolvedFilePath;
|
|
42
|
+
let failure;
|
|
43
|
+
for (let context of contexts) {
|
|
44
|
+
(0, path_js_1.assertPosixPath)(context);
|
|
45
|
+
context = ensureFilePrefix(context);
|
|
46
|
+
const require_ = (0, node_module_1.createRequire)(context);
|
|
47
|
+
if (!doNotHandleFileExtension) {
|
|
48
|
+
addFileExtensionsToRequireResolve(require_);
|
|
49
|
+
importPath = removeFileExtention(importPath);
|
|
50
|
+
}
|
|
51
|
+
try {
|
|
52
|
+
importPathResolvedFilePath = require_.resolve(importPath);
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
if (debug.isActivated) {
|
|
56
|
+
debug('err', err);
|
|
57
|
+
debug('importPath', importPath);
|
|
58
|
+
debug('context', context);
|
|
59
|
+
}
|
|
60
|
+
failure ?? (failure = { err });
|
|
61
|
+
}
|
|
62
|
+
if (importPathResolvedFilePath)
|
|
63
|
+
break;
|
|
30
64
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
65
|
+
if (!importPathResolvedFilePath) {
|
|
66
|
+
(0, assert_js_1.assert)(failure);
|
|
67
|
+
if (debug.isActivated) {
|
|
68
|
+
debug('FAILURE');
|
|
69
|
+
debug('importPath', importPath);
|
|
70
|
+
debug('importerFilePath', importerFilePath);
|
|
71
|
+
debug('userRootDir', userRootDir);
|
|
72
|
+
debug('doNotHandleFileExtension', doNotHandleFileExtension);
|
|
73
|
+
debug('importMetaUrl', importMetaUrl);
|
|
74
|
+
debug('contexts', contexts);
|
|
75
|
+
}
|
|
76
|
+
return { importPathResolvedFilePath: undefined, err: failure.err, hasFailed: true };
|
|
36
77
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
78
|
+
else {
|
|
79
|
+
if (failure && debug.isActivated) {
|
|
80
|
+
debug('SUCCESS');
|
|
81
|
+
debug('importPath', importPath);
|
|
82
|
+
debug('contexts', contexts);
|
|
83
|
+
}
|
|
84
|
+
(0, assert_js_1.assert)(importPathResolvedFilePath);
|
|
85
|
+
importPathResolvedFilePath = (0, path_js_1.toPosixPath)(importPathResolvedFilePath);
|
|
86
|
+
return { importPathResolvedFilePath, err: undefined, hasFailed: false };
|
|
40
87
|
}
|
|
41
|
-
clean();
|
|
42
|
-
importedFile = (0, path_js_1.toPosixPath)(importedFile);
|
|
43
|
-
return { importedFile, err: undefined, hasFailed: false };
|
|
44
88
|
}
|
|
45
|
-
function requireResolveOptional(importPath,
|
|
46
|
-
const res = requireResolve_(importPath,
|
|
89
|
+
function requireResolveOptional({ importPath, importerFilePath, userRootDir }) {
|
|
90
|
+
const res = requireResolve_(importPath, importerFilePath, { userRootDir });
|
|
47
91
|
if (res.hasFailed)
|
|
48
92
|
return null;
|
|
49
|
-
return res.
|
|
93
|
+
return res.importPathResolvedFilePath;
|
|
50
94
|
}
|
|
51
|
-
function
|
|
52
|
-
const
|
|
95
|
+
function requireResolveOptionalDir({ importPath, importerDir, userRootDir }) {
|
|
96
|
+
const importerFilePath = getFakeImporterFile(importerDir);
|
|
97
|
+
const res = requireResolve_(importPath, importerFilePath, { userRootDir });
|
|
53
98
|
if (res.hasFailed)
|
|
54
99
|
return null;
|
|
55
|
-
return res.
|
|
56
|
-
}
|
|
57
|
-
function requireResolveNonUserFile(importPath, cwd) {
|
|
58
|
-
const res = requireResolve_(importPath, cwd, { doNotHandleFileExtension: true });
|
|
59
|
-
if (res.hasFailed)
|
|
60
|
-
throw res.err;
|
|
61
|
-
return res.importedFile;
|
|
100
|
+
return res.importPathResolvedFilePath;
|
|
62
101
|
}
|
|
63
|
-
function
|
|
64
|
-
|
|
102
|
+
function requireResolveNpmPackage({ importPathNpmPackage, userRootDir }) {
|
|
103
|
+
(0, parseNpmPackage_js_1.assertIsImportPathNpmPackage)(importPathNpmPackage);
|
|
104
|
+
const importerFilePath = getFakeImporterFile(userRootDir);
|
|
105
|
+
const res = requireResolve_(importPathNpmPackage, importerFilePath, { userRootDir });
|
|
65
106
|
if (res.hasFailed)
|
|
66
107
|
throw res.err;
|
|
67
|
-
return res.
|
|
108
|
+
return res.importPathResolvedFilePath;
|
|
68
109
|
}
|
|
69
|
-
function
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
110
|
+
function requireResolveVikeDistFile(vikeDistFile) {
|
|
111
|
+
const vikeNodeModulesRoot = getVikeNodeModulesRoot();
|
|
112
|
+
(0, path_js_1.assertPosixPath)(vikeNodeModulesRoot);
|
|
113
|
+
(0, path_js_1.assertPosixPath)(vikeDistFile);
|
|
114
|
+
const importPathResolvedFilePath = node_path_1.default.posix.join(vikeNodeModulesRoot, vikeDistFile);
|
|
115
|
+
// Double check
|
|
116
|
+
{
|
|
117
|
+
const res = requireResolve_(importPathResolvedFilePath,
|
|
118
|
+
// No context needed: importPathResolvedFilePath is already resolved and absolute
|
|
119
|
+
null, { doNotHandleFileExtension: true });
|
|
120
|
+
if (res.hasFailed)
|
|
121
|
+
throw res.err;
|
|
122
|
+
(0, assert_js_1.assert)(res.importPathResolvedFilePath === importPathResolvedFilePath);
|
|
76
123
|
}
|
|
77
|
-
|
|
78
|
-
|
|
124
|
+
return importPathResolvedFilePath;
|
|
125
|
+
}
|
|
126
|
+
function addExtraContextForNpmPackageImport(contexts, { importPath, userRootDir }) {
|
|
127
|
+
// We should add extra context only for npm packages, but unfortunately we cannot always disambiguate between npm package imports and path aliases.
|
|
128
|
+
if (!(0, parseNpmPackage_js_1.isImportPathNpmPackageOrPathAlias)(importPath))
|
|
129
|
+
return;
|
|
130
|
+
const userRootDirFakeFile = userRootDir && getFakeImporterFile(userRootDir);
|
|
131
|
+
[
|
|
132
|
+
// Workaround for monorepo resolve issue: https://github.com/vikejs/vike-react/pull/161/commits/dbaa6643e78015ac2797c237552800fef29b72a7
|
|
133
|
+
userRootDirFakeFile,
|
|
134
|
+
// I can't think of a use case where this would be needed, but let's add one extra last chance to sucessfully resolve some complex monorepo setups
|
|
135
|
+
importMetaUrl
|
|
136
|
+
]
|
|
137
|
+
.filter(isNullish_js_1.isNotNullish)
|
|
138
|
+
.forEach((context) => {
|
|
139
|
+
const alreadyHasContext = contexts.includes(context) || contexts.includes(ensureFilePrefix(context));
|
|
140
|
+
if (alreadyHasContext)
|
|
141
|
+
return;
|
|
142
|
+
contexts.push(context);
|
|
143
|
+
});
|
|
79
144
|
}
|
|
80
145
|
function removeFileExtention(importPath) {
|
|
81
146
|
// Skip for Bun: https://github.com/vikejs/vike/issues/2204
|
|
@@ -93,7 +158,7 @@ function removeFileExtention(importPath) {
|
|
|
93
158
|
}
|
|
94
159
|
return importPath;
|
|
95
160
|
}
|
|
96
|
-
function addFileExtensionsToRequireResolve() {
|
|
161
|
+
function addFileExtensionsToRequireResolve(require_) {
|
|
97
162
|
const added = [];
|
|
98
163
|
isScriptFile_js_1.scriptFileExtensionList.forEach((ext) => {
|
|
99
164
|
(0, assert_js_1.assert)(!ext.includes('.'));
|
|
@@ -103,10 +168,40 @@ function addFileExtensionsToRequireResolve() {
|
|
|
103
168
|
added.push(ext);
|
|
104
169
|
}
|
|
105
170
|
});
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
return
|
|
171
|
+
}
|
|
172
|
+
function getVikeNodeModulesRoot() {
|
|
173
|
+
// [RELATIVE_PATH_FROM_DIST] Current file: vike/dist/esm/utils/requireResolve.js
|
|
174
|
+
(0, assert_js_1.assert)(importMetaUrl.includes('/dist/esm/') || importMetaUrl.includes('/dist/cjs/'));
|
|
175
|
+
const vikeNodeModulesRoot = node_path_1.default.posix.join(removeFilePrefix(importMetaUrl), '../../../../');
|
|
176
|
+
return vikeNodeModulesRoot;
|
|
177
|
+
}
|
|
178
|
+
function getFakeImporterFile(dirPath) {
|
|
179
|
+
(0, path_js_1.assertPosixPath)(dirPath);
|
|
180
|
+
(0, assert_js_1.assert)(!dirPath.startsWith('file')); // The file:// prefix is bogus when used with path.posix.join()
|
|
181
|
+
const importerFilePath = node_path_1.default.posix.join(dirPath, 'fakeFileForNodeResolve.js');
|
|
182
|
+
return importerFilePath;
|
|
183
|
+
}
|
|
184
|
+
function ensureFilePrefix(filePath) {
|
|
185
|
+
(0, path_js_1.assertPosixPath)(filePath);
|
|
186
|
+
const filePrefix = getFilePrefix();
|
|
187
|
+
if (!filePath.startsWith(filePrefix)) {
|
|
188
|
+
(0, assert_js_1.assert)(!filePath.startsWith('file'));
|
|
189
|
+
filePath = filePrefix + filePath;
|
|
190
|
+
}
|
|
191
|
+
(0, assert_js_1.assert)(filePath.startsWith(filePrefix));
|
|
192
|
+
return filePath;
|
|
193
|
+
}
|
|
194
|
+
function removeFilePrefix(filePath) {
|
|
195
|
+
const filePrefix = getFilePrefix();
|
|
196
|
+
if (filePath.startsWith(filePrefix)) {
|
|
197
|
+
filePath = filePath.slice(filePrefix.length);
|
|
198
|
+
}
|
|
199
|
+
(0, assert_js_1.assert)(!filePath.startsWith('file'));
|
|
200
|
+
return filePath;
|
|
201
|
+
}
|
|
202
|
+
function getFilePrefix() {
|
|
203
|
+
let prefix = 'file://';
|
|
204
|
+
if (process.platform === 'win32')
|
|
205
|
+
prefix += '/';
|
|
206
|
+
return prefix;
|
|
112
207
|
}
|
|
@@ -3,7 +3,7 @@ export { setGlobalContext_buildEntry } from '../node/runtime/globalContext.js';
|
|
|
3
3
|
// Needed by vite-plugin-vercel
|
|
4
4
|
export { route, getPagesAndRoutes };
|
|
5
5
|
import { route as routeInternal } from '../shared/route/index.js';
|
|
6
|
-
import {
|
|
6
|
+
import { getGlobalContextServerInternal, initGlobalContext_getPagesAndRoutes } from '../node/runtime/globalContext.js';
|
|
7
7
|
import { setNodeEnvProduction } from '../utils/assertSetup.js';
|
|
8
8
|
/**
|
|
9
9
|
* Used by {@link https://github.com/magne4000/vite-plugin-vercel|vite-plugin-vercel} to compute some rewrite rules and extract { isr } configs.
|
|
@@ -13,10 +13,10 @@ import { setNodeEnvProduction } from '../utils/assertSetup.js';
|
|
|
13
13
|
async function getPagesAndRoutes() {
|
|
14
14
|
setNodeEnvProduction();
|
|
15
15
|
await initGlobalContext_getPagesAndRoutes();
|
|
16
|
-
const globalContext = await
|
|
16
|
+
const { globalContext } = await getGlobalContextServerInternal();
|
|
17
17
|
const {
|
|
18
18
|
//
|
|
19
|
-
pageRoutes, pageFilesAll, pageConfigs, allPageIds } = globalContext;
|
|
19
|
+
_pageRoutes: pageRoutes, _pageFilesAll: pageFilesAll, _pageConfigs: pageConfigs, _allPageIds: allPageIds } = globalContext;
|
|
20
20
|
return {
|
|
21
21
|
pageRoutes,
|
|
22
22
|
pageFilesAll,
|
|
@@ -1,21 +1,40 @@
|
|
|
1
|
-
export {
|
|
2
|
-
declare function
|
|
3
|
-
|
|
1
|
+
export { createPageContextClientSide };
|
|
2
|
+
declare function createPageContextClientSide(urlOriginal: string): Promise<{
|
|
3
|
+
globalContext: {
|
|
4
|
+
isGlobalContext: true;
|
|
5
|
+
_virtualFileExports: unknown;
|
|
6
|
+
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
7
|
+
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
8
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
9
|
+
_allPageIds: string[];
|
|
10
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
11
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
12
|
+
} & {
|
|
13
|
+
isClientSide: true;
|
|
14
|
+
} & {
|
|
15
|
+
_pageRoutes: import("../../__internal/index.js").PageRoutes;
|
|
16
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
17
|
+
};
|
|
18
|
+
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
19
|
+
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
20
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
21
|
+
_allPageIds: string[];
|
|
22
|
+
_pageRoutes: import("../../__internal/index.js").PageRoutes;
|
|
23
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
4
24
|
isClientSide: boolean;
|
|
5
25
|
isPrerendering: boolean;
|
|
6
26
|
urlOriginal: string;
|
|
7
|
-
_objectCreatedByVike: boolean;
|
|
8
27
|
_urlHandler: null;
|
|
9
28
|
_urlRewrite: null;
|
|
10
29
|
_baseServer: string;
|
|
11
|
-
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
12
|
-
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
13
|
-
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
14
|
-
_allPageIds: string[];
|
|
15
|
-
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
16
|
-
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
17
30
|
} & {
|
|
18
31
|
urlParsed: import("./utils.js").UrlPublic;
|
|
19
32
|
urlPathname: string;
|
|
20
33
|
url: string;
|
|
34
|
+
} & {
|
|
35
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
36
|
+
_source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
|
|
37
|
+
_sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
|
|
38
|
+
_from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
|
|
39
|
+
isPageContext: true;
|
|
21
40
|
}>;
|
|
@@ -1,33 +1,34 @@
|
|
|
1
|
-
export {
|
|
2
|
-
import {
|
|
1
|
+
export { createPageContextClientSide };
|
|
2
|
+
import { createPageContextShared } from '../../shared/createPageContextShared.js';
|
|
3
3
|
import { getPageContextUrlComputed } from '../../shared/getPageContextUrlComputed.js';
|
|
4
|
-
import { loadPageRoutes } from '../../shared/route/loadPageRoutes.js';
|
|
5
4
|
import { getBaseServer } from './getBaseServer.js';
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
async function createPageContext(urlOriginal) {
|
|
11
|
-
const { pageRoutes, onBeforeRouteHook } = await loadPageRoutes(pageFilesAll, pageConfigs, pageConfigGlobal, allPageIds);
|
|
5
|
+
import { getGlobalContextClientInternal } from './globalContext.js';
|
|
6
|
+
import { assert, augmentType, isBaseServer, objectAssign } from './utils.js';
|
|
7
|
+
async function createPageContextClientSide(urlOriginal) {
|
|
8
|
+
const globalContext = await getGlobalContextClientInternal();
|
|
12
9
|
const baseServer = getBaseServer();
|
|
13
10
|
assert(isBaseServer(baseServer));
|
|
14
|
-
const
|
|
15
|
-
|
|
11
|
+
const pageContextCreated = {
|
|
12
|
+
/* Don't spread globalContext for now? Or never spread it as it leads to confusion? The convenience isn't worth the added confusion?
|
|
13
|
+
...globalContext, // least precedence
|
|
14
|
+
*/
|
|
15
|
+
globalContext,
|
|
16
|
+
_pageFilesAll: globalContext._pageFilesAll,
|
|
17
|
+
_pageConfigs: globalContext._pageConfigs,
|
|
18
|
+
_pageConfigGlobal: globalContext._pageConfigGlobal,
|
|
19
|
+
_allPageIds: globalContext._allPageIds,
|
|
20
|
+
_pageRoutes: globalContext._pageRoutes,
|
|
21
|
+
_onBeforeRouteHook: globalContext._onBeforeRouteHook,
|
|
16
22
|
isClientSide: true,
|
|
17
23
|
isPrerendering: false,
|
|
18
24
|
urlOriginal,
|
|
19
|
-
_objectCreatedByVike: true,
|
|
20
25
|
_urlHandler: null,
|
|
21
26
|
_urlRewrite: null,
|
|
22
|
-
_baseServer: baseServer
|
|
23
|
-
_pageFilesAll: pageFilesAll,
|
|
24
|
-
_pageConfigs: pageConfigs,
|
|
25
|
-
_pageConfigGlobal: pageConfigGlobal,
|
|
26
|
-
_allPageIds: allPageIds,
|
|
27
|
-
_pageRoutes: pageRoutes,
|
|
28
|
-
_onBeforeRouteHook: onBeforeRouteHook
|
|
27
|
+
_baseServer: baseServer
|
|
29
28
|
};
|
|
30
|
-
const pageContextUrlComputed = getPageContextUrlComputed(
|
|
31
|
-
objectAssign(
|
|
32
|
-
|
|
29
|
+
const pageContextUrlComputed = getPageContextUrlComputed(pageContextCreated);
|
|
30
|
+
objectAssign(pageContextCreated, pageContextUrlComputed);
|
|
31
|
+
const pageContextAugmented = await createPageContextShared(pageContextCreated, globalContext._pageConfigGlobal);
|
|
32
|
+
augmentType(pageContextCreated, pageContextAugmented);
|
|
33
|
+
return pageContextCreated;
|
|
33
34
|
}
|
|
@@ -3,11 +3,11 @@ export { getPageContextFromHooks_serialized };
|
|
|
3
3
|
export { getPageContextFromServerHooks };
|
|
4
4
|
export { getPageContextFromClientHooks };
|
|
5
5
|
export { setPageContextInitIsPassedToClient };
|
|
6
|
-
import { assert, assertUsage, hasProp, objectAssign, getProjectError, redirectHard,
|
|
6
|
+
import { assert, assertUsage, hasProp, objectAssign, getProjectError, redirectHard, isObject, getGlobalObject } from './utils.js';
|
|
7
7
|
import { parse } from '@brillout/json-serializer/parse';
|
|
8
|
-
import { getPageContextSerializedInHtml } from '../shared/
|
|
8
|
+
import { getPageContextSerializedInHtml } from '../shared/getJsonSerializedInHtml.js';
|
|
9
9
|
import { analyzePageServerSide } from '../../shared/getPageFiles/analyzePageServerSide.js';
|
|
10
|
-
import {
|
|
10
|
+
import { getHookFromPageContext } from '../../shared/hooks/getHook.js';
|
|
11
11
|
import { preparePageContextForUserConsumptionClientSide } from '../shared/preparePageContextForUserConsumptionClientSide.js';
|
|
12
12
|
import { removeBuiltInOverrides } from './getPageContext/removeBuiltInOverrides.js';
|
|
13
13
|
import { getPageContextRequestUrl } from '../../shared/getPageContextRequestUrl.js';
|
|
@@ -18,6 +18,7 @@ import { executeGuardHook } from '../../shared/route/executeGuardHook.js';
|
|
|
18
18
|
import { AbortRender, isAbortPageContext } from '../../shared/route/abort.js';
|
|
19
19
|
import { pageContextInitIsPassedToClient } from '../../shared/misc/pageContextInitIsPassedToClient.js';
|
|
20
20
|
import { isServerSideError } from '../../shared/misc/isServerSideError.js';
|
|
21
|
+
import { executeHook } from '../../shared/hooks/executeHook.js';
|
|
21
22
|
const globalObject = getGlobalObject('client-routing-runtime/getPageContextFromHooks.ts', {});
|
|
22
23
|
// TODO/eventually: rename
|
|
23
24
|
function getPageContextFromHooks_serialized() {
|
|
@@ -101,7 +102,7 @@ async function getPageContextFromClientHooks(pageContext, isErrorPage) {
|
|
|
101
102
|
return pageContextFromClientHooks;
|
|
102
103
|
}
|
|
103
104
|
async function executeHookClientSide(hookName, pageContext) {
|
|
104
|
-
const hook =
|
|
105
|
+
const hook = getHookFromPageContext(pageContext, hookName);
|
|
105
106
|
if (!hook) {
|
|
106
107
|
// No hook defined or hook's env.client is false
|
|
107
108
|
return {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { getGlobalContextClientInternal };
|
|
2
|
+
export type { GlobalContextClient };
|
|
3
|
+
import type { GlobalContextSharedPublic } from '../../shared/createGlobalContextShared.js';
|
|
4
|
+
type GlobalContextClient = GlobalContextSharedPublic & Pick<GlobalContextClientInternal, 'isClientSide'> & Vike.GlobalContext & Vike.GlobalContextClient & {};
|
|
5
|
+
type GlobalContextClientInternal = Awaited<ReturnType<typeof getGlobalContextClientInternal>>;
|
|
6
|
+
declare const getGlobalContextClientInternal: () => Promise<{
|
|
7
|
+
isGlobalContext: true;
|
|
8
|
+
_virtualFileExports: unknown;
|
|
9
|
+
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
10
|
+
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
11
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
12
|
+
_allPageIds: string[];
|
|
13
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
14
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
15
|
+
} & {
|
|
16
|
+
isClientSide: true;
|
|
17
|
+
} & {
|
|
18
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
19
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
20
|
+
}>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { getGlobalContextClientInternal };
|
|
2
|
+
import { createGetGlobalContextClient } from '../shared/createGetGlobalContextClient.js';
|
|
3
|
+
import { loadPageRoutes } from '../../shared/route/loadPageRoutes.js';
|
|
4
|
+
// @ts-ignore
|
|
5
|
+
import * as virtualFileExports from 'virtual:vike:importUserCode:client:client-routing';
|
|
6
|
+
const getGlobalContextClientInternal = createGetGlobalContextClient(virtualFileExports, true, addGlobalContext);
|
|
7
|
+
async function addGlobalContext(globalContext) {
|
|
8
|
+
const { pageRoutes, onBeforeRouteHook } = await loadPageRoutes(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
|
|
9
|
+
return {
|
|
10
|
+
_pageRoutes: pageRoutes,
|
|
11
|
+
_onBeforeRouteHook: onBeforeRouteHook
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -3,9 +3,9 @@ import { isSameAsCurrentUrl, skipLink } from './skipLink.js';
|
|
|
3
3
|
import { renderPageClientSide } from './renderPageClientSide.js';
|
|
4
4
|
import { scrollToHashOrTop } from './setScrollPosition.js';
|
|
5
5
|
function initOnLinkClick() {
|
|
6
|
-
document.addEventListener('click',
|
|
6
|
+
document.addEventListener('click', onLinkClick);
|
|
7
7
|
}
|
|
8
|
-
async function
|
|
8
|
+
async function onLinkClick(ev) {
|
|
9
9
|
if (!isNormalLeftClick(ev))
|
|
10
10
|
return;
|
|
11
11
|
const linkTag = findLinkTag(ev.target);
|
|
@@ -10,7 +10,7 @@ import { isErrorFetchingStaticAssets, loadUserFilesClientSide } from '../shared/
|
|
|
10
10
|
import { skipLink } from './skipLink.js';
|
|
11
11
|
import { disableClientRouting } from './renderPageClientSide.js';
|
|
12
12
|
import { isClientSideRoutable } from './isClientSideRoutable.js';
|
|
13
|
-
import {
|
|
13
|
+
import { createPageContextClientSide } from './createPageContext.js';
|
|
14
14
|
import { route } from '../../shared/route/index.js';
|
|
15
15
|
import { noRouteMatch } from '../../shared/route/noRouteMatch.js';
|
|
16
16
|
import { getPageContextFromServerHooks } from './getPageContextFromHooks.js';
|
|
@@ -238,7 +238,7 @@ function isExpired(found) {
|
|
|
238
238
|
}
|
|
239
239
|
// TODO/next-major-release: make it sync
|
|
240
240
|
async function getPageContextLink(urlOfLink) {
|
|
241
|
-
const pageContextLink = await
|
|
241
|
+
const pageContextLink = await createPageContextClientSide(urlOfLink);
|
|
242
242
|
let pageContextFromRoute;
|
|
243
243
|
try {
|
|
244
244
|
pageContextFromRoute = await route(pageContextLink);
|
|
@@ -3,13 +3,13 @@ export { getRenderCount };
|
|
|
3
3
|
export { disableClientRouting };
|
|
4
4
|
export { firstRenderStartPromise };
|
|
5
5
|
export { getPageContextClient };
|
|
6
|
-
import { assert, isSameErrorMessage, objectAssign, redirectHard, getGlobalObject,
|
|
6
|
+
import { assert, isSameErrorMessage, objectAssign, redirectHard, getGlobalObject, hasProp, augmentType, genPromise, isCallable, catchInfiniteLoop } from './utils.js';
|
|
7
7
|
import { getPageContextFromClientHooks, getPageContextFromServerHooks, getPageContextFromHooks_isHydration, getPageContextFromHooks_serialized, setPageContextInitIsPassedToClient } from './getPageContextFromHooks.js';
|
|
8
|
-
import {
|
|
8
|
+
import { createPageContextClientSide } from './createPageContext.js';
|
|
9
9
|
import { addLinkPrefetchHandlers, addLinkPrefetchHandlers_unwatch, addLinkPrefetchHandlers_watch, getPageContextPrefetched, populatePageContextPrefetchCache } from './prefetch.js';
|
|
10
10
|
import { assertInfo, assertWarning, isReact } from './utils.js';
|
|
11
11
|
import { executeOnRenderClientHook } from '../shared/executeOnRenderClientHook.js';
|
|
12
|
-
import { assertHook,
|
|
12
|
+
import { assertHook, getHookFromPageContext } from '../../shared/hooks/getHook.js';
|
|
13
13
|
import { isErrorFetchingStaticAssets, loadUserFilesClientSide } from '../shared/loadUserFilesClientSide.js';
|
|
14
14
|
import { pushHistoryState } from './history.js';
|
|
15
15
|
import { assertNoInfiniteAbortLoop, getPageContextFromAllRewrites, isAbortError, logAbortErrorHandled } from '../../shared/route/abort.js';
|
|
@@ -21,6 +21,7 @@ import { getErrorPageId } from '../../shared/error-page.js';
|
|
|
21
21
|
import { setPageContextCurrent } from './getPageContextCurrent.js';
|
|
22
22
|
import { getRouteStringParameterList } from '../../shared/route/resolveRouteString.js';
|
|
23
23
|
import { getCurrentUrl } from '../shared/getCurrentUrl.js';
|
|
24
|
+
import { executeHook } from '../../shared/hooks/executeHook.js';
|
|
24
25
|
const globalObject = getGlobalObject('client-routing-runtime/renderPageClientSide.ts', (() => {
|
|
25
26
|
const { promise: firstRenderStartPromise, resolve: firstRenderStartPromiseResolve } = genPromise();
|
|
26
27
|
return {
|
|
@@ -62,7 +63,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
62
63
|
assertHook(previousPageContext, 'onPageTransitionStart');
|
|
63
64
|
if (!globalObject.isTransitioning) {
|
|
64
65
|
globalObject.isTransitioning = true;
|
|
65
|
-
const onPageTransitionStartHook =
|
|
66
|
+
const onPageTransitionStartHook = getHookFromPageContext(previousPageContext, 'onPageTransitionStart');
|
|
66
67
|
if (onPageTransitionStartHook) {
|
|
67
68
|
const hook = onPageTransitionStartHook;
|
|
68
69
|
const { hookFn } = hook;
|
|
@@ -215,7 +216,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
215
216
|
}
|
|
216
217
|
}
|
|
217
218
|
async function getPageContextBegin(isForErrorPage) {
|
|
218
|
-
const pageContext = await
|
|
219
|
+
const pageContext = await createPageContextClientSide(urlOriginal);
|
|
219
220
|
objectAssign(pageContext, {
|
|
220
221
|
isBackwardNavigation,
|
|
221
222
|
isClientSideNavigation,
|
|
@@ -429,7 +430,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
429
430
|
// onHydrationEnd()
|
|
430
431
|
if (isFirstRender && !onRenderClientError) {
|
|
431
432
|
assertHook(pageContext, 'onHydrationEnd');
|
|
432
|
-
const hook =
|
|
433
|
+
const hook = getHookFromPageContext(pageContext, 'onHydrationEnd');
|
|
433
434
|
if (hook) {
|
|
434
435
|
const { hookFn } = hook;
|
|
435
436
|
try {
|
|
@@ -452,7 +453,7 @@ async function renderPageClientSide(renderArgs) {
|
|
|
452
453
|
globalObject.isTransitioning = undefined;
|
|
453
454
|
assert(previousPageContext);
|
|
454
455
|
assertHook(previousPageContext, 'onPageTransitionEnd');
|
|
455
|
-
const hook =
|
|
456
|
+
const hook = getHookFromPageContext(previousPageContext, 'onPageTransitionEnd');
|
|
456
457
|
if (hook) {
|
|
457
458
|
const { hookFn } = hook;
|
|
458
459
|
try {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export * from '../../utils/assert.js';
|
|
2
2
|
export * from '../../utils/assertSingleInstance.js';
|
|
3
|
-
export * from '../../shared/hooks/executeHook.js';
|
|
4
3
|
export * from '../../utils/getGlobalObject.js';
|
|
5
4
|
export * from '../../utils/hasProp.js';
|
|
6
5
|
export * from '../../utils/isBrowser.js';
|
|
@@ -4,7 +4,6 @@ import { onLoad } from './onLoad.js';
|
|
|
4
4
|
onLoad();
|
|
5
5
|
export * from '../../utils/assert.js';
|
|
6
6
|
export * from '../../utils/assertSingleInstance.js';
|
|
7
|
-
export * from '../../shared/hooks/executeHook.js';
|
|
8
7
|
export * from '../../utils/getGlobalObject.js';
|
|
9
8
|
export * from '../../utils/hasProp.js';
|
|
10
9
|
export * from '../../utils/isBrowser.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getGlobalContext, getGlobalContext as getGlobalContextAsync, getGlobalContextSync } from './shared/createGetGlobalContextClient.js';
|
package/dist/esm/client/node.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { assertUsage } from './server-routing-runtime/utils.js';
|
|
2
2
|
assertUsage(false, [
|
|
3
|
-
'
|
|
3
|
+
'Server imports are forbidden on the client-side:',
|
|
4
4
|
" import { something } from 'vike/server'",
|
|
5
|
-
// TODO/v1-release: remove this line (also remove s above in `s/Following imports/Following import/`)
|
|
6
|
-
" import { something } from 'vike'",
|
|
7
5
|
'Did you mean the following instead?',
|
|
8
6
|
" import { something } from 'vike/client/router'"
|
|
9
7
|
].join('\n'), { showStackTrace: true });
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export { createPageContextClientSide };
|
|
2
|
+
declare function createPageContextClientSide(): Promise<{
|
|
3
|
+
globalContext: {
|
|
4
|
+
isGlobalContext: true;
|
|
5
|
+
_virtualFileExports: unknown;
|
|
6
|
+
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
7
|
+
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
8
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
9
|
+
_allPageIds: string[];
|
|
10
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
11
|
+
pages: import("../../shared/page-configs/getPageConfigUserFriendly.js").PageConfigsUserFriendly;
|
|
12
|
+
} & {
|
|
13
|
+
isClientSide: true;
|
|
14
|
+
} & object;
|
|
15
|
+
_pageFilesAll: import("../../shared/getPageFiles.js").PageFile[];
|
|
16
|
+
_pageConfigs: import("../../__internal/index.js").PageConfig[];
|
|
17
|
+
_pageConfigGlobal: import("../../shared/page-configs/PageConfig.js").PageConfigGlobalRuntime;
|
|
18
|
+
_allPageIds: string[];
|
|
19
|
+
isPrerendering: boolean;
|
|
20
|
+
isClientSide: boolean;
|
|
21
|
+
isHydration: true;
|
|
22
|
+
isBackwardNavigation: null;
|
|
23
|
+
_hasPageContextFromServer: true;
|
|
24
|
+
_hasPageContextFromClient: false;
|
|
25
|
+
} & {
|
|
26
|
+
pageId: string;
|
|
27
|
+
routeParams: Record<string, string>;
|
|
28
|
+
} & import("../../shared/getPageFiles.js").PageConfigUserFriendlyOld & {
|
|
29
|
+
_pageFilesLoaded: import("../../shared/getPageFiles.js").PageFile[];
|
|
30
|
+
} & {
|
|
31
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
32
|
+
_source: import("../../shared/page-configs/getPageConfigUserFriendly.js").Source;
|
|
33
|
+
_sources: import("../../shared/page-configs/getPageConfigUserFriendly.js").Sources;
|
|
34
|
+
_from: import("../../shared/page-configs/getPageConfigUserFriendly.js").From;
|
|
35
|
+
isPageContext: true;
|
|
36
|
+
}>;
|