Skip to content

Definitions

All listed definitions are available in the nuxt-booster package.

Example

ts
import type { FontOption } from 'nuxt-booster';

Type

ts
type HTMLCrossOriginAttribute = 'anonymous' | 'use-credentials' | '';
type CrossOrigin = boolean | HTMLCrossOriginAttribute | undefined;

Interface

FontOption

ts
interface FontOption {
  family: string;
  fallback: string[];
  variances: FontOptionVariance[];
  locals?: string[];
}

FontOptionVariance

ts
interface FontOptionVariance {
  style: string;
  weight: string | number;
  sources: FontOptionVarianceSource[];
}

FontOptionVarianceSource

ts
interface FontOptionVarianceSource {
  src: string;
  type: string;
}

PreparedFontOption

ts
interface PreparedFontOption extends FontOption {
  variances: PreparedFontOptionVariance[];
}

PreparedFontOptionVariance

ts
interface PreparedFontOptionVariance extends FontOptionVariance {
  sources: PreparedFontOptionVarianceSource[];
  type: string;
  src: string;
  hash?: string;
}

PreparedFontOptionVarianceSource

ts
interface PreparedFontOptionVarianceSource extends FontOptionVarianceSource {
  className: string;
  style: string;
}

ModulePublicRuntimeConfig

ts
interface ModulePublicRuntimeConfig {
  debug: boolean;
  lazyOffsetComponent: string;
  lazyOffsetAsset: string;
  usedFontaine: boolean;
}

ModuleOptions

ts
interface ModuleOptions {
  debug: boolean;
  crossorigin?: CrossOrigin;
  disableNuxtFontaine?: boolean;
  disableNuxtImage?: boolean;
  optimizeSSR?: boolean | OptimizeSSR;
  detection?: Detection;
  performanceMetrics?: PerformanceMetrics;
  fonts?: FontOption[];
  targetFormats?: string[];
  densities?: string;
  /**
   * IntersectionObserver rootMargin for Components and Assets
   */
  lazyOffset: LazyOffset;
  runOptions?: RunOptions;
  experimental?: Experimental;
}

PerformanceMetrics

ts
interface PerformanceMetrics {
  device?: {
    hardwareConcurrency: {
      min: number;
      max: number;
    };
    deviceMemory: {
      min: number;
    };
  };
  timing?: {
    fcp: number;
    dcl: number;
  };
}

OptimizeSSR

ts
interface OptimizeSSR {
  cleanPreloads?: boolean;
  cleanPrefetches?: boolean;
  inlineStyles?: boolean;
}

Experimental

ts
interface Experimental {
  fallbackInit?:
    | {
        duration?: number;
      }
    | boolean;
}

Detection

ts
interface Detection {
  performance?: boolean;
  browserSupport?: boolean;
  battery?: boolean;
}

LazyOffset

ts
interface LazyOffset {
  component?: string;
  asset?: string;
}

RunOptions

ts
interface RunOptions {
  maxTime?: number;
  threshold?: number;
}

BoosterProvide

ts
interface BoosterProvide {
  getImageSize: (src: string) => Promise<{
    width: number;
    height: number;
  }>;
  densities: string;
  targetFormats: string[];
  crossorigin: CrossOrigin;
}

ISource

ts
export interface ISource {
  src: string;
  media?: string;
  sizes?: Record<string, string | number>;
  width?: number;
  height?: number;
  format?: string;
  quality?: number;
  preload?: boolean;
  modifiers?: Partial<ImageModifiers>;
  provider?: string;
  preset?: string;
  densities?: string;
}

DirectiveGetFontArguments

ts
interface DirectiveGetFontArguments {
  family: FontFamily;
  weight?: FontWeight;
  style?: FontStyle;
  options?: DirectiveGetFontOptions;
}

DirectiveGetFontOptions

ts
interface DirectiveGetFontOptions {
  selector?: string;
  media?: string;
}

DirectiveGetFontResult

ts
interface DirectiveGetFontResult {
  runtimeConfig: ModulePublicRuntimeConfig;
  isCritical: boolean;
  fontCollection: FontCollection;
  definition: Font;
}

HeadFontCollector

ts
interface HeadFontCollector {
  push: (description: HeadFontCollectorDescription) => HeadFontCollectorEntry;
  collection: Ref<FontsCollection>;
}

HeadFontCollectorDescription

ts
interface HeadFontCollectorDescription {
  options: ModulePublicRuntimeConfig;
  fontCollection: FontCollection;
  isCritical: boolean;
}

HeadFontCollectorEntry

ts
interface HeadFontCollectorEntry {
  dispose: () => void;
}

ObservableOptions

ts
interface ObservableOptions {
  root?: HTMLElement;
  rootMargin?: string;
  threshold?: number | number[];
  trackVisibility?: boolean;
  delay?: number;
}

ObservableHTMLElement

ts
interface ObservableHTMLElement extends HTMLElement {
  observables: Map<string, IntersectionObservable>;
}

Declare

NuxtApp

ts
declare module 'nuxt/app' {
  interface NuxtApp {
    $booster: BoosterProvide;
  }
}

ComponentCustomProperties

ts
declare module '@vue/runtime-core' {
  interface ComponentCustomProperties {
    $booster: {
      targetFormats: string[];
    };
  }
  interface GlobalComponents {
    $booster: BoosterProvide;
  }
  interface GlobalDirectives {
    vFont: Directive;
  }
}

BoosterProvide (Module)

ts
declare module './module' {
  interface BoosterProvide {
    head: HeadFontCollector;
  }
}