UNPKG

vike

Version:

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

24 lines (23 loc) 1.33 kB
import '../../assertEnvClient.js'; export { removeBuiltInOverrides }; import { assert, assertWarning } from '../../../utils/assert.js'; const BUILT_IN_CLIENT_ROUTER = ['urlPathname', 'urlParsed']; const BUILT_IN_CLIENT = ['Page', 'pageExports', 'exports']; function removeBuiltInOverrides(pageContext) { const alreadySet = [...BUILT_IN_CLIENT, ...BUILT_IN_CLIENT_ROUTER]; alreadySet.forEach((prop) => { if (prop in pageContext) { // We need to cast `BUILT_IN_CLIENT` to `string[]` // - https://stackoverflow.com/questions/56565528/typescript-const-assertions-how-to-use-array-prototype-includes // - https://stackoverflow.com/questions/57646355/check-if-string-is-included-in-readonlyarray-in-typescript if (BUILT_IN_CLIENT_ROUTER.includes(prop)) { assert(prop.startsWith('url')); assertWarning(false, `pageContext.${prop} is already available in the browser when using Client Routing; adding '${prop}' to passToClient has no effect`, { onlyOnce: true }); } else { assertWarning(false, `pageContext.${prop} is a built-in that cannot be overridden; adding '${prop}' to passToClient has no effect`, { onlyOnce: true }); } delete pageContext[prop]; } }); }