UNPKG

vike

Version:

The Framework *You* Control - Next.js & Nuxt alternative for unprecedented flexibility and dependability.

42 lines (41 loc) 2.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.preparePageContextForPublicUsageClientShared = preparePageContextForPublicUsageClientShared; exports.preparePageContextForPublicUsageClientMinimal = preparePageContextForPublicUsageClientMinimal; const utils_js_1 = require("../runtime-server-routing/utils.js"); const preparePageContextForPublicUsage_js_1 = require("../../shared/preparePageContextForPublicUsage.js"); function preparePageContextForPublicUsageClientShared(pageContext) { // TODO/now-proxy use proxy const Page = pageContext.config?.Page || // TODO/next-major-release: remove pageContext.exports?.Page; (0, utils_js_1.objectAssign)(pageContext, { Page }); // TODO/next-major-release: after we remove supportVueReactiviy() we can call this later inside the agnostic preparePageContextForPublicUsage() (0, preparePageContextForPublicUsage_js_1.assertPropertyGetters)(pageContext); // TODO/next-major-release: remove // - Requires https://github.com/vikejs/vike-vue/issues/198 // - Last time I tried to remove it (https://github.com/vikejs/vike/commit/705fd23598d9d69bf46a52c8550216cd7117ce71) the tests were failing as expected: only the Vue integrations that used shallowReactive() failed. supportVueReactiviy(pageContext); return preparePageContextForPublicUsageClientMinimal(pageContext); } function preparePageContextForPublicUsageClientMinimal(pageContext) { const pageContextPublic = (0, preparePageContextForPublicUsage_js_1.preparePageContextForPublicUsage)(pageContext); return pageContextPublic; } // With Vue + Client Routing, the `pageContext` is made reactive: // ```js // import { reactive } from 'vue' // // See /examples/vue-full/renderer/createVueApp.ts // const pageContextReactive = reactive(pageContext) // ``` function supportVueReactiviy(pageContext) { resolveGetters(pageContext); } // Remove property descriptor getters because they break Vue's reactivity. // E.g. resolve the `pageContext.urlPathname` getter. function resolveGetters(pageContext) { Object.entries(pageContext).forEach(([key, val]) => { delete pageContext[key]; pageContext[key] = val; }); }