@junobuild/analytics 0.2.2 → 0.2.3-next-2025-07-30.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/browser/chunk-F3JF5IJB.js +2 -0
- package/dist/browser/{chunk-MBP7WNBW.js.map → chunk-F3JF5IJB.js.map} +2 -2
- package/dist/browser/index.js +1 -1
- package/dist/browser/tracker.js +1 -1
- package/dist/browser/web-vitals-NSHJ4A66.js +2 -0
- package/dist/browser/web-vitals-NSHJ4A66.js.map +7 -0
- package/dist/node/index.mjs +1 -1
- package/dist/node/index.mjs.map +3 -3
- package/package.json +4 -4
- package/dist/browser/chunk-MBP7WNBW.js +0 -2
- package/dist/browser/web-vitals-YBMS6D2C.js +0 -2
- package/dist/browser/web-vitals-YBMS6D2C.js.map +0 -7
|
@@ -0,0 +1,2 @@
|
|
|
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}},S=class{#e;constructor({container:e,orbiterId:r}){let i=s(e)&&e!==!1?e===!0?A:e:"https://icp0.io",{protocol:o,host:c}=new URL(i);this.#e=`${o}//${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 E=class{#e;#t;constructor(e){this.#e=e,this.#t=new S(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"),i=e.get("utm_campaign"),o=e.get("utm_term"),c=e.get("utm_content");return{withCampaign:!0,campaign:{utm_source:r,...d(n)&&{utm_medium:n},...d(i)&&{utm_campaign:i},...d(o)&&{utm_term:o},...d(c)&&{utm_content:c}}}};var T=class t{async startPerformance({sessionId:e,postPerformanceMetric:r}){let{onCLS:n,onFCP:i,onINP:o,onLCP:c,onTTFB:g}=await import("./web-vitals-NSHJ4A66.js"),l=h=>{(async()=>await t.setPerformanceMetric({metric:{...h,sessionId:e},postPerformanceMetric:r}))()};n(l),i(l),o(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:i,id:o,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:i,id:o,...s(p)&&{navigation_type:p}},{location:{href:_}}=document;return{href:_,metric_name:l,session_id:e,data:{WebVitalsMetric:q},...P()}}};var k=class{async parseUserAgent(e){if(m(e))return;let r=await import("./ua-parser-GFKOYVJI.js"),n=new r.default(e),{browser:i,os:o,device:c}=n.getResult();if(!(m(i.name)||m(o.name)))return{browser:i.name,os:o.name,device:c?.type}}};var M=class extends Error{},N=(t,e)=>{if(t==null)throw new M(e)};var R=()=>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 E(t),userAgent:t.options?.userAgentParser===!0?new k:null,performance:t.options?.performance===!0?new T:null},{cleanup(){a=null}}),be=()=>{let t=async()=>await B(),e=new Proxy(history.pushState,{apply:async(r,n,i)=>{r.apply(n,i),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(!R())return;N(y,x);let{title:t,location:{href:e},referrer:r}=document,{innerWidth:n,innerHeight:i,screen:o}=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(),_={title:t,href:(()=>{if(!h)return e;let v=URL.parse(e);return m(v)?e:(Object.keys(p??{}).forEach(D=>v.searchParams.delete(D)),v.href)})(),...s(r)&&r!==""&&{referrer:r},device:{inner_width:n,inner_height:i,screen_width:o?.availWidth,screen_height:o?.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:_})},Me=async()=>{if(!R()||m(a?.performance))return;N(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=>{R()&&(N(y,x),w(a),await a?.orbiter?.setTrackEvent({key:{key:u(),...f()},track_event:{...t,session_id:y,...P(),...f()}}))};export{N 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-F3JF5IJB.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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 if (data === 'deprecated') {\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 | 'deprecated' | 'unknown' {\n const mapMetricName = (): PerformanceMetricNamePayload | 'deprecated' | 'unknown' => {\n switch (metricName) {\n case 'CLS':\n case 'FCP':\n case 'INP':\n case 'LCP':\n case 'TTFB':\n return metricName;\n case 'FID':\n return 'deprecated';\n default:\n return 'unknown';\n }\n };\n\n const metric_name = mapMetricName();\n\n if (metric_name === 'unknown' || metric_name === 'deprecated') {\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 const url = URL.parse(href);\n\n // Unlikely to happen\n if (isNullish(url)) {\n return href;\n }\n\n Object.keys(campaignData ?? {}).forEach((key) => url.searchParams.delete(key));\n\n return url.href;\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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
|
|
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 const url = URL.parse(href);\n\n // Unlikely to happen\n if (isNullish(url)) {\n return href;\n }\n\n Object.keys(campaignData ?? {}).forEach((key) => url.searchParams.delete(key));\n\n return url.href;\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
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", "isNullish", "key", "warningOrbiterServicesNotInitialized", "timestamp", "startTrackPerformance", "postPerformanceMetric", "entry", "trackPageView", "trackEvent", "data", "trackEventAsync"]
|
|
7
7
|
}
|
package/dist/browser/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as i,b as o,c as a,d as s,e as p,f as c,g as u,h as f,i as v}from"./chunk-
|
|
1
|
+
import{a as i,b as o,c as a,d as s,e as p,f as c,g as u,h as f,i as v}from"./chunk-F3JF5IJB.js";import"./chunk-YVLJX3HV.js";var d=()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_SATELLITE_ID??import.meta.env?.PUBLIC_SATELLITE_ID:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_SATELLITE_ID??e():e()},m=()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_ORBITER_ID??import.meta.env?.PUBLIC_ORBITER_ID:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_ORBITER_ID??e():e()},I=()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_CONTAINER??import.meta.env?.PUBLIC_CONTAINER:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_CONTAINER??e():e()};var E=e=>{let n=e?.satelliteId??d();i(n,"Satellite ID is not configured. Orbiter cannot be initialized without a target Satellite.");let t=e?.orbiterId??m();i(t,"Orbiter ID is not configured. The analytics cannot be initialized without an Orbiter.");let r=e?.container??I();return{orbiterId:t,satelliteId:n,container:r,options:e?.options}},g=e=>{let n=E(e),{cleanup:t}=o(n);s();let{cleanup:r}=a();return p(),()=>{t(),r()}};export{g as initOrbiter,f as trackEvent,v as trackEventAsync,c as trackPageView,u as trackPageViewAsync};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/browser/tracker.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h}from"./chunk-
|
|
1
|
+
import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h}from"./chunk-F3JF5IJB.js";import"./chunk-YVLJX3HV.js";export{a as initServices,b as initTrackPageViews,c as setPageView,d as startTrackPerformance,g as trackEvent,h as trackEventAsync,e as trackPageView,f as trackPageViewAsync};
|
|
2
2
|
//# sourceMappingURL=tracker.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import"./chunk-YVLJX3HV.js";var $=-1,m=t=>{addEventListener("pageshow",e=>{e.persisted&&($=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,c)=>o>c[1]?"poor":o>c[0]?"needs-improvement":"good")(e.value,i),t(e)))}},I=t=>{requestAnimationFrame(()=>requestAnimationFrame(()=>t()))},w=()=>{let t=performance.getEntriesByType("navigation")[0];if(t&&t.responseStart>0&&t.responseStart<performance.now())return t},p=()=>w()?.activationStart??0,h=(t,e=-1)=>{let i=w(),n="navigate";return $>=0?n="back-forward-cache":i&&(document.prerendering||p()>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}},y=new WeakMap;function A(t,e){return y.get(t)||y.set(t,new e),y.get(t)}var C=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{}},M=t=>{let e=!1;return()=>{e||(t(),e=!0)}},u=-1,F=()=>document.visibilityState!=="hidden"||document.prerendering?1/0:0,f=t=>{document.visibilityState==="hidden"&&u>-1&&(u=t.type==="visibilitychange"?t.timeStamp:0,j())},k=()=>{addEventListener("visibilitychange",f,!0),addEventListener("prerenderingchange",f,!0)},j=()=>{removeEventListener("visibilitychange",f,!0),removeEventListener("prerenderingchange",f,!0)},q=()=>{if(u<0){let t=p();u=(document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").filter(i=>i.name==="hidden"&&i.startTime>t)[0]?.startTime)??F(),k(),m(()=>{setTimeout(()=>{u=F(),k()})})}return{get firstHiddenTime(){return u}}},T=t=>{document.prerendering?addEventListener("prerenderingchange",()=>t(),!0):t()},B=[1800,3e3],z=(t,e={})=>{T(()=>{let i=q(),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-p(),0),r.entries.push(o),n(!0)))});s&&(n=l(t,r,B,e.reportAllChanges),m(a=>{r=h("FCP"),n=l(t,r,B,e.reportAllChanges),I(()=>{r.value=performance.now()-a.timeStamp,n(!0)})}))})},x=[.1,.25],K=(t,e={})=>{z(M(()=>{let i,n=h("CLS",0),r=A(e,C),s=o=>{for(let c of o)r.h(c);r.i>n.value&&(n.value=r.i,n.entries=r.o,i())},a=v("layout-shift",s);a&&(i=l(t,n,x,e.reportAllChanges),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&(s(a.takeRecords()),i(!0))}),m(()=>{r.i=0,n=h("CLS",0),i=l(t,n,x,e.reportAllChanges),I(()=>i())}),setTimeout(i))}))},_=0,b=1/0,g=0,G=t=>{for(let e of t)e.interactionId&&(b=Math.min(b,e.interactionId),g=Math.max(g,e.interactionId),_=g?(g-b)/7+1:0)},L,N=()=>L?_:performance.interactionCount??0,J=()=>{"interactionCount"in performance||L||(L=v("event",G,{type:"event",buffered:!0,durationThreshold:0}))},H=0,P=class{u=[];l=new Map;m;v;p(){H=N(),this.u.length=0,this.l.clear()}P(){let e=Math.min(this.u.length-1,Math.floor((N()-H)/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.T){if(n?e.duration>n.T?(n.entries=[e],n.T=e.duration):e.duration===n.T&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],T:e.duration},this.l.set(n.id,n),this.u.push(n)),this.u.sort((r,s)=>s.T-r.T),this.u.length>10){let r=this.u.splice(10);for(let s of r)this.l.delete(s.id)}this.v?.(n)}}},W=t=>{let e=globalThis.requestIdleCallback||setTimeout;document.visibilityState==="hidden"?t():(t=M(t),document.addEventListener("visibilitychange",t,{once:!0}),e(()=>{t(),document.removeEventListener("visibilitychange",t)}))},R=[200,500],Q=(t,e={})=>{globalThis.PerformanceEventTiming&&"interactionId"in PerformanceEventTiming.prototype&&T(()=>{J();let i,n=h("INP"),r=A(e,P),s=o=>{W(()=>{for(let d of o)r.h(d);let c=r.P();c&&c.T!==n.value&&(n.value=c.T,n.entries=c.entries,i())})},a=v("event",s,{durationThreshold:e.durationThreshold??40});i=l(t,n,R,e.reportAllChanges),a&&(a.observe({type:"first-input",buffered:!0}),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&(s(a.takeRecords()),i(!0))}),m(()=>{r.p(),n=h("INP"),i=l(t,n,R,e.reportAllChanges)}))})},E=class{m;h(e){this.m?.(e)}},D=[2500,4e3],U=(t,e={})=>{T(()=>{let i=q(),n,r=h("LCP"),s=A(e,E),a=c=>{e.reportAllChanges||(c=c.slice(-1));for(let d of c)s.h(d),d.startTime<i.firstHiddenTime&&(r.value=Math.max(d.startTime-p(),0),r.entries=[d],n())},o=v("largest-contentful-paint",a);if(o){n=l(t,r,D,e.reportAllChanges);let c=M(()=>{a(o.takeRecords()),o.disconnect(),n(!0)});for(let d of["keydown","click","visibilitychange"])addEventListener(d,()=>W(c),{capture:!0,once:!0});m(d=>{r=h("LCP"),n=l(t,r,D,e.reportAllChanges),I(()=>{r.value=performance.now()-d.timeStamp,n(!0)})})}})},O=[800,1800],S=t=>{document.prerendering?T(()=>S(t)):document.readyState!=="complete"?addEventListener("load",()=>S(t),!0):setTimeout(t)},V=(t,e={})=>{let i=h("TTFB"),n=l(t,i,O,e.reportAllChanges);S(()=>{let r=w();r&&(i.value=Math.max(r.responseStart-p(),0),i.entries=[r],n(!0),m(()=>{i=h("TTFB",0),n=l(t,i,O,e.reportAllChanges),n(!0)}))})};export{x as CLSThresholds,B as FCPThresholds,R as INPThresholds,D as LCPThresholds,O as TTFBThresholds,K as onCLS,z as onFCP,Q as onINP,U as onLCP,V as onTTFB};
|
|
2
|
+
//# sourceMappingURL=web-vitals-NSHJ4A66.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
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 o,s;return r=>{t.value>=0&&(r||i)&&(s=t.value-(o??0),(s||void 0===o)&&(o=t.value,t.delta=s,t.rating=((e,t)=>e>t[1]?\"poor\":e>t[0]?\"needs-improvement\":\"good\")(t.value,n),e(t)))}},i=e=>{requestAnimationFrame((()=>requestAnimationFrame((()=>e()))))},o=()=>{const e=performance.getEntriesByType(\"navigation\")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},s=()=>{const e=o();return e?.activationStart??0},r=(t,n=-1)=>{const i=o();let r=\"navigate\";e>=0?r=\"back-forward-cache\":i&&(document.prerendering||s()>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=()=>\"hidden\"!==document.visibilityState||document.prerendering?1/0:0,m=e=>{\"hidden\"===document.visibilityState&&u>-1&&(u=\"visibilitychange\"===e.type?e.timeStamp:0,v())},g=()=>{addEventListener(\"visibilitychange\",m,!0),addEventListener(\"prerenderingchange\",m,!0)},v=()=>{removeEventListener(\"visibilitychange\",m,!0),removeEventListener(\"prerenderingchange\",m,!0)},p=()=>{if(u<0){const e=s(),n=document.prerendering?void 0:globalThis.performance.getEntriesByType(\"visibility-state\").filter((t=>\"hidden\"===t.name&&t.startTime>e))[0]?.startTime;u=n??l(),g(),t((()=>{setTimeout((()=>{u=l(),g()}))}))}return{get firstHiddenTime(){return u}}},y=e=>{document.prerendering?addEventListener(\"prerenderingchange\",(()=>e()),!0):e()},b=[1800,3e3],P=(e,o={})=>{y((()=>{const c=p();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-s(),0),d.entries.push(t),a(!0)))}));f&&(a=n(e,d,b,o.reportAllChanges),t((t=>{d=r(\"FCP\"),a=n(e,d,b,o.reportAllChanges),i((()=>{d.value=performance.now()-t.timeStamp,a(!0)}))})))}))},T=[.1,.25],E=(e,o={})=>{P(f((()=>{let s,c=r(\"CLS\",0);const f=a(o,d),u=e=>{for(const t of e)f.h(t);f.i>c.value&&(c.value=f.i,c.entries=f.o,s())},l=h(\"layout-shift\",u);l&&(s=n(e,c,T,o.reportAllChanges),document.addEventListener(\"visibilitychange\",(()=>{\"hidden\"===document.visibilityState&&(u(l.takeRecords()),s(!0))})),t((()=>{f.i=0,c=r(\"CLS\",0),s=n(e,c,T,o.reportAllChanges),i((()=>s()))})),setTimeout(s))})))};let _=0,L=1/0,M=0;const C=e=>{for(const t of e)t.interactionId&&(L=Math.min(L,t.interactionId),M=Math.max(M,t.interactionId),_=M?(M-L)/7+1:0)};let I;const w=()=>I?_:performance.interactionCount??0,F=()=>{\"interactionCount\"in performance||I||(I=h(\"event\",C,{type:\"event\",buffered:!0,durationThreshold:0}))};let k=0;class A{u=[];l=new Map;m;v;p(){k=w(),this.u.length=0,this.l.clear()}P(){const e=Math.min(this.u.length-1,Math.floor((w()-k)/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.T){if(n?e.duration>n.T?(n.entries=[e],n.T=e.duration):e.duration===n.T&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],T:e.duration},this.l.set(n.id,n),this.u.push(n)),this.u.sort(((e,t)=>t.T-e.T)),this.u.length>10){const e=this.u.splice(10);for(const t of e)this.l.delete(t.id)}this.v?.(n)}}}const B=e=>{const t=globalThis.requestIdleCallback||setTimeout;\"hidden\"===document.visibilityState?e():(e=f(e),document.addEventListener(\"visibilitychange\",e,{once:!0}),t((()=>{e(),document.removeEventListener(\"visibilitychange\",e)})))},N=[200,500],S=(e,i={})=>{globalThis.PerformanceEventTiming&&\"interactionId\"in PerformanceEventTiming.prototype&&y((()=>{F();let o,s=r(\"INP\");const c=a(i,A),d=e=>{B((()=>{for(const t of e)c.h(t);const t=c.P();t&&t.T!==s.value&&(s.value=t.T,s.entries=t.entries,o())}))},f=h(\"event\",d,{durationThreshold:i.durationThreshold??40});o=n(e,s,N,i.reportAllChanges),f&&(f.observe({type:\"first-input\",buffered:!0}),document.addEventListener(\"visibilitychange\",(()=>{\"hidden\"===document.visibilityState&&(d(f.takeRecords()),o(!0))})),t((()=>{c.p(),s=r(\"INP\"),o=n(e,s,N,i.reportAllChanges)})))}))};class q{m;h(e){this.m?.(e)}}const x=[2500,4e3],O=(e,o={})=>{y((()=>{const c=p();let d,u=r(\"LCP\");const l=a(o,q),m=e=>{o.reportAllChanges||(e=e.slice(-1));for(const t of e)l.h(t),t.startTime<c.firstHiddenTime&&(u.value=Math.max(t.startTime-s(),0),u.entries=[t],d())},g=h(\"largest-contentful-paint\",m);if(g){d=n(e,u,x,o.reportAllChanges);const s=f((()=>{m(g.takeRecords()),g.disconnect(),d(!0)}));for(const e of[\"keydown\",\"click\",\"visibilitychange\"])addEventListener(e,(()=>B(s)),{capture:!0,once:!0});t((t=>{u=r(\"LCP\"),d=n(e,u,x,o.reportAllChanges),i((()=>{u.value=performance.now()-t.timeStamp,d(!0)}))}))}}))},$=[800,1800],D=e=>{document.prerendering?y((()=>D(e))):\"complete\"!==document.readyState?addEventListener(\"load\",(()=>D(e)),!0):setTimeout(e)},H=(e,i={})=>{let c=r(\"TTFB\"),a=n(e,c,$,i.reportAllChanges);D((()=>{const d=o();d&&(c.value=Math.max(d.responseStart-s(),0),c.entries=[d],a(!0),t((()=>{c=r(\"TTFB\",0),a=n(e,c,$,i.reportAllChanges),a(!0)})))}))};export{T as CLSThresholds,b as FCPThresholds,N as INPThresholds,x as LCPThresholds,$ as TTFBThresholds,E as onCLS,P as onFCP,S as onINP,O as onLCP,H as onTTFB};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["e", "t", "n", "i", "o", "r", "s", "c", "a", "d", "h", "f", "l", "m", "v", "g", "p", "y", "b", "P", "T", "E", "u", "L", "M", "C", "I", "w", "F", "k", "A", "B", "N", "S", "q", "x", "O", "$", "D", "H"]
|
|
7
|
+
}
|
package/dist/node/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createRequire as topLevelCreateRequire } from 'module';
|
|
2
2
|
const require = topLevelCreateRequire(import.meta.url);
|
|
3
|
-
var Wt=Object.create;var qe=Object.defineProperty;var $t=Object.getOwnPropertyDescriptor;var Xt=Object.getOwnPropertyNames;var Kt=Object.getPrototypeOf,Yt=Object.prototype.hasOwnProperty;var Zt=(e,t)=>()=>(e&&(t=e(e=0)),t);var Jt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Qt=(e,t)=>{for(var o in t)qe(e,o,{get:t[o],enumerable:!0})},ei=(e,t,o,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Xt(t))!Yt.call(e,s)&&s!==o&&qe(e,s,{get:()=>t[s],enumerable:!(u=$t(t,s))||u.enumerable});return e};var ti=(e,t,o)=>(o=e!=null?Wt(Kt(e)):{},ei(t||!e||!e.__esModule?qe(o,"default",{value:e,enumerable:!0}):o,e));var At={};Qt(At,{CLSThresholds:()=>ze,FCPThresholds:()=>Fe,FIDThresholds:()=>We,INPThresholds:()=>je,LCPThresholds:()=>He,TTFBThresholds:()=>Ge,onCLS:()=>ai,onFCP:()=>St,onFID:()=>hi,onINP:()=>mi,onLCP:()=>di,onTTFB:()=>wi});var De,q,ne,Et,ye,Pt,U,$e,Te,I,$,N,Xe,re,Ee,W,yt,ke,kt,oi,Ke,oe,Fe,St,ze,ai,xt,Ue,he,si,_t,ci,C,ge,It,ui,li,pi,Nt,je,mi,He,Ve,di,Ge,fi,wi,ie,bi,Tt,Mt,vi,Rt,We,hi,Ct=Zt(()=>{Pt=-1,U=function(e){addEventListener("pageshow",function(t){t.persisted&&(Pt=t.timeStamp,e(t))},!0)},$e=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},Te=function(){var e=$e();return e&&e.activationStart||0},I=function(e,t){var o=$e(),u="navigate";return Pt>=0?u="back-forward-cache":o&&(document.prerendering||Te()>0?u="prerender":document.wasDiscarded?u="restore":o.type&&(u=o.type.replace(/_/g,"-"))),{name:e,value:t===void 0?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:u}},$=function(e,t,o){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var u=new PerformanceObserver(function(s){Promise.resolve().then(function(){t(s.getEntries())})});return u.observe(Object.assign({type:e,buffered:!0},o||{})),u}}catch{}},N=function(e,t,o,u){var s,l;return function(d){t.value>=0&&(d||u)&&((l=t.value-(s||0))||s===void 0)&&(s=t.value,t.delta=l,t.rating=function(y,p){return y>p[1]?"poor":y>p[0]?"needs-improvement":"good"}(t.value,o),e(t))}},Xe=function(e){requestAnimationFrame(function(){return requestAnimationFrame(function(){return e()})})},re=function(e){document.addEventListener("visibilitychange",function(){document.visibilityState==="hidden"&&e()})},Ee=function(e){var t=!1;return function(){t||(e(),t=!0)}},W=-1,yt=function(){return document.visibilityState!=="hidden"||document.prerendering?1/0:0},ke=function(e){document.visibilityState==="hidden"&&W>-1&&(W=e.type==="visibilitychange"?e.timeStamp:0,oi())},kt=function(){addEventListener("visibilitychange",ke,!0),addEventListener("prerenderingchange",ke,!0)},oi=function(){removeEventListener("visibilitychange",ke,!0),removeEventListener("prerenderingchange",ke,!0)},Ke=function(){return W<0&&(W=yt(),kt(),U(function(){setTimeout(function(){W=yt(),kt()},0)})),{get firstHiddenTime(){return W}}},oe=function(e){document.prerendering?addEventListener("prerenderingchange",function(){return e()},!0):e()},Fe=[1800,3e3],St=function(e,t){t=t||{},oe(function(){var o,u=Ke(),s=I("FCP"),l=$("paint",function(d){d.forEach(function(y){y.name==="first-contentful-paint"&&(l.disconnect(),y.startTime<u.firstHiddenTime&&(s.value=Math.max(y.startTime-Te(),0),s.entries.push(y),o(!0)))})});l&&(o=N(e,s,Fe,t.reportAllChanges),U(function(d){s=I("FCP"),o=N(e,s,Fe,t.reportAllChanges),Xe(function(){s.value=performance.now()-d.timeStamp,o(!0)})}))})},ze=[.1,.25],ai=function(e,t){t=t||{},St(Ee(function(){var o,u=I("CLS",0),s=0,l=[],d=function(p){p.forEach(function(T){if(!T.hadRecentInput){var i=l[0],a=l[l.length-1];s&&T.startTime-a.startTime<1e3&&T.startTime-i.startTime<5e3?(s+=T.value,l.push(T)):(s=T.value,l=[T])}}),s>u.value&&(u.value=s,u.entries=l,o())},y=$("layout-shift",d);y&&(o=N(e,u,ze,t.reportAllChanges),re(function(){d(y.takeRecords()),o(!0)}),U(function(){s=0,u=I("CLS",0),o=N(e,u,ze,t.reportAllChanges),Xe(function(){return o()})}),setTimeout(o,0))}))},xt=0,Ue=1/0,he=0,si=function(e){e.forEach(function(t){t.interactionId&&(Ue=Math.min(Ue,t.interactionId),he=Math.max(he,t.interactionId),xt=he?(he-Ue)/7+1:0)})},_t=function(){return De?xt:performance.interactionCount||0},ci=function(){"interactionCount"in performance||De||(De=$("event",si,{type:"event",buffered:!0,durationThreshold:0}))},C=[],ge=new Map,It=0,ui=function(){var e=Math.min(C.length-1,Math.floor((_t()-It)/50));return C[e]},li=[],pi=function(e){if(li.forEach(function(s){return s(e)}),e.interactionId||e.entryType==="first-input"){var t=C[C.length-1],o=ge.get(e.interactionId);if(o||C.length<10||e.duration>t.latency){if(o)e.duration>o.latency?(o.entries=[e],o.latency=e.duration):e.duration===o.latency&&e.startTime===o.entries[0].startTime&&o.entries.push(e);else{var u={id:e.interactionId,latency:e.duration,entries:[e]};ge.set(u.id,u),C.push(u)}C.sort(function(s,l){return l.latency-s.latency}),C.length>10&&C.splice(10).forEach(function(s){return ge.delete(s.id)})}}},Nt=function(e){var t=self.requestIdleCallback||self.setTimeout,o=-1;return e=Ee(e),document.visibilityState==="hidden"?e():(o=t(e),re(e)),o},je=[200,500],mi=function(e,t){"PerformanceEventTiming"in self&&"interactionId"in PerformanceEventTiming.prototype&&(t=t||{},oe(function(){var o;ci();var u,s=I("INP"),l=function(y){Nt(function(){y.forEach(pi);var p=ui();p&&p.latency!==s.value&&(s.value=p.latency,s.entries=p.entries,u())})},d=$("event",l,{durationThreshold:(o=t.durationThreshold)!==null&&o!==void 0?o:40});u=N(e,s,je,t.reportAllChanges),d&&(d.observe({type:"first-input",buffered:!0}),re(function(){l(d.takeRecords()),u(!0)}),U(function(){It=_t(),C.length=0,ge.clear(),s=I("INP"),u=N(e,s,je,t.reportAllChanges)}))}))},He=[2500,4e3],Ve={},di=function(e,t){t=t||{},oe(function(){var o,u=Ke(),s=I("LCP"),l=function(p){t.reportAllChanges||(p=p.slice(-1)),p.forEach(function(T){T.startTime<u.firstHiddenTime&&(s.value=Math.max(T.startTime-Te(),0),s.entries=[T],o())})},d=$("largest-contentful-paint",l);if(d){o=N(e,s,He,t.reportAllChanges);var y=Ee(function(){Ve[s.id]||(l(d.takeRecords()),d.disconnect(),Ve[s.id]=!0,o(!0))});["keydown","click"].forEach(function(p){addEventListener(p,function(){return Nt(y)},{once:!0,capture:!0})}),re(y),U(function(p){s=I("LCP"),o=N(e,s,He,t.reportAllChanges),Xe(function(){s.value=performance.now()-p.timeStamp,Ve[s.id]=!0,o(!0)})})}})},Ge=[800,1800],fi=function e(t){document.prerendering?oe(function(){return e(t)}):document.readyState!=="complete"?addEventListener("load",function(){return e(t)},!0):setTimeout(t,0)},wi=function(e,t){t=t||{};var o=I("TTFB"),u=N(e,o,Ge,t.reportAllChanges);fi(function(){var s=$e();s&&(o.value=Math.max(s.responseStart-Te(),0),o.entries=[s],u(!0),U(function(){o=I("TTFB",0),(u=N(e,o,Ge,t.reportAllChanges))(!0)}))})},ie={passive:!0,capture:!0},bi=new Date,Tt=function(e,t){q||(q=t,ne=e,Et=new Date,Rt(removeEventListener),Mt())},Mt=function(){if(ne>=0&&ne<Et-bi){var e={entryType:"first-input",name:q.type,target:q.target,cancelable:q.cancelable,startTime:q.timeStamp,processingStart:q.timeStamp+ne};ye.forEach(function(t){t(e)}),ye=[]}},vi=function(e){if(e.cancelable){var t=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;e.type=="pointerdown"?function(o,u){var s=function(){Tt(o,u),d()},l=function(){d()},d=function(){removeEventListener("pointerup",s,ie),removeEventListener("pointercancel",l,ie)};addEventListener("pointerup",s,ie),addEventListener("pointercancel",l,ie)}(t,e):Tt(t,e)}},Rt=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach(function(t){return e(t,vi,ie)})},We=[100,300],hi=function(e,t){t=t||{},oe(function(){var o,u=Ke(),s=I("FID"),l=function(p){p.startTime<u.firstHiddenTime&&(s.value=p.processingStart-p.startTime,s.entries.push(p),o(!0))},d=function(p){p.forEach(l)},y=$("first-input",d);o=N(e,s,We,t.reportAllChanges),y&&(re(Ee(function(){d(y.takeRecords()),y.disconnect()})),U(function(){var p;s=I("FID"),o=N(e,s,We,t.reportAllChanges),ye=[],ne=-1,q=null,Rt(addEventListener),p=l,ye.push(p),Mt()}))})}});var Ot=Jt((ae,Se)=>{(function(e,t){"use strict";var o="1.0.40",u="",s="?",l="function",d="undefined",y="object",p="string",T="major",i="model",a="name",n="type",r="vendor",c="version",M="architecture",K="console",w="mobile",b="tablet",E="smarttv",O="wearable",Ie="embedded",Ne=500,ce="Amazon",Y="Apple",et="ASUS",tt="BlackBerry",ue="Browser",le="Chrome",zt="Edge",pe="Firefox",Z="Google",it="Huawei",Me="LG",Re="Microsoft",nt="Motorola",J="Opera",Q="Samsung",rt="Sharp",me="Sony",Ae="Xiaomi",Ce="Zebra",ot="Facebook",at="Chromium OS",st="Mac OS",ct=" Browser",jt=function(v,h){var f={};for(var k in v)h[k]&&h[k].length%2===0?f[k]=h[k].concat(v[k]):f[k]=v[k];return f},de=function(v){for(var h={},f=0;f<v.length;f++)h[v[f].toUpperCase()]=v[f];return h},ut=function(v,h){return typeof v===p?D(h).indexOf(D(v))!==-1:!1},D=function(v){return v.toLowerCase()},Ht=function(v){return typeof v===p?v.replace(/[^\d\.]/g,u).split(".")[0]:t},Oe=function(v,h){if(typeof v===p)return v=v.replace(/^\s\s*/,u),typeof h===d?v:v.substring(0,Ne)},ee=function(v,h){for(var f=0,k,L,R,g,m,A;f<h.length&&!m;){var Le=h[f],mt=h[f+1];for(k=L=0;k<Le.length&&!m&&Le[k];)if(m=Le[k++].exec(v),m)for(R=0;R<mt.length;R++)A=m[++L],g=mt[R],typeof g===y&&g.length>0?g.length===2?typeof g[1]==l?this[g[0]]=g[1].call(this,A):this[g[0]]=g[1]:g.length===3?typeof g[1]===l&&!(g[1].exec&&g[1].test)?this[g[0]]=A?g[1].call(this,A,g[2]):t:this[g[0]]=A?A.replace(g[1],g[2]):t:g.length===4&&(this[g[0]]=A?g[3].call(this,A.replace(g[1],g[2])):t):this[g]=A||t;f+=2}},fe=function(v,h){for(var f in h)if(typeof h[f]===y&&h[f].length>0){for(var k=0;k<h[f].length;k++)if(ut(h[f][k],v))return f===s?t:f}else if(ut(h[f],v))return f===s?t:f;return h.hasOwnProperty("*")?h["*"]:v},Gt={"1.0":"/8","1.2":"/1","1.3":"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"},lt={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2","8.1":"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},pt={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[c,[a,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[c,[a,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[a,c],[/opios[\/ ]+([\w\.]+)/i],[c,[a,J+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[c,[a,J+" GX"]],[/\bopr\/([\w\.]+)/i],[c,[a,J]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[c,[a,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[c,[a,"Maxthon"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\/([-\w\.]+)/i,/(heytap|ovi|115)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[a,c],[/quark(?:pc)?\/([-\w\.]+)/i],[c,[a,"Quark"]],[/\bddg\/([\w\.]+)/i],[c,[a,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[c,[a,"UC"+ue]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[c,[a,"WeChat"]],[/konqueror\/([\w\.]+)/i],[c,[a,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[c,[a,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[c,[a,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[c,[a,"Smart Lenovo "+ue]],[/(avast|avg)\/([\w\.]+)/i],[[a,/(.+)/,"$1 Secure "+ue],c],[/\bfocus\/([\w\.]+)/i],[c,[a,pe+" Focus"]],[/\bopt\/([\w\.]+)/i],[c,[a,J+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[c,[a,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[c,[a,"Dolphin"]],[/coast\/([\w\.]+)/i],[c,[a,J+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[c,[a,"MIUI"+ct]],[/fxios\/([\w\.-]+)/i],[c,[a,pe]],[/\bqihoobrowser\/?([\w\.]*)/i],[c,[a,"360"]],[/\b(qq)\/([\w\.]+)/i],[[a,/(.+)/,"$1Browser"],c],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[a,/(.+)/,"$1"+ct],c],[/samsungbrowser\/([\w\.]+)/i],[c,[a,Q+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[c,[a,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[a,"Sogou Mobile"],c],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[a,c],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[a],[/ome\/([\w\.]+) \w* ?(iron) saf/i,/ome\/([\w\.]+).+qihu (360)[es]e/i],[c,a],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[a,ot],c],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[a,c],[/\bgsa\/([\w\.]+) .*safari\//i],[c,[a,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[c,[a,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[c,[a,le+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[a,le+" WebView"],c],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[c,[a,"Android "+ue]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[a,c],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[c,[a,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[c,a],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[a,[c,fe,Gt]],[/(webkit|khtml)\/([\w\.]+)/i],[a,c],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[a,"Netscape"],c],[/(wolvic|librewolf)\/([\w\.]+)/i],[a,c],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[c,[a,pe+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i],[a,[c,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[a,[c,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[M,"amd64"]],[/(ia32(?=;))/i],[[M,D]],[/((?:i[346]|x)86)[;\)]/i],[[M,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[M,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[M,"armhf"]],[/windows (ce|mobile); ppc;/i],[[M,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[M,/ower/,u,D]],[/(sun4\w)[;\)]/i],[[M,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[M,D]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[i,[r,Q],[n,b]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[i,[r,Q],[n,w]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[i,[r,Y],[n,w]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[i,[r,Y],[n,b]],[/(macintosh);/i],[i,[r,Y]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[i,[r,rt],[n,w]],[/(?:honor)([-\w ]+)[;\)]/i],[i,[r,"Honor"],[n,w]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[i,[r,it],[n,b]],[/(?:huawei)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[i,[r,it],[n,w]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i],[[i,/_/g," "],[r,Ae],[n,w]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[i,/_/g," "],[r,Ae],[n,b]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[i,[r,"OPPO"],[n,w]],[/\b(opd2\d{3}a?) bui/i],[i,[r,"OPPO"],[n,b]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[i,[r,"Vivo"],[n,w]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[i,[r,"Realme"],[n,w]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[i,[r,nt],[n,w]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[i,[r,nt],[n,b]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[i,[r,Me],[n,b]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[i,[r,Me],[n,w]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[i,[r,"Lenovo"],[n,b]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[i,/_/g," "],[r,"Nokia"],[n,w]],[/(pixel c)\b/i],[i,[r,Z],[n,b]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[i,[r,Z],[n,w]],[/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[i,[r,me],[n,w]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[i,"Xperia Tablet"],[r,me],[n,b]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[i,[r,"OnePlus"],[n,w]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[i,[r,ce],[n,b]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[i,/(.+)/g,"Fire Phone $1"],[r,ce],[n,w]],[/(playbook);[-\w\),; ]+(rim)/i],[i,r,[n,b]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[i,[r,tt],[n,w]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[i,[r,et],[n,b]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[i,[r,et],[n,w]],[/(nexus 9)/i],[i,[r,"HTC"],[n,b]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[r,[i,/_/g," "],[n,w]],[/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\w*(\)| bui)/i],[i,[r,"TCL"],[n,b]],[/(itel) ((\w+))/i],[[r,D],i,[n,fe,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[i,[r,"Acer"],[n,b]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[i,[r,"Meizu"],[n,w]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[i,[r,"Ulefone"],[n,w]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[i,[r,"Energizer"],[n,w]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[i,[r,"Cat"],[n,w]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[i,[r,"Smartfren"],[n,w]],[/droid.+; (a(?:015|06[35]|142p?))/i],[i,[r,"Nothing"],[n,w]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,/; (imo) ((?!tab)[\w ]+?)(?: bui|\))/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[r,i,[n,w]],[/(imo) (tab \w+)/i,/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[r,i,[n,b]],[/(surface duo)/i],[i,[r,Re],[n,b]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[i,[r,"Fairphone"],[n,w]],[/(u304aa)/i],[i,[r,"AT&T"],[n,w]],[/\bsie-(\w*)/i],[i,[r,"Siemens"],[n,w]],[/\b(rct\w+) b/i],[i,[r,"RCA"],[n,b]],[/\b(venue[\d ]{2,7}) b/i],[i,[r,"Dell"],[n,b]],[/\b(q(?:mv|ta)\w+) b/i],[i,[r,"Verizon"],[n,b]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[i,[r,"Barnes & Noble"],[n,b]],[/\b(tm\d{3}\w+) b/i],[i,[r,"NuVision"],[n,b]],[/\b(k88) b/i],[i,[r,"ZTE"],[n,b]],[/\b(nx\d{3}j) b/i],[i,[r,"ZTE"],[n,w]],[/\b(gen\d{3}) b.+49h/i],[i,[r,"Swiss"],[n,w]],[/\b(zur\d{3}) b/i],[i,[r,"Swiss"],[n,b]],[/\b((zeki)?tb.*\b) b/i],[i,[r,"Zeki"],[n,b]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[r,"Dragon Touch"],i,[n,b]],[/\b(ns-?\w{0,9}) b/i],[i,[r,"Insignia"],[n,b]],[/\b((nxa|next)-?\w{0,9}) b/i],[i,[r,"NextBook"],[n,b]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[r,"Voice"],i,[n,w]],[/\b(lvtel\-)?(v1[12]) b/i],[[r,"LvTel"],i,[n,w]],[/\b(ph-1) /i],[i,[r,"Essential"],[n,w]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[i,[r,"Envizen"],[n,b]],[/\b(trio[-\w\. ]+) b/i],[i,[r,"MachSpeed"],[n,b]],[/\btu_(1491) b/i],[i,[r,"Rotor"],[n,b]],[/(shield[\w ]+) b/i],[i,[r,"Nvidia"],[n,b]],[/(sprint) (\w+)/i],[r,i,[n,w]],[/(kin\.[onetw]{3})/i],[[i,/\./g," "],[r,Re],[n,w]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[i,[r,Ce],[n,b]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[i,[r,Ce],[n,w]],[/smart-tv.+(samsung)/i],[r,[n,E]],[/hbbtv.+maple;(\d+)/i],[[i,/^/,"SmartTV"],[r,Q],[n,E]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[r,Me],[n,E]],[/(apple) ?tv/i],[r,[i,Y+" TV"],[n,E]],[/crkey/i],[[i,le+"cast"],[r,Z],[n,E]],[/droid.+aft(\w+)( bui|\))/i],[i,[r,ce],[n,E]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[i,[r,rt],[n,E]],[/(bravia[\w ]+)( bui|\))/i],[i,[r,me],[n,E]],[/(mitv-\w{5}) bui/i],[i,[r,Ae],[n,E]],[/Hbbtv.*(technisat) (.*);/i],[r,i,[n,E]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[r,Oe],[i,Oe],[n,E]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[n,E]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[r,i,[n,K]],[/droid.+; (shield) bui/i],[i,[r,"Nvidia"],[n,K]],[/(playstation [345portablevi]+)/i],[i,[r,me],[n,K]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[i,[r,Re],[n,K]],[/\b(sm-[lr]\d\d[05][fnuw]?s?)\b/i],[i,[r,Q],[n,O]],[/((pebble))app/i],[r,i,[n,O]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[i,[r,Y],[n,O]],[/droid.+; (glass) \d/i],[i,[r,Z],[n,O]],[/droid.+; (wt63?0{2,3})\)/i],[i,[r,Ce],[n,O]],[/droid.+; (glass) \d/i],[i,[r,Z],[n,O]],[/(pico) (4|neo3(?: link|pro)?)/i],[r,i,[n,O]],[/; (quest( \d| pro)?)/i],[i,[r,ot],[n,O]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[r,[n,Ie]],[/(aeobc)\b/i],[i,[r,ce],[n,Ie]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[i,[n,w]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[i,[n,b]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[n,b]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[n,w]],[/(android[-\w\. ]{0,9});.+buil/i],[i,[r,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[c,[a,zt+"HTML"]],[/(arkweb)\/([\w\.]+)/i],[a,c],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[c,[a,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[a,c],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[c,a]],os:[[/microsoft (windows) (vista|xp)/i],[a,c],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[a,[c,fe,lt]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[c,fe,lt],[a,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[c,/_/g,"."],[a,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[a,st],[c,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[c,a],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish|openharmony)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[a,c],[/\(bb(10);/i],[c,[a,tt]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[c,[a,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[c,[a,pe+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[c,[a,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[c,[a,"watchOS"]],[/crkey\/([\d\.]+)/i],[c,[a,le+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[a,at],c],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[a,c],[/(sunos) ?([\w\.\d]*)/i],[[a,"Solaris"],c],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[a,c]]},P=function(v,h){if(typeof v===y&&(h=v,v=t),!(this instanceof P))return new P(v,h).getResult();var f=typeof e!==d&&e.navigator?e.navigator:t,k=v||(f&&f.userAgent?f.userAgent:u),L=f&&f.userAgentData?f.userAgentData:t,R=h?jt(pt,h):pt,g=f&&f.userAgent==k;return this.getBrowser=function(){var m={};return m[a]=t,m[c]=t,ee.call(m,k,R.browser),m[T]=Ht(m[c]),g&&f&&f.brave&&typeof f.brave.isBrave==l&&(m[a]="Brave"),m},this.getCPU=function(){var m={};return m[M]=t,ee.call(m,k,R.cpu),m},this.getDevice=function(){var m={};return m[r]=t,m[i]=t,m[n]=t,ee.call(m,k,R.device),g&&!m[n]&&L&&L.mobile&&(m[n]=w),g&&m[i]=="Macintosh"&&f&&typeof f.standalone!==d&&f.maxTouchPoints&&f.maxTouchPoints>2&&(m[i]="iPad",m[n]=b),m},this.getEngine=function(){var m={};return m[a]=t,m[c]=t,ee.call(m,k,R.engine),m},this.getOS=function(){var m={};return m[a]=t,m[c]=t,ee.call(m,k,R.os),g&&!m[a]&&L&&L.platform&&L.platform!="Unknown"&&(m[a]=L.platform.replace(/chrome os/i,at).replace(/macos/i,st)),m},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return k},this.setUA=function(m){return k=typeof m===p&&m.length>Ne?Oe(m,Ne):m,this},this.setUA(k),this};P.VERSION=o,P.BROWSER=de([a,c,T]),P.CPU=de([M]),P.DEVICE=de([i,r,n,K,w,E,b,O,Ie]),P.ENGINE=P.OS=de([a,c]),typeof ae!==d?(typeof Se!==d&&Se.exports&&(ae=Se.exports=P),ae.UAParser=P):typeof define===l&&define.amd?define(function(){return P}):typeof e!==d&&(e.UAParser=P);var F=typeof e!==d&&(e.jQuery||e.Zepto);if(F&&!F.ua){var we=new P;F.ua=we.getResult(),F.ua.get=function(){return we.getUA()},F.ua.set=function(v){we.setUA(v);var h=we.getResult();for(var f in h)F.ua[f]=h[f]}}})(typeof window=="object"?window:ae)});import{webcrypto as ft}from"node:crypto";var dt="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var ii=128,B,z;function ni(e){!B||B.length<e?(B=Buffer.allocUnsafe(e*ii),ft.getRandomValues(B),z=0):z+e>B.length&&(ft.getRandomValues(B),z=0),z+=e}function j(e=21){ni(e|=0);let t="";for(let o=z-e;o<z;o++)t+=dt[B[o]&63];return t}var wt="http://localhost:5987";var _=e=>e==null,S=e=>!_(e),H=e=>S(e)&&e!=="",bt=e=>!H(e);var ri="__bigint__",vt=(e,t)=>typeof t=="bigint"?{[ri]:`${t}`}:t;var Be=class extends Error{constructor(o,u){super(`[${o}] Orbiter Error: ${u}`);this.status=o;this.statusText=u}},be=class{#e;constructor({container:t,orbiterId:o}){let s=S(t)&&t!==!1?t===!0?wt:t:"https://icp0.io",{protocol:l,host:d}=new URL(s);this.#e=`${l}//${o}.${d}`}postPageViews=async({request:t})=>await this.post({path:"/views",payload:t});postTrackEvents=async({request:t})=>await this.post({path:"/events",payload:t});postPerformanceMetrics=async({request:t})=>await this.post({path:"/metrics",payload:t});post=async({path:t,payload:o})=>{let u=await fetch(`${this.#e}${t}`,{method:"POST",keepalive:!0,headers:{"Content-Type":"application/json"},body:JSON.stringify(o,vt)});if(!u.ok)throw new Be(u.status,u.statusText);return await u.json()}};var ve=class{#e;#t;constructor(t){this.#e=t,this.#t=new be(t)}setPageView=async t=>{let o={...this.satelliteId(),page_views:[t]};return await this.#t.postPageViews({request:o})};setTrackEvent=async t=>{let o={...this.satelliteId(),track_events:[t]};return await this.#t.postTrackEvents({request:o})};setPerformanceMetric=async t=>{let o={...this.satelliteId(),performance_metrics:[t]};return await this.#t.postPerformanceMetrics({request:o})};satelliteId(){return{satellite_id:this.#e.satelliteId}}};var ht=()=>BigInt(Date.now())*BigInt(1e6);var G=()=>({collected_at:ht()}),te=()=>{let{userAgent:e}=navigator;return S(e)?{user_agent:e}:{}},gt=()=>{let{location:{search:e}}=document,t=new URLSearchParams(e),o=t.get("utm_source");if(_(o)||bt(o))return{withCampaign:!1};let u=t.get("utm_medium"),s=t.get("utm_campaign"),l=t.get("utm_term"),d=t.get("utm_content");return{withCampaign:!0,campaign:{utm_source:o,...H(u)&&{utm_medium:u},...H(s)&&{utm_campaign:s},...H(l)&&{utm_term:l},...H(d)&&{utm_content:d}}}};var Pe=class e{async startPerformance({sessionId:t,postPerformanceMetric:o}){let{onCLS:u,onFCP:s,onINP:l,onLCP:d,onTTFB:y}=await Promise.resolve().then(()=>(Ct(),At)),p=T=>{(async()=>await e.setPerformanceMetric({metric:{...T,sessionId:t},postPerformanceMetric:o}))()};u(p),s(p),l(p),d(p),y(p)}static setPerformanceMetric=async({metric:t,postPerformanceMetric:o})=>{let u=e.mapPerformanceMetric(t);if(u==="unknown"){console.warn("Performance metric ignored. Unknown metric name.",t);return}u!=="deprecated"&&await o({key:{key:j(),...G()},performance_metric:u})};static mapPerformanceMetric({sessionId:t,name:o,value:u,delta:s,id:l,navigationType:d}){let p=(()=>{switch(o){case"CLS":case"FCP":case"INP":case"LCP":case"TTFB":return o;case"FID":return"deprecated";default:return"unknown"}})();if(p==="unknown"||p==="deprecated")return p;let i=(()=>{switch(d){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}})(),a={value:u,delta:s,id:l,...S(i)&&{navigation_type:i}},{location:{href:n}}=document;return{href:n,metric_name:p,session_id:t,data:{WebVitalsMetric:a},...te()}}};var xe=class{async parseUserAgent(t){if(_(t))return;let o=await Promise.resolve().then(()=>ti(Ot(),1)),u=new o.default(t),{browser:s,os:l,device:d}=u.getResult();if(!(_(s.name)||_(l.name)))return{browser:s.name,os:l.name,device:d?.type}}};var Ye=class extends Error{},V=(e,t)=>{if(e==null)throw new Ye(t)};var _e=()=>typeof window<"u";var gi="Unable to connect to the analytics services. Did you call `initOrbiter`?",se=e=>{_(e)&&console.warn(gi)};var yi=()=>{if(!(typeof crypto>"u"))return j()},X=yi(),x,Lt=e=>(x={orbiter:new ve(e),userAgent:e.options?.userAgentParser===!0?new xe:null,performance:e.options?.performance===!0?new Pe:null},{cleanup(){x=null}}),qt=()=>{let e=async()=>await Qe(),t=new Proxy(history.pushState,{apply:async(o,u,s)=>{o.apply(u,s),await e()}});return history.pushState=t,addEventListener("popstate",e,{passive:!0}),{cleanup(){t=null,removeEventListener("popstate",e,!1)}}},Ze="No session ID initialized.",Je=async()=>{if(!_e())return;V(X,Ze);let{title:e,location:{href:t},referrer:o}=document,{innerWidth:u,innerHeight:s,screen:l}=window,{timeZone:d}=Intl.DateTimeFormat().resolvedOptions(),{user_agent:y}=te(),p=S(x?.userAgent)?await x?.userAgent.parseUserAgent(y):void 0,{withCampaign:T,campaign:i}=gt(),n={title:e,href:(()=>{if(!T)return t;let r=URL.parse(t);return _(r)?t:(Object.keys(i??{}).forEach(c=>r.searchParams.delete(c)),r.href)})(),...S(o)&&o!==""&&{referrer:o},device:{inner_width:u,inner_height:s,screen_width:l?.availWidth,screen_height:l?.availHeight},time_zone:d,session_id:X,user_agent:y,...S(p)&&{client:p},...S(i)&&{campaign:i}};se(x),await x?.orbiter?.setPageView({key:{key:j(),...G()},page_view:n})},Bt=async()=>{if(!_e()||_(x?.performance))return;V(X,Ze),se(x);let e=async t=>{se(x),await x?.orbiter?.setPerformanceMetric(t)};await x.performance.startPerformance({sessionId:X,postPerformanceMetric:e})},ki=()=>{Qe()},Qe=async()=>{await Je()},Ti=e=>{Ut(e)},Ut=async e=>{_e()&&(V(X,Ze),se(x),await x?.orbiter?.setTrackEvent({key:{key:j(),...G()},track_event:{...e,session_id:X,...te(),...G()}}))};var Vt=()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_SATELLITE_ID??import.meta.env?.PUBLIC_SATELLITE_ID:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_SATELLITE_ID??e():e()},Dt=()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_ORBITER_ID??import.meta.env?.PUBLIC_ORBITER_ID:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_ORBITER_ID??e():e()},Ft=()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_CONTAINER??import.meta.env?.PUBLIC_CONTAINER:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_CONTAINER??e():e()};var Ei=e=>{let t=e?.satelliteId??Vt();V(t,"Satellite ID is not configured. Orbiter cannot be initialized without a target Satellite.");let o=e?.orbiterId??Dt();V(o,"Orbiter ID is not configured. The analytics cannot be initialized without an Orbiter.");let u=e?.container??Ft();return{orbiterId:o,satelliteId:t,container:u,options:e?.options}},fn=e=>{let t=Ei(e),{cleanup:o}=Lt(t);Je();let{cleanup:u}=qt();return Bt(),()=>{o(),u()}};export{fn as initOrbiter,Ti as trackEvent,Ut as trackEventAsync,ki as trackPageView,Qe as trackPageViewAsync};
|
|
3
|
+
var Vt=Object.create;var Ie=Object.defineProperty;var Dt=Object.getOwnPropertyDescriptor;var zt=Object.getOwnPropertyNames;var Ft=Object.getPrototypeOf,jt=Object.prototype.hasOwnProperty;var Ht=(t,e)=>()=>(t&&(e=t(t=0)),e);var Wt=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),$t=(t,e)=>{for(var a in e)Ie(t,a,{get:e[a],enumerable:!0})},Gt=(t,e,a,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let l of zt(e))!jt.call(t,l)&&l!==a&&Ie(t,l,{get:()=>e[l],enumerable:!(o=Dt(e,l))||o.enumerable});return t};var Xt=(t,e,a)=>(a=t!=null?Vt(Ft(t)):{},Gt(e||!t||!t.__esModule?Ie(a,"default",{value:t,enumerable:!0}):a,t));var St={};$t(St,{CLSThresholds:()=>Oe,FCPThresholds:()=>Ce,INPThresholds:()=>Be,LCPThresholds:()=>Ve,TTFBThresholds:()=>De,onCLS:()=>Qt,onFCP:()=>kt,onINP:()=>ii,onLCP:()=>ri,onTTFB:()=>ni});function He(t,e){return Ne.get(t)||Ne.set(t,new e),Ne.get(t)}var yt,H,R,Fe,je,Q,A,Ne,Ae,ee,We,j,ft,we,ht,Jt,Tt,be,Ce,kt,Oe,Qt,Pt,Re,pe,ei,Le,gt,ti,vt,qe,Et,Be,ii,Ue,Ve,ri,De,ze,ni,xt=Ht(()=>{yt=-1,H=t=>{addEventListener("pageshow",e=>{e.persisted&&(yt=e.timeStamp,t(e))},!0)},R=(t,e,a,o)=>{let l,p;return b=>{e.value>=0&&(b||o)&&(p=e.value-(l??0),(p||l===void 0)&&(l=e.value,e.delta=p,e.rating=((T,h)=>T>h[1]?"poor":T>h[0]?"needs-improvement":"good")(e.value,a),t(e)))}},Fe=t=>{requestAnimationFrame(()=>requestAnimationFrame(()=>t()))},je=()=>{let t=performance.getEntriesByType("navigation")[0];if(t&&t.responseStart>0&&t.responseStart<performance.now())return t},Q=()=>je()?.activationStart??0,A=(t,e=-1)=>{let a=je(),o="navigate";return yt>=0?o="back-forward-cache":a&&(document.prerendering||Q()>0?o="prerender":document.wasDiscarded?o="restore":a.type&&(o=a.type.replace(/_/g,"-"))),{name:t,value:e,rating:"good",delta:0,entries:[],id:`v5-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:o}},Ne=new WeakMap;Ae=class{t;i=0;o=[];h(e){if(e.hadRecentInput)return;let a=this.o[0],o=this.o.at(-1);this.i&&a&&o&&e.startTime-o.startTime<1e3&&e.startTime-a.startTime<5e3?(this.i+=e.value,this.o.push(e)):(this.i=e.value,this.o=[e]),this.t?.(e)}},ee=(t,e,a={})=>{try{if(PerformanceObserver.supportedEntryTypes.includes(t)){let o=new PerformanceObserver(l=>{Promise.resolve().then(()=>{e(l.getEntries())})});return o.observe({type:t,buffered:!0,...a}),o}}catch{}},We=t=>{let e=!1;return()=>{e||(t(),e=!0)}},j=-1,ft=()=>document.visibilityState!=="hidden"||document.prerendering?1/0:0,we=t=>{document.visibilityState==="hidden"&&j>-1&&(j=t.type==="visibilitychange"?t.timeStamp:0,Jt())},ht=()=>{addEventListener("visibilitychange",we,!0),addEventListener("prerenderingchange",we,!0)},Jt=()=>{removeEventListener("visibilitychange",we,!0),removeEventListener("prerenderingchange",we,!0)},Tt=()=>{if(j<0){let t=Q();j=(document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").filter(a=>a.name==="hidden"&&a.startTime>t)[0]?.startTime)??ft(),ht(),H(()=>{setTimeout(()=>{j=ft(),ht()})})}return{get firstHiddenTime(){return j}}},be=t=>{document.prerendering?addEventListener("prerenderingchange",()=>t(),!0):t()},Ce=[1800,3e3],kt=(t,e={})=>{be(()=>{let a=Tt(),o,l=A("FCP"),p=ee("paint",b=>{for(let T of b)T.name==="first-contentful-paint"&&(p.disconnect(),T.startTime<a.firstHiddenTime&&(l.value=Math.max(T.startTime-Q(),0),l.entries.push(T),o(!0)))});p&&(o=R(t,l,Ce,e.reportAllChanges),H(b=>{l=A("FCP"),o=R(t,l,Ce,e.reportAllChanges),Fe(()=>{l.value=performance.now()-b.timeStamp,o(!0)})}))})},Oe=[.1,.25],Qt=(t,e={})=>{kt(We(()=>{let a,o=A("CLS",0),l=He(e,Ae),p=T=>{for(let h of T)l.h(h);l.i>o.value&&(o.value=l.i,o.entries=l.o,a())},b=ee("layout-shift",p);b&&(a=R(t,o,Oe,e.reportAllChanges),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&(p(b.takeRecords()),a(!0))}),H(()=>{l.i=0,o=A("CLS",0),a=R(t,o,Oe,e.reportAllChanges),Fe(()=>a())}),setTimeout(a))}))},Pt=0,Re=1/0,pe=0,ei=t=>{for(let e of t)e.interactionId&&(Re=Math.min(Re,e.interactionId),pe=Math.max(pe,e.interactionId),Pt=pe?(pe-Re)/7+1:0)},gt=()=>Le?Pt:performance.interactionCount??0,ti=()=>{"interactionCount"in performance||Le||(Le=ee("event",ei,{type:"event",buffered:!0,durationThreshold:0}))},vt=0,qe=class{u=[];l=new Map;m;v;p(){vt=gt(),this.u.length=0,this.l.clear()}P(){let e=Math.min(this.u.length-1,Math.floor((gt()-vt)/50));return this.u[e]}h(e){if(this.m?.(e),!e.interactionId&&e.entryType!=="first-input")return;let a=this.u.at(-1),o=this.l.get(e.interactionId);if(o||this.u.length<10||e.duration>a.T){if(o?e.duration>o.T?(o.entries=[e],o.T=e.duration):e.duration===o.T&&e.startTime===o.entries[0].startTime&&o.entries.push(e):(o={id:e.interactionId,entries:[e],T:e.duration},this.l.set(o.id,o),this.u.push(o)),this.u.sort((l,p)=>p.T-l.T),this.u.length>10){let l=this.u.splice(10);for(let p of l)this.l.delete(p.id)}this.v?.(o)}}},Et=t=>{let e=globalThis.requestIdleCallback||setTimeout;document.visibilityState==="hidden"?t():(t=We(t),document.addEventListener("visibilitychange",t,{once:!0}),e(()=>{t(),document.removeEventListener("visibilitychange",t)}))},Be=[200,500],ii=(t,e={})=>{globalThis.PerformanceEventTiming&&"interactionId"in PerformanceEventTiming.prototype&&be(()=>{ti();let a,o=A("INP"),l=He(e,qe),p=T=>{Et(()=>{for(let k of T)l.h(k);let h=l.P();h&&h.T!==o.value&&(o.value=h.T,o.entries=h.entries,a())})},b=ee("event",p,{durationThreshold:e.durationThreshold??40});a=R(t,o,Be,e.reportAllChanges),b&&(b.observe({type:"first-input",buffered:!0}),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&(p(b.takeRecords()),a(!0))}),H(()=>{l.p(),o=A("INP"),a=R(t,o,Be,e.reportAllChanges)}))})},Ue=class{m;h(e){this.m?.(e)}},Ve=[2500,4e3],ri=(t,e={})=>{be(()=>{let a=Tt(),o,l=A("LCP"),p=He(e,Ue),b=h=>{e.reportAllChanges||(h=h.slice(-1));for(let k of h)p.h(k),k.startTime<a.firstHiddenTime&&(l.value=Math.max(k.startTime-Q(),0),l.entries=[k],o())},T=ee("largest-contentful-paint",b);if(T){o=R(t,l,Ve,e.reportAllChanges);let h=We(()=>{b(T.takeRecords()),T.disconnect(),o(!0)});for(let k of["keydown","click","visibilitychange"])addEventListener(k,()=>Et(h),{capture:!0,once:!0});H(k=>{l=A("LCP"),o=R(t,l,Ve,e.reportAllChanges),Fe(()=>{l.value=performance.now()-k.timeStamp,o(!0)})})}})},De=[800,1800],ze=t=>{document.prerendering?be(()=>ze(t)):document.readyState!=="complete"?addEventListener("load",()=>ze(t),!0):setTimeout(t)},ni=(t,e={})=>{let a=A("TTFB"),o=R(t,a,De,e.reportAllChanges);ze(()=>{let l=je();l&&(a.value=Math.max(l.responseStart-Q(),0),a.entries=[l],o(!0),H(()=>{a=A("TTFB",0),o=R(t,a,De,e.reportAllChanges),o(!0)}))})}});var _t=Wt((te,he)=>{(function(t,e){"use strict";var a="1.0.40",o="",l="?",p="function",b="undefined",T="object",h="string",k="major",r="model",s="name",i="type",n="vendor",c="version",I="architecture",$="console",d="mobile",w="tablet",P="smarttv",C="wearable",ye="embedded",Te=500,re="Amazon",G="Apple",Ye="ASUS",Ze="BlackBerry",ne="Browser",oe="Chrome",Lt="Edge",ae="Firefox",X="Google",Je="Huawei",ke="LG",Pe="Microsoft",Qe="Motorola",K="Opera",Y="Samsung",et="Sharp",se="Sony",Ee="Xiaomi",Se="Zebra",tt="Facebook",it="Chromium OS",rt="Mac OS",nt=" Browser",qt=function(f,g){var m={};for(var y in f)g[y]&&g[y].length%2===0?m[y]=g[y].concat(f[y]):m[y]=f[y];return m},ce=function(f){for(var g={},m=0;m<f.length;m++)g[f[m].toUpperCase()]=f[m];return g},ot=function(f,g){return typeof f===h?B(g).indexOf(B(f))!==-1:!1},B=function(f){return f.toLowerCase()},Bt=function(f){return typeof f===h?f.replace(/[^\d\.]/g,o).split(".")[0]:e},xe=function(f,g){if(typeof f===h)return f=f.replace(/^\s\s*/,o),typeof g===b?f:f.substring(0,Te)},Z=function(f,g){for(var m=0,y,O,M,v,u,N;m<g.length&&!u;){var _e=g[m],ct=g[m+1];for(y=O=0;y<_e.length&&!u&&_e[y];)if(u=_e[y++].exec(f),u)for(M=0;M<ct.length;M++)N=u[++O],v=ct[M],typeof v===T&&v.length>0?v.length===2?typeof v[1]==p?this[v[0]]=v[1].call(this,N):this[v[0]]=v[1]:v.length===3?typeof v[1]===p&&!(v[1].exec&&v[1].test)?this[v[0]]=N?v[1].call(this,N,v[2]):e:this[v[0]]=N?N.replace(v[1],v[2]):e:v.length===4&&(this[v[0]]=N?v[3].call(this,N.replace(v[1],v[2])):e):this[v]=N||e;m+=2}},le=function(f,g){for(var m in g)if(typeof g[m]===T&&g[m].length>0){for(var y=0;y<g[m].length;y++)if(ot(g[m][y],f))return m===l?e:m}else if(ot(g[m],f))return m===l?e:m;return g.hasOwnProperty("*")?g["*"]:f},Ut={"1.0":"/8","1.2":"/1","1.3":"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"},at={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2","8.1":"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},st={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[c,[s,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[c,[s,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[s,c],[/opios[\/ ]+([\w\.]+)/i],[c,[s,K+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[c,[s,K+" GX"]],[/\bopr\/([\w\.]+)/i],[c,[s,K]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[c,[s,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[c,[s,"Maxthon"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\/([-\w\.]+)/i,/(heytap|ovi|115)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[s,c],[/quark(?:pc)?\/([-\w\.]+)/i],[c,[s,"Quark"]],[/\bddg\/([\w\.]+)/i],[c,[s,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[c,[s,"UC"+ne]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[c,[s,"WeChat"]],[/konqueror\/([\w\.]+)/i],[c,[s,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[c,[s,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[c,[s,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[c,[s,"Smart Lenovo "+ne]],[/(avast|avg)\/([\w\.]+)/i],[[s,/(.+)/,"$1 Secure "+ne],c],[/\bfocus\/([\w\.]+)/i],[c,[s,ae+" Focus"]],[/\bopt\/([\w\.]+)/i],[c,[s,K+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[c,[s,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[c,[s,"Dolphin"]],[/coast\/([\w\.]+)/i],[c,[s,K+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[c,[s,"MIUI"+nt]],[/fxios\/([\w\.-]+)/i],[c,[s,ae]],[/\bqihoobrowser\/?([\w\.]*)/i],[c,[s,"360"]],[/\b(qq)\/([\w\.]+)/i],[[s,/(.+)/,"$1Browser"],c],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[s,/(.+)/,"$1"+nt],c],[/samsungbrowser\/([\w\.]+)/i],[c,[s,Y+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[c,[s,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[s,"Sogou Mobile"],c],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[s,c],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[s],[/ome\/([\w\.]+) \w* ?(iron) saf/i,/ome\/([\w\.]+).+qihu (360)[es]e/i],[c,s],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[s,tt],c],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[s,c],[/\bgsa\/([\w\.]+) .*safari\//i],[c,[s,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[c,[s,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[c,[s,oe+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[s,oe+" WebView"],c],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[c,[s,"Android "+ne]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[s,c],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[c,[s,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[c,s],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[s,[c,le,Ut]],[/(webkit|khtml)\/([\w\.]+)/i],[s,c],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[s,"Netscape"],c],[/(wolvic|librewolf)\/([\w\.]+)/i],[s,c],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[c,[s,ae+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i],[s,[c,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[s,[c,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[I,"amd64"]],[/(ia32(?=;))/i],[[I,B]],[/((?:i[346]|x)86)[;\)]/i],[[I,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[I,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[I,"armhf"]],[/windows (ce|mobile); ppc;/i],[[I,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[I,/ower/,o,B]],[/(sun4\w)[;\)]/i],[[I,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[I,B]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[r,[n,Y],[i,w]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[r,[n,Y],[i,d]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[r,[n,G],[i,d]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[r,[n,G],[i,w]],[/(macintosh);/i],[r,[n,G]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[r,[n,et],[i,d]],[/(?:honor)([-\w ]+)[;\)]/i],[r,[n,"Honor"],[i,d]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[r,[n,Je],[i,w]],[/(?:huawei)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[r,[n,Je],[i,d]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i],[[r,/_/g," "],[n,Ee],[i,d]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[r,/_/g," "],[n,Ee],[i,w]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[r,[n,"OPPO"],[i,d]],[/\b(opd2\d{3}a?) bui/i],[r,[n,"OPPO"],[i,w]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[r,[n,"Vivo"],[i,d]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[r,[n,"Realme"],[i,d]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[r,[n,Qe],[i,d]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[r,[n,Qe],[i,w]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[r,[n,ke],[i,w]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[r,[n,ke],[i,d]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[r,[n,"Lenovo"],[i,w]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[r,/_/g," "],[n,"Nokia"],[i,d]],[/(pixel c)\b/i],[r,[n,X],[i,w]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[r,[n,X],[i,d]],[/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[r,[n,se],[i,d]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[r,"Xperia Tablet"],[n,se],[i,w]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[r,[n,"OnePlus"],[i,d]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[r,[n,re],[i,w]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[r,/(.+)/g,"Fire Phone $1"],[n,re],[i,d]],[/(playbook);[-\w\),; ]+(rim)/i],[r,n,[i,w]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[r,[n,Ze],[i,d]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[r,[n,Ye],[i,w]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[r,[n,Ye],[i,d]],[/(nexus 9)/i],[r,[n,"HTC"],[i,w]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[n,[r,/_/g," "],[i,d]],[/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\w*(\)| bui)/i],[r,[n,"TCL"],[i,w]],[/(itel) ((\w+))/i],[[n,B],r,[i,le,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[r,[n,"Acer"],[i,w]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[r,[n,"Meizu"],[i,d]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[r,[n,"Ulefone"],[i,d]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[r,[n,"Energizer"],[i,d]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[r,[n,"Cat"],[i,d]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[r,[n,"Smartfren"],[i,d]],[/droid.+; (a(?:015|06[35]|142p?))/i],[r,[n,"Nothing"],[i,d]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,/; (imo) ((?!tab)[\w ]+?)(?: bui|\))/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[n,r,[i,d]],[/(imo) (tab \w+)/i,/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[n,r,[i,w]],[/(surface duo)/i],[r,[n,Pe],[i,w]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[r,[n,"Fairphone"],[i,d]],[/(u304aa)/i],[r,[n,"AT&T"],[i,d]],[/\bsie-(\w*)/i],[r,[n,"Siemens"],[i,d]],[/\b(rct\w+) b/i],[r,[n,"RCA"],[i,w]],[/\b(venue[\d ]{2,7}) b/i],[r,[n,"Dell"],[i,w]],[/\b(q(?:mv|ta)\w+) b/i],[r,[n,"Verizon"],[i,w]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[r,[n,"Barnes & Noble"],[i,w]],[/\b(tm\d{3}\w+) b/i],[r,[n,"NuVision"],[i,w]],[/\b(k88) b/i],[r,[n,"ZTE"],[i,w]],[/\b(nx\d{3}j) b/i],[r,[n,"ZTE"],[i,d]],[/\b(gen\d{3}) b.+49h/i],[r,[n,"Swiss"],[i,d]],[/\b(zur\d{3}) b/i],[r,[n,"Swiss"],[i,w]],[/\b((zeki)?tb.*\b) b/i],[r,[n,"Zeki"],[i,w]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[n,"Dragon Touch"],r,[i,w]],[/\b(ns-?\w{0,9}) b/i],[r,[n,"Insignia"],[i,w]],[/\b((nxa|next)-?\w{0,9}) b/i],[r,[n,"NextBook"],[i,w]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[n,"Voice"],r,[i,d]],[/\b(lvtel\-)?(v1[12]) b/i],[[n,"LvTel"],r,[i,d]],[/\b(ph-1) /i],[r,[n,"Essential"],[i,d]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[r,[n,"Envizen"],[i,w]],[/\b(trio[-\w\. ]+) b/i],[r,[n,"MachSpeed"],[i,w]],[/\btu_(1491) b/i],[r,[n,"Rotor"],[i,w]],[/(shield[\w ]+) b/i],[r,[n,"Nvidia"],[i,w]],[/(sprint) (\w+)/i],[n,r,[i,d]],[/(kin\.[onetw]{3})/i],[[r,/\./g," "],[n,Pe],[i,d]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[r,[n,Se],[i,w]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[r,[n,Se],[i,d]],[/smart-tv.+(samsung)/i],[n,[i,P]],[/hbbtv.+maple;(\d+)/i],[[r,/^/,"SmartTV"],[n,Y],[i,P]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[n,ke],[i,P]],[/(apple) ?tv/i],[n,[r,G+" TV"],[i,P]],[/crkey/i],[[r,oe+"cast"],[n,X],[i,P]],[/droid.+aft(\w+)( bui|\))/i],[r,[n,re],[i,P]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[r,[n,et],[i,P]],[/(bravia[\w ]+)( bui|\))/i],[r,[n,se],[i,P]],[/(mitv-\w{5}) bui/i],[r,[n,Ee],[i,P]],[/Hbbtv.*(technisat) (.*);/i],[n,r,[i,P]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[n,xe],[r,xe],[i,P]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[i,P]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[n,r,[i,$]],[/droid.+; (shield) bui/i],[r,[n,"Nvidia"],[i,$]],[/(playstation [345portablevi]+)/i],[r,[n,se],[i,$]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[r,[n,Pe],[i,$]],[/\b(sm-[lr]\d\d[05][fnuw]?s?)\b/i],[r,[n,Y],[i,C]],[/((pebble))app/i],[n,r,[i,C]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[r,[n,G],[i,C]],[/droid.+; (glass) \d/i],[r,[n,X],[i,C]],[/droid.+; (wt63?0{2,3})\)/i],[r,[n,Se],[i,C]],[/droid.+; (glass) \d/i],[r,[n,X],[i,C]],[/(pico) (4|neo3(?: link|pro)?)/i],[n,r,[i,C]],[/; (quest( \d| pro)?)/i],[r,[n,tt],[i,C]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[n,[i,ye]],[/(aeobc)\b/i],[r,[n,re],[i,ye]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[r,[i,d]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[r,[i,w]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[i,w]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[i,d]],[/(android[-\w\. ]{0,9});.+buil/i],[r,[n,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[c,[s,Lt+"HTML"]],[/(arkweb)\/([\w\.]+)/i],[s,c],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[c,[s,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[s,c],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[c,s]],os:[[/microsoft (windows) (vista|xp)/i],[s,c],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[s,[c,le,at]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[c,le,at],[s,"Windows"]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[c,/_/g,"."],[s,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[s,rt],[c,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[c,s],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish|openharmony)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[s,c],[/\(bb(10);/i],[c,[s,Ze]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[c,[s,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[c,[s,ae+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[c,[s,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[c,[s,"watchOS"]],[/crkey\/([\d\.]+)/i],[c,[s,oe+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[s,it],c],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[s,c],[/(sunos) ?([\w\.\d]*)/i],[[s,"Solaris"],c],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[s,c]]},E=function(f,g){if(typeof f===T&&(g=f,f=e),!(this instanceof E))return new E(f,g).getResult();var m=typeof t!==b&&t.navigator?t.navigator:e,y=f||(m&&m.userAgent?m.userAgent:o),O=m&&m.userAgentData?m.userAgentData:e,M=g?qt(st,g):st,v=m&&m.userAgent==y;return this.getBrowser=function(){var u={};return u[s]=e,u[c]=e,Z.call(u,y,M.browser),u[k]=Bt(u[c]),v&&m&&m.brave&&typeof m.brave.isBrave==p&&(u[s]="Brave"),u},this.getCPU=function(){var u={};return u[I]=e,Z.call(u,y,M.cpu),u},this.getDevice=function(){var u={};return u[n]=e,u[r]=e,u[i]=e,Z.call(u,y,M.device),v&&!u[i]&&O&&O.mobile&&(u[i]=d),v&&u[r]=="Macintosh"&&m&&typeof m.standalone!==b&&m.maxTouchPoints&&m.maxTouchPoints>2&&(u[r]="iPad",u[i]=w),u},this.getEngine=function(){var u={};return u[s]=e,u[c]=e,Z.call(u,y,M.engine),u},this.getOS=function(){var u={};return u[s]=e,u[c]=e,Z.call(u,y,M.os),v&&!u[s]&&O&&O.platform&&O.platform!="Unknown"&&(u[s]=O.platform.replace(/chrome os/i,it).replace(/macos/i,rt)),u},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return y},this.setUA=function(u){return y=typeof u===h&&u.length>Te?xe(u,Te):u,this},this.setUA(y),this};E.VERSION=a,E.BROWSER=ce([s,c,k]),E.CPU=ce([I]),E.DEVICE=ce([r,n,i,$,d,P,w,C,ye]),E.ENGINE=E.OS=ce([s,c]),typeof te!==b?(typeof he!==b&&he.exports&&(te=he.exports=E),te.UAParser=E):typeof define===p&&define.amd?define(function(){return E}):typeof t!==b&&(t.UAParser=E);var U=typeof t!==b&&(t.jQuery||t.Zepto);if(U&&!U.ua){var ue=new E;U.ua=ue.getResult(),U.ua.get=function(){return ue.getUA()},U.ua.set=function(f){ue.setUA(f);var g=ue.getResult();for(var m in g)U.ua[m]=g[m]}}})(typeof window=="object"?window:te)});import{webcrypto as ut}from"node:crypto";var lt="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var Kt=128,L,V;function Yt(t){!L||L.length<t?(L=Buffer.allocUnsafe(t*Kt),ut.getRandomValues(L),V=0):V+t>L.length&&(ut.getRandomValues(L),V=0),V+=t}function D(t=21){Yt(t|=0);let e="";for(let a=V-t;a<V;a++)e+=lt[L[a]&63];return e}var mt="http://localhost:5987";var _=t=>t==null,S=t=>!_(t),z=t=>S(t)&&t!=="",dt=t=>!z(t);var Zt="__bigint__",pt=(t,e)=>typeof e=="bigint"?{[Zt]:`${e}`}:e;var Me=class extends Error{constructor(a,o){super(`[${a}] Orbiter Error: ${o}`);this.status=a;this.statusText=o}},me=class{#e;constructor({container:e,orbiterId:a}){let l=S(e)&&e!==!1?e===!0?mt:e:"https://icp0.io",{protocol:p,host:b}=new URL(l);this.#e=`${p}//${a}.${b}`}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:a})=>{let o=await fetch(`${this.#e}${e}`,{method:"POST",keepalive:!0,headers:{"Content-Type":"application/json"},body:JSON.stringify(a,pt)});if(!o.ok)throw new Me(o.status,o.statusText);return await o.json()}};var de=class{#e;#t;constructor(e){this.#e=e,this.#t=new me(e)}setPageView=async e=>{let a={...this.satelliteId(),page_views:[e]};return await this.#t.postPageViews({request:a})};setTrackEvent=async e=>{let a={...this.satelliteId(),track_events:[e]};return await this.#t.postTrackEvents({request:a})};setPerformanceMetric=async e=>{let a={...this.satelliteId(),performance_metrics:[e]};return await this.#t.postPerformanceMetrics({request:a})};satelliteId(){return{satellite_id:this.#e.satelliteId}}};var wt=()=>BigInt(Date.now())*BigInt(1e6);var F=()=>({collected_at:wt()}),J=()=>{let{userAgent:t}=navigator;return S(t)?{user_agent:t}:{}},bt=()=>{let{location:{search:t}}=document,e=new URLSearchParams(t),a=e.get("utm_source");if(_(a)||dt(a))return{withCampaign:!1};let o=e.get("utm_medium"),l=e.get("utm_campaign"),p=e.get("utm_term"),b=e.get("utm_content");return{withCampaign:!0,campaign:{utm_source:a,...z(o)&&{utm_medium:o},...z(l)&&{utm_campaign:l},...z(p)&&{utm_term:p},...z(b)&&{utm_content:b}}}};var fe=class t{async startPerformance({sessionId:e,postPerformanceMetric:a}){let{onCLS:o,onFCP:l,onINP:p,onLCP:b,onTTFB:T}=await Promise.resolve().then(()=>(xt(),St)),h=k=>{(async()=>await t.setPerformanceMetric({metric:{...k,sessionId:e},postPerformanceMetric:a}))()};o(h),l(h),p(h),b(h),T(h)}static setPerformanceMetric=async({metric:e,postPerformanceMetric:a})=>{let o=t.mapPerformanceMetric(e);if(o==="unknown"){console.warn("Performance metric ignored. Unknown metric name.",e);return}await a({key:{key:D(),...F()},performance_metric:o})};static mapPerformanceMetric({sessionId:e,name:a,value:o,delta:l,id:p,navigationType:b}){let h=(()=>{switch(a){case"CLS":case"FCP":case"INP":case"LCP":case"TTFB":return a;default:return"unknown"}})();if(h==="unknown")return h;let r=(()=>{switch(b){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}})(),s={value:o,delta:l,id:p,...S(r)&&{navigation_type:r}},{location:{href:i}}=document;return{href:i,metric_name:h,session_id:e,data:{WebVitalsMetric:s},...J()}}};var ge=class{async parseUserAgent(e){if(_(e))return;let a=await Promise.resolve().then(()=>Xt(_t(),1)),o=new a.default(e),{browser:l,os:p,device:b}=o.getResult();if(!(_(l.name)||_(p.name)))return{browser:l.name,os:p.name,device:b?.type}}};var $e=class extends Error{},q=(t,e)=>{if(t==null)throw new $e(e)};var ve=()=>typeof window<"u";var oi="Unable to connect to the analytics services. Did you call `initOrbiter`?",ie=t=>{_(t)&&console.warn(oi)};var ai=()=>{if(!(typeof crypto>"u"))return D()},W=ai(),x,It=t=>(x={orbiter:new de(t),userAgent:t.options?.userAgentParser===!0?new ge:null,performance:t.options?.performance===!0?new fe:null},{cleanup(){x=null}}),Mt=()=>{let t=async()=>await Ke(),e=new Proxy(history.pushState,{apply:async(a,o,l)=>{a.apply(o,l),await t()}});return history.pushState=e,addEventListener("popstate",t,{passive:!0}),{cleanup(){e=null,removeEventListener("popstate",t,!1)}}},Ge="No session ID initialized.",Xe=async()=>{if(!ve())return;q(W,Ge);let{title:t,location:{href:e},referrer:a}=document,{innerWidth:o,innerHeight:l,screen:p}=window,{timeZone:b}=Intl.DateTimeFormat().resolvedOptions(),{user_agent:T}=J(),h=S(x?.userAgent)?await x?.userAgent.parseUserAgent(T):void 0,{withCampaign:k,campaign:r}=bt(),i={title:t,href:(()=>{if(!k)return e;let n=URL.parse(e);return _(n)?e:(Object.keys(r??{}).forEach(c=>n.searchParams.delete(c)),n.href)})(),...S(a)&&a!==""&&{referrer:a},device:{inner_width:o,inner_height:l,screen_width:p?.availWidth,screen_height:p?.availHeight},time_zone:b,session_id:W,user_agent:T,...S(h)&&{client:h},...S(r)&&{campaign:r}};ie(x),await x?.orbiter?.setPageView({key:{key:D(),...F()},page_view:i})},Nt=async()=>{if(!ve()||_(x?.performance))return;q(W,Ge),ie(x);let t=async e=>{ie(x),await x?.orbiter?.setPerformanceMetric(e)};await x.performance.startPerformance({sessionId:W,postPerformanceMetric:t})},si=()=>{Ke()},Ke=async()=>{await Xe()},ci=t=>{Rt(t)},Rt=async t=>{ve()&&(q(W,Ge),ie(x),await x?.orbiter?.setTrackEvent({key:{key:D(),...F()},track_event:{...t,session_id:W,...J(),...F()}}))};var At=()=>{let t=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_SATELLITE_ID??import.meta.env?.PUBLIC_SATELLITE_ID:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_SATELLITE_ID??t():t()},Ct=()=>{let t=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_ORBITER_ID??import.meta.env?.PUBLIC_ORBITER_ID:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_ORBITER_ID??t():t()},Ot=()=>{let t=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_CONTAINER??import.meta.env?.PUBLIC_CONTAINER:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_CONTAINER??t():t()};var li=t=>{let e=t?.satelliteId??At();q(e,"Satellite ID is not configured. Orbiter cannot be initialized without a target Satellite.");let a=t?.orbiterId??Ct();q(a,"Orbiter ID is not configured. The analytics cannot be initialized without an Orbiter.");let o=t?.container??Ot();return{orbiterId:a,satelliteId:e,container:o,options:t?.options}},Qi=t=>{let e=li(t),{cleanup:a}=It(e);Xe();let{cleanup:o}=Mt();return Nt(),()=>{a(),o()}};export{Qi as initOrbiter,ci as trackEvent,Rt as trackEventAsync,si as trackPageView,Ke as trackPageViewAsync};
|
|
4
4
|
//# sourceMappingURL=index.mjs.map
|