vike 0.4.228-commit-90cfb1a → 0.4.228-commit-558224a
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/shared/createGetGlobalContext.js +31 -0
- package/dist/cjs/client/shared/getJsonSerializedInHtml.js +31 -0
- package/dist/cjs/client/shared/utils.js +21 -0
- package/dist/cjs/node/plugin/plugins/build/pluginModuleBanner.js +1 -0
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +6 -1
- package/dist/cjs/node/prerender/runPrerender.js +42 -40
- package/dist/cjs/node/prerender/utils.js +1 -1
- package/dist/cjs/node/runtime/globalContext.js +87 -119
- 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 +1 -1
- package/dist/cjs/node/runtime/html/{serializePageContextClientSide.js → serializeContext.js} +37 -67
- package/dist/cjs/node/runtime/renderPage/analyzePage.js +1 -1
- package/dist/cjs/node/runtime/renderPage/createPageContextServerSide.js +14 -13
- package/dist/cjs/node/runtime/renderPage/getPageAssets.js +2 -2
- 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/renderPageAlreadyRouted.js +3 -3
- package/dist/cjs/node/runtime/renderPage.js +10 -10
- package/dist/cjs/node/runtime/utils.js +1 -1
- package/dist/cjs/shared/createGlobalContextShared.js +45 -0
- package/dist/cjs/shared/createPageContextShared.js +2 -2
- package/dist/cjs/{node/runtime/renderPage → shared/hooks}/executeHookGeneric.js +4 -4
- package/dist/cjs/shared/htmlElementIds.js +5 -0
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/catchInfiniteLoop.js +3 -3
- package/dist/cjs/utils/getPublicProxy.js +27 -0
- package/dist/cjs/utils/objectAssign.js +5 -5
- package/dist/cjs/utils/objectReplace.js +4 -4
- package/dist/esm/__internal/index.js +2 -2
- package/dist/esm/client/client-routing-runtime/{createPageContextClientSide.d.ts → createPageContext.d.ts} +17 -8
- package/dist/esm/client/client-routing-runtime/{createPageContextClientSide.js → createPageContext.js} +14 -16
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +1 -1
- package/dist/esm/client/client-routing-runtime/globalContext.d.ts +16 -0
- package/dist/esm/client/client-routing-runtime/globalContext.js +13 -0
- package/dist/esm/client/client-routing-runtime/prefetch.js +1 -1
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +2 -3
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.d.ts +13 -4
- package/dist/esm/client/server-routing-runtime/createPageContextClientSide.js +16 -15
- package/dist/esm/client/server-routing-runtime/globalContext.d.ts +13 -0
- package/dist/esm/client/server-routing-runtime/globalContext.js +5 -0
- package/dist/esm/client/shared/createGetGlobalContext.d.ts +11 -0
- package/dist/esm/client/shared/createGetGlobalContext.js +29 -0
- 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/utils.d.ts +3 -0
- package/dist/esm/client/shared/utils.js +3 -0
- package/dist/esm/node/plugin/plugins/build/pluginModuleBanner.js +1 -0
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +6 -1
- package/dist/esm/node/prerender/runPrerender.d.ts +300 -5
- package/dist/esm/node/prerender/runPrerender.js +43 -41
- 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 +393 -46
- package/dist/esm/node/runtime/globalContext.js +88 -120
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +18 -5
- package/dist/esm/node/runtime/html/injectAssets/getViteDevScript.js +2 -2
- package/dist/esm/node/runtime/html/injectAssets.d.ts +1 -1
- 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 +1 -1
- 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/renderPage/analyzePage.js +1 -1
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.d.ts +95 -35
- package/dist/esm/node/runtime/renderPage/createPageContextServerSide.js +14 -13
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/getPageAssets.js +2 -2
- package/dist/esm/node/runtime/renderPage/handleErrorWithoutErrorPage.js +1 -1
- package/dist/esm/node/runtime/renderPage/loadUserFilesServerSide.js +1 -1
- package/dist/esm/node/runtime/renderPage/log404/index.js +1 -1
- package/dist/esm/node/runtime/renderPage/preparePageContextForUserConsumptionServerSide.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +186 -64
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +3 -3
- package/dist/esm/node/runtime/renderPage.d.ts +95 -34
- package/dist/esm/node/runtime/renderPage.js +10 -10
- package/dist/esm/node/runtime/utils.d.ts +1 -1
- package/dist/esm/node/runtime/utils.js +1 -1
- package/dist/esm/shared/VikeNamespace.d.ts +6 -0
- package/dist/esm/shared/createGlobalContextShared.d.ts +25 -0
- package/dist/esm/shared/createGlobalContextShared.js +43 -0
- package/dist/esm/shared/createPageContextShared.js +2 -2
- package/dist/esm/shared/hooks/executeHookGeneric.d.ts +8 -0
- package/dist/esm/{node/runtime/renderPage → shared/hooks}/executeHookGeneric.js +4 -4
- 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 +8 -3
- package/dist/esm/shared/types.d.ts +20 -13
- 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/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/objectAssign.d.ts +1 -1
- package/dist/esm/utils/objectAssign.js +5 -5
- package/dist/esm/utils/objectReplace.d.ts +1 -1
- package/dist/esm/utils/objectReplace.js +4 -4
- package/package.json +2 -2
- package/dist/cjs/client/client-routing-runtime/globalContextClientSide.js +0 -10
- package/dist/cjs/client/client-routing-runtime/onLoad.js +0 -10
- package/dist/cjs/client/client-routing-runtime/utils.js +0 -43
- package/dist/cjs/utils/makePublicCopy.js +0 -32
- package/dist/esm/client/client-routing-runtime/globalContextClientSide.d.ts +0 -5
- package/dist/esm/client/client-routing-runtime/globalContextClientSide.js +0 -8
- package/dist/esm/client/shared/getPageContextSerializedInHtml.js +0 -20
- package/dist/esm/node/runtime/renderPage/executeHookGeneric.d.ts +0 -8
- package/dist/esm/utils/makePublicCopy.d.ts +0 -3
- package/dist/esm/utils/makePublicCopy.js +0 -30
|
@@ -17,10 +17,10 @@ const assertSetup_js_1 = require("../utils/assertSetup.js");
|
|
|
17
17
|
async function getPagesAndRoutes() {
|
|
18
18
|
(0, assertSetup_js_1.setNodeEnvProduction)();
|
|
19
19
|
await (0, globalContext_js_2.initGlobalContext_getPagesAndRoutes)();
|
|
20
|
-
const globalContext = await (0, globalContext_js_2.getGlobalContextInternal)();
|
|
20
|
+
const { globalContext } = await (0, globalContext_js_2.getGlobalContextInternal)();
|
|
21
21
|
const {
|
|
22
22
|
//
|
|
23
|
-
pageRoutes, pageFilesAll, pageConfigs, allPageIds } = globalContext;
|
|
23
|
+
_pageRoutes: pageRoutes, _pageFilesAll: pageFilesAll, _pageConfigs: pageConfigs, _allPageIds: allPageIds } = globalContext;
|
|
24
24
|
return {
|
|
25
25
|
pageRoutes,
|
|
26
26
|
pageFilesAll,
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getGlobalContext = void 0;
|
|
37
|
+
const createGetGlobalContext_js_1 = require("../shared/createGetGlobalContext.js");
|
|
38
|
+
const loadPageRoutes_js_1 = require("../../shared/route/loadPageRoutes.js");
|
|
39
|
+
// @ts-ignore
|
|
40
|
+
const virtualFileExports = __importStar(require("virtual:vike:importUserCode:client:client-routing"));
|
|
41
|
+
const getGlobalContext = (0, createGetGlobalContext_js_1.createGetGlobalContext)(virtualFileExports, true, addGlobalContext);
|
|
42
|
+
exports.getGlobalContext = getGlobalContext;
|
|
43
|
+
async function addGlobalContext(globalContext) {
|
|
44
|
+
const { pageRoutes, onBeforeRouteHook } = await (0, loadPageRoutes_js_1.loadPageRoutes)(globalContext._pageFilesAll, globalContext._pageConfigs, globalContext._pageConfigGlobal, globalContext._allPageIds);
|
|
45
|
+
return {
|
|
46
|
+
_pageRoutes: pageRoutes,
|
|
47
|
+
_onBeforeRouteHook: onBeforeRouteHook
|
|
48
|
+
};
|
|
49
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getGlobalContext = void 0;
|
|
37
|
+
const createGetGlobalContext_js_1 = require("../shared/createGetGlobalContext.js");
|
|
38
|
+
// @ts-ignore
|
|
39
|
+
const virtualFileExports = __importStar(require("virtual:vike:importUserCode:client:server-routing"));
|
|
40
|
+
const getGlobalContext = (0, createGetGlobalContext_js_1.createGetGlobalContext)(virtualFileExports, false);
|
|
41
|
+
exports.getGlobalContext = getGlobalContext;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createGetGlobalContext = createGetGlobalContext;
|
|
4
|
+
const createGlobalContextShared_js_1 = require("../../shared/createGlobalContextShared.js");
|
|
5
|
+
const getJsonSerializedInHtml_js_1 = require("./getJsonSerializedInHtml.js");
|
|
6
|
+
const utils_js_1 = require("./utils.js");
|
|
7
|
+
const globalObject = (0, utils_js_1.getGlobalObject)('createGetGlobalContext.ts', {});
|
|
8
|
+
function createGetGlobalContext(virtualFileExports, isClientRouting, addGlobalContext) {
|
|
9
|
+
(0, utils_js_1.assert)(globalObject.isClientRouting === undefined || globalObject.isClientRouting === isClientRouting);
|
|
10
|
+
globalObject.isClientRouting = isClientRouting;
|
|
11
|
+
// Eagerly call onCreateGlobalContext() hook
|
|
12
|
+
getGlobalContext();
|
|
13
|
+
return getGlobalContext;
|
|
14
|
+
async function getGlobalContext() {
|
|
15
|
+
// Cache
|
|
16
|
+
if (globalObject.globalContext &&
|
|
17
|
+
// Don't break HMR
|
|
18
|
+
globalObject.globalContext._virtualFileExports !== virtualFileExports) {
|
|
19
|
+
return globalObject.globalContext;
|
|
20
|
+
}
|
|
21
|
+
// Create
|
|
22
|
+
const globalContext = await (0, createGlobalContextShared_js_1.createGlobalContextShared)(virtualFileExports, globalObject, async (globalContext) => {
|
|
23
|
+
const globalContextAddendum = {};
|
|
24
|
+
(0, utils_js_1.objectAssign)(globalContextAddendum, (0, getJsonSerializedInHtml_js_1.getGlobalContextSerializedInHtml)());
|
|
25
|
+
(0, utils_js_1.objectAssign)(globalContextAddendum, await addGlobalContext?.(globalContext));
|
|
26
|
+
return globalContextAddendum;
|
|
27
|
+
});
|
|
28
|
+
// Return
|
|
29
|
+
return globalContext;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPageContextSerializedInHtml = getPageContextSerializedInHtml;
|
|
4
|
+
exports.getGlobalContextSerializedInHtml = getGlobalContextSerializedInHtml;
|
|
5
|
+
const parse_1 = require("@brillout/json-serializer/parse");
|
|
6
|
+
const utils_js_1 = require("./utils.js");
|
|
7
|
+
const htmlElementIds_js_1 = require("../../shared/htmlElementIds.js");
|
|
8
|
+
// elements should exist because:
|
|
9
|
+
// 1. <script id="vike_pageContext" type="application/json"> appears before the <script> that loads Vike's client runtime (which includes this file)
|
|
10
|
+
// 2. <script id="vike_pageContext" type="application/json"> is neither async nor defer
|
|
11
|
+
// See https://github.com/vikejs/vike/pull/1271
|
|
12
|
+
function getPageContextSerializedInHtml() {
|
|
13
|
+
const pageContextSerializedInHtml = findAndParseJson(htmlElementIds_js_1.htmlElementId_pageContext);
|
|
14
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContextSerializedInHtml, 'pageId', 'string'));
|
|
15
|
+
(0, utils_js_1.assert)((0, utils_js_1.hasProp)(pageContextSerializedInHtml, 'routeParams', 'string{}'));
|
|
16
|
+
return pageContextSerializedInHtml;
|
|
17
|
+
}
|
|
18
|
+
function getGlobalContextSerializedInHtml() {
|
|
19
|
+
const globalContextSerializedInHtml = findAndParseJson(htmlElementIds_js_1.htmlElementId_globalContext);
|
|
20
|
+
return globalContextSerializedInHtml;
|
|
21
|
+
}
|
|
22
|
+
function findAndParseJson(id) {
|
|
23
|
+
const elem = document.getElementById(id);
|
|
24
|
+
(0, utils_js_1.assertUsage)(elem,
|
|
25
|
+
// It seems like it can be missing when HTML is malformed: https://github.com/vikejs/vike/issues/913
|
|
26
|
+
`Couldn't find #${id} (which Vike automatically injects in the HTML): make sure it exists (i.e. don't remove it and make sure your HTML isn't malformed)`);
|
|
27
|
+
const jsonStr = elem.textContent;
|
|
28
|
+
(0, utils_js_1.assert)(jsonStr);
|
|
29
|
+
const json = (0, parse_1.parse)(jsonStr);
|
|
30
|
+
return json;
|
|
31
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("../../utils/assert.js"), exports);
|
|
18
|
+
__exportStar(require("../../utils/parseUrl.js"), exports);
|
|
19
|
+
__exportStar(require("../../utils/getGlobalObject.js"), exports);
|
|
20
|
+
__exportStar(require("../../utils/objectAssign.js"), exports);
|
|
21
|
+
__exportStar(require("../../utils/hasProp.js"), exports);
|
|
@@ -31,6 +31,7 @@ function pluginModuleBanner() {
|
|
|
31
31
|
id = (0, virtual_files_js_1.removeVirtualIdTag)(id);
|
|
32
32
|
if (id.startsWith(config.root))
|
|
33
33
|
id = id.slice(config.root.length + 1);
|
|
34
|
+
id = id.replaceAll('*/', '*\\/'); // https://github.com/vikejs/vike/issues/2377
|
|
34
35
|
const s = new magic_string_1.default(code);
|
|
35
36
|
// Use legal comment so that esbuild doesn't remove it.
|
|
36
37
|
// - Terser still removes the comment, but I guess users use terser to minify JavaScript so I guess it's a good thing that comment is removed.
|
|
@@ -20,7 +20,12 @@ const configDefinitionsBuiltIn = {
|
|
|
20
20
|
env: { client: true }
|
|
21
21
|
},
|
|
22
22
|
onCreatePageContext: {
|
|
23
|
-
env: { server: true },
|
|
23
|
+
env: { server: true, client: true },
|
|
24
|
+
global: true,
|
|
25
|
+
cumulative: true
|
|
26
|
+
},
|
|
27
|
+
onCreateGlobalContext: {
|
|
28
|
+
env: { server: true, client: true },
|
|
24
29
|
global: true,
|
|
25
30
|
cumulative: true
|
|
26
31
|
},
|
|
@@ -132,26 +132,26 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
132
132
|
}
|
|
133
133
|
const concurrencyLimit = (0, utils_js_1.pLimit)(parallel === false || parallel === 0 ? 1 : parallel === true || parallel === undefined ? (0, os_1.cpus)().length : parallel);
|
|
134
134
|
await (0, globalContext_js_1.initGlobalContext_runPrerender)();
|
|
135
|
-
const globalContext = await (0, globalContext_js_1.getGlobalContextInternal)();
|
|
136
|
-
globalContext.
|
|
135
|
+
const { globalContext, globalContext_public } = await (0, globalContext_js_1.getGlobalContextInternal)();
|
|
136
|
+
globalContext._pageFilesAll.forEach(assertExportNames);
|
|
137
137
|
const prerenderContext = {
|
|
138
|
-
noExtraDir,
|
|
139
138
|
pageContexts: [],
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
139
|
+
output: [],
|
|
140
|
+
_noExtraDir: noExtraDir,
|
|
141
|
+
_pageContextInit: options.pageContextInit ?? null,
|
|
142
|
+
_prerenderedPageContexts: {}
|
|
143
143
|
};
|
|
144
144
|
const doNotPrerenderList = [];
|
|
145
145
|
await collectDoNoPrerenderList(vikeConfig.pageConfigs, doNotPrerenderList, defaultLocalValue, concurrencyLimit, globalContext);
|
|
146
146
|
// Allow user to create `pageContext` for parameterized routes and/or bulk data fetching
|
|
147
147
|
// https://vike.dev/onBeforePrerenderStart
|
|
148
|
-
await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList);
|
|
148
|
+
await callOnBeforePrerenderStartHooks(prerenderContext, globalContext, globalContext_public, concurrencyLimit, doNotPrerenderList);
|
|
149
149
|
// Create `pageContext` for each page with a static route
|
|
150
150
|
const urlList = getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList);
|
|
151
|
-
await createPageContexts(urlList, prerenderContext, globalContext, concurrencyLimit, false);
|
|
151
|
+
await createPageContexts(urlList, prerenderContext, globalContext, globalContext_public, concurrencyLimit, false);
|
|
152
152
|
// Create `pageContext` for 404 page
|
|
153
153
|
const urlList404 = getUrlList404(globalContext);
|
|
154
|
-
await createPageContexts(urlList404, prerenderContext, globalContext, concurrencyLimit, true);
|
|
154
|
+
await createPageContexts(urlList404, prerenderContext, globalContext, globalContext_public, concurrencyLimit, true);
|
|
155
155
|
// Allow user to duplicate the list of `pageContext` for i18n
|
|
156
156
|
// https://vike.dev/onPrerenderStart
|
|
157
157
|
await callOnPrerenderStartHook(prerenderContext, globalContext, concurrencyLimit);
|
|
@@ -161,15 +161,15 @@ async function runPrerender(options = {}, standaloneTrigger) {
|
|
|
161
161
|
prerenderedCount++;
|
|
162
162
|
const { pageId } = htmlFile.pageContext;
|
|
163
163
|
(0, utils_js_1.assert)(pageId);
|
|
164
|
-
prerenderContext.
|
|
164
|
+
prerenderContext._prerenderedPageContexts[pageId] = htmlFile.pageContext;
|
|
165
165
|
await writeFiles(htmlFile, root, outDirClient, options.onPagePrerender, prerenderContext.output, logLevel);
|
|
166
166
|
};
|
|
167
167
|
await prerenderPages(prerenderContext, concurrencyLimit, onComplete);
|
|
168
|
-
warnContradictoryNoPrerenderList(prerenderContext.
|
|
168
|
+
warnContradictoryNoPrerenderList(prerenderContext._prerenderedPageContexts, doNotPrerenderList);
|
|
169
169
|
if (logLevel === 'info') {
|
|
170
170
|
console.log(`${picocolors_1.default.green(`✓`)} ${prerenderedCount} HTML documents pre-rendered.`);
|
|
171
171
|
}
|
|
172
|
-
await warnMissingPages(prerenderContext.
|
|
172
|
+
await warnMissingPages(prerenderContext._prerenderedPageContexts, globalContext, doNotPrerenderList, partial);
|
|
173
173
|
const prerenderContextPublic = makePublic(prerenderContext);
|
|
174
174
|
(0, utils_js_1.objectAssign)(vike.prerenderContext, prerenderContextPublic);
|
|
175
175
|
if (prerenderConfigGlobal.isPrerenderingEnabledForAllPages && !prerenderConfigGlobal.keepDistServer) {
|
|
@@ -196,7 +196,7 @@ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, default
|
|
|
196
196
|
});
|
|
197
197
|
// Old design
|
|
198
198
|
// TODO/v1-release: remove
|
|
199
|
-
await Promise.all(globalContext.
|
|
199
|
+
await Promise.all(globalContext._pageFilesAll
|
|
200
200
|
.filter((p) => {
|
|
201
201
|
assertExportNames(p);
|
|
202
202
|
if (!p.exportNames?.includes('doNotPrerender'))
|
|
@@ -208,8 +208,8 @@ async function collectDoNoPrerenderList(pageConfigs, doNotPrerenderList, default
|
|
|
208
208
|
(0, utils_js_1.assert)(p.loadFile);
|
|
209
209
|
await p.loadFile();
|
|
210
210
|
})));
|
|
211
|
-
globalContext.
|
|
212
|
-
const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(globalContext.
|
|
211
|
+
globalContext._allPageIds.forEach((pageId) => {
|
|
212
|
+
const pageFilesServerSide = (0, getPageFiles_js_1.getPageFilesServerSide)(globalContext._pageFilesAll, pageId);
|
|
213
213
|
for (const p of pageFilesServerSide) {
|
|
214
214
|
if (!p.exportNames?.includes('doNotPrerender'))
|
|
215
215
|
continue;
|
|
@@ -233,10 +233,10 @@ function assertExportNames(pageFile) {
|
|
|
233
233
|
const { exportNames, fileType } = pageFile;
|
|
234
234
|
(0, utils_js_1.assert)(exportNames || fileType === '.page.route' || fileType === '.css', pageFile.filePath);
|
|
235
235
|
}
|
|
236
|
-
async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, concurrencyLimit, doNotPrerenderList) {
|
|
236
|
+
async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext, globalContext_public, concurrencyLimit, doNotPrerenderList) {
|
|
237
237
|
const onBeforePrerenderStartHooks = [];
|
|
238
238
|
// V1 design
|
|
239
|
-
await Promise.all(globalContext.
|
|
239
|
+
await Promise.all(globalContext._pageConfigs.map((pageConfig) => concurrencyLimit(async () => {
|
|
240
240
|
const hookName = 'onBeforePrerenderStart';
|
|
241
241
|
const pageConfigLoaded = await (0, loadConfigValues_js_1.loadConfigValues)(pageConfig, false);
|
|
242
242
|
const hook = (0, getHook_js_1.getHookFromPageConfig)(pageConfigLoaded, hookName);
|
|
@@ -252,7 +252,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
252
252
|
});
|
|
253
253
|
})));
|
|
254
254
|
// 0.4 design
|
|
255
|
-
await Promise.all(globalContext.
|
|
255
|
+
await Promise.all(globalContext._pageFilesAll
|
|
256
256
|
.filter((p) => {
|
|
257
257
|
assertExportNames(p);
|
|
258
258
|
if (!p.exportNames?.includes('prerender'))
|
|
@@ -296,7 +296,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
296
296
|
}
|
|
297
297
|
// Add result
|
|
298
298
|
const providedByHook = { hookFilePath, hookName };
|
|
299
|
-
const pageContextNew = await createPageContextPrerendering(url, prerenderContext, globalContext, false, undefined, providedByHook);
|
|
299
|
+
const pageContextNew = await createPageContextPrerendering(url, prerenderContext, globalContext, globalContext_public, false, undefined, providedByHook);
|
|
300
300
|
prerenderContext.pageContexts.push(pageContextNew);
|
|
301
301
|
if (pageContext) {
|
|
302
302
|
(0, utils_js_1.objectAssign)(pageContextNew, { _pageContextAlreadyProvidedByOnPrerenderHook: true });
|
|
@@ -307,7 +307,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
307
307
|
}
|
|
308
308
|
function getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList) {
|
|
309
309
|
const urlList = [];
|
|
310
|
-
globalContext.
|
|
310
|
+
globalContext._pageRoutes.map((pageRoute) => {
|
|
311
311
|
const { pageId } = pageRoute;
|
|
312
312
|
if (doNotPrerenderList.find((p) => p.pageId === pageId))
|
|
313
313
|
return;
|
|
@@ -332,7 +332,7 @@ function getUrlListFromPagesWithStaticRoute(globalContext, doNotPrerenderList) {
|
|
|
332
332
|
}
|
|
333
333
|
function getUrlList404(globalContext) {
|
|
334
334
|
const urlList = [];
|
|
335
|
-
const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext.
|
|
335
|
+
const errorPageId = (0, error_page_js_1.getErrorPageId)(globalContext._pageFilesAll, globalContext._pageConfigs);
|
|
336
336
|
if (errorPageId) {
|
|
337
337
|
urlList.push({
|
|
338
338
|
// A URL is required for `viteDevServer.transformIndexHtml(url,html)`
|
|
@@ -342,28 +342,30 @@ function getUrlList404(globalContext) {
|
|
|
342
342
|
}
|
|
343
343
|
return urlList;
|
|
344
344
|
}
|
|
345
|
-
async function createPageContexts(urlList, prerenderContext, globalContext, concurrencyLimit, is404) {
|
|
345
|
+
async function createPageContexts(urlList, prerenderContext, globalContext, globalContext_public, concurrencyLimit, is404) {
|
|
346
346
|
await Promise.all(urlList.map(({ urlOriginal, pageId }) => concurrencyLimit(async () => {
|
|
347
347
|
// Already included in a onBeforePrerenderStart() hook
|
|
348
348
|
if (prerenderContext.pageContexts.find((pageContext) => isSameUrl(pageContext.urlOriginal, urlOriginal))) {
|
|
349
349
|
return;
|
|
350
350
|
}
|
|
351
|
-
const pageContext = await createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, is404, pageId, null);
|
|
351
|
+
const pageContext = await createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, globalContext_public, is404, pageId, null);
|
|
352
352
|
prerenderContext.pageContexts.push(pageContext);
|
|
353
353
|
})));
|
|
354
354
|
}
|
|
355
|
-
async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, is404, pageId, providedByHook) {
|
|
355
|
+
async function createPageContextPrerendering(urlOriginal, prerenderContext, globalContext, globalContext_public, is404, pageId, providedByHook) {
|
|
356
356
|
const pageContextInit = {
|
|
357
357
|
urlOriginal,
|
|
358
|
-
...prerenderContext.
|
|
358
|
+
...prerenderContext._pageContextInit
|
|
359
359
|
};
|
|
360
|
-
const pageContext = await (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext, {
|
|
360
|
+
const pageContext = await (0, createPageContextServerSide_js_1.createPageContextServerSide)(pageContextInit, globalContext, globalContext_public, {
|
|
361
|
+
isPrerendering: true
|
|
362
|
+
});
|
|
361
363
|
(0, utils_js_1.assert)(pageContext.isPrerendering === true);
|
|
362
364
|
(0, utils_js_1.objectAssign)(pageContext, {
|
|
363
365
|
_urlHandler: null,
|
|
364
366
|
_httpRequestId: null,
|
|
365
367
|
_urlRewrite: null,
|
|
366
|
-
_noExtraDir: prerenderContext.
|
|
368
|
+
_noExtraDir: prerenderContext._noExtraDir,
|
|
367
369
|
_prerenderContext: prerenderContext,
|
|
368
370
|
_providedByHook: providedByHook,
|
|
369
371
|
_urlOriginalModifiedByHook: null,
|
|
@@ -389,14 +391,14 @@ async function createPageContextPrerendering(urlOriginal, prerenderContext, glob
|
|
|
389
391
|
{
|
|
390
392
|
const { pageId } = pageContext;
|
|
391
393
|
(0, utils_js_1.assert)(pageId);
|
|
392
|
-
(0, utils_js_1.assert)(globalContext.
|
|
393
|
-
if (globalContext.
|
|
394
|
-
const pageConfig = globalContext.
|
|
394
|
+
(0, utils_js_1.assert)(globalContext._isPrerendering);
|
|
395
|
+
if (globalContext._pageConfigs.length > 0) {
|
|
396
|
+
const pageConfig = globalContext._pageConfigs.find((p) => p.pageId === pageId);
|
|
395
397
|
(0, utils_js_1.assert)(pageConfig);
|
|
396
398
|
usesClientRouter = (0, getConfigValueRuntime_js_1.getConfigValueRuntime)(pageConfig, 'clientRouting', 'boolean')?.value ?? false;
|
|
397
399
|
}
|
|
398
400
|
else {
|
|
399
|
-
usesClientRouter = globalContext.
|
|
401
|
+
usesClientRouter = globalContext._usesClientRouter;
|
|
400
402
|
}
|
|
401
403
|
}
|
|
402
404
|
(0, utils_js_1.objectAssign)(pageContext, { _usesClientRouter: usesClientRouter });
|
|
@@ -433,9 +435,9 @@ function assertRouteMatch(pageContextFromRoute, pageContext) {
|
|
|
433
435
|
async function callOnPrerenderStartHook(prerenderContext, globalContext, concurrencyLimit) {
|
|
434
436
|
let onPrerenderStartHook;
|
|
435
437
|
// V1 design
|
|
436
|
-
if (globalContext.
|
|
438
|
+
if (globalContext._pageConfigs.length > 0) {
|
|
437
439
|
const hookName = 'onPrerenderStart';
|
|
438
|
-
const hook = (0, getHook_js_1.getHookFromPageConfigGlobal)(globalContext.
|
|
440
|
+
const hook = (0, getHook_js_1.getHookFromPageConfigGlobal)(globalContext._pageConfigGlobal, hookName);
|
|
439
441
|
if (hook) {
|
|
440
442
|
(0, utils_js_1.assert)(hook.hookName === 'onPrerenderStart');
|
|
441
443
|
onPrerenderStartHook = {
|
|
@@ -447,9 +449,9 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
|
|
|
447
449
|
}
|
|
448
450
|
// Old design
|
|
449
451
|
// TODO/v1-release: remove
|
|
450
|
-
if (globalContext.
|
|
452
|
+
if (globalContext._pageConfigs.length === 0) {
|
|
451
453
|
const hookTimeout = (0, getHook_js_1.getHookTimeoutDefault)('onBeforePrerender');
|
|
452
|
-
const pageFilesWithOnBeforePrerenderHook = globalContext.
|
|
454
|
+
const pageFilesWithOnBeforePrerenderHook = globalContext._pageFilesAll.filter((p) => {
|
|
453
455
|
assertExportNames(p);
|
|
454
456
|
if (!p.exportNames?.includes('onBeforePrerender'))
|
|
455
457
|
return false;
|
|
@@ -589,7 +591,7 @@ async function prerenderPages(prerenderContext, concurrencyLimit, onComplete) {
|
|
|
589
591
|
pageContext,
|
|
590
592
|
htmlString: documentHtml,
|
|
591
593
|
pageContextSerialized,
|
|
592
|
-
doNotCreateExtraDirectory: prerenderContext.
|
|
594
|
+
doNotCreateExtraDirectory: prerenderContext._noExtraDir ?? pageContext.is404
|
|
593
595
|
});
|
|
594
596
|
})));
|
|
595
597
|
}
|
|
@@ -606,16 +608,16 @@ function warnContradictoryNoPrerenderList(prerenderedPageContexts, doNotPrerende
|
|
|
606
608
|
});
|
|
607
609
|
}
|
|
608
610
|
async function warnMissingPages(prerenderedPageContexts, globalContext, doNotPrerenderList, partial) {
|
|
609
|
-
const isV1 = globalContext.
|
|
611
|
+
const isV1 = globalContext._pageConfigs.length > 0;
|
|
610
612
|
const hookName = isV1 ? 'onBeforePrerenderStart' : 'prerender';
|
|
611
613
|
/* TODO/after-v1-design-release: document setting `prerender: false` as an alternative to using prerender.partial (both in the warnings and the docs)
|
|
612
614
|
const optOutName = isV1 ? 'prerender' : 'doNotPrerender'
|
|
613
615
|
const msgAddendum = `Explicitly opt-out by setting the config ${optOutName} to ${isV1 ? 'false' : 'true'} or use the option prerender.partial`
|
|
614
616
|
*/
|
|
615
|
-
globalContext.
|
|
617
|
+
globalContext._allPageIds
|
|
616
618
|
.filter((pageId) => !prerenderedPageContexts[pageId])
|
|
617
619
|
.filter((pageId) => !doNotPrerenderList.find((p) => p.pageId === pageId))
|
|
618
|
-
.filter((pageId) => !(0, error_page_js_1.isErrorPage)(pageId, globalContext.
|
|
620
|
+
.filter((pageId) => !(0, error_page_js_1.isErrorPage)(pageId, globalContext._pageConfigs))
|
|
619
621
|
.forEach((pageId) => {
|
|
620
622
|
const pageAt = isV1 ? pageId : `\`${pageId}.page.*\``;
|
|
621
623
|
(0, utils_js_1.assertWarning)(partial, `Cannot pre-render page ${pageAt} because it has a non-static route, while no ${hookName}() hook returned any URL matching the page's route. You need to use a ${hookName}() hook (https://vike.dev/${hookName}) providing a list of URLs for ${pageAt} that should be pre-rendered. If you don't want to pre-render ${pageAt} then use the option prerender.partial (https://vike.dev/prerender#partial) to suppress this warning.`, { onlyOnce: true });
|
|
@@ -768,7 +770,7 @@ function assertIsNotAbort(err, urlOriginal) {
|
|
|
768
770
|
(0, utils_js_1.assertUsage)(false, `${picocolors_1.default.cyan(abortCall)} thrown${thrownBy} while pre-rendering ${urlOriginal} but ${picocolors_1.default.cyan(abortCaller)} isn't supported for pre-rendered pages`);
|
|
769
771
|
}
|
|
770
772
|
function makePublic(prerenderContext) {
|
|
771
|
-
const prerenderContextPublic = (0, utils_js_1.
|
|
773
|
+
const prerenderContextPublic = (0, utils_js_1.getPublicProxy)(prerenderContext, 'prerenderContext', [
|
|
772
774
|
'output', // vite-plugin-vercel
|
|
773
775
|
'pageContexts' // https://vike.dev/i18n#pre-rendering
|
|
774
776
|
]);
|
|
@@ -31,6 +31,6 @@ __exportStar(require("../../utils/pLimit.js"), exports);
|
|
|
31
31
|
__exportStar(require("../../utils/isFilePathAbsoluteFilesystem.js"), exports);
|
|
32
32
|
__exportStar(require("../../utils/isArray.js"), exports);
|
|
33
33
|
__exportStar(require("../../utils/isObject.js"), exports);
|
|
34
|
-
__exportStar(require("../../utils/
|
|
34
|
+
__exportStar(require("../../utils/getPublicProxy.js"), exports);
|
|
35
35
|
__exportStar(require("../../utils/isNullish.js"), exports);
|
|
36
36
|
__exportStar(require("../../utils/preservePropertyGetters.js"), exports);
|