UNPKG

3.58 kBTypeScriptView Raw
1import { ServerResponse } from 'http'
2import { IncomingMessage } from 'connect'
3import Vue, { ComponentOptions } from 'vue'
4import VueRouter, { Location, Route } from 'vue-router'
5import { Store } from 'vuex'
6import { NuxtRuntimeConfig } from '../config/runtime'
7
8// augment typings of Vue.js
9import './vue'
10
11// augment typings of Vuex
12import './vuex'
13
14type NuxtState = Record<string, any>
15
16export interface Context {
17 $config: NuxtRuntimeConfig
18
19 app: NuxtAppOptions
20 base: string
21 /**
22 * @deprecated Use process.client instead
23 */
24 isClient: boolean
25 /**
26 * @deprecated Use process.server instead
27 */
28 isServer: boolean
29 /**
30 * @deprecated Use process.static instead
31 */
32 isStatic: boolean
33 isDev: boolean
34 isHMR: boolean
35 route: Route
36 from: Route
37 store: Store<any>
38 env: Record<string, any>
39 params: Route['params']
40 payload: any
41 query: Route['query']
42 req: IncomingMessage
43 res: ServerResponse
44 redirect(status: number, path: string, query?: Route['query']): void
45 redirect(path: string, query?: Route['query']): void
46 redirect(location: Location): void
47 error(params: NuxtError): void
48 nuxtState: NuxtState
49 beforeNuxtRender(fn: (params: { Components: VueRouter['getMatchedComponents'], nuxtState: NuxtState }) => void): void
50}
51
52export type Middleware = string | ((ctx: Context, cb: Function) => Promise<void> | void)
53export type Inject = (key: string, value: any) => void
54export type Plugin = (ctx: Context, inject: Inject) => Promise<void> | void
55
56export interface Transition {
57 name?: string
58 mode?: string
59 css?: boolean
60 duration?: number
61 type?: string
62 enterClass?: string
63 enterToClass?: string
64 enterActiveClass?: string
65 leaveClass?: string
66 leaveToClass?: string
67 leaveActiveClass?: string
68 beforeEnter?(el: HTMLElement): void
69 enter?(el: HTMLElement, done: Function): void
70 afterEnter?(el: HTMLElement): void
71 enterCancelled?(el: HTMLElement): void
72 beforeLeave?(el: HTMLElement): void
73 leave?(el: HTMLElement, done: Function): void
74 afterLeave?(el: HTMLElement): void
75 leaveCancelled?(el: HTMLElement): void
76}
77
78export interface NuxtError {
79 message?: string
80 path?: string
81 statusCode?: number
82}
83
84export interface DefaultNuxtLoading extends Vue {
85 canSucceed: boolean
86 clear(): void
87 continuous: boolean
88 decrease(num: number): DefaultNuxtLoading
89 duration: number
90 fail(): DefaultNuxtLoading
91 finish(): DefaultNuxtLoading
92 increase(num: number): DefaultNuxtLoading
93 get(): number
94 hide(): DefaultNuxtLoading
95 left: number
96 pause(): DefaultNuxtLoading
97 percent: number
98 resume(): DefaultNuxtLoading
99 reversed: boolean
100 rtl: boolean
101 set(num: number): DefaultNuxtLoading
102 skipTimerCount: number
103 show: boolean
104 start(): DefaultNuxtLoading
105 startTimer(): void
106 throttle: number
107}
108
109export interface CustomNuxtLoading extends Vue {
110 fail?(): CustomNuxtLoading
111 finish(): CustomNuxtLoading
112 increase?(num: number): CustomNuxtLoading
113 pause?(): CustomNuxtLoading
114 start(): CustomNuxtLoading
115}
116
117export type NuxtLoading = DefaultNuxtLoading | CustomNuxtLoading
118
119export interface NuxtAppOptions extends ComponentOptions<Vue> {
120 [key: string]: any // TBD
121}
122
123export interface NuxtApp extends Vue {
124 $options: NuxtAppOptions
125 $loading: NuxtLoading
126 context: Context
127 error(params: NuxtError): void
128 isOffline: boolean
129 isOnline: boolean
130 layout: any // TBD
131 layoutName: string
132 loadLayout(layout: string): Promise<any> // TBD
133 refresh(): Promise<void>
134 setLayout(layout: string): any // TBD
135}
136
137// window.$nuxt
138declare global {
139 interface Window {
140 $nuxt: NuxtApp
141 }
142}