--- /dev/null
+import { inject } from '../apiInject'
+import { warn } from '../warning'
+
+export const ssrContextKey = Symbol(__DEV__ ? `ssrContext` : ``)
+
+export const useSSRContext = <T = Record<string, any>>() => {
+ if (!__GLOBAL__) {
+ const ctx = inject<T>(ssrContextKey)
+ if (!ctx) {
+ warn(
+ `Server rendering context not provided. Make sure to only call ` +
+ `useSsrContext() conditionally in the server build.`
+ )
+ }
+ return ctx
+ } else if (__DEV__) {
+ warn(`useSsrContext() is not supported in the global build.`)
+ }
+}
// SFC CSS Modules
export { useCSSModule } from './helpers/useCssModule'
+// SSR context
+export { useSSRContext, ssrContextKey } from './helpers/useSsrContext'
+
// Internal API ----------------------------------------------------------------
// For custom renderers
ssrUtils,
Slots,
warn,
- createApp
+ createApp,
+ ssrContextKey
} from 'vue'
import {
ShapeFlags,
export type Props = Record<string, unknown>
-const ssrContextKey = Symbol()
-
export type SSRContext = {
[key: string]: any
portals?: Record<string, string>