@junobuild/analytics 0.2.12 → 0.2.13-next-2026-04-03

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@junobuild/analytics",
3
- "version": "0.2.12",
3
+ "version": "0.2.13-next-2026-04-03",
4
4
  "description": "Tracker for Juno analytics",
5
5
  "author": "David Dal Busco (https://daviddalbusco.com)",
6
6
  "license": "MIT",
@@ -53,12 +53,12 @@
53
53
  ],
54
54
  "homepage": "https://juno.build",
55
55
  "dependencies": {
56
- "isbot": "^5.1.36",
57
- "nanoid": "^5.1.6",
56
+ "isbot": "^5.1.37",
57
+ "nanoid": "^5.1.7",
58
58
  "ua-parser-js": "1.0.41",
59
- "web-vitals": "^5.1.0"
59
+ "web-vitals": "^5.2.0"
60
60
  },
61
61
  "devDependencies": {
62
62
  "@types/ua-parser-js": "^0.7.39"
63
63
  }
64
- }
64
+ }
@@ -1,2 +0,0 @@
1
- var I="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var u=(t=21)=>{let e="",r=crypto.getRandomValues(new Uint8Array(t|=0));for(;t--;)e+=I[r[t]&63];return e};var A="http://localhost:5987";var m=t=>t==null,s=t=>!m(t),d=t=>s(t)&&t!=="",V=t=>!d(t);var L="__bigint__",C=(t,e)=>typeof e=="bigint"?{[L]:`${e}`}:e;var b=class extends Error{constructor(r,n){super(`[${r}] Orbiter Error: ${n}`);this.status=r;this.statusText=n}},v=class{#e;constructor({container:e,orbiterId:r}){let o=s(e)&&e!==!1?e===!0?A:e:"https://icp0.io",{protocol:i,host:c}=new URL(o);this.#e=`${i}//${r}.${c}`}postPageViews=async({request:e})=>await this.post({path:"/views",payload:e});postTrackEvents=async({request:e})=>await this.post({path:"/events",payload:e});postPerformanceMetrics=async({request:e})=>await this.post({path:"/metrics",payload:e});post=async({path:e,payload:r})=>{let n=await fetch(`${this.#e}${e}`,{method:"POST",keepalive:!0,headers:{"Content-Type":"application/json"},body:JSON.stringify(r,C)});if(!n.ok)throw new b(n.status,n.statusText);return await n.json()}};var S=class{#e;#t;constructor(e){this.#e=e,this.#t=new v(e)}setPageView=async e=>{let r={...this.satelliteId(),page_views:[e]};return await this.#t.postPageViews({request:r})};setTrackEvent=async e=>{let r={...this.satelliteId(),track_events:[e]};return await this.#t.postTrackEvents({request:r})};setPerformanceMetric=async e=>{let r={...this.satelliteId(),performance_metrics:[e]};return await this.#t.postPerformanceMetrics({request:r})};satelliteId(){return{satellite_id:this.#e.satelliteId}}};var O=()=>BigInt(Date.now())*BigInt(1e6);var f=()=>({collected_at:O()}),P=()=>{let{userAgent:t}=navigator;return s(t)?{user_agent:t}:{}},U=()=>{let{location:{search:t}}=document,e=new URLSearchParams(t),r=e.get("utm_source");if(m(r)||V(r))return{withCampaign:!1};let n=e.get("utm_medium"),o=e.get("utm_campaign"),i=e.get("utm_term"),c=e.get("utm_content");return{withCampaign:!0,campaign:{utm_source:r,...d(n)&&{utm_medium:n},...d(o)&&{utm_campaign:o},...d(i)&&{utm_term:i},...d(c)&&{utm_content:c}}}};var E=class t{async startPerformance({sessionId:e,postPerformanceMetric:r}){let{onCLS:n,onFCP:o,onINP:i,onLCP:c,onTTFB:g}=await import("./web-vitals-6ZNYHHDJ.js"),l=h=>{(async()=>await t.setPerformanceMetric({metric:{...h,sessionId:e},postPerformanceMetric:r}))()};n(l),o(l),i(l),c(l),g(l)}static setPerformanceMetric=async({metric:e,postPerformanceMetric:r})=>{let n=t.mapPerformanceMetric(e);if(n==="unknown"){console.warn("Performance metric ignored. Unknown metric name.",e);return}await r({key:{key:u(),...f()},performance_metric:n})};static mapPerformanceMetric({sessionId:e,name:r,value:n,delta:o,id:i,navigationType:c}){let l=(()=>{switch(r){case"CLS":case"FCP":case"INP":case"LCP":case"TTFB":return r;default:return"unknown"}})();if(l==="unknown")return l;let p=(()=>{switch(c){case"navigate":return"Navigate";case"restore":return"Restore";case"reload":return"Reload";case"back-forward":return"BackForward";case"back-forward-cache":return"BackForwardCache";case"prerender":return"Prerender";default:return}})(),q={value:n,delta:o,id:i,...s(p)&&{navigation_type:p}},{location:{href:R}}=document;return{href:R,metric_name:l,session_id:e,data:{WebVitalsMetric:q},...P()}}};var T=class{async parseUserAgent(e){if(m(e))return;let r=await import("./ua-parser-DMUY4BWA.js"),n=new r.default(e),{browser:o,os:i,device:c}=n.getResult();if(!(m(o.name)||m(i.name)))return{browser:o.name,os:i.name,device:c?.type}}};var M=class extends Error{},k=(t,e)=>{if(t==null)throw new M(e)};var N=()=>typeof window<"u";var F="Unable to connect to the analytics services. Did you call `initOrbiter`?",w=t=>{m(t)&&console.warn(F)};var j=()=>{if(!(typeof crypto>"u"))return u()},y=j(),a,_e=t=>(a={orbiter:new S(t),userAgent:t.options?.userAgentParser===!0?new T:null,performance:t.options?.performance===!0?new E:null},{cleanup(){a=null}}),be=()=>{let t=async()=>await B(),e=new Proxy(history.pushState,{apply:async(r,n,o)=>{r.apply(n,o),await t()}});return history.pushState=e,addEventListener("popstate",t,{passive:!0}),{cleanup(){e=null,removeEventListener("popstate",t,!1)}}},x="No session ID initialized.",$=async()=>{if(!N())return;k(y,x);let{title:t,location:{href:e},referrer:r}=document,{innerWidth:n,innerHeight:o,screen:i}=window,{timeZone:c}=Intl.DateTimeFormat().resolvedOptions(),{user_agent:g}=P(),l=s(a?.userAgent)?await a?.userAgent.parseUserAgent(g):void 0,{withCampaign:h,campaign:p}=U(),R={title:t,href:(()=>{if(!h)return e;try{let _=new URL(e);return Object.keys(p??{}).forEach(D=>_.searchParams.delete(D)),_.href}catch{return e}})(),...s(r)&&r!==""&&{referrer:r},device:{inner_width:n,inner_height:o,screen_width:i?.availWidth,screen_height:i?.availHeight},time_zone:c,session_id:y,user_agent:g,...s(l)&&{client:l},...s(p)&&{campaign:p}};w(a),await a?.orbiter?.setPageView({key:{key:u(),...f()},page_view:R})},Me=async()=>{if(!N()||m(a?.performance))return;k(y,x),w(a);let t=async e=>{w(a),await a?.orbiter?.setPerformanceMetric(e)};await a.performance.startPerformance({sessionId:y,postPerformanceMetric:t})},xe=()=>{B()},B=async()=>{await $()},qe=t=>{W(t)},W=async t=>{N()&&(k(y,x),w(a),await a?.orbiter?.setTrackEvent({key:{key:u(),...f()},track_event:{...t,session_id:y,...P(),...f()}}))};export{k as a,_e as b,be as c,$ as d,Me as e,xe as f,B as g,qe as h,W as i};
2
- //# sourceMappingURL=chunk-AGCKN2PA.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../node_modules/nanoid/url-alphabet/index.js", "../../../../node_modules/nanoid/index.browser.js", "../../src/constants/container.constants.ts", "../../src/utils/dfinity/nullish.utils.ts", "../../src/utils/dfinity/json.utils.ts", "../../src/api/orbiter.api.ts", "../../src/services/orbiter.services.ts", "../../src/utils/date.utils.ts", "../../src/utils/analytics.utils.ts", "../../src/services/performance.services.ts", "../../src/services/user-agent.services.ts", "../../src/utils/dfinity/asserts.utils.ts", "../../src/utils/env.utils.ts", "../../src/utils/log.utils.ts", "../../src/tracker.ts"],
4
- "sourcesContent": ["export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n", "/* @ts-self-types=\"./index.d.ts\" */\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << Math.log2(alphabet.length - 1)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step | 0\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length >= size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size | 0, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array((size |= 0)))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n", "export const DOCKER_CONTAINER_WEB_URL = 'http://localhost:5987';\n", "/**\n * Checks if a given argument is null or undefined.\n *\n * @template T - The type of the argument.\n * @param {T | undefined | null} argument - The argument to check.\n * @returns {argument is undefined | null} `true` if the argument is null or undefined; otherwise, `false`.\n */\nexport const isNullish = <T>(argument: T | undefined | null): argument is undefined | null =>\n argument === null || argument === undefined;\n\n/**\n * Checks if a given argument is neither null nor undefined.\n *\n * @template T - The type of the argument.\n * @param {T | undefined | null} argument - The argument to check.\n * @returns {argument is NonNullable<T>} `true` if the argument is not null or undefined; otherwise, `false`.\n */\nexport const nonNullish = <T>(argument: T | undefined | null): argument is NonNullable<T> =>\n !isNullish(argument);\n\n/**\n * Checks if a given value is not null, not undefined, and not an empty string.\n *\n * @param {string | undefined | null} value - The value to check.\n * @returns {boolean} `true` if the value is not null, not undefined, and not an empty string; otherwise, `false`.\n */\nexport const notEmptyString = (value: string | undefined | null): value is string =>\n nonNullish(value) && value !== '';\n\n/**\n * Checks if a given value is null, undefined, or an empty string.\n *\n * @param {string | undefined | null} value - The value to check.\n * @returns {value is undefined | null | \"\"} Type predicate indicating if the value is null, undefined, or an empty string.\n */\nexport const isEmptyString = (value: string | undefined | null): value is undefined | null | '' =>\n !notEmptyString(value);\n", "import {nonNullish} from './nullish.utils';\n\nconst JSON_KEY_BIGINT = '__bigint__';\n\n/**\n * A custom replacer for `JSON.stringify` that converts specific types not natively supported\n * by the API into JSON-compatible formats.\n *\n * Supported conversions:\n * - `BigInt` \u2192 `{ \"__bigint__\": string }`\n *\n * @param {string} _key - Ignored. Only provided for API compatibility.\n * @param {unknown} value - The value to transform before stringification.\n * @returns {unknown} The transformed value if it matches a known type, otherwise the original value.\n */\n// eslint-disable-next-line local-rules/prefer-object-params\nexport const jsonReplacer = (_key: string, value: unknown): unknown => {\n if (typeof value === 'bigint') {\n return {[JSON_KEY_BIGINT]: `${value}`};\n }\n\n return value;\n};\n\n/**\n * A custom reviver for `JSON.parse` that reconstructs specific types from their JSON-encoded representations.\n *\n * This reverses the transformations applied by `jsonReplacer`, restoring the original types.\n *\n * Supported conversions:\n * - `{ \"__bigint__\": string }` \u2192 `BigInt`\n *\n * @param {string} _key - Ignored but provided for API compatibility.\n * @param {unknown} value - The parsed value to transform.\n * @returns {unknown} The reconstructed value if it matches a known type, otherwise the original value.\n */\n// eslint-disable-next-line local-rules/prefer-object-params\nexport const jsonReviver = (_key: string, value: unknown): unknown => {\n const mapValue = <T>(key: string): T => (value as Record<string, T>)[key];\n\n if (nonNullish(value) && typeof value === 'object' && JSON_KEY_BIGINT in value) {\n return BigInt(mapValue(JSON_KEY_BIGINT));\n }\n\n return value;\n};\n", "import {DOCKER_CONTAINER_WEB_URL} from '../constants/container.constants';\nimport type {Environment} from '../types/env';\nimport type {\n SetPageViewsRequest,\n SetPerformanceMetricsRequest,\n SetTrackEventsRequest\n} from '../types/orbiter';\nimport {jsonReplacer} from '../utils/dfinity/json.utils';\nimport {nonNullish} from '../utils/dfinity/nullish.utils';\n\ntype ApiPath = '/views' | '/events' | '/metrics';\n\nexport class ApiError extends Error {\n constructor(\n private readonly status: number,\n private readonly statusText: string\n ) {\n super(`[${status}] Orbiter Error: ${statusText}`);\n }\n}\n\nexport class OrbiterApi {\n readonly #apiUrl: string;\n\n constructor({container, orbiterId}: Environment) {\n const localActor = nonNullish(container) && container !== false;\n\n const hostDomain = localActor\n ? container === true\n ? DOCKER_CONTAINER_WEB_URL\n : container\n : 'https://icp0.io';\n\n const {protocol, host} = new URL(hostDomain);\n\n this.#apiUrl = `${protocol}//${orbiterId}.${host}`;\n }\n\n postPageViews = async ({request: payload}: {request: SetPageViewsRequest}): Promise<null> =>\n await this.post<SetPageViewsRequest, null>({\n path: '/views',\n payload\n });\n\n postTrackEvents = async ({request: payload}: {request: SetTrackEventsRequest}): Promise<null> =>\n await this.post<SetTrackEventsRequest, null>({\n path: '/events',\n payload\n });\n\n postPerformanceMetrics = async ({\n request: payload\n }: {\n request: SetPerformanceMetricsRequest;\n }): Promise<null> =>\n await this.post<SetPerformanceMetricsRequest, null>({\n path: '/metrics',\n payload\n });\n\n post = async <T, R>({path, payload}: {path: ApiPath; payload: T}): Promise<R> => {\n const response = await fetch(`${this.#apiUrl}${path}`, {\n method: 'POST',\n keepalive: true,\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload, jsonReplacer)\n });\n\n if (!response.ok) {\n throw new ApiError(response.status, response.statusText);\n }\n\n return await response.json();\n };\n}\n", "import {OrbiterApi} from '../api/orbiter.api';\nimport type {Environment} from '../types/env';\nimport type {\n SatelliteIdText,\n SetPageViewRequestEntry,\n SetPageViewsRequest,\n SetPerformanceMetricRequestEntry,\n SetPerformanceMetricsRequest,\n SetTrackEventRequestEntry,\n SetTrackEventsRequest\n} from '../types/orbiter';\n\nexport class OrbiterServices {\n readonly #env: Environment;\n readonly #api: OrbiterApi;\n\n constructor(env: Environment) {\n this.#env = env;\n this.#api = new OrbiterApi(env);\n }\n\n setPageView = async (entry: SetPageViewRequestEntry): Promise<null> => {\n const request: SetPageViewsRequest = {\n ...this.satelliteId(),\n page_views: [entry]\n };\n\n return await this.#api.postPageViews({request});\n };\n\n setTrackEvent = async (entry: SetTrackEventRequestEntry): Promise<null> => {\n const request: SetTrackEventsRequest = {\n ...this.satelliteId(),\n track_events: [entry]\n };\n\n return await this.#api.postTrackEvents({request});\n };\n\n setPerformanceMetric = async (entry: SetPerformanceMetricRequestEntry): Promise<null> => {\n const request: SetPerformanceMetricsRequest = {\n ...this.satelliteId(),\n performance_metrics: [entry]\n };\n\n return await this.#api.postPerformanceMetrics({request});\n };\n\n private satelliteId(): {satellite_id: SatelliteIdText} {\n return {\n satellite_id: this.#env.satelliteId\n };\n }\n}\n", "export const nowInBigIntNanoSeconds = (): bigint => BigInt(Date.now()) * BigInt(1e6);\n", "import type {AnalyticKey, SetPageViewPayload} from '../types/orbiter';\nimport {nowInBigIntNanoSeconds} from './date.utils';\nimport {isEmptyString, isNullish, nonNullish, notEmptyString} from './dfinity/nullish.utils';\n\nexport const timestamp = (): Pick<AnalyticKey, 'collected_at'> => ({\n collected_at: nowInBigIntNanoSeconds()\n});\n\nexport const userAgent = (): Pick<SetPageViewPayload, 'user_agent'> => {\n const {userAgent} = navigator;\n return nonNullish(userAgent) ? {user_agent: userAgent} : {};\n};\n\nexport const campaign = (): {withCampaign: boolean} & Pick<SetPageViewPayload, 'campaign'> => {\n const {\n location: {search}\n } = document;\n\n const searchParams = new URLSearchParams(search);\n\n const utm_source = searchParams.get('utm_source');\n\n if (isNullish(utm_source) || isEmptyString(utm_source)) {\n return {withCampaign: false};\n }\n\n const utm_medium = searchParams.get('utm_medium');\n const utm_campaign = searchParams.get('utm_campaign');\n const utm_term = searchParams.get('utm_term');\n const utm_content = searchParams.get('utm_content');\n\n return {\n withCampaign: true,\n campaign: {\n utm_source,\n ...(notEmptyString(utm_medium) && {utm_medium}),\n ...(notEmptyString(utm_campaign) && {utm_campaign}),\n ...(notEmptyString(utm_term) && {utm_term}),\n ...(notEmptyString(utm_content) && {utm_content})\n }\n };\n};\n", "import {nanoid} from 'nanoid';\nimport type {Metric} from 'web-vitals';\nimport type {\n NavigationTypePayload,\n PerformanceMetricNamePayload,\n SetPerformanceMetricPayload,\n SetPerformanceMetricRequestEntry,\n WebVitalsMetricPayload\n} from '../types/orbiter';\nimport {timestamp, userAgent} from '../utils/analytics.utils';\nimport {nonNullish} from '../utils/dfinity/nullish.utils';\n\ntype SessionMetric = Omit<Metric, 'navigationType'> &\n Partial<Pick<Metric, 'navigationType'>> & {sessionId: string};\n\ntype PostPerformanceMetric = (entry: SetPerformanceMetricRequestEntry) => Promise<void>;\n\nexport class PerformanceServices {\n async startPerformance({\n sessionId,\n postPerformanceMetric\n }: {\n sessionId: string;\n postPerformanceMetric: PostPerformanceMetric;\n }) {\n const {onCLS, onFCP, onINP, onLCP, onTTFB} = await import('web-vitals');\n\n const setMetric = (metric: Metric) => {\n (async () => {\n await PerformanceServices.setPerformanceMetric({\n metric: {...metric, sessionId},\n postPerformanceMetric\n });\n })();\n };\n\n onCLS(setMetric);\n onFCP(setMetric);\n onINP(setMetric);\n onLCP(setMetric);\n onTTFB(setMetric);\n }\n\n private static setPerformanceMetric = async ({\n metric,\n postPerformanceMetric\n }: {\n metric: SessionMetric;\n postPerformanceMetric: PostPerformanceMetric;\n }) => {\n const data = PerformanceServices.mapPerformanceMetric(metric);\n\n if (data === 'unknown') {\n console.warn('Performance metric ignored. Unknown metric name.', metric);\n return;\n }\n\n await postPerformanceMetric({\n key: {\n key: nanoid(),\n ...timestamp()\n },\n performance_metric: data\n });\n };\n\n private static mapPerformanceMetric({\n sessionId,\n name: metricName,\n value,\n delta,\n id,\n navigationType\n }: SessionMetric): SetPerformanceMetricPayload | 'unknown' {\n const mapMetricName = (): PerformanceMetricNamePayload | 'unknown' => {\n switch (metricName) {\n case 'CLS':\n case 'FCP':\n case 'INP':\n case 'LCP':\n case 'TTFB':\n return metricName;\n default:\n return 'unknown';\n }\n };\n\n const metric_name = mapMetricName();\n\n if (metric_name === 'unknown') {\n return metric_name;\n }\n\n const mapNavigationType = (): NavigationTypePayload | undefined => {\n switch (navigationType) {\n case 'navigate':\n return 'Navigate';\n case 'restore':\n return 'Restore';\n case 'reload':\n return 'Reload';\n case 'back-forward':\n return 'BackForward';\n case 'back-forward-cache':\n return 'BackForwardCache';\n case 'prerender':\n return 'Prerender';\n default:\n return undefined;\n }\n };\n\n const navigation_type = mapNavigationType();\n\n const data: WebVitalsMetricPayload = {\n value,\n delta,\n id,\n ...(nonNullish(navigation_type) && {navigation_type})\n };\n\n const {\n location: {href}\n } = document;\n\n const metric: SetPerformanceMetricPayload = {\n href,\n metric_name,\n session_id: sessionId,\n data: {\n WebVitalsMetric: data\n },\n ...userAgent()\n };\n\n return metric;\n }\n}\n", "import type {PageViewClientPayload} from '../types/orbiter';\nimport {isNullish} from '../utils/dfinity/nullish.utils';\n\nexport class UserAgentServices {\n async parseUserAgent(user_agent: string | undefined): Promise<PageViewClientPayload | undefined> {\n // In CI test, parsing undefined agent returns WebKit on linux\n if (isNullish(user_agent)) {\n return undefined;\n }\n\n const UAParser = await import('ua-parser-js');\n\n const parser = new UAParser.default(user_agent);\n const {browser, os, device} = parser.getResult();\n\n if (isNullish(browser.name) || isNullish(os.name)) {\n return undefined;\n }\n\n return {\n browser: browser.name,\n os: os.name,\n device: device?.type\n };\n }\n}\n", "export class InvalidPercentageError extends Error {}\nexport class NullishError extends Error {}\n\nexport const assertNonNullish: <T>(\n value: T,\n message?: string\n // eslint-disable-next-line local-rules/prefer-object-params\n) => asserts value is NonNullable<T> = <T>(value: T, message?: string): void => {\n if (value === null || value === undefined) {\n throw new NullishError(message);\n }\n};\n\n// eslint-disable-next-line local-rules/prefer-object-params\nexport const asNonNullish = <T>(value: T, message?: string): NonNullable<T> => {\n assertNonNullish(value, message);\n return value;\n};\n\nexport const assertPercentageNumber = (percentage: number) => {\n if (percentage < 0 || percentage > 100) {\n throw new InvalidPercentageError(`${percentage} is not a valid percentage number.`);\n }\n};\n", "/**\n * Checks if the current environment is a browser.\n * @returns {boolean} True if the current environment is a browser, false otherwise.\n */\nexport const isBrowser = (): boolean => typeof window !== `undefined`;\n", "import {isNullish} from './dfinity/nullish.utils';\n\nconst ORBITER_SERVICES_UNDEFINED_MSG =\n 'Unable to connect to the analytics services. Did you call `initOrbiter`?';\n\nexport const warningOrbiterServicesNotInitialized = <T>(value: T) => {\n if (isNullish(value)) {\n console.warn(ORBITER_SERVICES_UNDEFINED_MSG);\n }\n};\n", "import {nanoid} from 'nanoid';\nimport {OrbiterServices} from './services/orbiter.services';\nimport {PerformanceServices} from './services/performance.services';\nimport {UserAgentServices} from './services/user-agent.services';\nimport type {Environment} from './types/env';\nimport type {SetPageViewPayload, SetPerformanceMetricRequestEntry} from './types/orbiter';\nimport type {TrackEvent} from './types/track';\nimport {campaign, timestamp, userAgent} from './utils/analytics.utils';\nimport {assertNonNullish} from './utils/dfinity/asserts.utils';\nimport {isNullish, nonNullish} from './utils/dfinity/nullish.utils';\nimport {isBrowser} from './utils/env.utils';\nimport {warningOrbiterServicesNotInitialized} from './utils/log.utils';\n\nconst initSessionId = (): string | undefined => {\n // I faced this issue when I used the library in Docusaurus which does not implement the crypto API when server-side rendering.\n // https://github.com/ai/nanoid/issues?q=crypto+not+defined\n if (typeof crypto === 'undefined') {\n return undefined;\n }\n\n return nanoid();\n};\n\nconst sessionId = initSessionId();\n\ninterface Services {\n orbiter: OrbiterServices;\n /**\n * Developer opt-in feature.\n */\n userAgent: UserAgentServices | null;\n performance: PerformanceServices | null;\n}\n\nlet services: Services | undefined | null;\n\nexport const initServices = (env: Environment): {cleanup: () => void} => {\n services = {\n orbiter: new OrbiterServices(env),\n userAgent: env.options?.userAgentParser === true ? new UserAgentServices() : null,\n performance: env.options?.performance === true ? new PerformanceServices() : null\n };\n\n return {\n cleanup() {\n services = null;\n }\n };\n};\n\nexport const initTrackPageViews = (): {cleanup: () => void} => {\n const trackPages = async () => await trackPageViewAsync();\n\n let pushStateProxy: typeof history.pushState | null = new Proxy(history.pushState, {\n // eslint-disable-next-line local-rules/prefer-object-params\n apply: async (\n target,\n thisArg,\n argArray: [data: unknown, unused: string, url?: string | URL | null | undefined]\n ) => {\n target.apply(thisArg, argArray);\n await trackPages();\n }\n });\n\n history.pushState = pushStateProxy;\n\n addEventListener('popstate', trackPages, {passive: true});\n\n return {\n cleanup() {\n pushStateProxy = null;\n removeEventListener('popstate', trackPages, false);\n }\n };\n};\n\nconst SESSION_ID_UNDEFINED_MSG = 'No session ID initialized.';\n\nexport const setPageView = async () => {\n if (!isBrowser()) {\n return;\n }\n\n assertNonNullish(sessionId, SESSION_ID_UNDEFINED_MSG);\n\n const {\n title,\n location: {href},\n referrer\n } = document;\n const {innerWidth, innerHeight, screen: windowScreen} = window;\n const {timeZone} = Intl.DateTimeFormat().resolvedOptions();\n\n const {user_agent} = userAgent();\n const client = nonNullish(services?.userAgent)\n ? await services?.userAgent.parseUserAgent(user_agent)\n : undefined;\n\n const {withCampaign, campaign: campaignData} = campaign();\n\n // Not gracious but the goal is to manipulate strictly only when needed for performance reasons.\n const cleanHref = (): string => {\n if (!withCampaign) {\n return href;\n }\n\n try {\n const url = new URL(href);\n\n Object.keys(campaignData ?? {}).forEach((key) => url.searchParams.delete(key));\n\n return url.href;\n } catch {\n // Unlikely to happen\n return href;\n }\n };\n\n const page_view: SetPageViewPayload = {\n title,\n href: cleanHref(),\n ...(nonNullish(referrer) && referrer !== '' && {referrer}),\n device: {\n inner_width: innerWidth,\n inner_height: innerHeight,\n screen_width: windowScreen?.availWidth,\n screen_height: windowScreen?.availHeight\n },\n time_zone: timeZone,\n session_id: sessionId,\n user_agent,\n ...(nonNullish(client) && {client}),\n ...(nonNullish(campaignData) && {campaign: campaignData})\n };\n\n warningOrbiterServicesNotInitialized(services);\n\n await services?.orbiter?.setPageView({\n key: {\n key: nanoid(),\n ...timestamp()\n },\n page_view\n });\n};\n\nexport const startTrackPerformance = async () => {\n if (!isBrowser()) {\n return;\n }\n\n if (isNullish(services?.performance)) {\n return;\n }\n\n assertNonNullish(sessionId, SESSION_ID_UNDEFINED_MSG);\n\n warningOrbiterServicesNotInitialized(services);\n\n const postPerformanceMetric = async (entry: SetPerformanceMetricRequestEntry) => {\n warningOrbiterServicesNotInitialized(services);\n\n await services?.orbiter?.setPerformanceMetric(entry);\n };\n\n await services.performance.startPerformance({sessionId, postPerformanceMetric});\n};\n\n/**\n * Tracks a page view in Juno Analytics.\n *\n * This function does not return a promise, as it triggers the tracking request without awaiting its completion.\n * It is designed for fire-and-forget usage to avoid blocking application flow.\n */\nexport const trackPageView = () => {\n trackPageViewAsync();\n};\n\n/**\n * Tracks a page view in Juno Analytics.\n * @returns {Promise<void>} A promise that resolves when the page view is tracked.\n */\nexport const trackPageViewAsync = async (): Promise<void> => {\n await setPageView();\n};\n\n/**\n * Tracks a custom event in Juno Analytics.\n *\n * This function does not return a promise, as it triggers the tracking request without awaiting its completion.\n * It is designed for fire-and-forget usage to avoid blocking application flow.\n *\n * @param {TrackEvent} data - The event details.\n */\nexport const trackEvent = (data: TrackEvent) => {\n trackEventAsync(data);\n};\n\n/**\n * Tracks a custom event in Juno Analytics.\n * @param {TrackEvent} data - The event details.\n * @returns {Promise<void>} A promise that resolves when the event is tracked.\n */\nexport const trackEventAsync = async (data: TrackEvent): Promise<void> => {\n if (!isBrowser()) {\n return;\n }\n\n assertNonNullish(sessionId, SESSION_ID_UNDEFINED_MSG);\n\n warningOrbiterServicesNotInitialized(services);\n\n await services?.orbiter?.setTrackEvent({\n key: {\n key: nanoid(),\n ...timestamp()\n },\n track_event: {...data, session_id: sessionId, ...userAgent(), ...timestamp()}\n });\n};\n"],
5
- "mappings": "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",
6
- "names": ["urlAlphabet", "nanoid", "size", "id", "bytes", "urlAlphabet", "DOCKER_CONTAINER_WEB_URL", "isNullish", "argument", "nonNullish", "notEmptyString", "value", "isEmptyString", "JSON_KEY_BIGINT", "jsonReplacer", "_key", "value", "ApiError", "status", "statusText", "OrbiterApi", "#apiUrl", "container", "orbiterId", "hostDomain", "nonNullish", "DOCKER_CONTAINER_WEB_URL", "protocol", "host", "payload", "path", "response", "jsonReplacer", "OrbiterServices", "#env", "#api", "env", "OrbiterApi", "entry", "request", "nowInBigIntNanoSeconds", "timestamp", "nowInBigIntNanoSeconds", "userAgent", "nonNullish", "campaign", "search", "searchParams", "utm_source", "isNullish", "isEmptyString", "utm_medium", "utm_campaign", "utm_term", "utm_content", "notEmptyString", "PerformanceServices", "_PerformanceServices", "sessionId", "postPerformanceMetric", "onCLS", "onFCP", "onINP", "onLCP", "onTTFB", "setMetric", "metric", "data", "nanoid", "timestamp", "metricName", "value", "delta", "id", "navigationType", "metric_name", "navigation_type", "nonNullish", "href", "userAgent", "UserAgentServices", "user_agent", "isNullish", "UAParser", "parser", "browser", "os", "device", "NullishError", "assertNonNullish", "value", "message", "isBrowser", "ORBITER_SERVICES_UNDEFINED_MSG", "warningOrbiterServicesNotInitialized", "value", "isNullish", "initSessionId", "nanoid", "sessionId", "services", "initServices", "env", "OrbiterServices", "UserAgentServices", "PerformanceServices", "initTrackPageViews", "trackPages", "trackPageViewAsync", "pushStateProxy", "target", "thisArg", "argArray", "SESSION_ID_UNDEFINED_MSG", "setPageView", "isBrowser", "assertNonNullish", "title", "href", "referrer", "innerWidth", "innerHeight", "windowScreen", "timeZone", "user_agent", "userAgent", "client", "nonNullish", "withCampaign", "campaignData", "campaign", "page_view", "url", "key", "warningOrbiterServicesNotInitialized", "timestamp", "startTrackPerformance", "isNullish", "postPerformanceMetric", "entry", "trackPageView", "trackEvent", "data", "trackEventAsync"]
7
- }
@@ -1,2 +0,0 @@
1
- import"./chunk-YVLJX3HV.js";var D=-1,m=t=>{addEventListener("pageshow",(e=>{e.persisted&&(D=e.timeStamp,t(e))}),!0)},l=(t,e,i,n)=>{let r,s;return a=>{e.value>=0&&(a||n)&&(s=e.value-(r??0),(s||r===void 0)&&(r=e.value,e.delta=s,e.rating=((o,d)=>o>d[1]?"poor":o>d[0]?"needs-improvement":"good")(e.value,i),t(e)))}},I=t=>{requestAnimationFrame((()=>requestAnimationFrame((()=>t()))))},F=()=>{let t=performance.getEntriesByType("navigation")[0];if(t&&t.responseStart>0&&t.responseStart<performance.now())return t},f=()=>F()?.activationStart??0,h=(t,e=-1)=>{let i=F(),n="navigate";return D>=0?n="back-forward-cache":i&&(document.prerendering||f()>0?n="prerender":document.wasDiscarded?n="restore":i.type&&(n=i.type.replace(/_/g,"-"))),{name:t,value:e,rating:"good",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:n}},C=new WeakMap;function M(t,e){return C.get(t)||C.set(t,new e),C.get(t)}var b=class{t;i=0;o=[];h(e){if(e.hadRecentInput)return;let i=this.o[0],n=this.o.at(-1);this.i&&i&&n&&e.startTime-n.startTime<1e3&&e.startTime-i.startTime<5e3?(this.i+=e.value,this.o.push(e)):(this.i=e.value,this.o=[e]),this.t?.(e)}},v=(t,e,i={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(t)){let n=new PerformanceObserver((r=>{Promise.resolve().then((()=>{e(r.getEntries())}))}));return n.observe({type:t,buffered:!0,...i}),n}}catch{}},k=t=>{let e=!1;return()=>{e||(t(),e=!0)}},p=-1,_=new Set,B=()=>document.visibilityState!=="hidden"||document.prerendering?1/0:0,L=t=>{if(document.visibilityState==="hidden"){if(t.type==="visibilitychange")for(let e of _)e();isFinite(p)||(p=t.type==="visibilitychange"?t.timeStamp:0,removeEventListener("prerenderingchange",L,!0))}},T=()=>{if(p<0){let t=f();p=(document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").filter((i=>i.name==="hidden"&&i.startTime>t))[0]?.startTime)??B(),addEventListener("visibilitychange",L,!0),addEventListener("prerenderingchange",L,!0),m((()=>{setTimeout((()=>{p=B()}))}))}return{get firstHiddenTime(){return p},onHidden(t){_.add(t)}}},y=t=>{document.prerendering?addEventListener("prerenderingchange",(()=>t()),!0):t()},H=[1800,3e3],z=(t,e={})=>{y((()=>{let i=T(),n,r=h("FCP"),s=v("paint",(a=>{for(let o of a)o.name==="first-contentful-paint"&&(s.disconnect(),o.startTime<i.firstHiddenTime&&(r.value=Math.max(o.startTime-f(),0),r.entries.push(o),n(!0)))}));s&&(n=l(t,r,H,e.reportAllChanges),m((a=>{r=h("FCP"),n=l(t,r,H,e.reportAllChanges),I((()=>{r.value=performance.now()-a.timeStamp,n(!0)}))})))}))},x=[.1,.25],K=(t,e={})=>{let i=T();z(k((()=>{let n,r=h("CLS",0),s=M(e,b),a=d=>{for(let c of d)s.h(c);s.i>r.value&&(r.value=s.i,r.entries=s.o,n())},o=v("layout-shift",a);o&&(n=l(t,r,x,e.reportAllChanges),i.onHidden((()=>{a(o.takeRecords()),n(!0)})),m((()=>{s.i=0,r=h("CLS",0),n=l(t,r,x,e.reportAllChanges),I((()=>n()))})),setTimeout(n))})))},W=0,P=1/0,g=0,G=t=>{for(let e of t)e.interactionId&&(P=Math.min(P,e.interactionId),g=Math.max(g,e.interactionId),W=g?(g-P)/7+1:0)},S,q=()=>S?W:performance.interactionCount??0,J=()=>{"interactionCount"in performance||S||(S=v("event",G,{type:"event",buffered:!0,durationThreshold:0}))},R=0,E=class{u=[];l=new Map;m;p;v(){R=q(),this.u.length=0,this.l.clear()}L(){let e=Math.min(this.u.length-1,Math.floor((q()-R)/50));return this.u[e]}h(e){if(this.m?.(e),!e.interactionId&&e.entryType!=="first-input")return;let i=this.u.at(-1),n=this.l.get(e.interactionId);if(n||this.u.length<10||e.duration>i.P){if(n?e.duration>n.P?(n.entries=[e],n.P=e.duration):e.duration===n.P&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],P:e.duration},this.l.set(n.id,n),this.u.push(n)),this.u.sort(((r,s)=>s.P-r.P)),this.u.length>10){let r=this.u.splice(10);for(let s of r)this.l.delete(s.id)}this.p?.(n)}}},j=t=>{let e=globalThis.requestIdleCallback||setTimeout;document.visibilityState==="hidden"?t():(t=k(t),addEventListener("visibilitychange",t,{once:!0,capture:!0}),e((()=>{t(),removeEventListener("visibilitychange",t,{capture:!0})})))},N=[200,500],Q=(t,e={})=>{if(!globalThis.PerformanceEventTiming||!("interactionId"in PerformanceEventTiming.prototype))return;let i=T();y((()=>{J();let n,r=h("INP"),s=M(e,E),a=d=>{j((()=>{for(let u of d)s.h(u);let c=s.L();c&&c.P!==r.value&&(r.value=c.P,r.entries=c.entries,n())}))},o=v("event",a,{durationThreshold:e.durationThreshold??40});n=l(t,r,N,e.reportAllChanges),o&&(o.observe({type:"first-input",buffered:!0}),i.onHidden((()=>{a(o.takeRecords()),n(!0)})),m((()=>{s.v(),r=h("INP"),n=l(t,r,N,e.reportAllChanges)})))}))},w=class{m;h(e){this.m?.(e)}},O=[2500,4e3],U=(t,e={})=>{y((()=>{let i=T(),n,r=h("LCP"),s=M(e,w),a=d=>{e.reportAllChanges||(d=d.slice(-1));for(let c of d)s.h(c),c.startTime<i.firstHiddenTime&&(r.value=Math.max(c.startTime-f(),0),r.entries=[c],n())},o=v("largest-contentful-paint",a);if(o){n=l(t,r,O,e.reportAllChanges);let d=k((()=>{a(o.takeRecords()),o.disconnect(),n(!0)})),c=u=>{u.isTrusted&&(j(d),removeEventListener(u.type,c,{capture:!0}))};for(let u of["keydown","click","visibilitychange"])addEventListener(u,c,{capture:!0});m((u=>{r=h("LCP"),n=l(t,r,O,e.reportAllChanges),I((()=>{r.value=performance.now()-u.timeStamp,n(!0)}))}))}}))},$=[800,1800],A=t=>{document.prerendering?y((()=>A(t))):document.readyState!=="complete"?addEventListener("load",(()=>A(t)),!0):setTimeout(t)},V=(t,e={})=>{let i=h("TTFB"),n=l(t,i,$,e.reportAllChanges);A((()=>{let r=F();r&&(i.value=Math.max(r.responseStart-f(),0),i.entries=[r],n(!0),m((()=>{i=h("TTFB",0),n=l(t,i,$,e.reportAllChanges),n(!0)})))}))};export{x as CLSThresholds,H as FCPThresholds,N as INPThresholds,O as LCPThresholds,$ as TTFBThresholds,K as onCLS,z as onFCP,Q as onINP,U as onLCP,V as onTTFB};
2
- //# sourceMappingURL=web-vitals-6ZNYHHDJ.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../node_modules/web-vitals/dist/web-vitals.js"],
4
- "sourcesContent": ["let e=-1;const t=t=>{addEventListener(\"pageshow\",(n=>{n.persisted&&(e=n.timeStamp,t(n))}),!0)},n=(e,t,n,i)=>{let s,o;return r=>{t.value>=0&&(r||i)&&(o=t.value-(s??0),(o||void 0===s)&&(s=t.value,t.delta=o,t.rating=((e,t)=>e>t[1]?\"poor\":e>t[0]?\"needs-improvement\":\"good\")(t.value,n),e(t)))}},i=e=>{requestAnimationFrame((()=>requestAnimationFrame((()=>e()))))},s=()=>{const e=performance.getEntriesByType(\"navigation\")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},o=()=>{const e=s();return e?.activationStart??0},r=(t,n=-1)=>{const i=s();let r=\"navigate\";e>=0?r=\"back-forward-cache\":i&&(document.prerendering||o()>0?r=\"prerender\":document.wasDiscarded?r=\"restore\":i.type&&(r=i.type.replace(/_/g,\"-\")));return{name:t,value:n,rating:\"good\",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:r}},c=new WeakMap;function a(e,t){return c.get(e)||c.set(e,new t),c.get(e)}class d{t;i=0;o=[];h(e){if(e.hadRecentInput)return;const t=this.o[0],n=this.o.at(-1);this.i&&t&&n&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(this.i+=e.value,this.o.push(e)):(this.i=e.value,this.o=[e]),this.t?.(e)}}const h=(e,t,n={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(e)){const i=new PerformanceObserver((e=>{Promise.resolve().then((()=>{t(e.getEntries())}))}));return i.observe({type:e,buffered:!0,...n}),i}}catch{}},f=e=>{let t=!1;return()=>{t||(e(),t=!0)}};let u=-1;const l=new Set,m=()=>\"hidden\"!==document.visibilityState||document.prerendering?1/0:0,p=e=>{if(\"hidden\"===document.visibilityState){if(\"visibilitychange\"===e.type)for(const e of l)e();isFinite(u)||(u=\"visibilitychange\"===e.type?e.timeStamp:0,removeEventListener(\"prerenderingchange\",p,!0))}},v=()=>{if(u<0){const e=o(),n=document.prerendering?void 0:globalThis.performance.getEntriesByType(\"visibility-state\").filter((t=>\"hidden\"===t.name&&t.startTime>e))[0]?.startTime;u=n??m(),addEventListener(\"visibilitychange\",p,!0),addEventListener(\"prerenderingchange\",p,!0),t((()=>{setTimeout((()=>{u=m()}))}))}return{get firstHiddenTime(){return u},onHidden(e){l.add(e)}}},g=e=>{document.prerendering?addEventListener(\"prerenderingchange\",(()=>e()),!0):e()},y=[1800,3e3],E=(e,s={})=>{g((()=>{const c=v();let a,d=r(\"FCP\");const f=h(\"paint\",(e=>{for(const t of e)\"first-contentful-paint\"===t.name&&(f.disconnect(),t.startTime<c.firstHiddenTime&&(d.value=Math.max(t.startTime-o(),0),d.entries.push(t),a(!0)))}));f&&(a=n(e,d,y,s.reportAllChanges),t((t=>{d=r(\"FCP\"),a=n(e,d,y,s.reportAllChanges),i((()=>{d.value=performance.now()-t.timeStamp,a(!0)}))})))}))},b=[.1,.25],L=(e,s={})=>{const o=v();E(f((()=>{let c,f=r(\"CLS\",0);const u=a(s,d),l=e=>{for(const t of e)u.h(t);u.i>f.value&&(f.value=u.i,f.entries=u.o,c())},m=h(\"layout-shift\",l);m&&(c=n(e,f,b,s.reportAllChanges),o.onHidden((()=>{l(m.takeRecords()),c(!0)})),t((()=>{u.i=0,f=r(\"CLS\",0),c=n(e,f,b,s.reportAllChanges),i((()=>c()))})),setTimeout(c))})))};let P=0,T=1/0,_=0;const M=e=>{for(const t of e)t.interactionId&&(T=Math.min(T,t.interactionId),_=Math.max(_,t.interactionId),P=_?(_-T)/7+1:0)};let w;const C=()=>w?P:performance.interactionCount??0,I=()=>{\"interactionCount\"in performance||w||(w=h(\"event\",M,{type:\"event\",buffered:!0,durationThreshold:0}))};let F=0;class k{u=[];l=new Map;m;p;v(){F=C(),this.u.length=0,this.l.clear()}L(){const e=Math.min(this.u.length-1,Math.floor((C()-F)/50));return this.u[e]}h(e){if(this.m?.(e),!e.interactionId&&\"first-input\"!==e.entryType)return;const t=this.u.at(-1);let n=this.l.get(e.interactionId);if(n||this.u.length<10||e.duration>t.P){if(n?e.duration>n.P?(n.entries=[e],n.P=e.duration):e.duration===n.P&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],P:e.duration},this.l.set(n.id,n),this.u.push(n)),this.u.sort(((e,t)=>t.P-e.P)),this.u.length>10){const e=this.u.splice(10);for(const t of e)this.l.delete(t.id)}this.p?.(n)}}}const A=e=>{const t=globalThis.requestIdleCallback||setTimeout;\"hidden\"===document.visibilityState?e():(e=f(e),addEventListener(\"visibilitychange\",e,{once:!0,capture:!0}),t((()=>{e(),removeEventListener(\"visibilitychange\",e,{capture:!0})})))},B=[200,500],S=(e,i={})=>{if(!globalThis.PerformanceEventTiming||!(\"interactionId\"in PerformanceEventTiming.prototype))return;const s=v();g((()=>{I();let o,c=r(\"INP\");const d=a(i,k),f=e=>{A((()=>{for(const t of e)d.h(t);const t=d.L();t&&t.P!==c.value&&(c.value=t.P,c.entries=t.entries,o())}))},u=h(\"event\",f,{durationThreshold:i.durationThreshold??40});o=n(e,c,B,i.reportAllChanges),u&&(u.observe({type:\"first-input\",buffered:!0}),s.onHidden((()=>{f(u.takeRecords()),o(!0)})),t((()=>{d.v(),c=r(\"INP\"),o=n(e,c,B,i.reportAllChanges)})))}))};class N{m;h(e){this.m?.(e)}}const q=[2500,4e3],x=(e,s={})=>{g((()=>{const c=v();let d,u=r(\"LCP\");const l=a(s,N),m=e=>{s.reportAllChanges||(e=e.slice(-1));for(const t of e)l.h(t),t.startTime<c.firstHiddenTime&&(u.value=Math.max(t.startTime-o(),0),u.entries=[t],d())},p=h(\"largest-contentful-paint\",m);if(p){d=n(e,u,q,s.reportAllChanges);const o=f((()=>{m(p.takeRecords()),p.disconnect(),d(!0)})),c=e=>{e.isTrusted&&(A(o),removeEventListener(e.type,c,{capture:!0}))};for(const e of[\"keydown\",\"click\",\"visibilitychange\"])addEventListener(e,c,{capture:!0});t((t=>{u=r(\"LCP\"),d=n(e,u,q,s.reportAllChanges),i((()=>{u.value=performance.now()-t.timeStamp,d(!0)}))}))}}))},H=[800,1800],O=e=>{document.prerendering?g((()=>O(e))):\"complete\"!==document.readyState?addEventListener(\"load\",(()=>O(e)),!0):setTimeout(e)},$=(e,i={})=>{let c=r(\"TTFB\"),a=n(e,c,H,i.reportAllChanges);O((()=>{const d=s();d&&(c.value=Math.max(d.responseStart-o(),0),c.entries=[d],a(!0),t((()=>{c=r(\"TTFB\",0),a=n(e,c,H,i.reportAllChanges),a(!0)})))}))};export{b as CLSThresholds,y as FCPThresholds,B as INPThresholds,q as LCPThresholds,H as TTFBThresholds,L as onCLS,E as onFCP,S as onINP,x as onLCP,$ as onTTFB};\n"],
5
- "mappings": "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",
6
- "names": ["e", "t", "n", "i", "s", "o", "r", "c", "a", "d", "h", "f", "u", "l", "m", "p", "v", "g", "y", "E", "b", "L", "P", "T", "_", "M", "w", "C", "I", "F", "k", "A", "B", "S", "N", "q", "x", "H", "O", "$"]
7
- }