@vestigemetrics/vue 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -11
- package/dist/index.js +3 -0
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
# @vestigemetrics/vue
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Integre o Vestige Metrics ao seu projeto Vue como um plugin, com uma API alinhada ao ciclo de vida da aplicação. O adapter inicializa o rastreamento no navegador e disponibiliza métodos para registrar pageviews, eventos e leads identificados.
|
|
4
|
+
|
|
5
|
+
Em aplicações Vue com navegação client-side, você também pode conectar o Vue Router para acompanhar a rota inicial e as mudanças de rota como pageviews. A configuração pode usar o modo automático ou deixar o registro sob controle da aplicação, conforme a necessidade do projeto.
|
|
4
6
|
|
|
5
7
|
- [Documentação da plataforma](https://docs.vestigemetrics.com.br/)
|
|
6
8
|
- [Site do Vestige Metrics](https://vestigemetrics.com.br/)
|
|
7
9
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
```text
|
|
11
|
-
//tag.ltrck.com.br/lt{ACCOUNT_ID}.js
|
|
12
|
-
```
|
|
10
|
+
Para começar, instale o pacote, copie o init code da sua conta no painel do Vestige Metrics e registre o plugin na criação da aplicação Vue.
|
|
13
11
|
|
|
14
12
|
## Instalação
|
|
15
13
|
|
|
@@ -19,7 +17,7 @@ yarn add @vestigemetrics/vue
|
|
|
19
17
|
|
|
20
18
|
## Instalação no Vue
|
|
21
19
|
|
|
22
|
-
O valor de `init` deve ser copiado
|
|
20
|
+
O valor de `init` deve ser copiado do painel do Vestige Metrics (`app.vestigemetrics.com.br`), em **Configurações → Rastreamento**. Use o init code exibido no painel; não substitua por um valor de exemplo.
|
|
23
21
|
|
|
24
22
|
```ts
|
|
25
23
|
import { createApp } from 'vue';
|
|
@@ -29,19 +27,38 @@ import App from './App.vue';
|
|
|
29
27
|
const app = createApp(App);
|
|
30
28
|
|
|
31
29
|
app.use(createVestige({
|
|
32
|
-
init: '
|
|
30
|
+
init: '<SEU_INIT_CODE>'
|
|
33
31
|
}));
|
|
34
32
|
|
|
35
33
|
app.mount('#app');
|
|
36
34
|
```
|
|
37
35
|
|
|
36
|
+
## SSR e Nuxt
|
|
37
|
+
|
|
38
|
+
O adapter é client-only: a tag utiliza APIs do navegador e não deve ser inicializada durante o SSR. Em aplicações Nuxt, crie o plugin com o sufixo `.client.ts` para garantir que ele seja executado apenas no navegador:
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
// plugins/vestige.client.ts
|
|
42
|
+
import { createVestige } from '@vestigemetrics/vue';
|
|
43
|
+
|
|
44
|
+
export default defineNuxtPlugin((nuxtApp) => {
|
|
45
|
+
nuxtApp.vueApp.use(createVestige({
|
|
46
|
+
init: '<SEU_INIT_CODE>',
|
|
47
|
+
router: nuxtApp.$router,
|
|
48
|
+
preset: 'auto'
|
|
49
|
+
}));
|
|
50
|
+
});
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Se o adapter for inicializado no server-side, ele lança um erro para indicar que a configuração deve ser movida para o client-side.
|
|
54
|
+
|
|
38
55
|
## Vue Router
|
|
39
56
|
|
|
40
57
|
Quando um router é informado, o adapter cria um novo pageview na rota inicial e em cada navegação.
|
|
41
58
|
|
|
42
59
|
```ts
|
|
43
60
|
app.use(createVestige({
|
|
44
|
-
init: '
|
|
61
|
+
init: '<SEU_INIT_CODE>',
|
|
45
62
|
router,
|
|
46
63
|
preset: 'auto'
|
|
47
64
|
}));
|
|
@@ -55,7 +72,7 @@ Com router, o adapter constrói o pageview, mas deixa o registro sob controle da
|
|
|
55
72
|
|
|
56
73
|
```ts
|
|
57
74
|
app.use(createVestige({
|
|
58
|
-
init: '
|
|
75
|
+
init: '<SEU_INIT_CODE>',
|
|
59
76
|
router,
|
|
60
77
|
preset: 'manual'
|
|
61
78
|
}));
|
|
@@ -85,8 +102,17 @@ Quando um router é configurado, chamar `buildPageview()` manualmente gera erro.
|
|
|
85
102
|
## Eventos e leads
|
|
86
103
|
|
|
87
104
|
```ts
|
|
105
|
+
await vestige.event('checkout_started');
|
|
106
|
+
|
|
107
|
+
await vestige.event('click_contact_button');
|
|
108
|
+
|
|
88
109
|
await vestige.event({
|
|
89
|
-
|
|
110
|
+
event: 'checkout_started',
|
|
111
|
+
payment_method: 'CREDIT_CARD',
|
|
112
|
+
product_name: 'Plano Pro',
|
|
113
|
+
product_id: 'pro-monthly',
|
|
114
|
+
value: 99.90,
|
|
115
|
+
currency: 'BRL'
|
|
90
116
|
});
|
|
91
117
|
|
|
92
118
|
await vestige.identifyLead('EMAIL', 'user@example.com');
|
package/dist/index.js
CHANGED
|
@@ -44,6 +44,9 @@ function loadScript(documentRef, url) {
|
|
|
44
44
|
}
|
|
45
45
|
function loadVestigeTag(options) {
|
|
46
46
|
var _a;
|
|
47
|
+
if (typeof window === "undefined" || typeof document === "undefined") {
|
|
48
|
+
throw new Error("Vestige Metrics s\xF3 pode ser inicializado no client-side. Em aplica\xE7\xF5es SSR, registre o adapter apenas no navegador.");
|
|
49
|
+
}
|
|
47
50
|
const browserWindow = window;
|
|
48
51
|
const encodedAccount = options.init.split("-")[0];
|
|
49
52
|
const accountId = Number(base62.decode(encodedAccount));
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/vue/useVestige.ts", "../../../src/tag/internal/infrastructure.ts", "../../../src/vue/createVestige.ts"],
|
|
4
|
-
"sourcesContent": ["import { inject } from 'vue';\nimport type { VestigeVueClient } from './createVestige';\n\nexport const VESTIGE_INJECTION_KEY = Symbol('vestige');\n\nexport function useVestige(): VestigeVueClient {\n const tag = inject<VestigeVueClient>(VESTIGE_INJECTION_KEY);\n if (!tag) throw new Error('VestigeTag has not been installed');\n return tag;\n}\n", "export interface VestigeDocument extends Document {\n cookie: string;\n}\n\nexport function getCookie(documentRef: VestigeDocument, name: string): string {\n const prefix = `${name}=`;\n const entry = documentRef.cookie.split(';').map((item) => item.trim()).find((item) => item.startsWith(prefix));\n return entry ? unescape(entry.slice(prefix.length)) : '';\n}\n\nexport function setCookie(documentRef: VestigeDocument, domain: string, name: string, value: string | number, ttlMinutes = 365 * 24 * 60): void {\n const expires = new Date(Date.now() + ttlMinutes * 60 * 1000).toUTCString();\n documentRef.cookie = `${name}=${value};expires=${expires};path=/;domain=${domain}`;\n}\n\nexport function includeScript(documentRef: Document, src: string, callback?: () => void): void {\n const script = documentRef.createElement('script');\n script.type = 'text/javascript';\n script.src = src;\n if (callback) script.onload = callback;\n const firstScript = documentRef.getElementsByTagName('script')[0];\n firstScript?.parentNode?.insertBefore(script, firstScript);\n}\n\nexport function getUrlParams(locationRef: Location): Record<string, string> {\n const params: Record<string, string> = {};\n new URLSearchParams(locationRef.search).forEach((value, key) => { params[key] = value; });\n return params;\n}\n\nexport function getTld(documentRef: VestigeDocument, locationRef: Location, storage: Storage): string {\n const key = 'ltTLD';\n const saved = storage.getItem(key);\n if (saved) return saved;\n const parts = locationRef.hostname.split('.');\n let partial = '';\n for (let index = parts.length - 1; index > 0; index--) {\n partial = `.${parts[index]}${partial}`;\n setCookie(documentRef, partial, key, Date.now(), 5 / 60);\n if (getCookie(documentRef, key)) {\n storage.setItem(key, partial);\n return partial;\n }\n }\n return `.${locationRef.hostname}`;\n}\n\nexport const base62 = {\n charset: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(''),\n encode(value: number): string | number {\n if (value === 0) return 0;\n const result: string[] = [];\n while (value > 0) {\n result.unshift(this.charset[value % 62]);\n value = Math.floor(value / 62);\n }\n return result.join('');\n },\n decode(value: string): number {\n return value.split('').reverse().reduce((result, char, index) => result + this.charset.indexOf(char) * (62 ** index), 0);\n }\n};\n", "import type { App, Plugin } from 'vue';\nimport { VESTIGE_INJECTION_KEY } from './useVestige';\nimport { base62 } from '../tag/internal/infrastructure';\n\nexport interface VestigeBrowserTag {\n init(accountId: string): void;\n buildPageview(data?: { url?: string; referrer?: string }): unknown;\n registerPageview(context?: unknown): void;\n pageview(data?: { url?: string; referrer?: string }): void;\n event(data: string | Record<string, unknown>): void;\n identifyLead(type: 'EMAIL' | 'PHONE', value: string): void;\n getVdaCode(): string | null;\n updateElementWithVda(element?: Element, parameter?: string, urlPattern?: string): void;\n}\n\ninterface BrowserWindow extends Window {\n lt?: { tag?: VestigeBrowserTag; _c?: Array<[string, unknown]> };\n}\n\nexport interface VestigeRouter {\n currentRoute: { value: { fullPath: string } };\n afterEach(callback: (to: { fullPath: string }) => void): void;\n}\n\nexport interface VestigeVueOptions {\n init: string;\n scriptUrl?: string;\n preset?: 'auto' | 'manual';\n router?: VestigeRouter;\n}\n\nexport interface VestigeVueClient {\n readonly ready: Promise<VestigeBrowserTag>;\n buildPageview(data?: { url?: string; referrer?: string }): Promise<unknown>;\n registerPageview(): Promise<void>;\n pageview(data?: { url?: string; referrer?: string }): Promise<void>;\n event(data: string | Record<string, unknown>): Promise<void>;\n identifyLead(type: 'EMAIL' | 'PHONE', value: string): Promise<void>;\n getVdaCode(): Promise<string | null>;\n updateElementWithVda(element?: Element, parameter?: string, urlPattern?: string): Promise<void>;\n}\n\nfunction loadScript(documentRef: Document, url: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const existing = documentRef.querySelector(`script[src=\"${url}\"]`);\n if (existing) {\n existing.addEventListener('load', () => resolve(), { once: true });\n if ((window as BrowserWindow).lt?.tag) resolve();\n return;\n }\n const script = documentRef.createElement('script');\n script.async = true;\n script.src = url;\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(`Unable to load Vestige tag: ${url}`));\n documentRef.head.appendChild(script);\n });\n}\n\nexport function loadVestigeTag(options: VestigeVueOptions): VestigeVueClient {\n const browserWindow = window as BrowserWindow;\n const encodedAccount = options.init.split('-')[0];\n const accountId = Number(base62.decode(encodedAccount));\n const scriptUrl = options.scriptUrl ?? `//tag.ltrck.com.br/lt${accountId}.js`;\n if (!browserWindow.lt) browserWindow.lt = { _c: [] };\n if (!browserWindow.lt._c) browserWindow.lt._c = [];\n if (options.preset) browserWindow.lt._c.push(['tag_config', { preset: options.preset }]);\n const ready = (async () => {\n if (!browserWindow.lt?.tag) await loadScript(document, scriptUrl);\n const tag = browserWindow.lt?.tag;\n if (!tag) throw new Error('Vestige tag loaded without exposing window.lt.tag');\n tag.init(options.init);\n return tag;\n })();\n\n const call = async <K extends keyof VestigeBrowserTag>(method: K, ...args: Parameters<NonNullable<VestigeBrowserTag[K]>>): Promise<ReturnType<NonNullable<VestigeBrowserTag[K]>>> => {\n const tag = await ready;\n const fn = tag[method] as (...values: Parameters<NonNullable<VestigeBrowserTag[K]>>) => ReturnType<NonNullable<VestigeBrowserTag[K]>>;\n return fn.apply(tag, args);\n };\n\n let currentPageview: unknown;\n const toAbsoluteUrl = (path: string): string => new URL(path, window.location.origin).href;\n\n const client: VestigeVueClient = {\n ready,\n buildPageview: (data) => {\n if (options.router) return Promise.reject(new Error('buildPageview() \u00E9 controlado pelo router configurado.'));\n return call('buildPageview', data).then((context) => {\n currentPageview = context;\n return context;\n });\n },\n registerPageview: () => {\n if (options.preset !== 'manual') return Promise.reject(new Error('registerPageview() s\u00F3 pode ser chamado no preset manual.'));\n return call('registerPageview', currentPageview);\n },\n pageview: (data) => call('pageview', data),\n event: (data) => call('event', data),\n identifyLead: (type, value) => call('identifyLead', type, value),\n getVdaCode: () => call('getVdaCode'),\n updateElementWithVda: (element, parameter, urlPattern) => call('updateElementWithVda', element, parameter, urlPattern)\n };\n\n if (options.router) {\n ready.then((tag) => {\n const buildAndMaybeRegister = (url: string): void => {\n const context = tag.buildPageview({ url: toAbsoluteUrl(url) });\n currentPageview = context;\n if (options.preset !== 'manual') tag.registerPageview(context);\n };\n buildAndMaybeRegister(options.router!.currentRoute.value.fullPath);\n options.router!.afterEach((to) => buildAndMaybeRegister(to.fullPath));\n });\n }\n\n return client;\n}\n\nexport function createVestige(options: VestigeVueOptions): Plugin {\n const client = loadVestigeTag(options);\n return {\n install(app: App) {\n app.provide(VESTIGE_INJECTION_KEY, client);\n }\n };\n}\n"],
|
|
5
|
-
"mappings": ";AAAA,SAAS,cAAc;AAGhB,IAAM,wBAAwB,OAAO,SAAS;AAE9C,SAAS,aAA+B;AAC7C,QAAM,MAAM,OAAyB,qBAAqB;AAC1D,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,mCAAmC;AAC7D,SAAO;AACT;;;ACsCO,IAAM,SAAS;AAAA,EACpB,SAAS,iEAAiE,MAAM,EAAE;AAAA,EAClF,OAAO,OAAgC;AACrC,QAAI,UAAU,EAAG,QAAO;AACxB,UAAM,SAAmB,CAAC;AAC1B,WAAO,QAAQ,GAAG;AAChB,aAAO,QAAQ,KAAK,QAAQ,QAAQ,EAAE,CAAC;AACvC,cAAQ,KAAK,MAAM,QAAQ,EAAE;AAAA,IAC/B;AACA,WAAO,OAAO,KAAK,EAAE;AAAA,EACvB;AAAA,EACA,OAAO,OAAuB;AAC5B,WAAO,MAAM,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,MAAM,UAAU,SAAS,KAAK,QAAQ,QAAQ,IAAI,IAAK,MAAM,OAAQ,CAAC;AAAA,EACzH;AACF;;;ACnBA,SAAS,WAAW,aAAuB,KAA4B;AACrE,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AA3C1C;AA4CI,UAAM,WAAW,YAAY,cAAc,eAAe,GAAG,IAAI;AACjE,QAAI,UAAU;AACZ,eAAS,iBAAiB,QAAQ,MAAM,QAAQ,GAAG,EAAE,MAAM,KAAK,CAAC;AACjE,WAAK,YAAyB,OAAzB,mBAA6B,IAAK,SAAQ;AAC/C;AAAA,IACF;AACA,UAAM,SAAS,YAAY,cAAc,QAAQ;AACjD,WAAO,QAAQ;AACf,WAAO,MAAM;AACb,WAAO,SAAS,MAAM,QAAQ;AAC9B,WAAO,UAAU,MAAM,OAAO,IAAI,MAAM,+BAA+B,GAAG,EAAE,CAAC;AAC7E,gBAAY,KAAK,YAAY,MAAM;AAAA,EACrC,CAAC;AACH;AAEO,SAAS,eAAe,SAA8C;AA3D7E;AA4DE,QAAM,gBAAgB;AACtB,QAAM,iBAAiB,QAAQ,KAAK,MAAM,GAAG,EAAE,CAAC;AAChD,QAAM,YAAY,OAAO,OAAO,OAAO,cAAc,CAAC;AACtD,QAAM,aAAY,aAAQ,cAAR,YAAqB,wBAAwB,SAAS;AACxE,MAAI,CAAC,cAAc,GAAI,eAAc,KAAK,EAAE,IAAI,CAAC,EAAE;AACnD,MAAI,CAAC,cAAc,GAAG,GAAI,eAAc,GAAG,KAAK,CAAC;AACjD,MAAI,QAAQ,OAAQ,eAAc,GAAG,GAAG,KAAK,CAAC,cAAc,EAAE,QAAQ,QAAQ,OAAO,CAAC,CAAC;AACvF,QAAM,SAAS,YAAY;
|
|
4
|
+
"sourcesContent": ["import { inject } from 'vue';\nimport type { VestigeVueClient } from './createVestige';\n\nexport const VESTIGE_INJECTION_KEY = Symbol('vestige');\n\nexport function useVestige(): VestigeVueClient {\n const tag = inject<VestigeVueClient>(VESTIGE_INJECTION_KEY);\n if (!tag) throw new Error('VestigeTag has not been installed');\n return tag;\n}\n", "export interface VestigeDocument extends Document {\n cookie: string;\n}\n\nexport function getCookie(documentRef: VestigeDocument, name: string): string {\n const prefix = `${name}=`;\n const entry = documentRef.cookie.split(';').map((item) => item.trim()).find((item) => item.startsWith(prefix));\n return entry ? unescape(entry.slice(prefix.length)) : '';\n}\n\nexport function setCookie(documentRef: VestigeDocument, domain: string, name: string, value: string | number, ttlMinutes = 365 * 24 * 60): void {\n const expires = new Date(Date.now() + ttlMinutes * 60 * 1000).toUTCString();\n documentRef.cookie = `${name}=${value};expires=${expires};path=/;domain=${domain}`;\n}\n\nexport function includeScript(documentRef: Document, src: string, callback?: () => void): void {\n const script = documentRef.createElement('script');\n script.type = 'text/javascript';\n script.src = src;\n if (callback) script.onload = callback;\n const firstScript = documentRef.getElementsByTagName('script')[0];\n firstScript?.parentNode?.insertBefore(script, firstScript);\n}\n\nexport function getUrlParams(locationRef: Location): Record<string, string> {\n const params: Record<string, string> = {};\n new URLSearchParams(locationRef.search).forEach((value, key) => { params[key] = value; });\n return params;\n}\n\nexport function getTld(documentRef: VestigeDocument, locationRef: Location, storage: Storage): string {\n const key = 'ltTLD';\n const saved = storage.getItem(key);\n if (saved) return saved;\n const parts = locationRef.hostname.split('.');\n let partial = '';\n for (let index = parts.length - 1; index > 0; index--) {\n partial = `.${parts[index]}${partial}`;\n setCookie(documentRef, partial, key, Date.now(), 5 / 60);\n if (getCookie(documentRef, key)) {\n storage.setItem(key, partial);\n return partial;\n }\n }\n return `.${locationRef.hostname}`;\n}\n\nexport const base62 = {\n charset: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(''),\n encode(value: number): string | number {\n if (value === 0) return 0;\n const result: string[] = [];\n while (value > 0) {\n result.unshift(this.charset[value % 62]);\n value = Math.floor(value / 62);\n }\n return result.join('');\n },\n decode(value: string): number {\n return value.split('').reverse().reduce((result, char, index) => result + this.charset.indexOf(char) * (62 ** index), 0);\n }\n};\n", "import type { App, Plugin } from 'vue';\nimport { VESTIGE_INJECTION_KEY } from './useVestige';\nimport { base62 } from '../tag/internal/infrastructure';\n\nexport interface VestigeBrowserTag {\n init(accountId: string): void;\n buildPageview(data?: { url?: string; referrer?: string }): unknown;\n registerPageview(context?: unknown): void;\n pageview(data?: { url?: string; referrer?: string }): void;\n event(data: string | Record<string, unknown>): void;\n identifyLead(type: 'EMAIL' | 'PHONE', value: string): void;\n getVdaCode(): string | null;\n updateElementWithVda(element?: Element, parameter?: string, urlPattern?: string): void;\n}\n\ninterface BrowserWindow extends Window {\n lt?: { tag?: VestigeBrowserTag; _c?: Array<[string, unknown]> };\n}\n\nexport interface VestigeRouter {\n currentRoute: { value: { fullPath: string } };\n afterEach(callback: (to: { fullPath: string }) => void): void;\n}\n\nexport interface VestigeVueOptions {\n init: string;\n scriptUrl?: string;\n preset?: 'auto' | 'manual';\n router?: VestigeRouter;\n}\n\nexport interface VestigeVueClient {\n readonly ready: Promise<VestigeBrowserTag>;\n buildPageview(data?: { url?: string; referrer?: string }): Promise<unknown>;\n registerPageview(): Promise<void>;\n pageview(data?: { url?: string; referrer?: string }): Promise<void>;\n event(data: string | Record<string, unknown>): Promise<void>;\n identifyLead(type: 'EMAIL' | 'PHONE', value: string): Promise<void>;\n getVdaCode(): Promise<string | null>;\n updateElementWithVda(element?: Element, parameter?: string, urlPattern?: string): Promise<void>;\n}\n\nfunction loadScript(documentRef: Document, url: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const existing = documentRef.querySelector(`script[src=\"${url}\"]`);\n if (existing) {\n existing.addEventListener('load', () => resolve(), { once: true });\n if ((window as BrowserWindow).lt?.tag) resolve();\n return;\n }\n const script = documentRef.createElement('script');\n script.async = true;\n script.src = url;\n script.onload = () => resolve();\n script.onerror = () => reject(new Error(`Unable to load Vestige tag: ${url}`));\n documentRef.head.appendChild(script);\n });\n}\n\nexport function loadVestigeTag(options: VestigeVueOptions): VestigeVueClient {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n throw new Error('Vestige Metrics s\u00F3 pode ser inicializado no client-side. Em aplica\u00E7\u00F5es SSR, registre o adapter apenas no navegador.');\n }\n const browserWindow = window as BrowserWindow;\n const encodedAccount = options.init.split('-')[0];\n const accountId = Number(base62.decode(encodedAccount));\n const scriptUrl = options.scriptUrl ?? `//tag.ltrck.com.br/lt${accountId}.js`;\n if (!browserWindow.lt) browserWindow.lt = { _c: [] };\n if (!browserWindow.lt._c) browserWindow.lt._c = [];\n if (options.preset) browserWindow.lt._c.push(['tag_config', { preset: options.preset }]);\n const ready = (async () => {\n if (!browserWindow.lt?.tag) await loadScript(document, scriptUrl);\n const tag = browserWindow.lt?.tag;\n if (!tag) throw new Error('Vestige tag loaded without exposing window.lt.tag');\n tag.init(options.init);\n return tag;\n })();\n\n const call = async <K extends keyof VestigeBrowserTag>(method: K, ...args: Parameters<NonNullable<VestigeBrowserTag[K]>>): Promise<ReturnType<NonNullable<VestigeBrowserTag[K]>>> => {\n const tag = await ready;\n const fn = tag[method] as (...values: Parameters<NonNullable<VestigeBrowserTag[K]>>) => ReturnType<NonNullable<VestigeBrowserTag[K]>>;\n return fn.apply(tag, args);\n };\n\n let currentPageview: unknown;\n const toAbsoluteUrl = (path: string): string => new URL(path, window.location.origin).href;\n\n const client: VestigeVueClient = {\n ready,\n buildPageview: (data) => {\n if (options.router) return Promise.reject(new Error('buildPageview() \u00E9 controlado pelo router configurado.'));\n return call('buildPageview', data).then((context) => {\n currentPageview = context;\n return context;\n });\n },\n registerPageview: () => {\n if (options.preset !== 'manual') return Promise.reject(new Error('registerPageview() s\u00F3 pode ser chamado no preset manual.'));\n return call('registerPageview', currentPageview);\n },\n pageview: (data) => call('pageview', data),\n event: (data) => call('event', data),\n identifyLead: (type, value) => call('identifyLead', type, value),\n getVdaCode: () => call('getVdaCode'),\n updateElementWithVda: (element, parameter, urlPattern) => call('updateElementWithVda', element, parameter, urlPattern)\n };\n\n if (options.router) {\n ready.then((tag) => {\n const buildAndMaybeRegister = (url: string): void => {\n const context = tag.buildPageview({ url: toAbsoluteUrl(url) });\n currentPageview = context;\n if (options.preset !== 'manual') tag.registerPageview(context);\n };\n buildAndMaybeRegister(options.router!.currentRoute.value.fullPath);\n options.router!.afterEach((to) => buildAndMaybeRegister(to.fullPath));\n });\n }\n\n return client;\n}\n\nexport function createVestige(options: VestigeVueOptions): Plugin {\n const client = loadVestigeTag(options);\n return {\n install(app: App) {\n app.provide(VESTIGE_INJECTION_KEY, client);\n }\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["_a"]
|
|
7
7
|
}
|