123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- import './vue'
- import Vue, { ComponentOptions, PluginFunction } from 'vue'
- type Component = ComponentOptions<Vue> | typeof Vue
- type CallbackFn = () => void
- type elements = HTMLElement[]
- export interface VueMetaOptionsRuntime {
- refreshOnceOnNavigation?: boolean
- debounceWait?: number
- waitOnDestroyed?: boolean
- }
- export interface VueMetaOptions extends VueMetaOptionsRuntime {
- keyName: string, // the component option name that vue-meta looks for meta info on.
- attribute: string, // the attribute name vue-meta adds to the tags it observes
- ssrAppId: string, // the app id used for ssr app
- ssrAttribute: string, // the attribute name that lets vue-meta know that meta info has already been server-rendered
- tagIDKeyName: string // the property name that vue-meta uses to determine whether to overwrite or append a tag
- }
- export declare class VueMeta {
- static version: string
- static install(vue: typeof Vue, options?: VueMetaOptions): PluginFunction<never>
- static hasMetaInfo(vm: Component): boolean
- static generate(metaInfo: MetaInfo, options?: Object): MetaInfoSSR
- }
- interface RefreshedTags {
- addedTags: elements
- removedTags: elements
- }
- interface Refreshed {
- vm: Component,
- metaInfo: MetaInfoOutput,
- tags: RefreshedTags
- }
- interface VueMetaApp {
- set(metaInfo: MetaInfo): void | RefreshedTags
- remove(): void
- }
- export interface VueMetaPlugin {
- getOptions(): VueMetaOptions
- setOptions(runtimeOptions: VueMetaOptionsRuntime): VueMetaOptions
- addApp(appName: string): VueMetaApp
- refresh(): Refreshed
- inject(): MetaInfoSSR
- pause(refresh: true): () => Refreshed
- pause(refresh?: boolean): () => void
- resume(refresh: true): Refreshed
- resume(refresh?: boolean): void
- }
- export interface AttributeProperty {
- [key: string]: string | string[]
- }
- export interface MetaDataProperty {
- vmid?: string,
- once?: boolean,
- skip?: boolean,
- body?: boolean,
- pbody?: boolean,
- [key: string]: any
- }
- export interface MetaPropertyCharset extends MetaDataProperty {
- charset: string,
- }
- export interface MetaPropertyEquiv extends MetaDataProperty {
- httpEquiv: string,
- content: string,
- template?: (chunk: string) => string
- }
- export interface MetaPropertyName extends MetaDataProperty {
- name: string,
- content: string,
- template?: (chunk: string) => string
- }
- export interface MetaPropertyMicrodata extends MetaDataProperty {
- itemprop: string,
- content: string,
- template?: (chunk: string) => string
- }
- // non-w3c interface
- export interface MetaPropertyProperty extends MetaDataProperty {
- property: string,
- content: string,
- template?: (chunk: string) => string
- }
- export interface LinkPropertyBase extends MetaDataProperty {
- rel: string,
- crossOrigin?: string | null,
- media?: string,
- nonce?: string,
- referrerPolicy?: string,
- rev?: string,
- type?: string
- }
- export interface LinkPropertyHref extends LinkPropertyBase {
- href?: string,
- hreflang?: string,
- callback?: void
- }
- export interface LinkPropertyHrefCallback extends LinkPropertyBase {
- vmid: string,
- callback: CallbackFn,
- href?: string,
- hreflang?: string
- }
- export interface StyleProperty extends MetaDataProperty {
- cssText: string,
- callback?: CallbackFn
- media?: string,
- nonce?: string,
- type?: string,
- }
- export interface ScriptPropertyBase extends MetaDataProperty {
- type?: string,
- charset?: string,
- async?: boolean,
- defer?: boolean,
- crossOrigin?: string,
- nonce?: string
- }
- export interface ScriptPropertyText extends ScriptPropertyBase {
- innerHTML: string
- }
- export interface ScriptPropertySrc extends ScriptPropertyBase {
- src: string,
- callback?: void
- }
- export interface ScriptPropertySrcCallback extends ScriptPropertyBase {
- vmid: string,
- callback: CallbackFn
- }
- type JsonVal = string | number | boolean | JsonObj | JsonObj[] | null
- interface JsonObj {
- [key: string]: JsonVal | JsonVal[]
- }
- export interface ScriptPropertyJson extends ScriptPropertyBase {
- json: JsonObj
- }
- export interface NoScriptProperty extends MetaDataProperty {
- innerHTML: string,
- }
- export interface MetaInfo {
- title?: string
- titleTemplate?: string | ((titleChunk: string) => string),
- htmlAttrs?: AttributeProperty
- headAttrs?: AttributeProperty
- bodyAttrs?: AttributeProperty
- base?: {
- target: string,
- href: string
- }
- meta?: (MetaPropertyCharset | MetaPropertyEquiv | MetaPropertyName | MetaPropertyMicrodata | MetaPropertyProperty)[]
- link?: (LinkPropertyBase | LinkPropertyHref | LinkPropertyHrefCallback)[]
- style?: StyleProperty[]
- script?: (ScriptPropertyText | ScriptPropertySrc | ScriptPropertySrcCallback | ScriptPropertyJson)[]
- noscript?: NoScriptProperty[]
- __dangerouslyDisableSanitizers?: string[]
- __dangerouslyDisableSanitizersByTagID?: {
- [key: string]: string[]
- }
- changed?: <T extends MetaInfoOutput>(newInfo: T, addedTags: elements, removedTags: elements) => void
- afterNavigation?: <T extends MetaInfoOutput>(newInfo: T) => void
- }
- export interface MetaInfoOutput extends MetaInfo {
- titleChunk?: string
- }
- export type MetaInfoComputed = () => MetaInfo
- interface ToText {
- text(): string
- }
- interface ToTextBooleanArg {
- text(addSrrAttribute?: boolean): string
- }
- interface AddLineBreakOption {
- ln: boolean
- }
- interface ToBodyTextOption {
- body: boolean
- }
- interface ToPbodyTextOption {
- pbody: boolean
- }
- interface ToBodyText {
- text(options?: (ToBodyTextOption | ToPbodyTextOption | AddLineBreakOption)): string
- }
- export interface MetaInfoSSR {
- head(ln?: boolean): string
- bodyPrepend(ln?: boolean): string
- bodyAppend(ln?: boolean): string
- title?: ToText
- htmlAttrs?: ToTextBooleanArg
- headAttrs?: ToText
- bodyAttrs?: ToText
- base?: ToBodyText
- meta?: ToBodyText
- link?: ToBodyText
- style?: ToBodyText
- script?: ToBodyText
- noscript?: ToBodyText
- }
|