@v-tilt/browser 1.13.0 → 1.13.1
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/dist/all-external-dependencies.js.map +1 -1
- package/dist/array.chat.js +2 -0
- package/dist/array.chat.js.map +1 -0
- package/dist/array.chat.no-external.js +2 -0
- package/dist/array.chat.no-external.js.map +1 -0
- package/dist/array.full.chat.js +2 -0
- package/dist/array.full.chat.js.map +1 -0
- package/dist/array.full.chat.no-external.js +2 -0
- package/dist/array.full.chat.no-external.js.map +1 -0
- package/dist/array.full.js +1 -1
- package/dist/array.full.js.map +1 -1
- package/dist/array.full.no-external.js +2 -0
- package/dist/array.full.no-external.js.map +1 -0
- package/dist/array.js +1 -1
- package/dist/array.js.map +1 -1
- package/dist/array.no-external.js +1 -1
- package/dist/array.no-external.js.map +1 -1
- package/dist/chat.js +1 -1
- package/dist/chat.js.map +1 -1
- package/dist/entrypoints/all-external-dependencies.d.ts +10 -3
- package/dist/entrypoints/array.chat.d.ts +10 -0
- package/dist/entrypoints/array.chat.no-external.d.ts +6 -0
- package/dist/entrypoints/array.full.chat.d.ts +13 -0
- package/dist/entrypoints/array.full.chat.no-external.d.ts +7 -0
- package/dist/entrypoints/array.full.d.ts +5 -9
- package/dist/entrypoints/array.full.no-external.d.ts +12 -0
- package/dist/entrypoints/module.chat.es.d.ts +7 -0
- package/dist/entrypoints/module.full.chat.es.d.ts +12 -0
- package/dist/entrypoints/module.full.es.d.ts +12 -0
- package/dist/entrypoints/module.no-external.es.d.ts +1 -0
- package/dist/extensions/chat/bubble-drag.d.ts +20 -5
- package/dist/extensions/chat/chat-wrapper.d.ts +8 -2
- package/dist/extensions/chat/chat.d.ts +21 -351
- package/dist/extensions/chat/controller/__tests__/fakes/ably-realtime-fake.d.ts +84 -0
- package/dist/extensions/chat/controller/ably-client.d.ts +160 -0
- package/dist/extensions/chat/controller/ably-handlers.d.ts +95 -0
- package/dist/extensions/chat/controller/ably-token.d.ts +67 -0
- package/dist/extensions/chat/controller/chat-controller.d.ts +194 -0
- package/dist/extensions/chat/controller/message-delivery-status.d.ts +6 -0
- package/dist/extensions/chat/controller/message-order.d.ts +12 -0
- package/dist/extensions/chat/controller/message-stream.d.ts +49 -0
- package/dist/extensions/chat/lib/bubble-offset.d.ts +18 -0
- package/dist/extensions/chat/lib/merge-chat-config.d.ts +3 -0
- package/dist/extensions/chat/normalize-send-content.d.ts +2 -0
- package/dist/extensions/chat/outbox/message-delivery.d.ts +17 -0
- package/dist/extensions/chat/outbox/message-outbox.d.ts +57 -0
- package/dist/extensions/chat/store/chat-store.d.ts +122 -0
- package/dist/extensions/chat/types.d.ts +1 -19
- package/dist/extensions/chat/ui/ChannelItem.d.ts +12 -0
- package/dist/extensions/chat/ui/ChannelListView.d.ts +14 -0
- package/dist/extensions/chat/ui/ChatBubble.d.ts +14 -0
- package/dist/extensions/chat/ui/ChatHeader.d.ts +13 -0
- package/dist/extensions/chat/ui/ChatPanel.d.ts +14 -0
- package/dist/extensions/chat/ui/ChatRoot.d.ts +31 -0
- package/dist/extensions/chat/ui/ClosedBanner.d.ts +7 -0
- package/dist/extensions/chat/ui/ConnectionBanner.d.ts +32 -0
- package/dist/extensions/chat/ui/ConversationView.d.ts +14 -0
- package/dist/extensions/chat/ui/MessageBubble.d.ts +25 -0
- package/dist/extensions/chat/ui/MessageInput.d.ts +14 -0
- package/dist/extensions/chat/ui/MessageList.d.ts +19 -0
- package/dist/extensions/chat/ui/NewMessagesPill.d.ts +13 -0
- package/dist/extensions/chat/ui/Skeletons.d.ts +14 -0
- package/dist/extensions/chat/ui/TypingBubble.d.ts +23 -0
- package/dist/extensions/chat/ui/TypingIndicator.d.ts +12 -0
- package/dist/extensions/chat/ui/WidgetSlot.d.ts +20 -0
- package/dist/extensions/chat/ui/hooks/use-auto-mark-read.d.ts +18 -0
- package/dist/extensions/chat/ui/hooks/use-scroll-preservation.d.ts +33 -0
- package/dist/extensions/chat/ui/icons.d.ts +18 -0
- package/dist/extensions/chat/ui/message-render.d.ts +18 -0
- package/dist/extensions/chat/ui/shadow-styles.d.ts +13 -0
- package/dist/extensions/chat/ui/utils/mobile-body-scroll-lock.d.ts +14 -0
- package/dist/extensions/chat/widget-registry.d.ts +21 -5
- package/dist/extensions/chat/widgets/collect-email.d.ts +4 -2
- package/dist/extensions/chat/widgets/escalate-to-human.d.ts +2 -1
- package/dist/external-scripts-loader.js +1 -1
- package/dist/external-scripts-loader.js.map +1 -1
- package/dist/feature.d.ts +1 -0
- package/dist/lib/merge-vtilt-config.d.ts +9 -0
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/module.chat.d.ts +1788 -0
- package/dist/module.chat.js +2 -0
- package/dist/module.chat.js.map +1 -0
- package/dist/module.d.ts +48 -3
- package/dist/module.full.chat.d.ts +1792 -0
- package/dist/module.full.chat.js +2 -0
- package/dist/module.full.chat.js.map +1 -0
- package/dist/module.full.d.ts +1793 -0
- package/dist/module.full.js +2 -0
- package/dist/module.full.js.map +1 -0
- package/dist/module.js +1 -1
- package/dist/module.js.map +1 -1
- package/dist/module.no-external.d.ts +48 -3
- package/dist/module.no-external.js +1 -1
- package/dist/module.no-external.js.map +1 -1
- package/dist/recorder.js.map +1 -1
- package/dist/snippet-stub-methods.d.ts +14 -0
- package/dist/utils/globals.d.ts +53 -27
- package/dist/utils/index.d.ts +8 -0
- package/dist/vtilt.d.ts +6 -1
- package/dist/web-vitals.js.map +1 -1
- package/package.json +74 -71
- package/dist/extensions/chat/chat-styles.d.ts +0 -27
- package/dist/extensions/chat/message-content-styles.d.ts +0 -1
- package/dist/extensions/chat/message-html.d.ts +0 -6
- package/dist/extensions/chat/message-markdown.d.ts +0 -8
- package/dist/extensions/ga4-proxy.d.ts +0 -59
- package/dist/utils/type-utils.d.ts +0 -4
- package/dist/web-vitals.d.ts +0 -81
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Method names registered on the inline `window.vt` stub before `array.js` loads.
|
|
3
|
+
*
|
|
4
|
+
* npm / ESM imports (`import { vt } from '@v-tilt/browser'`) do **not** use this
|
|
5
|
+
* list — `vt` is the real SDK instance. Only the HTML snippet's loader IIFE
|
|
6
|
+
* needs these names so calls queue in `window.vt._i` until the bundle loads.
|
|
7
|
+
*
|
|
8
|
+
* When adding a new public `vt.*` method that integrators may call before
|
|
9
|
+
* `init()` completes, append it here and update public install docs.
|
|
10
|
+
*/
|
|
11
|
+
export declare const VTILT_SNIPPET_STUB_METHOD_NAMES: readonly ["init", "capture", "identify", "setUserProperties", "resetUser", "getUserIdentity", "getDeviceId", "getUserState", "alias", "getConfig", "getSessionId", "updateConfig", "setConsent", "on", "once", "off", "startAutocapture", "stopAutocapture", "startSessionRecording", "stopSessionRecording", "openChat", "closeChat", "toggleChat", "showChat", "hideChat", "sendChatMessage", "gtag", "setGoogleUserData"];
|
|
12
|
+
/** Space-separated stub method string for the minified install snippet. */
|
|
13
|
+
export declare const VTILT_SNIPPET_STUB_METHODS: string;
|
|
14
|
+
export type VtiltSnippetStubMethodName = (typeof VTILT_SNIPPET_STUB_METHOD_NAMES)[number];
|
package/dist/utils/globals.d.ts
CHANGED
|
@@ -55,7 +55,21 @@ export interface ChatMessage {
|
|
|
55
55
|
content: string;
|
|
56
56
|
content_type: "text" | "html" | "attachment";
|
|
57
57
|
metadata: Record<string, unknown>;
|
|
58
|
+
/** Immutable creation timestamp — set once on row INSERT. */
|
|
58
59
|
created_at: string;
|
|
60
|
+
/**
|
|
61
|
+
* Last modification timestamp. Equals `created_at` on a freshly
|
|
62
|
+
* inserted row; later bumped when the AI streaming finalize writes
|
|
63
|
+
* the full text onto a placeholder row, or when the (planned)
|
|
64
|
+
* edit-message feature mutates content. Optional for backwards
|
|
65
|
+
* compatibility with widget builds that pre-date the field.
|
|
66
|
+
*/
|
|
67
|
+
updated_at?: string;
|
|
68
|
+
/**
|
|
69
|
+
* Local-only outbound delivery state (widget SDK). Cleared once the
|
|
70
|
+
* server row is acknowledged. Not returned by API/Ably payloads.
|
|
71
|
+
*/
|
|
72
|
+
delivery_status?: "pending" | "sending" | "failed";
|
|
59
73
|
}
|
|
60
74
|
/**
|
|
61
75
|
* Chat channel structure (maps 1:1 to Ably channel)
|
|
@@ -154,6 +168,14 @@ export interface ChatConfig {
|
|
|
154
168
|
channelId: string;
|
|
155
169
|
messageId: string;
|
|
156
170
|
}) => void;
|
|
171
|
+
/**
|
|
172
|
+
* Called when the user message row is persisted on the server (before
|
|
173
|
+
* the AI stream finishes). Use for form → chat → redirect flows.
|
|
174
|
+
*/
|
|
175
|
+
onMessageDelivered?: (data: {
|
|
176
|
+
channelId: string;
|
|
177
|
+
messageId: string;
|
|
178
|
+
}) => void;
|
|
157
179
|
/** Called when a message is received (from AI or agent) */
|
|
158
180
|
onMessageReceived?: (data: {
|
|
159
181
|
channelId: string;
|
|
@@ -203,6 +225,25 @@ export interface SendChatMessageOptions {
|
|
|
203
225
|
* `markdown` and `html` use the same sanitized rendering as AI/agent messages.
|
|
204
226
|
*/
|
|
205
227
|
format?: "text" | "markdown" | "html";
|
|
228
|
+
/**
|
|
229
|
+
* Marks the message as automatically injected by your site (form submit, CTA,
|
|
230
|
+
* etc.) rather than typed by the visitor in the widget. Stored on the message
|
|
231
|
+
* as `message_source` metadata so the AI can respond appropriately — e.g.
|
|
232
|
+
* `source: "landing_form"`. Slug-like: letters, numbers, `_`, `-`, max 64 chars.
|
|
233
|
+
*/
|
|
234
|
+
source?: string;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Pixel inset of the chat bubble from the viewport edges.
|
|
238
|
+
* Use to clear host floating buttons, cookie banners, or mobile tab bars.
|
|
239
|
+
*/
|
|
240
|
+
export interface BubbleOffset {
|
|
241
|
+
/** Distance from the bottom edge (default: 20) */
|
|
242
|
+
bottom?: number;
|
|
243
|
+
/** Distance from the right edge when `position` is `bottom-right` (default: 20) */
|
|
244
|
+
right?: number;
|
|
245
|
+
/** Distance from the left edge when `position` is `bottom-left` (default: 20) */
|
|
246
|
+
left?: number;
|
|
206
247
|
}
|
|
207
248
|
/**
|
|
208
249
|
* Chat bubble appearance and behavior configuration
|
|
@@ -212,6 +253,12 @@ export interface BubbleConfig {
|
|
|
212
253
|
draggable?: boolean;
|
|
213
254
|
/** Show the bubble on load (default: true). Set to false to control via vt.chat.show() */
|
|
214
255
|
visible?: boolean;
|
|
256
|
+
/**
|
|
257
|
+
* Viewport inset in pixels. Prefer this over custom CSS so positioning
|
|
258
|
+
* survives widget UI updates. Pass `null` in `vt.updateConfig({ chat: { bubble: { offset: null } } })` to reset
|
|
259
|
+
* to SDK defaults (20px).
|
|
260
|
+
*/
|
|
261
|
+
offset?: BubbleOffset | null;
|
|
215
262
|
}
|
|
216
263
|
/**
|
|
217
264
|
* Interface for lazy-loaded chat widget (set by chat.ts entrypoint)
|
|
@@ -237,39 +284,18 @@ export interface LazyLoadedChatInterface {
|
|
|
237
284
|
createChannel(): Promise<void>;
|
|
238
285
|
/** Go back to channel list from conversation view */
|
|
239
286
|
goToChannelList(): void;
|
|
287
|
+
/**
|
|
288
|
+
* Tier A closed-badge: apply aggregate unread from `GET /api/chat/widget/unread`.
|
|
289
|
+
* No-op while the panel is open.
|
|
290
|
+
*/
|
|
291
|
+
applyPolledUnreadCount?(count: number): void;
|
|
240
292
|
sendMessage(content: SendChatMessageContent, options?: SendChatMessageOptions): Promise<void>;
|
|
241
293
|
markAsRead(): void;
|
|
242
294
|
onMessage(callback: (message: ChatMessage) => void): () => void;
|
|
243
295
|
onTyping(callback: (isTyping: boolean, senderType: string) => void): () => void;
|
|
244
296
|
onConnectionChange(callback: (connected: boolean) => void): () => void;
|
|
245
297
|
updateConfig?(config: ChatConfig): void;
|
|
246
|
-
registerWidget?(definition:
|
|
247
|
-
type: string;
|
|
248
|
-
toolDescription: string;
|
|
249
|
-
parameters: Record<string, {
|
|
250
|
-
type: string;
|
|
251
|
-
description: string;
|
|
252
|
-
}>;
|
|
253
|
-
render: (params: Record<string, unknown>, context: {
|
|
254
|
-
channelId: string;
|
|
255
|
-
distinctId: string;
|
|
256
|
-
primaryColor: string;
|
|
257
|
-
apiBase: string;
|
|
258
|
-
token: string;
|
|
259
|
-
messageId: string;
|
|
260
|
-
}) => string;
|
|
261
|
-
onAction: (action: string, data: Record<string, unknown>, context: {
|
|
262
|
-
channelId: string;
|
|
263
|
-
distinctId: string;
|
|
264
|
-
primaryColor: string;
|
|
265
|
-
apiBase: string;
|
|
266
|
-
token: string;
|
|
267
|
-
messageId: string;
|
|
268
|
-
}) => Promise<{
|
|
269
|
-
replaceHTML?: string;
|
|
270
|
-
sendMessage?: string;
|
|
271
|
-
}>;
|
|
272
|
-
}): void;
|
|
298
|
+
registerWidget?(definition: import("../extensions/chat/widget-registry").ChatWidgetDefinition): void;
|
|
273
299
|
destroy(): void;
|
|
274
300
|
}
|
|
275
301
|
/**
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -10,6 +10,14 @@ export { getLogger, resolveLogLevel, setLevelFromConfig, type LogLevel, type Log
|
|
|
10
10
|
* Default size 16 gives ~91 bits of entropy (55^16).
|
|
11
11
|
*/
|
|
12
12
|
export declare function generateId(size?: number): string;
|
|
13
|
+
/**
|
|
14
|
+
* Generate a RFC 4122 v4 UUID. Used by the chat module to mint message ids
|
|
15
|
+
* client-side so the optimistic temp row and the persisted server row share
|
|
16
|
+
* a single identity (no key churn, no remount). Uses `crypto.randomUUID`
|
|
17
|
+
* where available and falls back to `crypto.getRandomValues` on older
|
|
18
|
+
* browsers.
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateUuidV4(): string;
|
|
13
21
|
/**
|
|
14
22
|
* Validate user agent string
|
|
15
23
|
*/
|
package/dist/vtilt.d.ts
CHANGED
|
@@ -89,7 +89,7 @@ export declare class VTilt {
|
|
|
89
89
|
* Send a chat message. By default uses the active conversation; pass options to
|
|
90
90
|
* start a new conversation, target a channel, or open the widget panel.
|
|
91
91
|
*/
|
|
92
|
-
sendChatMessage(content: SendChatMessageContent, options?: SendChatMessageOptions): void
|
|
92
|
+
sendChatMessage(content: SendChatMessageContent, options?: SendChatMessageOptions): Promise<void>;
|
|
93
93
|
/**
|
|
94
94
|
* Raw `gtag(...)` passthrough. Queues calls made before the feature is
|
|
95
95
|
* enabled or before `gtag.js` has loaded, flushed FIFO once ready. Safe
|
|
@@ -135,6 +135,11 @@ export declare class VTilt {
|
|
|
135
135
|
getDistinctId(): string;
|
|
136
136
|
getAnonymousId(): string;
|
|
137
137
|
toString(): string;
|
|
138
|
+
/**
|
|
139
|
+
* Merge a partial config patch into the live SDK config and notify all features.
|
|
140
|
+
* Use for any post-`init()` change (autocapture, `chat`, persistence, etc.).
|
|
141
|
+
* Top-level keys shallow-merge; nested `chat` deep-merges.
|
|
142
|
+
*/
|
|
138
143
|
updateConfig(config: Partial<VTiltConfig>): void;
|
|
139
144
|
buildUrl(): string;
|
|
140
145
|
buildEndpointUrl(path: string): string;
|
package/dist/web-vitals.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-vitals.js","sources":["../../../../node_modules/.pnpm/web-vitals@3.5.2/node_modules/web-vitals/dist/web-vitals.js","../src/utils/globals.ts","../src/entrypoints/web-vitals.ts"],"sourcesContent":["var e,n,t,i,r,a=-1,o=function(e){addEventListener(\"pageshow\",(function(n){n.persisted&&(a=n.timeStamp,e(n))}),!0)},c=function(){return window.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0]},u=function(){var e=c();return e&&e.activationStart||0},f=function(e,n){var t=c(),i=\"navigate\";a>=0?i=\"back-forward-cache\":t&&(document.prerendering||u()>0?i=\"prerender\":document.wasDiscarded?i=\"restore\":t.type&&(i=t.type.replace(/_/g,\"-\")));return{name:e,value:void 0===n?-1:n,rating:\"good\",delta:0,entries:[],id:\"v3-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:i}},s=function(e,n,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var i=new PerformanceObserver((function(e){Promise.resolve().then((function(){n(e.getEntries())}))}));return i.observe(Object.assign({type:e,buffered:!0},t||{})),i}}catch(e){}},d=function(e,n,t,i){var r,a;return function(o){n.value>=0&&(o||i)&&((a=n.value-(r||0))||void 0===r)&&(r=n.value,n.delta=a,n.rating=function(e,n){return e>n[1]?\"poor\":e>n[0]?\"needs-improvement\":\"good\"}(n.value,t),e(n))}},l=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){var n=function(n){\"pagehide\"!==n.type&&\"hidden\"!==document.visibilityState||e(n)};addEventListener(\"visibilitychange\",n,!0),addEventListener(\"pagehide\",n,!0)},v=function(e){var n=!1;return function(t){n||(e(t),n=!0)}},m=-1,h=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},g=function(e){\"hidden\"===document.visibilityState&&m>-1&&(m=\"visibilitychange\"===e.type?e.timeStamp:0,T())},y=function(){addEventListener(\"visibilitychange\",g,!0),addEventListener(\"prerenderingchange\",g,!0)},T=function(){removeEventListener(\"visibilitychange\",g,!0),removeEventListener(\"prerenderingchange\",g,!0)},E=function(){return m<0&&(m=h(),y(),o((function(){setTimeout((function(){m=h(),y()}),0)}))),{get firstHiddenTime(){return m}}},C=function(e){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return e()}),!0):e()},L=[1800,3e3],w=function(e,n){n=n||{},C((function(){var t,i=E(),r=f(\"FCP\"),a=s(\"paint\",(function(e){e.forEach((function(e){\"first-contentful-paint\"===e.name&&(a.disconnect(),e.startTime<i.firstHiddenTime&&(r.value=Math.max(e.startTime-u(),0),r.entries.push(e),t(!0)))}))}));a&&(t=d(e,r,L,n.reportAllChanges),o((function(i){r=f(\"FCP\"),t=d(e,r,L,n.reportAllChanges),l((function(){r.value=performance.now()-i.timeStamp,t(!0)}))})))}))},b=[.1,.25],S=function(e,n){n=n||{},w(v((function(){var t,i=f(\"CLS\",0),r=0,a=[],c=function(e){e.forEach((function(e){if(!e.hadRecentInput){var n=a[0],t=a[a.length-1];r&&e.startTime-t.startTime<1e3&&e.startTime-n.startTime<5e3?(r+=e.value,a.push(e)):(r=e.value,a=[e])}})),r>i.value&&(i.value=r,i.entries=a,t())},u=s(\"layout-shift\",c);u&&(t=d(e,i,b,n.reportAllChanges),p((function(){c(u.takeRecords()),t(!0)})),o((function(){r=0,i=f(\"CLS\",0),t=d(e,i,b,n.reportAllChanges),l((function(){return t()}))})),setTimeout(t,0))})))},A={passive:!0,capture:!0},I=new Date,P=function(i,r){e||(e=r,n=i,t=new Date,k(removeEventListener),F())},F=function(){if(n>=0&&n<t-I){var r={entryType:\"first-input\",name:e.type,target:e.target,cancelable:e.cancelable,startTime:e.timeStamp,processingStart:e.timeStamp+n};i.forEach((function(e){e(r)})),i=[]}},M=function(e){if(e.cancelable){var n=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,n){var t=function(){P(e,n),r()},i=function(){r()},r=function(){removeEventListener(\"pointerup\",t,A),removeEventListener(\"pointercancel\",i,A)};addEventListener(\"pointerup\",t,A),addEventListener(\"pointercancel\",i,A)}(n,e):P(n,e)}},k=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(n){return e(n,M,A)}))},D=[100,300],x=function(t,r){r=r||{},C((function(){var a,c=E(),u=f(\"FID\"),l=function(e){e.startTime<c.firstHiddenTime&&(u.value=e.processingStart-e.startTime,u.entries.push(e),a(!0))},m=function(e){e.forEach(l)},h=s(\"first-input\",m);a=d(t,u,D,r.reportAllChanges),h&&p(v((function(){m(h.takeRecords()),h.disconnect()}))),h&&o((function(){var o;u=f(\"FID\"),a=d(t,u,D,r.reportAllChanges),i=[],n=-1,e=null,k(addEventListener),o=l,i.push(o),F()}))}))},B=0,R=1/0,H=0,N=function(e){e.forEach((function(e){e.interactionId&&(R=Math.min(R,e.interactionId),H=Math.max(H,e.interactionId),B=H?(H-R)/7+1:0)}))},O=function(){return r?B:performance.interactionCount||0},q=function(){\"interactionCount\"in performance||r||(r=s(\"event\",N,{type:\"event\",buffered:!0,durationThreshold:0}))},j=[200,500],_=0,z=function(){return O()-_},G=[],J={},K=function(e){var n=G[G.length-1],t=J[e.interactionId];if(t||G.length<10||e.duration>n.latency){if(t)t.entries.push(e),t.latency=Math.max(t.latency,e.duration);else{var i={id:e.interactionId,latency:e.duration,entries:[e]};J[i.id]=i,G.push(i)}G.sort((function(e,n){return n.latency-e.latency})),G.splice(10).forEach((function(e){delete J[e.id]}))}},Q=function(e,n){n=n||{},C((function(){var t;q();var i,r=f(\"INP\"),a=function(e){e.forEach((function(e){(e.interactionId&&K(e),\"first-input\"===e.entryType)&&(!G.some((function(n){return n.entries.some((function(n){return e.duration===n.duration&&e.startTime===n.startTime}))}))&&K(e))}));var n,t=(n=Math.min(G.length-1,Math.floor(z()/50)),G[n]);t&&t.latency!==r.value&&(r.value=t.latency,r.entries=t.entries,i())},c=s(\"event\",a,{durationThreshold:null!==(t=n.durationThreshold)&&void 0!==t?t:40});i=d(e,r,j,n.reportAllChanges),c&&(\"PerformanceEventTiming\"in window&&\"interactionId\"in PerformanceEventTiming.prototype&&c.observe({type:\"first-input\",buffered:!0}),p((function(){a(c.takeRecords()),r.value<0&&z()>0&&(r.value=0,r.entries=[]),i(!0)})),o((function(){G=[],_=O(),r=f(\"INP\"),i=d(e,r,j,n.reportAllChanges)})))}))},U=[2500,4e3],V={},W=function(e,n){n=n||{},C((function(){var t,i=E(),r=f(\"LCP\"),a=function(e){var n=e[e.length-1];n&&n.startTime<i.firstHiddenTime&&(r.value=Math.max(n.startTime-u(),0),r.entries=[n],t())},c=s(\"largest-contentful-paint\",a);if(c){t=d(e,r,U,n.reportAllChanges);var m=v((function(){V[r.id]||(a(c.takeRecords()),c.disconnect(),V[r.id]=!0,t(!0))}));[\"keydown\",\"click\"].forEach((function(e){addEventListener(e,(function(){return setTimeout(m,0)}),!0)})),p(m),o((function(i){r=f(\"LCP\"),t=d(e,r,U,n.reportAllChanges),l((function(){r.value=performance.now()-i.timeStamp,V[r.id]=!0,t(!0)}))}))}}))},X=[800,1800],Y=function e(n){document.prerendering?C((function(){return e(n)})):\"complete\"!==document.readyState?addEventListener(\"load\",(function(){return e(n)}),!0):setTimeout(n,0)},Z=function(e,n){n=n||{};var t=f(\"TTFB\"),i=d(e,t,X,n.reportAllChanges);Y((function(){var r=c();if(r){var a=r.responseStart;if(a<=0||a>performance.now())return;t.value=Math.max(a-u(),0),t.entries=[r],i(!0),o((function(){t=f(\"TTFB\",0),(i=d(e,t,X,n.reportAllChanges))(!0)}))}}))};export{b as CLSThresholds,L as FCPThresholds,D as FIDThresholds,j as INPThresholds,U as LCPThresholds,X as TTFBThresholds,S as getCLS,w as getFCP,x as getFID,Q as getINP,W as getLCP,Z as getTTFB,S as onCLS,w as onFCP,x as onFID,Q as onINP,W as onLCP,Z as onTTFB};\n",null,null],"names":["r","a","o","e","addEventListener","n","persisted","timeStamp","c","window","performance","getEntriesByType","u","activationStart","f","t","i","document","prerendering","wasDiscarded","type","replace","name","value","rating","delta","entries","id","concat","Date","now","Math","floor","random","navigationType","s","PerformanceObserver","supportedEntryTypes","includes","Promise","resolve","then","getEntries","observe","Object","assign","buffered","d","l","requestAnimationFrame","p","visibilityState","v","m","h","g","T","y","removeEventListener","E","setTimeout","firstHiddenTime","C","L","w","forEach","disconnect","startTime","max","push","reportAllChanges","b","B","R","H","N","interactionId","min","O","interactionCount","q","durationThreshold","j","_","z","G","J","K","length","duration","latency","sort","splice","U","V","X","Y","readyState","win","undefined","global","globalThis","navigator","location","fetch","createElement","XMLHttpRequest","AbortController","userAgent","assignableWindow","vtiltWebVitalsCallbacks","takeRecords","hadRecentInput","onFCP","entryType","some","PerformanceEventTiming","prototype","onTTFB","responseStart","__VTiltExtensions__","webVitalsCallbacks"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"web-vitals.js","sources":["../../../../node_modules/.pnpm/web-vitals@3.5.2/node_modules/web-vitals/dist/web-vitals.js","../src/utils/globals.ts","../src/entrypoints/web-vitals.ts"],"sourcesContent":["var e,n,t,i,r,a=-1,o=function(e){addEventListener(\"pageshow\",(function(n){n.persisted&&(a=n.timeStamp,e(n))}),!0)},c=function(){return window.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0]},u=function(){var e=c();return e&&e.activationStart||0},f=function(e,n){var t=c(),i=\"navigate\";a>=0?i=\"back-forward-cache\":t&&(document.prerendering||u()>0?i=\"prerender\":document.wasDiscarded?i=\"restore\":t.type&&(i=t.type.replace(/_/g,\"-\")));return{name:e,value:void 0===n?-1:n,rating:\"good\",delta:0,entries:[],id:\"v3-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:i}},s=function(e,n,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var i=new PerformanceObserver((function(e){Promise.resolve().then((function(){n(e.getEntries())}))}));return i.observe(Object.assign({type:e,buffered:!0},t||{})),i}}catch(e){}},d=function(e,n,t,i){var r,a;return function(o){n.value>=0&&(o||i)&&((a=n.value-(r||0))||void 0===r)&&(r=n.value,n.delta=a,n.rating=function(e,n){return e>n[1]?\"poor\":e>n[0]?\"needs-improvement\":\"good\"}(n.value,t),e(n))}},l=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){var n=function(n){\"pagehide\"!==n.type&&\"hidden\"!==document.visibilityState||e(n)};addEventListener(\"visibilitychange\",n,!0),addEventListener(\"pagehide\",n,!0)},v=function(e){var n=!1;return function(t){n||(e(t),n=!0)}},m=-1,h=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},g=function(e){\"hidden\"===document.visibilityState&&m>-1&&(m=\"visibilitychange\"===e.type?e.timeStamp:0,T())},y=function(){addEventListener(\"visibilitychange\",g,!0),addEventListener(\"prerenderingchange\",g,!0)},T=function(){removeEventListener(\"visibilitychange\",g,!0),removeEventListener(\"prerenderingchange\",g,!0)},E=function(){return m<0&&(m=h(),y(),o((function(){setTimeout((function(){m=h(),y()}),0)}))),{get firstHiddenTime(){return m}}},C=function(e){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return e()}),!0):e()},L=[1800,3e3],w=function(e,n){n=n||{},C((function(){var t,i=E(),r=f(\"FCP\"),a=s(\"paint\",(function(e){e.forEach((function(e){\"first-contentful-paint\"===e.name&&(a.disconnect(),e.startTime<i.firstHiddenTime&&(r.value=Math.max(e.startTime-u(),0),r.entries.push(e),t(!0)))}))}));a&&(t=d(e,r,L,n.reportAllChanges),o((function(i){r=f(\"FCP\"),t=d(e,r,L,n.reportAllChanges),l((function(){r.value=performance.now()-i.timeStamp,t(!0)}))})))}))},b=[.1,.25],S=function(e,n){n=n||{},w(v((function(){var t,i=f(\"CLS\",0),r=0,a=[],c=function(e){e.forEach((function(e){if(!e.hadRecentInput){var n=a[0],t=a[a.length-1];r&&e.startTime-t.startTime<1e3&&e.startTime-n.startTime<5e3?(r+=e.value,a.push(e)):(r=e.value,a=[e])}})),r>i.value&&(i.value=r,i.entries=a,t())},u=s(\"layout-shift\",c);u&&(t=d(e,i,b,n.reportAllChanges),p((function(){c(u.takeRecords()),t(!0)})),o((function(){r=0,i=f(\"CLS\",0),t=d(e,i,b,n.reportAllChanges),l((function(){return t()}))})),setTimeout(t,0))})))},A={passive:!0,capture:!0},I=new Date,P=function(i,r){e||(e=r,n=i,t=new Date,k(removeEventListener),F())},F=function(){if(n>=0&&n<t-I){var r={entryType:\"first-input\",name:e.type,target:e.target,cancelable:e.cancelable,startTime:e.timeStamp,processingStart:e.timeStamp+n};i.forEach((function(e){e(r)})),i=[]}},M=function(e){if(e.cancelable){var n=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,n){var t=function(){P(e,n),r()},i=function(){r()},r=function(){removeEventListener(\"pointerup\",t,A),removeEventListener(\"pointercancel\",i,A)};addEventListener(\"pointerup\",t,A),addEventListener(\"pointercancel\",i,A)}(n,e):P(n,e)}},k=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(n){return e(n,M,A)}))},D=[100,300],x=function(t,r){r=r||{},C((function(){var a,c=E(),u=f(\"FID\"),l=function(e){e.startTime<c.firstHiddenTime&&(u.value=e.processingStart-e.startTime,u.entries.push(e),a(!0))},m=function(e){e.forEach(l)},h=s(\"first-input\",m);a=d(t,u,D,r.reportAllChanges),h&&p(v((function(){m(h.takeRecords()),h.disconnect()}))),h&&o((function(){var o;u=f(\"FID\"),a=d(t,u,D,r.reportAllChanges),i=[],n=-1,e=null,k(addEventListener),o=l,i.push(o),F()}))}))},B=0,R=1/0,H=0,N=function(e){e.forEach((function(e){e.interactionId&&(R=Math.min(R,e.interactionId),H=Math.max(H,e.interactionId),B=H?(H-R)/7+1:0)}))},O=function(){return r?B:performance.interactionCount||0},q=function(){\"interactionCount\"in performance||r||(r=s(\"event\",N,{type:\"event\",buffered:!0,durationThreshold:0}))},j=[200,500],_=0,z=function(){return O()-_},G=[],J={},K=function(e){var n=G[G.length-1],t=J[e.interactionId];if(t||G.length<10||e.duration>n.latency){if(t)t.entries.push(e),t.latency=Math.max(t.latency,e.duration);else{var i={id:e.interactionId,latency:e.duration,entries:[e]};J[i.id]=i,G.push(i)}G.sort((function(e,n){return n.latency-e.latency})),G.splice(10).forEach((function(e){delete J[e.id]}))}},Q=function(e,n){n=n||{},C((function(){var t;q();var i,r=f(\"INP\"),a=function(e){e.forEach((function(e){(e.interactionId&&K(e),\"first-input\"===e.entryType)&&(!G.some((function(n){return n.entries.some((function(n){return e.duration===n.duration&&e.startTime===n.startTime}))}))&&K(e))}));var n,t=(n=Math.min(G.length-1,Math.floor(z()/50)),G[n]);t&&t.latency!==r.value&&(r.value=t.latency,r.entries=t.entries,i())},c=s(\"event\",a,{durationThreshold:null!==(t=n.durationThreshold)&&void 0!==t?t:40});i=d(e,r,j,n.reportAllChanges),c&&(\"PerformanceEventTiming\"in window&&\"interactionId\"in PerformanceEventTiming.prototype&&c.observe({type:\"first-input\",buffered:!0}),p((function(){a(c.takeRecords()),r.value<0&&z()>0&&(r.value=0,r.entries=[]),i(!0)})),o((function(){G=[],_=O(),r=f(\"INP\"),i=d(e,r,j,n.reportAllChanges)})))}))},U=[2500,4e3],V={},W=function(e,n){n=n||{},C((function(){var t,i=E(),r=f(\"LCP\"),a=function(e){var n=e[e.length-1];n&&n.startTime<i.firstHiddenTime&&(r.value=Math.max(n.startTime-u(),0),r.entries=[n],t())},c=s(\"largest-contentful-paint\",a);if(c){t=d(e,r,U,n.reportAllChanges);var m=v((function(){V[r.id]||(a(c.takeRecords()),c.disconnect(),V[r.id]=!0,t(!0))}));[\"keydown\",\"click\"].forEach((function(e){addEventListener(e,(function(){return setTimeout(m,0)}),!0)})),p(m),o((function(i){r=f(\"LCP\"),t=d(e,r,U,n.reportAllChanges),l((function(){r.value=performance.now()-i.timeStamp,V[r.id]=!0,t(!0)}))}))}}))},X=[800,1800],Y=function e(n){document.prerendering?C((function(){return e(n)})):\"complete\"!==document.readyState?addEventListener(\"load\",(function(){return e(n)}),!0):setTimeout(n,0)},Z=function(e,n){n=n||{};var t=f(\"TTFB\"),i=d(e,t,X,n.reportAllChanges);Y((function(){var r=c();if(r){var a=r.responseStart;if(a<=0||a>performance.now())return;t.value=Math.max(a-u(),0),t.entries=[r],i(!0),o((function(){t=f(\"TTFB\",0),(i=d(e,t,X,n.reportAllChanges))(!0)}))}}))};export{b as CLSThresholds,L as FCPThresholds,D as FIDThresholds,j as INPThresholds,U as LCPThresholds,X as TTFBThresholds,S as getCLS,w as getFCP,x as getFID,Q as getINP,W as getLCP,Z as getTTFB,S as onCLS,w as onFCP,x as onFID,Q as onINP,W as onLCP,Z as onTTFB};\n",null,null],"names":["r","a","o","e","addEventListener","n","persisted","timeStamp","c","window","performance","getEntriesByType","u","activationStart","f","t","i","document","prerendering","wasDiscarded","type","replace","name","value","rating","delta","entries","id","concat","Date","now","Math","floor","random","navigationType","s","PerformanceObserver","supportedEntryTypes","includes","Promise","resolve","then","getEntries","observe","Object","assign","buffered","d","l","requestAnimationFrame","p","visibilityState","v","m","h","g","T","y","removeEventListener","E","setTimeout","firstHiddenTime","C","L","w","forEach","disconnect","startTime","max","push","reportAllChanges","b","B","R","H","N","interactionId","min","O","interactionCount","q","durationThreshold","j","_","z","G","J","K","length","duration","latency","sort","splice","U","V","X","Y","readyState","win","undefined","global","globalThis","navigator","location","fetch","createElement","XMLHttpRequest","AbortController","userAgent","assignableWindow","vtiltWebVitalsCallbacks","takeRecords","hadRecentInput","onFCP","entryType","some","PerformanceEventTiming","prototype","onTTFB","responseStart","__VTiltExtensions__","webVitalsCallbacks"],"mappings":"yBAAA,IAAYA,EAAEC,GAAE,EAAGC,EAAE,SAASC,GAAGC,iBAAiB,WAAY,SAASC,GAAGA,EAAEC,YAAYL,EAAEI,EAAEE,UAAUJ,EAAEE,GAAG,GAAG,EAAG,EAAEG,EAAE,WAAW,OAAOC,OAAOC,aAAaA,YAAYC,kBAAkBD,YAAYC,iBAAiB,cAAc,EAAE,EAAEC,EAAE,WAAW,IAAIT,EAAEK,IAAI,OAAOL,GAAGA,EAAEU,iBAAiB,CAAC,EAAEC,EAAE,SAASX,EAAEE,GAAG,IAAIU,EAAEP,IAAIQ,EAAE,WAA8J,OAAnJf,GAAG,EAAEe,EAAE,qBAAqBD,IAAIE,SAASC,cAAcN,IAAI,EAAEI,EAAE,YAAYC,SAASE,aAAaH,EAAE,UAAUD,EAAEK,OAAOJ,EAAED,EAAEK,KAAKC,QAAQ,KAAK,OAAa,CAACC,KAAKnB,EAAEoB,WAAM,IAASlB,GAAE,EAAGA,EAAEmB,OAAO,OAAOC,MAAM,EAAEC,QAAQ,GAAGC,GAAG,MAAMC,OAAOC,KAAKC,MAAM,KAAKF,OAAOG,KAAKC,MAAM,cAAcD,KAAKE,UAAU,MAAMC,eAAelB,EAAE,EAAEmB,EAAE,SAAShC,EAAEE,EAAEU,GAAG,IAAI,GAAGqB,oBAAoBC,oBAAoBC,SAASnC,GAAG,CAAC,IAAIa,EAAE,IAAIoB,oBAAqB,SAASjC,GAAGoC,QAAQC,UAAUC,KAAM,WAAWpC,EAAEF,EAAEuC,aAAa,EAAG,GAAI,OAAO1B,EAAE2B,QAAQC,OAAOC,OAAO,CAACzB,KAAKjB,EAAE2C,UAAS,GAAI/B,GAAG,KAAKC,CAAC,CAAC,CAAC,MAAMb,GAAG,CAAC,EAAE4C,EAAE,SAAS5C,EAAEE,EAAEU,EAAEC,GAAG,IAAIhB,EAAEC,EAAE,OAAO,SAASC,GAAGG,EAAEkB,OAAO,IAAIrB,GAAGc,MAAMf,EAAEI,EAAEkB,OAAOvB,GAAG,UAAK,IAASA,KAAKA,EAAEK,EAAEkB,MAAMlB,EAAEoB,MAAMxB,EAAEI,EAAEmB,OAAO,SAASrB,EAAEE,GAAG,OAAOF,EAAEE,EAAE,GAAG,OAAOF,EAAEE,EAAE,GAAG,oBAAoB,MAAM,CAApE,CAAsEA,EAAEkB,MAAMR,GAAGZ,EAAEE,GAAG,CAAC,EAAE2C,EAAE,SAAS7C,GAAG8C,sBAAuB,WAAW,OAAOA,sBAAuB,WAAW,OAAO9C,GAAG,EAAG,EAAG,EAAE+C,EAAE,SAAS/C,GAAG,IAAIE,EAAE,SAASA,GAAG,aAAaA,EAAEe,MAAM,WAAWH,SAASkC,iBAAiBhD,EAAEE,EAAE,EAAED,iBAAiB,mBAAmBC,GAAE,GAAID,iBAAiB,WAAWC,GAAE,EAAG,EAAE+C,EAAE,SAASjD,GAAG,IAAIE,GAAE,EAAG,OAAO,SAASU,GAAGV,IAAIF,EAAEY,GAAGV,GAAE,EAAG,CAAC,EAAEgD,GAAE,EAAGC,EAAE,WAAW,MAAM,WAAWrC,SAASkC,iBAAiBlC,SAASC,aAAa,IAAI,CAAC,EAAEqC,EAAE,SAASpD,GAAG,WAAWc,SAASkC,iBAAiBE,GAAE,IAAKA,EAAE,qBAAqBlD,EAAEiB,KAAKjB,EAAEI,UAAU,EAAEiD,IAAI,EAAEC,EAAE,WAAWrD,iBAAiB,mBAAmBmD,GAAE,GAAInD,iBAAiB,qBAAqBmD,GAAE,EAAG,EAAEC,EAAE,WAAWE,oBAAoB,mBAAmBH,GAAE,GAAIG,oBAAoB,qBAAqBH,GAAE,EAAG,EAAEI,EAAE,WAAW,OAAON,EAAE,IAAIA,EAAEC,IAAIG,IAAIvD,EAAG,WAAW0D,WAAY,WAAWP,EAAEC,IAAIG,GAAG,EAAG,EAAE,IAAK,CAAC,mBAAII,GAAkB,OAAOR,CAAC,EAAE,EAAES,EAAE,SAAS3D,GAAGc,SAASC,aAAad,iBAAiB,qBAAsB,WAAW,OAAOD,GAAG,GAAG,GAAIA,GAAG,EAAE4D,EAAE,CAAC,KAAK,KAAKC,EAAE,SAAS7D,EAAEE,GAAGA,EAAEA,GAAG,GAAGyD,EAAG,WAAW,IAAI/C,EAAEC,EAAE2C,IAAI3D,EAAEc,EAAE,OAAOb,EAAEkC,EAAE,QAAS,SAAShC,GAAGA,EAAE8D,QAAS,SAAS9D,GAAG,2BAA2BA,EAAEmB,OAAOrB,EAAEiE,aAAa/D,EAAEgE,UAAUnD,EAAE6C,kBAAkB7D,EAAEuB,MAAMQ,KAAKqC,IAAIjE,EAAEgE,UAAUvD,IAAI,GAAGZ,EAAE0B,QAAQ2C,KAAKlE,GAAGY,GAAE,IAAK,EAAG,GAAId,IAAIc,EAAEgC,EAAE5C,EAAEH,EAAE+D,EAAE1D,EAAEiE,kBAAkBpE,EAAG,SAASc,GAAGhB,EAAEc,EAAE,OAAOC,EAAEgC,EAAE5C,EAAEH,EAAE+D,EAAE1D,EAAEiE,kBAAkBtB,EAAG,WAAWhD,EAAEuB,MAAMb,YAAYoB,MAAMd,EAAET,UAAUQ,GAAE,EAAG,EAAG,GAAI,EAAG,EAAEwD,EAAE,CAAC,GAAG,KAAosDC,EAAE,EAAEC,EAAE,IAAIC,EAAE,EAAEC,EAAE,SAASxE,GAAGA,EAAE8D,QAAS,SAAS9D,GAAGA,EAAEyE,gBAAgBH,EAAE1C,KAAK8C,IAAIJ,EAAEtE,EAAEyE,eAAeF,EAAE3C,KAAKqC,IAAIM,EAAEvE,EAAEyE,eAAeJ,EAAEE,GAAGA,EAAED,GAAG,EAAE,EAAE,EAAE,EAAG,EAAEK,EAAE,WAAW,OAAO9E,EAAEwE,EAAE9D,YAAYqE,kBAAkB,CAAC,EAAEC,EAAE,WAAW,qBAAqBtE,aAAaV,IAAIA,EAAEmC,EAAE,QAAQwC,EAAE,CAACvD,KAAK,QAAQ0B,UAAS,EAAGmC,kBAAkB,IAAI,EAAEC,EAAE,CAAC,IAAI,KAAKC,EAAE,EAAEC,EAAE,WAAW,OAAON,IAAIK,CAAC,EAAEE,EAAE,GAAGC,EAAE,CAAA,EAAGC,EAAE,SAASpF,GAAG,IAAIE,EAAEgF,EAAEA,EAAEG,OAAO,GAAGzE,EAAEuE,EAAEnF,EAAEyE,eAAe,GAAG7D,GAAGsE,EAAEG,OAAO,IAAIrF,EAAEsF,SAASpF,EAAEqF,QAAQ,CAAC,GAAG3E,EAAEA,EAAEW,QAAQ2C,KAAKlE,GAAGY,EAAE2E,QAAQ3D,KAAKqC,IAAIrD,EAAE2E,QAAQvF,EAAEsF,cAAc,CAAC,IAAIzE,EAAE,CAACW,GAAGxB,EAAEyE,cAAcc,QAAQvF,EAAEsF,SAAS/D,QAAQ,CAACvB,IAAImF,EAAEtE,EAAEW,IAAIX,EAAEqE,EAAEhB,KAAKrD,EAAE,CAACqE,EAAEM,KAAM,SAASxF,EAAEE,GAAG,OAAOA,EAAEqF,QAAQvF,EAAEuF,OAAO,GAAIL,EAAEO,OAAO,IAAI3B,QAAS,SAAS9D,UAAUmF,EAAEnF,EAAEwB,GAAG,EAAG,CAAC,EAAqzBkE,EAAE,CAAC,KAAK,KAAKC,EAAE,CAAA,EAA6kBC,EAAE,CAAC,IAAI,MAAMC,EAAE,SAAS7F,EAAEE,GAAGY,SAASC,aAAa4C,EAAG,WAAW,OAAO3D,EAAEE,EAAE,GAAI,aAAaY,SAASgF,WAAW7F,iBAAiB,OAAQ,WAAW,OAAOD,EAAEE,EAAE,GAAG,GAAIuD,WAAWvD,EAAE,EAAE,ECah8M6F,EACc,oBAAXzF,OAAyBA,YAAS0F,EA4YrCC,EACkB,oBAAfC,WAA6BA,WAAaH,EAMtCI,EAAYF,aAAM,EAANA,EAAQE,UACpBrF,EAAWmF,aAAM,EAANA,EAAQnF,SACRmF,SAAAA,EAAQG,SACXH,SAAAA,EAAQI,MAOzBN,GAASjF,GAAmBA,EAASwF,cAIXL,SAAAA,EAAQM,eACPN,SAAAA,EAAQO,gBACdL,SAAAA,EAAWM,UAC7B,IAAMC,EAAqCX,QAAAA,EAAQ,CAAA,ECnapDY,EAA8C,OFfopL,SAAS3G,EAAEE,GAAGA,EAAEA,GAAG,GAAGyD,EAAG,WAAW,IAAI/C,EAAEC,EAAE2C,IAAI3D,EAAEc,EAAE,OAAOb,EAAE,SAASE,GAAG,IAAIE,EAAEF,EAAEA,EAAEqF,OAAO,GAAGnF,GAAGA,EAAE8D,UAAUnD,EAAE6C,kBAAkB7D,EAAEuB,MAAMQ,KAAKqC,IAAI/D,EAAE8D,UAAUvD,IAAI,GAAGZ,EAAE0B,QAAQ,CAACrB,GAAGU,IAAI,EAAEP,EAAE2B,EAAE,2BAA2BlC,GAAG,GAAGO,EAAE,CAACO,EAAEgC,EAAE5C,EAAEH,EAAE6F,EAAExF,EAAEiE,kBAAkB,IAAIjB,EAAED,EAAG,WAAW0C,EAAE9F,EAAE2B,MAAM1B,EAAEO,EAAEuG,eAAevG,EAAE0D,aAAa4B,EAAE9F,EAAE2B,KAAI,EAAGZ,GAAE,GAAI,GAAI,CAAC,UAAU,SAASkD,QAAS,SAAS9D,GAAGC,iBAAiBD,EAAG,WAAW,OAAOyD,WAAWP,EAAE,EAAE,GAAG,EAAG,GAAIH,EAAEG,GAAGnD,EAAG,SAASc,GAAGhB,EAAEc,EAAE,OAAOC,EAAEgC,EAAE5C,EAAEH,EAAE6F,EAAExF,EAAEiE,kBAAkBtB,EAAG,WAAWhD,EAAEuB,MAAMb,YAAYoB,MAAMd,EAAET,UAAUuF,EAAE9F,EAAE2B,KAAI,EAAGZ,GAAE,EAAG,EAAG,EAAG,CAAC,EAAG,QAA9xH,SAASZ,EAAEE,GAAGA,EAAEA,GAAG,CAAA,EAAG2D,EAAEZ,EAAG,WAAW,IAAIrC,EAAEC,EAAEF,EAAE,MAAM,GAAGd,EAAE,EAAEC,EAAE,GAAGO,EAAE,SAASL,GAAGA,EAAE8D,QAAS,SAAS9D,GAAG,IAAIA,EAAE6G,eAAe,CAAC,IAAI3G,EAAEJ,EAAE,GAAGc,EAAEd,EAAEA,EAAEuF,OAAO,GAAGxF,GAAGG,EAAEgE,UAAUpD,EAAEoD,UAAU,KAAKhE,EAAEgE,UAAU9D,EAAE8D,UAAU,KAAKnE,GAAGG,EAAEoB,MAAMtB,EAAEoE,KAAKlE,KAAKH,EAAEG,EAAEoB,MAAMtB,EAAE,CAACE,GAAG,CAAC,GAAIH,EAAEgB,EAAEO,QAAQP,EAAEO,MAAMvB,EAAEgB,EAAEU,QAAQzB,EAAEc,IAAI,EAAEH,EAAEuB,EAAE,eAAe3B,GAAGI,IAAIG,EAAEgC,EAAE5C,EAAEa,EAAEuD,EAAElE,EAAEiE,kBAAkBpB,EAAG,WAAW1C,EAAEI,EAAEmG,eAAehG,GAAE,EAAG,GAAIb,EAAG,WAAWF,EAAE,EAAEgB,EAAEF,EAAE,MAAM,GAAGC,EAAEgC,EAAE5C,EAAEa,EAAEuD,EAAElE,EAAEiE,kBAAkBtB,EAAG,WAAW,OAAOjC,GAAG,EAAG,GAAI6C,WAAW7C,EAAE,GAAG,GAAI,QEkBz+FkG,QFlBi4J,SAAS9G,EAAEE,GAAGA,EAAEA,GAAG,GAAGyD,EAAG,WAAW,IAAI/C,EAAEiE,IAAI,IAAIhE,EAAEhB,EAAEc,EAAE,OAAOb,EAAE,SAASE,GAAGA,EAAE8D,QAAS,SAAS9D,GAAIA,EAAEyE,eAAeW,EAAEpF,GAAG,gBAAgBA,EAAE+G,YAAc7B,EAAE8B,KAAM,SAAS9G,GAAG,OAAOA,EAAEqB,QAAQyF,KAAM,SAAS9G,GAAG,OAAOF,EAAEsF,WAAWpF,EAAEoF,UAAUtF,EAAEgE,YAAY9D,EAAE8D,SAAS,EAAG,IAAKoB,EAAEpF,EAAG,GAAI,IAAIE,EAAEU,GAAGV,EAAE0B,KAAK8C,IAAIQ,EAAEG,OAAO,EAAEzD,KAAKC,MAAMoD,IAAI,KAAKC,EAAEhF,IAAIU,GAAGA,EAAE2E,UAAU1F,EAAEuB,QAAQvB,EAAEuB,MAAMR,EAAE2E,QAAQ1F,EAAE0B,QAAQX,EAAEW,QAAQV,IAAI,EAAER,EAAE2B,EAAE,QAAQlC,EAAE,CAACgF,kBAAkB,QAAQlE,EAAEV,EAAE4E,yBAAoB,IAASlE,EAAEA,EAAE,KAAKC,EAAE+B,EAAE5C,EAAEH,EAAEkF,EAAE7E,EAAEiE,kBAAkB9D,IAAI,2BAA2BC,QAAQ,kBAAkB2G,uBAAuBC,WAAW7G,EAAEmC,QAAQ,CAACvB,KAAK,cAAc0B,UAAS,IAAKI,EAAG,WAAWjD,EAAEO,EAAEuG,eAAe/G,EAAEuB,MAAM,GAAG6D,IAAI,IAAIpF,EAAEuB,MAAM,EAAEvB,EAAE0B,QAAQ,IAAIV,GAAE,EAAG,GAAId,EAAG,WAAWmF,EAAE,GAAGF,EAAEL,IAAI9E,EAAEc,EAAE,OAAOE,EAAE+B,EAAE5C,EAAEH,EAAEkF,EAAE7E,EAAEiE,iBAAiB,GAAI,EAAG,EEoBhrLgD,OFpBw8M,SAASnH,EAAEE,GAAGA,EAAEA,GAAG,CAAA,EAAG,IAAIU,EAAED,EAAE,QAAQE,EAAE+B,EAAE5C,EAAEY,EAAEgF,EAAE1F,EAAEiE,kBAAkB0B,EAAG,WAAW,IAAIhG,EAAEQ,IAAI,GAAGR,EAAE,CAAC,IAAIC,EAAED,EAAEuH,cAAc,GAAGtH,GAAG,GAAGA,EAAES,YAAYoB,MAAM,OAAOf,EAAEQ,MAAMQ,KAAKqC,IAAInE,EAAEW,IAAI,GAAGG,EAAEW,QAAQ,CAAC1B,GAAGgB,GAAE,GAAId,EAAG,WAAWa,EAAED,EAAE,OAAO,IAAIE,EAAE+B,EAAE5C,EAAEY,EAAEgF,EAAE1F,EAAEiE,oBAAmB,EAAG,EAAG,CAAC,EAAG,GEwB1tNuC,EAAiBW,oBACfX,EAAiBW,qBAAuB,CAAA,EAG1CX,EAAiBW,oBAAoBC,mBACnCX","x_google_ignoreList":[0]}
|
package/package.json
CHANGED
|
@@ -1,71 +1,74 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@v-tilt/browser",
|
|
3
|
-
"version": "1.13.
|
|
4
|
-
"description": "vTilt browser tracking library",
|
|
5
|
-
"main": "dist/main.js",
|
|
6
|
-
"module": "dist/module.js",
|
|
7
|
-
"types": "dist/module.d.ts",
|
|
8
|
-
"files": [
|
|
9
|
-
"dist/*"
|
|
10
|
-
],
|
|
11
|
-
"publishConfig": {
|
|
12
|
-
"access": "public"
|
|
13
|
-
},
|
|
14
|
-
"scripts": {
|
|
15
|
-
"build": "tsc -b && rollup -c",
|
|
16
|
-
"dev": "rollup -c -w",
|
|
17
|
-
"type-check": "tsc --noEmit",
|
|
18
|
-
"lint": "eslint src --ext .ts",
|
|
19
|
-
"lint:fix": "eslint src --ext .ts --fix",
|
|
20
|
-
"test": "jest --config jest.config.cjs",
|
|
21
|
-
"clean": "rimraf lib dist",
|
|
22
|
-
"prepublishOnly": "pnpm run build"
|
|
23
|
-
},
|
|
24
|
-
"keywords": [
|
|
25
|
-
"analytics",
|
|
26
|
-
"tracking",
|
|
27
|
-
"web-vitals",
|
|
28
|
-
"performance"
|
|
29
|
-
],
|
|
30
|
-
"author": "vTilt",
|
|
31
|
-
"license": "MIT",
|
|
32
|
-
"devDependencies": {
|
|
33
|
-
"@babel/preset-env": "^7.28.3",
|
|
34
|
-
"@rollup/plugin-babel": "^6.0.4",
|
|
35
|
-
"@rollup/plugin-commonjs": "^25.0.8",
|
|
36
|
-
"@rollup/plugin-json": "^6.1.0",
|
|
37
|
-
"@rollup/plugin-node-resolve": "^15.3.1",
|
|
38
|
-
"@rollup/plugin-terser": "^0.4.4",
|
|
39
|
-
"@rollup/plugin-typescript": "^11.1.6",
|
|
40
|
-
"@types/jest": "29.5.14",
|
|
41
|
-
"@types/node": "^20.10.5",
|
|
42
|
-
"@v-tilt/eslint-config": "workspace:*",
|
|
43
|
-
"eslint": "^9.0.0",
|
|
44
|
-
"jest": "29.7.0",
|
|
45
|
-
"jest-environment-jsdom": "29.7.0",
|
|
46
|
-
"rimraf": "^5.0.5",
|
|
47
|
-
"rollup": "^4.9.1",
|
|
48
|
-
"rollup-plugin-dts": "^6.2.3",
|
|
49
|
-
"rollup-plugin-terser": "^7.0.2",
|
|
50
|
-
"rollup-plugin-visualizer": "^6.0.3",
|
|
51
|
-
"ts-jest": "29.2.5",
|
|
52
|
-
"typescript": "^5.3.3"
|
|
53
|
-
},
|
|
54
|
-
"dependencies": {
|
|
55
|
-
"@
|
|
56
|
-
"@
|
|
57
|
-
"@rrweb/
|
|
58
|
-
"@
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
"web-vitals": "^3.
|
|
65
|
-
},
|
|
66
|
-
"
|
|
67
|
-
"web-vitals":
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@v-tilt/browser",
|
|
3
|
+
"version": "1.13.1",
|
|
4
|
+
"description": "vTilt browser tracking library",
|
|
5
|
+
"main": "dist/main.js",
|
|
6
|
+
"module": "dist/module.js",
|
|
7
|
+
"types": "dist/module.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist/*"
|
|
10
|
+
],
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public"
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "tsc -b && rollup -c",
|
|
16
|
+
"dev": "rollup -c -w",
|
|
17
|
+
"type-check": "tsc --noEmit",
|
|
18
|
+
"lint": "eslint src --ext .ts",
|
|
19
|
+
"lint:fix": "eslint src --ext .ts --fix",
|
|
20
|
+
"test": "jest --config jest.config.cjs",
|
|
21
|
+
"clean": "rimraf lib dist",
|
|
22
|
+
"prepublishOnly": "pnpm run build"
|
|
23
|
+
},
|
|
24
|
+
"keywords": [
|
|
25
|
+
"analytics",
|
|
26
|
+
"tracking",
|
|
27
|
+
"web-vitals",
|
|
28
|
+
"performance"
|
|
29
|
+
],
|
|
30
|
+
"author": "vTilt",
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@babel/preset-env": "^7.28.3",
|
|
34
|
+
"@rollup/plugin-babel": "^6.0.4",
|
|
35
|
+
"@rollup/plugin-commonjs": "^25.0.8",
|
|
36
|
+
"@rollup/plugin-json": "^6.1.0",
|
|
37
|
+
"@rollup/plugin-node-resolve": "^15.3.1",
|
|
38
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
39
|
+
"@rollup/plugin-typescript": "^11.1.6",
|
|
40
|
+
"@types/jest": "29.5.14",
|
|
41
|
+
"@types/node": "^20.10.5",
|
|
42
|
+
"@v-tilt/eslint-config": "workspace:*",
|
|
43
|
+
"eslint": "^9.0.0",
|
|
44
|
+
"jest": "29.7.0",
|
|
45
|
+
"jest-environment-jsdom": "29.7.0",
|
|
46
|
+
"rimraf": "^5.0.5",
|
|
47
|
+
"rollup": "^4.9.1",
|
|
48
|
+
"rollup-plugin-dts": "^6.2.3",
|
|
49
|
+
"rollup-plugin-terser": "^7.0.2",
|
|
50
|
+
"rollup-plugin-visualizer": "^6.0.3",
|
|
51
|
+
"ts-jest": "29.2.5",
|
|
52
|
+
"typescript": "^5.3.3"
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {
|
|
55
|
+
"@preact/signals": "^1.3.0",
|
|
56
|
+
"@preact/signals-core": "^1.7.0",
|
|
57
|
+
"@rrweb/record": "2.0.0-alpha.20",
|
|
58
|
+
"@rrweb/rrweb-plugin-console-record": "2.0.0-alpha.20",
|
|
59
|
+
"@rrweb/types": "2.0.0-alpha.20",
|
|
60
|
+
"@v-tilt/browser": "^1.10.9",
|
|
61
|
+
"ably": "^2.4.0",
|
|
62
|
+
"fflate": "^0.8.2",
|
|
63
|
+
"preact": "^10.24.0",
|
|
64
|
+
"web-vitals": "^3.5.0"
|
|
65
|
+
},
|
|
66
|
+
"peerDependencies": {
|
|
67
|
+
"web-vitals": "^3.0.0"
|
|
68
|
+
},
|
|
69
|
+
"peerDependenciesMeta": {
|
|
70
|
+
"web-vitals": {
|
|
71
|
+
"optional": true
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Chat widget style and HTML string builders.
|
|
3
|
-
* Keeps all style/logic in TS (no separate CSS file), aligned with Intercom/PostHog.
|
|
4
|
-
*/
|
|
5
|
-
export type ChatWidgetPosition = "bottom-right" | "bottom-left";
|
|
6
|
-
export interface ChatTheme {
|
|
7
|
-
primaryColor: string;
|
|
8
|
-
fontFamily: string;
|
|
9
|
-
borderRadius?: string;
|
|
10
|
-
}
|
|
11
|
-
export declare function getContainerStyles(theme: ChatTheme, position?: ChatWidgetPosition): string;
|
|
12
|
-
export declare function getBubbleStyles(theme: ChatTheme): string;
|
|
13
|
-
export declare function getBubbleHTML(): string;
|
|
14
|
-
export declare function getWidgetStyles(): string;
|
|
15
|
-
/**
|
|
16
|
-
* Container styles when the widget is fullscreen on mobile.
|
|
17
|
-
* The container (direct child of body) becomes the fullscreen overlay;
|
|
18
|
-
* any drag transform is cleared so position:fixed works correctly.
|
|
19
|
-
*/
|
|
20
|
-
export declare function getMobileContainerStyles(theme: ChatTheme): string;
|
|
21
|
-
/**
|
|
22
|
-
* Widget styles when fullscreen on mobile.
|
|
23
|
-
* Widget fills the container with absolute positioning.
|
|
24
|
-
* Display is omitted — set by _updateUI based on open state.
|
|
25
|
-
*/
|
|
26
|
-
export declare function getMobileWidgetStyles(): string;
|
|
27
|
-
export declare function getWidgetHTML(theme: ChatTheme): string;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const CHAT_MESSAGE_CONTENT_CSS = "\n #vtilt-chat-widget .vtilt-md {\n max-width: 100%;\n overflow-wrap: anywhere;\n word-break: break-word;\n font-size: inherit;\n line-height: 1.45;\n }\n #vtilt-chat-widget .vtilt-md * {\n box-sizing: border-box;\n }\n #vtilt-chat-widget .vtilt-md :is(p, h1, h2, h3, h4, h5, h6, ul, ol, blockquote, pre) {\n margin: 0;\n }\n #vtilt-chat-widget .vtilt-md p { margin: 0 0 0.5em 0; }\n #vtilt-chat-widget .vtilt-md p:last-child { margin-bottom: 0; }\n #vtilt-chat-widget .vtilt-md :is(b, strong) { font-weight: 600; }\n #vtilt-chat-widget .vtilt-md :is(i, em) { font-style: italic; }\n #vtilt-chat-widget .vtilt-md u { text-decoration: underline; }\n #vtilt-chat-widget .vtilt-md :is(h1, h2, h3, h4, h5, h6) {\n font-size: 1em;\n font-weight: 600;\n margin: 0.65em 0 0.35em 0;\n line-height: 1.3;\n }\n #vtilt-chat-widget .vtilt-md :is(h1, h2, h3):first-child { margin-top: 0.15em; }\n\n /* Lists \u2014 flex rows + ::before bullets (beats host list-item / ::marker resets) */\n #vtilt-chat-widget .vtilt-md :is(ul, ol) {\n list-style: none !important;\n margin: 0.5em 0 !important;\n padding: 0 0 0 0.35em !important;\n }\n #vtilt-chat-widget .vtilt-md li {\n display: flex !important;\n flex-direction: row !important;\n flex-wrap: wrap !important;\n align-items: flex-start !important;\n gap: 0.35em !important;\n margin: 0.2em 0 !important;\n padding: 0 !important;\n line-height: 1.45;\n list-style: none !important;\n list-style-type: none !important;\n }\n #vtilt-chat-widget .vtilt-md li::marker {\n content: \"\" !important;\n font-size: 0 !important;\n color: transparent !important;\n }\n #vtilt-chat-widget .vtilt-md li::-webkit-list-marker {\n display: none !important;\n }\n #vtilt-chat-widget .vtilt-md ul > li::before {\n content: \"\u2022\" !important;\n display: inline-block !important;\n position: static !important;\n flex: 0 0 auto;\n line-height: 1.45;\n }\n #vtilt-chat-widget .vtilt-md ul ul > li::before {\n content: \"\u25E6\" !important;\n }\n #vtilt-chat-widget .vtilt-md ol { counter-reset: vtilt-ol; }\n #vtilt-chat-widget .vtilt-md ol > li { counter-increment: vtilt-ol; }\n #vtilt-chat-widget .vtilt-md ol > li::before {\n content: counter(vtilt-ol) \".\" !important;\n display: inline-block !important;\n position: static !important;\n flex: 0 0 auto;\n min-width: 1.1em;\n line-height: 1.45;\n }\n #vtilt-chat-widget .vtilt-md ol ol { counter-reset: vtilt-ol; }\n #vtilt-chat-widget .vtilt-md li > :is(ul, ol) {\n flex: 1 0 100% !important;\n width: 100% !important;\n margin: 0.25em 0 0 0 !important;\n padding-left: 0.75em !important;\n }\n\n #vtilt-chat-widget .vtilt-md code {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 0.9em;\n background: rgba(0, 0, 0, 0.06);\n padding: 0.1em 0.35em;\n border-radius: 4px;\n }\n #vtilt-chat-widget .vtilt-md pre {\n margin: 0.5em 0;\n padding: 0.5em 0.65em;\n border-radius: 6px;\n background: rgba(0, 0, 0, 0.06);\n overflow-x: auto;\n white-space: pre-wrap;\n }\n #vtilt-chat-widget .vtilt-md pre code { background: none; padding: 0; }\n #vtilt-chat-widget .vtilt-md blockquote {\n margin: 0.5em 0;\n padding-left: 0.75em;\n border-left: 3px solid rgba(0, 0, 0, 0.15);\n }\n #vtilt-chat-widget .vtilt-md a { color: inherit; text-decoration: underline; }\n #vtilt-chat-widget .vtilt-md br { line-height: inherit; }\n\n /* Widget visitor bubble (brand color) */\n #vtilt-chat-widget .vtilt-user-md code { background: rgba(255, 255, 255, 0.2); }\n #vtilt-chat-widget .vtilt-user-md pre { background: rgba(255, 255, 255, 0.15); }\n #vtilt-chat-widget .vtilt-user-md pre code { background: none; }\n #vtilt-chat-widget .vtilt-user-md blockquote { border-left-color: rgba(255, 255, 255, 0.35); }\n";
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Convert stored message content to safe HTML for bubble rendering.
|
|
3
|
-
*/
|
|
4
|
-
export declare function formatMessageBodyHtml(text: string, contentType: "text" | "html" | "attachment", doc: Document | null): string;
|
|
5
|
-
/** Plain-text preview for channel list (strips widgets and HTML). */
|
|
6
|
-
export declare function plainTextMessagePreview(content: string, maxLength?: number): string;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/** Detect content that already contains HTML block-level tags. */
|
|
2
|
-
export declare const HTML_BLOCK_TAG_RE: RegExp;
|
|
3
|
-
/**
|
|
4
|
-
* Best-effort markdown → HTML. Returns input unchanged when it already looks like HTML.
|
|
5
|
-
*/
|
|
6
|
-
export declare function markdownToHtml(src: string): string;
|
|
7
|
-
/** Whether markdown conversion should run before sanitization. */
|
|
8
|
-
export declare function shouldUseMarkdownPipeline(contentType: "text" | "html" | "attachment", cleanText: string): boolean;
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* GA4 Proxy Feature
|
|
3
|
-
*
|
|
4
|
-
* Automatically configures gtag.js to send through vTilt's domain.
|
|
5
|
-
* When enabled, either reconfigures an existing gtag.js or loads a new one
|
|
6
|
-
* with server_container_url pointing to vTilt's proxy routes.
|
|
7
|
-
*
|
|
8
|
-
* Config sources (init config takes priority over remote config):
|
|
9
|
-
* vt.init({ ga4: { measurementId: 'G-XXX' } })
|
|
10
|
-
* /api/decide → { ga4: { measurementId: 'G-XXX' } }
|
|
11
|
-
*/
|
|
12
|
-
import type { VTiltConfig } from "../types";
|
|
13
|
-
import type { Feature, FeatureConfig } from "../feature";
|
|
14
|
-
export interface GA4ProxyConfig extends FeatureConfig {
|
|
15
|
-
measurementId?: string;
|
|
16
|
-
debugMode?: boolean;
|
|
17
|
-
}
|
|
18
|
-
export declare class GA4Proxy implements Feature {
|
|
19
|
-
readonly name = "GA4Proxy";
|
|
20
|
-
private _instance;
|
|
21
|
-
private _config;
|
|
22
|
-
private _isStarted;
|
|
23
|
-
private _pendingGtagCallbacks;
|
|
24
|
-
/** Fires once both client_id and session_id gtag callbacks complete. */
|
|
25
|
-
onIdentityResolved?: () => void;
|
|
26
|
-
constructor(instance: {
|
|
27
|
-
getConfig(): VTiltConfig;
|
|
28
|
-
}, config?: GA4ProxyConfig);
|
|
29
|
-
static extractConfig(config: VTiltConfig): GA4ProxyConfig;
|
|
30
|
-
get isEnabled(): boolean;
|
|
31
|
-
get isStarted(): boolean;
|
|
32
|
-
startIfEnabled(): void;
|
|
33
|
-
stop(): void;
|
|
34
|
-
/**
|
|
35
|
-
* Sync user_id to gtag.js so both proxy and MP event streams share
|
|
36
|
-
* the same identity after identify(). GA4 Realtime uses user_id as
|
|
37
|
-
* the highest-priority identifier; without this, proxy events (no
|
|
38
|
-
* user_id) and MP events (with user_id) count as separate users.
|
|
39
|
-
*/
|
|
40
|
-
setUserId(userId: string | null): void;
|
|
41
|
-
onConfigUpdate(config: VTiltConfig): void;
|
|
42
|
-
private _start;
|
|
43
|
-
private _getApiBase;
|
|
44
|
-
private _hasGtag;
|
|
45
|
-
private _reconfigureExistingGtag;
|
|
46
|
-
private _loadAndConfigureGtag;
|
|
47
|
-
/**
|
|
48
|
-
* Use gtag('get', ...) to obtain the authoritative client_id and
|
|
49
|
-
* session_id from gtag.js. Fires onIdentityResolved once BOTH
|
|
50
|
-
* callbacks have completed (counter-based).
|
|
51
|
-
*/
|
|
52
|
-
private _resolveGtagIdentity;
|
|
53
|
-
/**
|
|
54
|
-
* Fires after each gtag('get', ...) callback. When all pending callbacks
|
|
55
|
-
* have settled, notifies the host (EventBuffer) so buffered MP events
|
|
56
|
-
* can flush with stable GA4 IDs (same client_id as gtag.js).
|
|
57
|
-
*/
|
|
58
|
-
private _onGtagCallbackSettled;
|
|
59
|
-
}
|
package/dist/web-vitals.d.ts
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { VTiltConfig, CapturePerformanceConfig, SupportedWebVitalsMetric } from "./types";
|
|
2
|
-
import type { Feature } from "./feature";
|
|
3
|
-
import { VTilt } from "./vtilt";
|
|
4
|
-
/**
|
|
5
|
-
* Web Vitals Manager
|
|
6
|
-
*
|
|
7
|
-
* Captures Core Web Vitals (LCP, CLS, FCP, INP, TTFB) and sends them
|
|
8
|
-
* as batched $web_vitals events. Implements the Feature interface for
|
|
9
|
-
* consistent lifecycle management.
|
|
10
|
-
*
|
|
11
|
-
* Follows PostHog's approach with:
|
|
12
|
-
* 1. Extension pattern - checks for callbacks registered on __VTiltExtensions__
|
|
13
|
-
* 2. Lazy loading - loads web-vitals.js on demand if not bundled
|
|
14
|
-
* 3. Configurable metrics - choose which metrics to capture
|
|
15
|
-
* 4. Smart buffering - collects metrics per page, flushes on navigation or timeout
|
|
16
|
-
* 5. Session context - includes session_id and window_id for correlation
|
|
17
|
-
*
|
|
18
|
-
* Event structure:
|
|
19
|
-
* - event: "$web_vitals"
|
|
20
|
-
* - properties:
|
|
21
|
-
* - $web_vitals_LCP_value: number
|
|
22
|
-
* - $web_vitals_LCP_event: { name, value, delta, rating, ... }
|
|
23
|
-
* - $pathname: string
|
|
24
|
-
* - $current_url: string
|
|
25
|
-
*/
|
|
26
|
-
export declare class WebVitalsManager implements Feature {
|
|
27
|
-
readonly name = "WebVitals";
|
|
28
|
-
private _instance;
|
|
29
|
-
private _buffer;
|
|
30
|
-
private _flushTimer;
|
|
31
|
-
private _isStarted;
|
|
32
|
-
private _config;
|
|
33
|
-
/**
|
|
34
|
-
* Extract web vitals config from VTiltConfig (self-contained)
|
|
35
|
-
*/
|
|
36
|
-
static extractConfig(config: VTiltConfig): CapturePerformanceConfig;
|
|
37
|
-
constructor(instance: VTilt);
|
|
38
|
-
/**
|
|
39
|
-
* Check if web vitals capture is enabled
|
|
40
|
-
*/
|
|
41
|
-
get isEnabled(): boolean;
|
|
42
|
-
/**
|
|
43
|
-
* Check if capturing has started
|
|
44
|
-
*/
|
|
45
|
-
get isStarted(): boolean;
|
|
46
|
-
/**
|
|
47
|
-
* Start capturing if enabled
|
|
48
|
-
*/
|
|
49
|
-
startIfEnabled(): void;
|
|
50
|
-
/**
|
|
51
|
-
* Stop capturing (flushes any pending metrics)
|
|
52
|
-
*/
|
|
53
|
-
stop(): void;
|
|
54
|
-
/**
|
|
55
|
-
* Handle config update
|
|
56
|
-
*/
|
|
57
|
-
onConfigUpdate(config: VTiltConfig): void;
|
|
58
|
-
/**
|
|
59
|
-
* Get the list of metrics to capture
|
|
60
|
-
*/
|
|
61
|
-
get allowedMetrics(): SupportedWebVitalsMetric[];
|
|
62
|
-
/**
|
|
63
|
-
* Get flush timeout in ms
|
|
64
|
-
*/
|
|
65
|
-
get flushTimeoutMs(): number;
|
|
66
|
-
/**
|
|
67
|
-
* Get maximum allowed metric value
|
|
68
|
-
*/
|
|
69
|
-
get maxAllowedValue(): number;
|
|
70
|
-
private _createEmptyBuffer;
|
|
71
|
-
private _getWebVitalsCallbacks;
|
|
72
|
-
private _loadWebVitals;
|
|
73
|
-
private _startCapturing;
|
|
74
|
-
private _getCurrentUrl;
|
|
75
|
-
private _getCurrentPathname;
|
|
76
|
-
private _addToBuffer;
|
|
77
|
-
private _cleanAttribution;
|
|
78
|
-
private _getWindowId;
|
|
79
|
-
private _scheduleFlush;
|
|
80
|
-
private _flush;
|
|
81
|
-
}
|