@nuxt/scripts
Version:
Load third-party scripts with better performance, privacy and DX in Nuxt Apps.
42 lines (41 loc) • 1.46 kB
TypeScript
import type { GTag } from './google-analytics.js';
import type { RegistryScriptInput } from '#nuxt-scripts/types';
type DataLayer = Array<Parameters<GTag> | Record<string, unknown>>;
interface GoogleTagManagerDataLayerApi {
name: 'dataLayer';
set: (opt: {
[key: string]: string;
}) => void;
get: (key: string) => void;
reset: () => void;
}
interface GoogleTagManagerDataLayerStatus {
dataLayer: {
gtmDom: boolean;
gtmLoad: boolean;
subscribers: number;
};
}
type GoogleTagManagerInstance = GoogleTagManagerDataLayerStatus & {
[key: string]: {
callback: () => void;
dataLayer: GoogleTagManagerDataLayerApi;
};
};
interface GoogleTagManagerApi {
google_tag_manager: GoogleTagManagerInstance;
dataLayer: DataLayer;
}
declare global {
interface Window extends GoogleTagManagerApi {
}
}
export declare const GoogleTagManagerOptions: import("valibot").ObjectSchema<{
readonly id: import("valibot").StringSchema<undefined>;
readonly l: import("valibot").OptionalSchema<import("valibot").StringSchema<undefined>, undefined>;
}, undefined>;
export type GoogleTagManagerInput = RegistryScriptInput<typeof GoogleTagManagerOptions>;
export declare function useScriptGoogleTagManager<T extends GoogleTagManagerApi>(_options?: GoogleTagManagerInput & {
onBeforeGtmStart?: (gtag: GTag) => void;
}): import("#nuxt-scripts/types").UseScriptContext<T>;
export {};