@junobuild/analytics 0.1.8 → 0.2.0
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-YVLJX3HV.js +2 -0
- package/dist/browser/chunk-YVLJX3HV.js.map +7 -0
- package/dist/browser/chunk-ZUUQVOC7.js +2 -0
- package/dist/browser/chunk-ZUUQVOC7.js.map +7 -0
- package/dist/browser/index.js +1 -1
- package/dist/browser/index.js.map +4 -4
- package/dist/browser/tracker.js +2 -0
- package/dist/browser/tracker.js.map +7 -0
- package/dist/browser/ua-parser-GFKOYVJI.js +2 -0
- package/dist/browser/ua-parser-GFKOYVJI.js.map +7 -0
- package/dist/browser/web-vitals-YBMS6D2C.js +2 -0
- package/dist/browser/web-vitals-YBMS6D2C.js.map +7 -0
- package/dist/node/index.mjs +1 -1
- package/dist/node/index.mjs.map +4 -4
- package/dist/types/api/orbiter.api.d.ts +26 -0
- package/dist/types/constants/container.constants.d.ts +1 -0
- package/dist/types/index.d.ts +8 -3
- package/dist/types/services/orbiter.services.d.ts +10 -0
- package/dist/types/services/performance.services.d.ts +11 -1
- package/dist/types/services/user-agent.services.d.ts +4 -0
- package/dist/types/tracker.d.ts +37 -0
- package/dist/types/types/env.d.ts +10 -25
- package/dist/types/types/orbiter.d.ts +95 -0
- package/dist/types/types/track.d.ts +2 -4
- package/dist/types/utils/analytics.utils.d.ts +2 -3
- package/dist/types/utils/dfinity/asserts.utils.d.ts +7 -0
- package/dist/types/utils/dfinity/debounce.utils.d.ts +12 -0
- package/dist/types/utils/dfinity/json.utils.d.ts +25 -0
- package/dist/types/utils/dfinity/nullish.utils.d.ts +30 -0
- package/dist/types/utils/env.utils.d.ts +5 -0
- package/dist/types/utils/log.utils.d.ts +1 -1
- package/package.json +5 -10
- package/dist/browser/idb.services-CVJFLYYN.js +0 -2
- package/dist/browser/idb.services-CVJFLYYN.js.map +0 -7
- package/dist/browser/web-vitals-JGDN2KW5.js +0 -2
- package/dist/browser/web-vitals-JGDN2KW5.js.map +0 -7
- package/dist/declarations/orbiter/orbiter.did.d.ts +0 -229
- package/dist/declarations/orbiter/orbiter.factory.certified.did.js +0 -255
- package/dist/declarations/orbiter/orbiter.factory.did.js +0 -271
- package/dist/declarations/orbiter/orbiter.factory.did.mjs +0 -271
- package/dist/types/api/actor.api.d.ts +0 -3
- package/dist/types/services/analytics.services.d.ts +0 -25
- package/dist/types/services/idb.services.d.ts +0 -19
- package/dist/types/types/idb.d.ts +0 -12
- package/dist/types/types/post-message.d.ts +0 -7
- package/dist/types/utils/actor.utils.d.ts +0 -6
- package/dist/types/workers/analytics.worker.d.ts +0 -1
- package/dist/workers/analytics.worker.js +0 -89
- package/dist/workers/analytics.worker.js.map +0 -7
package/dist/node/index.mjs.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../../../node_modules/web-vitals/dist/web-vitals.js", "
|
|
4
|
-
"sourcesContent": ["var e,n,t,r,i,o=-1,a=function(e){addEventListener(\"pageshow\",(function(n){n.persisted&&(o=n.timeStamp,e(n))}),!0)},c=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},u=function(){var e=c();return e&&e.activationStart||0},f=function(e,n){var t=c(),r=\"navigate\";o>=0?r=\"back-forward-cache\":t&&(document.prerendering||u()>0?r=\"prerender\":document.wasDiscarded?r=\"restore\":t.type&&(r=t.type.replace(/_/g,\"-\")));return{name:e,value:void 0===n?-1:n,rating:\"good\",delta:0,entries:[],id:\"v4-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},s=function(e,n,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){n(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},t||{})),r}}catch(e){}},d=function(e,n,t,r){var i,o;return function(a){n.value>=0&&(a||r)&&((o=n.value-(i||0))||void 0===i)&&(i=n.value,n.delta=o,n.rating=function(e,n){return e>n[1]?\"poor\":e>n[0]?\"needs-improvement\":\"good\"}(n.value,t),e(n))}},l=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){document.addEventListener(\"visibilitychange\",(function(){\"hidden\"===document.visibilityState&&e()}))},v=function(e){var n=!1;return function(){n||(e(),n=!0)}},m=-1,h=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},g=function(e){\"hidden\"===document.visibilityState&&m>-1&&(m=\"visibilitychange\"===e.type?e.timeStamp:0,T())},y=function(){addEventListener(\"visibilitychange\",g,!0),addEventListener(\"prerenderingchange\",g,!0)},T=function(){removeEventListener(\"visibilitychange\",g,!0),removeEventListener(\"prerenderingchange\",g,!0)},E=function(){return m<0&&(m=h(),y(),a((function(){setTimeout((function(){m=h(),y()}),0)}))),{get firstHiddenTime(){return m}}},C=function(e){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return e()}),!0):e()},b=[1800,3e3],S=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"FCP\"),o=s(\"paint\",(function(e){e.forEach((function(e){\"first-contentful-paint\"===e.name&&(o.disconnect(),e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-u(),0),i.entries.push(e),t(!0)))}))}));o&&(t=d(e,i,b,n.reportAllChanges),a((function(r){i=f(\"FCP\"),t=d(e,i,b,n.reportAllChanges),l((function(){i.value=performance.now()-r.timeStamp,t(!0)}))})))}))},L=[.1,.25],w=function(e,n){n=n||{},S(v((function(){var t,r=f(\"CLS\",0),i=0,o=[],c=function(e){e.forEach((function(e){if(!e.hadRecentInput){var n=o[0],t=o[o.length-1];i&&e.startTime-t.startTime<1e3&&e.startTime-n.startTime<5e3?(i+=e.value,o.push(e)):(i=e.value,o=[e])}})),i>r.value&&(r.value=i,r.entries=o,t())},u=s(\"layout-shift\",c);u&&(t=d(e,r,L,n.reportAllChanges),p((function(){c(u.takeRecords()),t(!0)})),a((function(){i=0,r=f(\"CLS\",0),t=d(e,r,L,n.reportAllChanges),l((function(){return t()}))})),setTimeout(t,0))})))},A=0,I=1/0,P=0,M=function(e){e.forEach((function(e){e.interactionId&&(I=Math.min(I,e.interactionId),P=Math.max(P,e.interactionId),A=P?(P-I)/7+1:0)}))},k=function(){return e?A:performance.interactionCount||0},F=function(){\"interactionCount\"in performance||e||(e=s(\"event\",M,{type:\"event\",buffered:!0,durationThreshold:0}))},D=[],x=new Map,R=0,B=function(){var e=Math.min(D.length-1,Math.floor((k()-R)/50));return D[e]},H=[],q=function(e){if(H.forEach((function(n){return n(e)})),e.interactionId||\"first-input\"===e.entryType){var n=D[D.length-1],t=x.get(e.interactionId);if(t||D.length<10||e.duration>n.latency){if(t)e.duration>t.latency?(t.entries=[e],t.latency=e.duration):e.duration===t.latency&&e.startTime===t.entries[0].startTime&&t.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};x.set(r.id,r),D.push(r)}D.sort((function(e,n){return n.latency-e.latency})),D.length>10&&D.splice(10).forEach((function(e){return x.delete(e.id)}))}}},O=function(e){var n=self.requestIdleCallback||self.setTimeout,t=-1;return e=v(e),\"hidden\"===document.visibilityState?e():(t=n(e),p(e)),t},N=[200,500],j=function(e,n){\"PerformanceEventTiming\"in self&&\"interactionId\"in PerformanceEventTiming.prototype&&(n=n||{},C((function(){var t;F();var r,i=f(\"INP\"),o=function(e){O((function(){e.forEach(q);var n=B();n&&n.latency!==i.value&&(i.value=n.latency,i.entries=n.entries,r())}))},c=s(\"event\",o,{durationThreshold:null!==(t=n.durationThreshold)&&void 0!==t?t:40});r=d(e,i,N,n.reportAllChanges),c&&(c.observe({type:\"first-input\",buffered:!0}),p((function(){o(c.takeRecords()),r(!0)})),a((function(){R=k(),D.length=0,x.clear(),i=f(\"INP\"),r=d(e,i,N,n.reportAllChanges)})))})))},_=[2500,4e3],z={},G=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"LCP\"),o=function(e){n.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-u(),0),i.entries=[e],t())}))},c=s(\"largest-contentful-paint\",o);if(c){t=d(e,i,_,n.reportAllChanges);var m=v((function(){z[i.id]||(o(c.takeRecords()),c.disconnect(),z[i.id]=!0,t(!0))}));[\"keydown\",\"click\"].forEach((function(e){addEventListener(e,(function(){return O(m)}),{once:!0,capture:!0})})),p(m),a((function(r){i=f(\"LCP\"),t=d(e,i,_,n.reportAllChanges),l((function(){i.value=performance.now()-r.timeStamp,z[i.id]=!0,t(!0)}))}))}}))},J=[800,1800],K=function e(n){document.prerendering?C((function(){return e(n)})):\"complete\"!==document.readyState?addEventListener(\"load\",(function(){return e(n)}),!0):setTimeout(n,0)},Q=function(e,n){n=n||{};var t=f(\"TTFB\"),r=d(e,t,J,n.reportAllChanges);K((function(){var i=c();i&&(t.value=Math.max(i.responseStart-u(),0),t.entries=[i],r(!0),a((function(){t=f(\"TTFB\",0),(r=d(e,t,J,n.reportAllChanges))(!0)})))}))},U={passive:!0,capture:!0},V=new Date,W=function(e,i){n||(n=i,t=e,r=new Date,Z(removeEventListener),X())},X=function(){if(t>=0&&t<r-V){var e={entryType:\"first-input\",name:n.type,target:n.target,cancelable:n.cancelable,startTime:n.timeStamp,processingStart:n.timeStamp+t};i.forEach((function(n){n(e)})),i=[]}},Y=function(e){if(e.cancelable){var n=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,n){var t=function(){W(e,n),i()},r=function(){i()},i=function(){removeEventListener(\"pointerup\",t,U),removeEventListener(\"pointercancel\",r,U)};addEventListener(\"pointerup\",t,U),addEventListener(\"pointercancel\",r,U)}(n,e):W(n,e)}},Z=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(n){return e(n,Y,U)}))},$=[100,300],ee=function(e,r){r=r||{},C((function(){var o,c=E(),u=f(\"FID\"),l=function(e){e.startTime<c.firstHiddenTime&&(u.value=e.processingStart-e.startTime,u.entries.push(e),o(!0))},m=function(e){e.forEach(l)},h=s(\"first-input\",m);o=d(e,u,$,r.reportAllChanges),h&&(p(v((function(){m(h.takeRecords()),h.disconnect()}))),a((function(){var a;u=f(\"FID\"),o=d(e,u,$,r.reportAllChanges),i=[],t=-1,n=null,Z(addEventListener),a=l,i.push(a),X()})))}))};export{L as CLSThresholds,b as FCPThresholds,$ as FIDThresholds,N as INPThresholds,_ as LCPThresholds,J as TTFBThresholds,w as onCLS,S as onFCP,ee as onFID,j as onINP,G as onLCP,Q as onTTFB};\n", "function promisifyRequest(request) {\n return new Promise((resolve, reject) => {\n // @ts-ignore - file size hacks\n request.oncomplete = request.onsuccess = () => resolve(request.result);\n // @ts-ignore - file size hacks\n request.onabort = request.onerror = () => reject(request.error);\n });\n}\nfunction createStore(dbName, storeName) {\n const request = indexedDB.open(dbName);\n request.onupgradeneeded = () => request.result.createObjectStore(storeName);\n const dbp = promisifyRequest(request);\n return (txMode, callback) => dbp.then((db) => callback(db.transaction(storeName, txMode).objectStore(storeName)));\n}\nlet defaultGetStoreFunc;\nfunction defaultGetStore() {\n if (!defaultGetStoreFunc) {\n defaultGetStoreFunc = createStore('keyval-store', 'keyval');\n }\n return defaultGetStoreFunc;\n}\n/**\n * Get a value by its key.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction get(key, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => promisifyRequest(store.get(key)));\n}\n/**\n * Set a value with a key.\n *\n * @param key\n * @param value\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction set(key, value, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.put(value, key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Set multiple values at once. This is faster than calling set() multiple times.\n * It's also atomic \u2013 if one of the pairs can't be added, none will be added.\n *\n * @param entries Array of entries, where each entry is an array of `[key, value]`.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction setMany(entries, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n entries.forEach((entry) => store.put(entry[1], entry[0]));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Get multiple values by their keys\n *\n * @param keys\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction getMany(keys, customStore = defaultGetStore()) {\n return customStore('readonly', (store) => Promise.all(keys.map((key) => promisifyRequest(store.get(key)))));\n}\n/**\n * Update a value. This lets you see the old value and update it as an atomic operation.\n *\n * @param key\n * @param updater A callback that takes the old value and returns a new value.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction update(key, updater, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => \n // Need to create the promise manually.\n // If I try to chain promises, the transaction closes in browsers\n // that use a promise polyfill (IE10/11).\n new Promise((resolve, reject) => {\n store.get(key).onsuccess = function () {\n try {\n store.put(updater(this.result), key);\n resolve(promisifyRequest(store.transaction));\n }\n catch (err) {\n reject(err);\n }\n };\n }));\n}\n/**\n * Delete a particular key from the store.\n *\n * @param key\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction del(key, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.delete(key);\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Delete multiple keys at once.\n *\n * @param keys List of keys to delete.\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction delMany(keys, customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n keys.forEach((key) => store.delete(key));\n return promisifyRequest(store.transaction);\n });\n}\n/**\n * Clear all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction clear(customStore = defaultGetStore()) {\n return customStore('readwrite', (store) => {\n store.clear();\n return promisifyRequest(store.transaction);\n });\n}\nfunction eachCursor(store, callback) {\n store.openCursor().onsuccess = function () {\n if (!this.result)\n return;\n callback(this.result);\n this.result.continue();\n };\n return promisifyRequest(store.transaction);\n}\n/**\n * Get all keys in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction keys(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAllKeys) {\n return promisifyRequest(store.getAllKeys());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.key)).then(() => items);\n });\n}\n/**\n * Get all values in the store.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction values(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n if (store.getAll) {\n return promisifyRequest(store.getAll());\n }\n const items = [];\n return eachCursor(store, (cursor) => items.push(cursor.value)).then(() => items);\n });\n}\n/**\n * Get all entries in the store. Each entry is an array of `[key, value]`.\n *\n * @param customStore Method to get a custom store. Use with caution (see the docs).\n */\nfunction entries(customStore = defaultGetStore()) {\n return customStore('readonly', (store) => {\n // Fast path for modern browsers\n // (although, hopefully we'll get a simpler path some day)\n if (store.getAll && store.getAllKeys) {\n return Promise.all([\n promisifyRequest(store.getAllKeys()),\n promisifyRequest(store.getAll()),\n ]).then(([keys, values]) => keys.map((key, i) => [key, values[i]]));\n }\n const items = [];\n return customStore('readonly', (store) => eachCursor(store, (cursor) => items.push([cursor.key, cursor.value])).then(() => items));\n });\n}\n\nexport { clear, createStore, del, delMany, entries, get, getMany, keys, promisifyRequest, set, setMany, update, values };\n", "import {createStore, delMany, entries, set} from 'idb-keyval';\nimport type {IdbKey, IdbPageView, IdbPerformanceMetric, IdbTrackEvent} from '../types/idb';\n\nconst viewsStore = createStore('juno-views', 'views');\nconst eventsStore = createStore('juno-events', 'events');\nconst metricsStore = createStore('juno-metrics', 'metrics');\n\nexport const setPageView = ({key, view}: {key: IdbKey; view: IdbPageView}): Promise<void> =>\n set(key, view, viewsStore);\n\nexport const getPageViews = (): Promise<[IDBValidKey, IdbPageView][]> => entries(viewsStore);\n\nexport const delPageViews = (keys: IDBValidKey[]): Promise<void> => delMany(keys, viewsStore);\n\nexport const setTrackEvent = ({key, track}: {key: IdbKey; track: IdbTrackEvent}): Promise<void> =>\n set(key, track, eventsStore);\n\nexport const getTrackEvents = (): Promise<[IDBValidKey, IdbTrackEvent][]> => entries(eventsStore);\n\nexport const delTrackEvents = (keys: IDBValidKey[]): Promise<void> => delMany(keys, eventsStore);\n\nexport const setPerformanceMetric = ({\n key,\n view\n}: {\n key: IdbKey;\n view: IdbPerformanceMetric;\n}): Promise<void> => set(key, view, metricsStore);\n\nexport const getPerformanceMetrics = (): Promise<[IDBValidKey, IdbPerformanceMetric][]> =>\n entries(metricsStore);\n\nexport const delPerformanceMetrics = (keys: IDBValidKey[]): Promise<void> =>\n delMany(keys, metricsStore);\n", "import {assertNonNullish} from '@dfinity/utils';\nimport {\n initTrackPageViews,\n initTrackPerformance,\n initWorker,\n setPageView,\n startTracking,\n stopTracking\n} from './services/analytics.services';\nimport type {Environment, UserEnvironment} from './types/env';\nimport {envContainer, envOrbiterId, envSatelliteId} from './utils/window.env.utils';\n\nexport {trackEvent, trackPageView} from './services/analytics.services';\nexport type * from './types/env';\n\nconst parseEnv = (userEnv?: UserEnvironment): Environment => {\n const satelliteId = userEnv?.satelliteId ?? envSatelliteId();\n\n assertNonNullish(\n satelliteId,\n 'Satellite ID is not configured. Orbiter cannot be initialized without a target Satellite.'\n );\n\n const orbiterId = userEnv?.orbiterId ?? envOrbiterId();\n\n assertNonNullish(\n orbiterId,\n 'Orbiter ID is not configured. The analytics cannot be initialized without an Orbiter.'\n );\n\n const container = userEnv?.container ?? envContainer();\n\n return {\n orbiterId,\n satelliteId,\n container,\n worker: userEnv?.worker,\n options: userEnv?.options\n };\n};\n\n/**\n * Initializes the Juno Analytics.\n * @param {UserEnvironment} [userEnv] - The optional user environment configuration. If no environment is provided, the variables injected by the Vite or NextJS plugins will be used.\n * @returns {Promise<() => void>} A promise that resolves to a cleanup function that stops tracking and cleans up resources.\n */\nexport const initOrbiter = async (userEnv?: UserEnvironment): Promise<() => void> => {\n // Save first page as soon as possible\n await setPageView();\n\n const env = parseEnv(userEnv);\n\n const {cleanup: workerCleanup} = initWorker(env);\n\n const {cleanup: pushHistoryCleanup} = initTrackPageViews();\n\n await initTrackPerformance(env);\n\n // Starting tracking will instantly sync the first page and the data from previous sessions that have not been synced yet\n startTracking();\n\n return () => {\n stopTracking();\n workerCleanup();\n pushHistoryCleanup();\n };\n};\n", "import {assertNonNullish, nonNullish, toNullable} from '@dfinity/utils';\nimport {isBrowser} from '@junobuild/utils';\nimport {nanoid} from 'nanoid';\nimport type {Environment, EnvironmentWorker} from '../types/env';\nimport type {IdbPageView} from '../types/idb';\nimport type {PostMessageInitEnvData} from '../types/post-message';\nimport type {TrackEvent} from '../types/track';\nimport {timestamp, userAgent} from '../utils/analytics.utils';\nimport {warningWorkerNotInitialized} from '../utils/log.utils';\nimport {startPerformance} from './performance.services';\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\nlet worker: Worker | undefined;\n\nexport const initWorker = (env: Environment): {cleanup: () => void} => {\n const {path}: EnvironmentWorker = env.worker ?? {};\n const workerUrl = path ?? './workers/analytics.worker.js';\n\n worker = new Worker(workerUrl);\n\n const consoleWarn = () =>\n console.warn('Unable to connect to the analytics web worker. Have you deployed it?');\n\n worker?.addEventListener('error', consoleWarn, false);\n\n initWorkerEnvironment(env);\n\n return {\n cleanup() {\n worker?.removeEventListener('error', consoleWarn, false);\n }\n };\n};\n\nexport const initTrackPageViews = (): {cleanup: () => void} => {\n const trackPages = async () => await trackPageView();\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} = window;\n const {timeZone} = Intl.DateTimeFormat().resolvedOptions();\n\n const data: IdbPageView = {\n title,\n href,\n referrer: toNullable(nonNullish(referrer) && referrer !== '' ? referrer : undefined),\n device: {\n inner_width: innerWidth,\n inner_height: innerHeight\n },\n time_zone: timeZone,\n session_id: sessionId,\n ...userAgent(),\n ...timestamp()\n };\n\n const idb = await import('./idb.services');\n await idb.setPageView({\n key: nanoid(),\n view: data\n });\n};\n\nexport const initTrackPerformance = async ({options}: Environment) => {\n if (!isBrowser()) {\n return;\n }\n\n if (options?.performance === false) {\n return;\n }\n\n assertNonNullish(sessionId, SESSION_ID_UNDEFINED_MSG);\n\n await startPerformance(sessionId);\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 trackPageView = async (): Promise<void> => {\n warningWorkerNotInitialized(worker);\n\n await setPageView();\n\n worker?.postMessage({msg: 'junoTrackPageView'});\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 trackEvent = async (data: TrackEvent): Promise<void> => {\n if (!isBrowser()) {\n return;\n }\n\n assertNonNullish(sessionId, SESSION_ID_UNDEFINED_MSG);\n warningWorkerNotInitialized(worker);\n\n const idb = await import('./idb.services');\n await idb.setTrackEvent({\n key: nanoid(),\n track: {...data, session_id: sessionId, ...userAgent(), ...timestamp()}\n });\n\n worker?.postMessage({msg: 'junoTrackEvent'});\n};\n\nexport const initWorkerEnvironment = (env: PostMessageInitEnvData) => {\n warningWorkerNotInitialized(worker);\n\n worker?.postMessage({msg: 'junoInitEnvironment', data: env});\n};\n\nexport const startTracking = () => {\n warningWorkerNotInitialized(worker);\n\n worker?.postMessage({msg: 'junoStartTrackTimer'});\n};\n\nexport const stopTracking = () => {\n warningWorkerNotInitialized(worker);\n\n worker?.postMessage({msg: 'junoStopTracker'});\n};\n", "import { webcrypto as crypto } from 'node:crypto'\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nconst POOL_SIZE_MULTIPLIER = 128\nlet pool, poolOffset\nfunction fillPool(bytes) {\n if (!pool || pool.length < bytes) {\n pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER)\n crypto.getRandomValues(pool)\n poolOffset = 0\n } else if (poolOffset + bytes > pool.length) {\n crypto.getRandomValues(pool)\n poolOffset = 0\n }\n poolOffset += bytes\n}\nexport function random(bytes) {\n fillPool((bytes |= 0))\n return pool.subarray(poolOffset - bytes, poolOffset)\n}\nexport function customRandom(alphabet, defaultSize, getRandom) {\n let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1\n let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let i = step\n while (i--) {\n id += alphabet[bytes[i] & mask] || ''\n if (id.length >= size) return id\n }\n }\n }\n}\nexport function customAlphabet(alphabet, size = 21) {\n return customRandom(alphabet, size, random)\n}\nexport function nanoid(size = 21) {\n fillPool((size |= 0))\n let id = ''\n for (let i = poolOffset - size; i < poolOffset; i++) {\n id += scopedUrlAlphabet[pool[i] & 63]\n }\n return id\n}\n", "export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n", "import {toNullable} from '@dfinity/utils';\nimport {nowInBigIntNanoSeconds} from './date.utils';\n\nexport const timestamp = (): {\n collected_at: bigint;\n updated_at: [] | [bigint];\n version: [] | [bigint];\n} => ({\n collected_at: nowInBigIntNanoSeconds(),\n updated_at: [],\n version: []\n});\n\nexport const userAgent = (): {user_agent: [] | [string]} => {\n const {userAgent} = navigator;\n return {user_agent: toNullable(userAgent)};\n};\n", "export const nowInBigIntNanoSeconds = (): bigint => BigInt(Date.now()) * BigInt(1e6);\n", "import {isNullish} from '@dfinity/utils';\n\nconst WORKER_UNDEFINED_MSG = 'Analytics worker not initialized. Did you call `initOrbiter`?';\n\nexport const warningWorkerNotInitialized = <T>(value: T) => {\n if (isNullish(value)) {\n console.warn(WORKER_UNDEFINED_MSG);\n }\n};\n", "import {toNullable} from '@dfinity/utils';\nimport {nanoid} from 'nanoid';\nimport type {Metric} from 'web-vitals';\nimport type {\n NavigationType,\n PerformanceMetricName,\n WebVitalsMetric\n} from '../../declarations/orbiter/orbiter.did';\nimport type {IdbPerformanceMetric} from '../types/idb';\nimport {timestamp, userAgent} from '../utils/analytics.utils';\n\ntype SessionMetric = Omit<Metric, 'navigationType'> &\n Partial<Pick<Metric, 'navigationType'>> & {sessionId: string};\n\nexport const startPerformance = async (sessionId: string) => {\n const {onCLS, onFCP, onINP, onLCP, onTTFB} = await import('web-vitals');\n\n const setMetric = (metric: Metric) => {\n (async () => {\n await setPerformanceMetric({...metric, sessionId});\n })();\n };\n\n onCLS(setMetric);\n onFCP(setMetric);\n onINP(setMetric);\n onLCP(setMetric);\n onTTFB(setMetric);\n};\n\nconst setPerformanceMetric = async (metric: SessionMetric) => {\n const data = 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 const idb = await import('./idb.services');\n await idb.setPerformanceMetric({\n key: nanoid(),\n view: data\n });\n};\n\nconst mapPerformanceMetric = ({\n sessionId,\n name: metricName,\n value,\n delta,\n id,\n navigationType\n}: SessionMetric): IdbPerformanceMetric | 'deprecated' | 'unknown' => {\n const mapMetricName = (): PerformanceMetricName | 'deprecated' | 'unknown' => {\n switch (metricName) {\n case 'CLS':\n return {CLS: null};\n case 'FCP':\n return {FCP: null};\n case 'INP':\n return {INP: null};\n case 'LCP':\n return {LCP: null};\n case 'TTFB':\n return {TTFB: null};\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 = (): NavigationType | undefined => {\n switch (navigationType) {\n case 'navigate':\n return {Navigate: null};\n case 'restore':\n return {Restore: null};\n case 'reload':\n return {Reload: null};\n case 'back-forward':\n return {BackForward: null};\n case 'back-forward-cache':\n return {BackForwardCache: null};\n case 'prerender':\n return {Prerender: null};\n default:\n return undefined;\n }\n };\n\n const data: WebVitalsMetric = {\n value,\n delta,\n id,\n navigation_type: toNullable(mapNavigationType())\n };\n\n const {\n location: {href}\n } = document;\n\n const {updated_at: _, ...timestampRest} = timestamp();\n\n const metric: IdbPerformanceMetric = {\n href,\n metric_name,\n session_id: sessionId,\n data: {\n WebVitalsMetric: data\n },\n ...userAgent(),\n ...timestampRest\n };\n\n return metric;\n};\n", "// TODO: duplicated because those should not be bundled in web worker. We can avoid this by transforming utils into a library of modules.\ninterface ImportMeta {\n env: Record<string, string> | undefined;\n}\n\nexport const envSatelliteId = (): string | undefined => {\n const viteEnvSatelliteId = (): string | undefined =>\n typeof import.meta !== 'undefined' &&\n typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n ? ((import.meta as unknown as ImportMeta).env?.VITE_SATELLITE_ID ??\n (import.meta as unknown as ImportMeta).env?.PUBLIC_SATELLITE_ID)\n : undefined;\n\n return typeof process !== 'undefined'\n ? (process.env?.NEXT_PUBLIC_SATELLITE_ID ?? viteEnvSatelliteId())\n : viteEnvSatelliteId();\n};\n\nexport const envOrbiterId = (): string | undefined => {\n const viteEnvOrbiterId = (): string | undefined =>\n typeof import.meta !== 'undefined' &&\n typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n ? ((import.meta as unknown as ImportMeta).env?.VITE_ORBITER_ID ??\n (import.meta as unknown as ImportMeta).env?.PUBLIC_ORBITER_ID)\n : undefined;\n\n return typeof process !== 'undefined'\n ? (process.env?.NEXT_PUBLIC_ORBITER_ID ?? viteEnvOrbiterId())\n : viteEnvOrbiterId();\n};\n\nexport const envContainer = (): string | undefined => {\n const viteEnvContainer = (): string | undefined =>\n typeof import.meta !== 'undefined' &&\n typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n ? ((import.meta as unknown as ImportMeta).env?.VITE_CONTAINER ??\n (import.meta as unknown as ImportMeta).env?.PUBLIC_CONTAINER)\n : undefined;\n\n return typeof process !== 'undefined'\n ? (process.env?.NEXT_PUBLIC_CONTAINER ?? viteEnvContainer())\n : viteEnvContainer();\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["web_vitals_exports", "__export", "L", "b", "$", "N", "_", "J", "w", "S", "ee", "j", "G", "Q", "e", "n", "t", "r", "i", "o", "a", "c", "u", "f", "s", "d", "l", "p", "v", "m", "h", "g", "y", "T", "E", "C", "A", "I", "P", "M", "k", "F", "D", "x", "R", "B", "H", "q", "O", "K", "U", "V", "W", "X", "Y", "Z", "init_web_vitals", "__esmMin", "
|
|
3
|
+
"sources": ["../../../../node_modules/web-vitals/dist/web-vitals.js", "../../node_modules/ua-parser-js/src/ua-parser.js", "../../../../node_modules/nanoid/index.js", "../../../../node_modules/nanoid/url-alphabet/index.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", "../../src/utils/window.env.utils.ts", "../../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["var e,n,t,r,i,o=-1,a=function(e){addEventListener(\"pageshow\",(function(n){n.persisted&&(o=n.timeStamp,e(n))}),!0)},c=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},u=function(){var e=c();return e&&e.activationStart||0},f=function(e,n){var t=c(),r=\"navigate\";o>=0?r=\"back-forward-cache\":t&&(document.prerendering||u()>0?r=\"prerender\":document.wasDiscarded?r=\"restore\":t.type&&(r=t.type.replace(/_/g,\"-\")));return{name:e,value:void 0===n?-1:n,rating:\"good\",delta:0,entries:[],id:\"v4-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},s=function(e,n,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){n(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},t||{})),r}}catch(e){}},d=function(e,n,t,r){var i,o;return function(a){n.value>=0&&(a||r)&&((o=n.value-(i||0))||void 0===i)&&(i=n.value,n.delta=o,n.rating=function(e,n){return e>n[1]?\"poor\":e>n[0]?\"needs-improvement\":\"good\"}(n.value,t),e(n))}},l=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){document.addEventListener(\"visibilitychange\",(function(){\"hidden\"===document.visibilityState&&e()}))},v=function(e){var n=!1;return function(){n||(e(),n=!0)}},m=-1,h=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},g=function(e){\"hidden\"===document.visibilityState&&m>-1&&(m=\"visibilitychange\"===e.type?e.timeStamp:0,T())},y=function(){addEventListener(\"visibilitychange\",g,!0),addEventListener(\"prerenderingchange\",g,!0)},T=function(){removeEventListener(\"visibilitychange\",g,!0),removeEventListener(\"prerenderingchange\",g,!0)},E=function(){return m<0&&(m=h(),y(),a((function(){setTimeout((function(){m=h(),y()}),0)}))),{get firstHiddenTime(){return m}}},C=function(e){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return e()}),!0):e()},b=[1800,3e3],S=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"FCP\"),o=s(\"paint\",(function(e){e.forEach((function(e){\"first-contentful-paint\"===e.name&&(o.disconnect(),e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-u(),0),i.entries.push(e),t(!0)))}))}));o&&(t=d(e,i,b,n.reportAllChanges),a((function(r){i=f(\"FCP\"),t=d(e,i,b,n.reportAllChanges),l((function(){i.value=performance.now()-r.timeStamp,t(!0)}))})))}))},L=[.1,.25],w=function(e,n){n=n||{},S(v((function(){var t,r=f(\"CLS\",0),i=0,o=[],c=function(e){e.forEach((function(e){if(!e.hadRecentInput){var n=o[0],t=o[o.length-1];i&&e.startTime-t.startTime<1e3&&e.startTime-n.startTime<5e3?(i+=e.value,o.push(e)):(i=e.value,o=[e])}})),i>r.value&&(r.value=i,r.entries=o,t())},u=s(\"layout-shift\",c);u&&(t=d(e,r,L,n.reportAllChanges),p((function(){c(u.takeRecords()),t(!0)})),a((function(){i=0,r=f(\"CLS\",0),t=d(e,r,L,n.reportAllChanges),l((function(){return t()}))})),setTimeout(t,0))})))},A=0,I=1/0,P=0,M=function(e){e.forEach((function(e){e.interactionId&&(I=Math.min(I,e.interactionId),P=Math.max(P,e.interactionId),A=P?(P-I)/7+1:0)}))},k=function(){return e?A:performance.interactionCount||0},F=function(){\"interactionCount\"in performance||e||(e=s(\"event\",M,{type:\"event\",buffered:!0,durationThreshold:0}))},D=[],x=new Map,R=0,B=function(){var e=Math.min(D.length-1,Math.floor((k()-R)/50));return D[e]},H=[],q=function(e){if(H.forEach((function(n){return n(e)})),e.interactionId||\"first-input\"===e.entryType){var n=D[D.length-1],t=x.get(e.interactionId);if(t||D.length<10||e.duration>n.latency){if(t)e.duration>t.latency?(t.entries=[e],t.latency=e.duration):e.duration===t.latency&&e.startTime===t.entries[0].startTime&&t.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};x.set(r.id,r),D.push(r)}D.sort((function(e,n){return n.latency-e.latency})),D.length>10&&D.splice(10).forEach((function(e){return x.delete(e.id)}))}}},O=function(e){var n=self.requestIdleCallback||self.setTimeout,t=-1;return e=v(e),\"hidden\"===document.visibilityState?e():(t=n(e),p(e)),t},N=[200,500],j=function(e,n){\"PerformanceEventTiming\"in self&&\"interactionId\"in PerformanceEventTiming.prototype&&(n=n||{},C((function(){var t;F();var r,i=f(\"INP\"),o=function(e){O((function(){e.forEach(q);var n=B();n&&n.latency!==i.value&&(i.value=n.latency,i.entries=n.entries,r())}))},c=s(\"event\",o,{durationThreshold:null!==(t=n.durationThreshold)&&void 0!==t?t:40});r=d(e,i,N,n.reportAllChanges),c&&(c.observe({type:\"first-input\",buffered:!0}),p((function(){o(c.takeRecords()),r(!0)})),a((function(){R=k(),D.length=0,x.clear(),i=f(\"INP\"),r=d(e,i,N,n.reportAllChanges)})))})))},_=[2500,4e3],z={},G=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"LCP\"),o=function(e){n.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-u(),0),i.entries=[e],t())}))},c=s(\"largest-contentful-paint\",o);if(c){t=d(e,i,_,n.reportAllChanges);var m=v((function(){z[i.id]||(o(c.takeRecords()),c.disconnect(),z[i.id]=!0,t(!0))}));[\"keydown\",\"click\"].forEach((function(e){addEventListener(e,(function(){return O(m)}),{once:!0,capture:!0})})),p(m),a((function(r){i=f(\"LCP\"),t=d(e,i,_,n.reportAllChanges),l((function(){i.value=performance.now()-r.timeStamp,z[i.id]=!0,t(!0)}))}))}}))},J=[800,1800],K=function e(n){document.prerendering?C((function(){return e(n)})):\"complete\"!==document.readyState?addEventListener(\"load\",(function(){return e(n)}),!0):setTimeout(n,0)},Q=function(e,n){n=n||{};var t=f(\"TTFB\"),r=d(e,t,J,n.reportAllChanges);K((function(){var i=c();i&&(t.value=Math.max(i.responseStart-u(),0),t.entries=[i],r(!0),a((function(){t=f(\"TTFB\",0),(r=d(e,t,J,n.reportAllChanges))(!0)})))}))},U={passive:!0,capture:!0},V=new Date,W=function(e,i){n||(n=i,t=e,r=new Date,Z(removeEventListener),X())},X=function(){if(t>=0&&t<r-V){var e={entryType:\"first-input\",name:n.type,target:n.target,cancelable:n.cancelable,startTime:n.timeStamp,processingStart:n.timeStamp+t};i.forEach((function(n){n(e)})),i=[]}},Y=function(e){if(e.cancelable){var n=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,n){var t=function(){W(e,n),i()},r=function(){i()},i=function(){removeEventListener(\"pointerup\",t,U),removeEventListener(\"pointercancel\",r,U)};addEventListener(\"pointerup\",t,U),addEventListener(\"pointercancel\",r,U)}(n,e):W(n,e)}},Z=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(n){return e(n,Y,U)}))},$=[100,300],ee=function(e,r){r=r||{},C((function(){var o,c=E(),u=f(\"FID\"),l=function(e){e.startTime<c.firstHiddenTime&&(u.value=e.processingStart-e.startTime,u.entries.push(e),o(!0))},m=function(e){e.forEach(l)},h=s(\"first-input\",m);o=d(e,u,$,r.reportAllChanges),h&&(p(v((function(){m(h.takeRecords()),h.disconnect()}))),a((function(){var a;u=f(\"FID\"),o=d(e,u,$,r.reportAllChanges),i=[],t=-1,n=null,Z(addEventListener),a=l,i.push(a),X()})))}))};export{L as CLSThresholds,b as FCPThresholds,$ as FIDThresholds,N as INPThresholds,_ as LCPThresholds,J as TTFBThresholds,w as onCLS,S as onFCP,ee as onFID,j as onINP,G as onLCP,Q as onTTFB};\n", "/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v1.0.40\n Copyright \u00A9 2012-2024 Faisal Salman <f@faisalman.com>\n MIT License *//*\n Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n Supports browser & node.js environment. \n Demo : https://faisalman.github.io/ua-parser-js\n Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n(function (window, undefined) {\n\n 'use strict';\n\n //////////////\n // Constants\n /////////////\n\n\n var LIBVERSION = '1.0.40',\n EMPTY = '',\n UNKNOWN = '?',\n FUNC_TYPE = 'function',\n UNDEF_TYPE = 'undefined',\n OBJ_TYPE = 'object',\n STR_TYPE = 'string',\n MAJOR = 'major',\n MODEL = 'model',\n NAME = 'name',\n TYPE = 'type',\n VENDOR = 'vendor',\n VERSION = 'version',\n ARCHITECTURE= 'architecture',\n CONSOLE = 'console',\n MOBILE = 'mobile',\n TABLET = 'tablet',\n SMARTTV = 'smarttv',\n WEARABLE = 'wearable',\n EMBEDDED = 'embedded',\n UA_MAX_LENGTH = 500;\n\n var AMAZON = 'Amazon',\n APPLE = 'Apple',\n ASUS = 'ASUS',\n BLACKBERRY = 'BlackBerry',\n BROWSER = 'Browser',\n CHROME = 'Chrome',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n GOOGLE = 'Google',\n HUAWEI = 'Huawei',\n LG = 'LG',\n MICROSOFT = 'Microsoft',\n MOTOROLA = 'Motorola',\n OPERA = 'Opera',\n SAMSUNG = 'Samsung',\n SHARP = 'Sharp',\n SONY = 'Sony',\n XIAOMI = 'Xiaomi',\n ZEBRA = 'Zebra',\n FACEBOOK = 'Facebook',\n CHROMIUM_OS = 'Chromium OS',\n MAC_OS = 'Mac OS',\n SUFFIX_BROWSER = ' Browser';\n\n ///////////\n // Helper\n //////////\n\n var extend = function (regexes, extensions) {\n var mergedRegexes = {};\n for (var i in regexes) {\n if (extensions[i] && extensions[i].length % 2 === 0) {\n mergedRegexes[i] = extensions[i].concat(regexes[i]);\n } else {\n mergedRegexes[i] = regexes[i];\n }\n }\n return mergedRegexes;\n },\n enumerize = function (arr) {\n var enums = {};\n for (var i=0; i<arr.length; i++) {\n enums[arr[i].toUpperCase()] = arr[i];\n }\n return enums;\n },\n has = function (str1, str2) {\n return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n },\n lowerize = function (str) {\n return str.toLowerCase();\n },\n majorize = function (version) {\n return typeof(version) === STR_TYPE ? version.replace(/[^\\d\\.]/g, EMPTY).split('.')[0] : undefined;\n },\n trim = function (str, len) {\n if (typeof(str) === STR_TYPE) {\n str = str.replace(/^\\s\\s*/, EMPTY);\n return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n }\n };\n\n ///////////////\n // Map helper\n //////////////\n\n var rgxMapper = function (ua, arrays) {\n\n var i = 0, j, k, p, q, matches, match;\n\n // loop through all regexes maps\n while (i < arrays.length && !matches) {\n\n var regex = arrays[i], // even sequence (0,2,4,..)\n props = arrays[i + 1]; // odd sequence (1,3,5,..)\n j = k = 0;\n\n // try matching uastring with regexes\n while (j < regex.length && !matches) {\n\n if (!regex[j]) { break; }\n matches = regex[j++].exec(ua);\n\n if (!!matches) {\n for (p = 0; p < props.length; p++) {\n match = matches[++k];\n q = props[p];\n // check if given property is actually array\n if (typeof q === OBJ_TYPE && q.length > 0) {\n if (q.length === 2) {\n if (typeof q[1] == FUNC_TYPE) {\n // assign modified match\n this[q[0]] = q[1].call(this, match);\n } else {\n // assign given value, ignore regex match\n this[q[0]] = q[1];\n }\n } else if (q.length === 3) {\n // check whether function or regex\n if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n // call function (usually string mapper)\n this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n } else {\n // sanitize match using given regex\n this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n }\n } else if (q.length === 4) {\n this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n }\n } else {\n this[q] = match ? match : undefined;\n }\n }\n }\n }\n i += 2;\n }\n },\n\n strMapper = function (str, map) {\n\n for (var i in map) {\n // check if current value is array\n if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n for (var j = 0; j < map[i].length; j++) {\n if (has(map[i][j], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n } else if (has(map[i], str)) {\n return (i === UNKNOWN) ? undefined : i;\n }\n }\n return map.hasOwnProperty('*') ? map['*'] : str;\n };\n\n ///////////////\n // String map\n //////////////\n\n // Safari < 3.0\n var oldSafariMap = {\n '1.0' : '/8',\n '1.2' : '/1',\n '1.3' : '/3',\n '2.0' : '/412',\n '2.0.2' : '/416',\n '2.0.3' : '/417',\n '2.0.4' : '/419',\n '?' : '/'\n },\n windowsVersionMap = {\n 'ME' : '4.90',\n 'NT 3.11' : 'NT3.51',\n 'NT 4.0' : 'NT4.0',\n '2000' : 'NT 5.0',\n 'XP' : ['NT 5.1', 'NT 5.2'],\n 'Vista' : 'NT 6.0',\n '7' : 'NT 6.1',\n '8' : 'NT 6.2',\n '8.1' : 'NT 6.3',\n '10' : ['NT 6.4', 'NT 10.0'],\n 'RT' : 'ARM'\n };\n\n //////////////\n // Regex map\n /////////////\n\n var regexes = {\n\n browser : [[\n\n /\\b(?:crmo|crios)\\/([\\w\\.]+)/i // Chrome for Android/iOS\n ], [VERSION, [NAME, 'Chrome']], [\n /edg(?:e|ios|a)?\\/([\\w\\.]+)/i // Microsoft Edge\n ], [VERSION, [NAME, 'Edge']], [\n\n // Presto based\n /(opera mini)\\/([-\\w\\.]+)/i, // Opera Mini\n /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i, // Opera Mobi/Tablet\n /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i // Opera\n ], [NAME, VERSION], [\n /opios[\\/ ]+([\\w\\.]+)/i // Opera mini on iphone >= 8.0\n ], [VERSION, [NAME, OPERA+' Mini']], [\n /\\bop(?:rg)?x\\/([\\w\\.]+)/i // Opera GX\n ], [VERSION, [NAME, OPERA+' GX']], [\n /\\bopr\\/([\\w\\.]+)/i // Opera Webkit\n ], [VERSION, [NAME, OPERA]], [\n\n // Mixed\n /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i // Baidu\n ], [VERSION, [NAME, 'Baidu']], [\n /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i // Maxthon\n ], [VERSION, [NAME, 'Maxthon']], [\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i, \n // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n // Trident based\n /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n /(?:ms|\\()(ie) ([\\w\\.]+)/i, // Internet Explorer\n\n // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon\n /(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,\n // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n /(heytap|ovi|115)browser\\/([\\d\\.]+)/i, // HeyTap/Ovi/115\n /(weibo)__([\\d\\.]+)/i // Weibo\n ], [NAME, VERSION], [\n /quark(?:pc)?\\/([-\\w\\.]+)/i // Quark\n ], [VERSION, [NAME, 'Quark']], [\n /\\bddg\\/([\\w\\.]+)/i // DuckDuckGo\n ], [VERSION, [NAME, 'DuckDuckGo']], [\n /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i // UCBrowser\n ], [VERSION, [NAME, 'UC'+BROWSER]], [\n /microm.+\\bqbcore\\/([\\w\\.]+)/i, // WeChat Desktop for Windows Built-in Browser\n /\\bqbcore\\/([\\w\\.]+).+microm/i,\n /micromessenger\\/([\\w\\.]+)/i // WeChat\n ], [VERSION, [NAME, 'WeChat']], [\n /konqueror\\/([\\w\\.]+)/i // Konqueror\n ], [VERSION, [NAME, 'Konqueror']], [\n /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i // IE11\n ], [VERSION, [NAME, 'IE']], [\n /ya(?:search)?browser\\/([\\w\\.]+)/i // Yandex\n ], [VERSION, [NAME, 'Yandex']], [\n /slbrowser\\/([\\w\\.]+)/i // Smart Lenovo Browser\n ], [VERSION, [NAME, 'Smart Lenovo '+BROWSER]], [\n /(avast|avg)\\/([\\w\\.]+)/i // Avast/AVG Secure Browser\n ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [\n /\\bfocus\\/([\\w\\.]+)/i // Firefox Focus\n ], [VERSION, [NAME, FIREFOX+' Focus']], [\n /\\bopt\\/([\\w\\.]+)/i // Opera Touch\n ], [VERSION, [NAME, OPERA+' Touch']], [\n /coc_coc\\w+\\/([\\w\\.]+)/i // Coc Coc Browser\n ], [VERSION, [NAME, 'Coc Coc']], [\n /dolfin\\/([\\w\\.]+)/i // Dolphin\n ], [VERSION, [NAME, 'Dolphin']], [\n /coast\\/([\\w\\.]+)/i // Opera Coast\n ], [VERSION, [NAME, OPERA+' Coast']], [\n /miuibrowser\\/([\\w\\.]+)/i // MIUI Browser\n ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n /fxios\\/([\\w\\.-]+)/i // Firefox for iOS\n ], [VERSION, [NAME, FIREFOX]], [\n /\\bqihoobrowser\\/?([\\w\\.]*)/i // 360\n ], [VERSION, [NAME, '360']], [\n /\\b(qq)\\/([\\w\\.]+)/i // QQ\n ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n /samsungbrowser\\/([\\w\\.]+)/i // Samsung Internet\n ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n /metasr[\\/ ]?([\\d\\.]+)/i // Sogou Explorer\n ], [VERSION, [NAME, 'Sogou Explorer']], [\n /(sogou)mo\\w+\\/([\\d\\.]+)/i // Sogou Mobile\n ], [[NAME, 'Sogou Mobile'], VERSION], [\n /(electron)\\/([\\w\\.]+) safari/i, // Electron-based App\n /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i, // Tesla\n /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i // QQ/2345\n ], [NAME, VERSION], [\n /(lbbrowser|rekonq)/i, // LieBao Browser/Rekonq\n /\\[(linkedin)app\\]/i // LinkedIn App for iOS & Android\n ], [NAME], [\n /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i, // Iron\n /ome\\/([\\w\\.]+).+qihu (360)[es]e/i // 360\n ], [VERSION, NAME], [\n\n // WebView\n /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i // Facebook App for iOS & Android\n ], [[NAME, FACEBOOK], VERSION], [\n /(Klarna)\\/([\\w\\.]+)/i, // Klarna Shopping Browser for iOS & Android\n /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i, // Kakao App\n /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i, // Naver InApp\n /safari (line)\\/([\\w\\.]+)/i, // Line App for iOS\n /\\b(line)\\/([\\w\\.]+)\\/iab/i, // Line App for Android\n /(alipay)client\\/([\\w\\.]+)/i, // Alipay\n /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i, // Twitter\n /(chromium|instagram|snapchat)[\\/ ]([-\\w\\.]+)/i // Chromium/Instagram/Snapchat\n ], [NAME, VERSION], [\n /\\bgsa\\/([\\w\\.]+) .*safari\\//i // Google Search Appliance on iOS\n ], [VERSION, [NAME, 'GSA']], [\n /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i // TikTok\n ], [VERSION, [NAME, 'TikTok']], [\n\n /headlesschrome(?:\\/([\\w\\.]+)| )/i // Chrome Headless\n ], [VERSION, [NAME, CHROME+' Headless']], [\n\n / wv\\).+(chrome)\\/([\\w\\.]+)/i // Chrome WebView\n ], [[NAME, CHROME+' WebView'], VERSION], [\n\n /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i // Android Browser\n ], [VERSION, [NAME, 'Android '+BROWSER]], [\n\n /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia\n ], [NAME, VERSION], [\n\n /version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i // Mobile Safari\n ], [VERSION, [NAME, 'Mobile Safari']], [\n /version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile\n ], [VERSION, NAME], [\n /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i // Safari < 3.0\n ], [NAME, [VERSION, strMapper, oldSafariMap]], [\n\n /(webkit|khtml)\\/([\\w\\.]+)/i\n ], [NAME, VERSION], [\n\n // Gecko based\n /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i // Netscape\n ], [[NAME, 'Netscape'], VERSION], [\n /(wolvic|librewolf)\\/([\\w\\.]+)/i // Wolvic/LibreWolf\n ], [NAME, VERSION], [\n /mobile vr; rv:([\\w\\.]+)\\).+firefox/i // Firefox Reality\n ], [VERSION, [NAME, FIREFOX+' Reality']], [\n /ekiohf.+(flow)\\/([\\w\\.]+)/i, // Flow\n /(swiftfox)/i, // Swiftfox\n /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n /(firefox)\\/([\\w\\.]+)/i, // Other Firefox-based\n /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i, // Mozilla\n\n // Other\n /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser\n /(links) \\(([\\w\\.]+)/i // Links\n ], [NAME, [VERSION, /_/g, '.']], [\n \n /(cobalt)\\/([\\w\\.]+)/i // Cobalt\n ], [NAME, [VERSION, /master.|lts./, \"\"]]\n ],\n\n cpu : [[\n\n /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i // AMD64 (x64)\n ], [[ARCHITECTURE, 'amd64']], [\n\n /(ia32(?=;))/i // IA32 (quicktime)\n ], [[ARCHITECTURE, lowerize]], [\n\n /((?:i[346]|x)86)[;\\)]/i // IA32 (x86)\n ], [[ARCHITECTURE, 'ia32']], [\n\n /\\b(aarch64|arm(v?8e?l?|_?64))\\b/i // ARM64\n ], [[ARCHITECTURE, 'arm64']], [\n\n /\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i // ARMHF\n ], [[ARCHITECTURE, 'armhf']], [\n\n // PocketPC mistakenly identified as PowerPC\n /windows (ce|mobile); ppc;/i\n ], [[ARCHITECTURE, 'arm']], [\n\n /((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i // PowerPC\n ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n /(sun4\\w)[;\\)]/i // SPARC\n ], [[ARCHITECTURE, 'sparc']], [\n\n /((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i\n // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n ], [[ARCHITECTURE, lowerize]]\n ],\n\n device : [[\n\n //////////////////////////\n // MOBILES & TABLETS\n /////////////////////////\n\n // Samsung\n /\\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\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n /samsung[- ]((?!sm-[lr])[-\\w]+)/i,\n /sec-(sgh\\w+)/i\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n // Apple\n /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i // iPod/iPhone\n ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n /\\((ipad);[-\\w\\),; ]+apple/i, // iPad\n /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n /(macintosh);/i\n ], [MODEL, [VENDOR, APPLE]], [\n\n // Sharp\n /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n // Honor\n /(?:honor)([-\\w ]+)[;\\)]/i\n ], [MODEL, [VENDOR, 'Honor'], [TYPE, MOBILE]], [\n\n // Huawei\n /\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n /(?:huawei)([-\\w ]+)[;\\)]/i,\n /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n // Xiaomi\n /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i, // Xiaomi POCO\n /\\b; (\\w+) build\\/hm\\1/i, // Xiaomi Hongmi 'numeric' models\n /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i, // Xiaomi Hongmi\n /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i, // Xiaomi Redmi\n /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i, // Xiaomi Redmi 'numeric' models\n /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i // Xiaomi Mi\n ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n /oid[^\\)]+; (2\\d{4}(283|rpbf)[cgl])( bui|\\))/i, // Redmi Pad\n /\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i // Mi Pad tablets\n ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n // OPPO\n /; (\\w+) bui.+ oppo/i,\n /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [\n /\\b(opd2\\d{3}a?) bui/i\n ], [MODEL, [VENDOR, 'OPPO'], [TYPE, TABLET]], [\n\n // Vivo\n /vivo (\\w+)(?: bui|\\))/i,\n /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n // Realme\n /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n // Motorola\n /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n /\\bmot(?:orola)?[- ](\\w*)/i,\n /((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n // LG\n /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n /\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,\n /\\blg-?([\\d\\w]+) bui/i\n ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n // Lenovo\n /(ideatab[-\\w ]+)/i,\n /lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i\n ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [\n\n // Nokia\n /(?:maemo|nokia).*(n900|lumia \\d+)/i,\n /nokia[-_ ]?([-\\w\\.]*)/i\n ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [\n\n // Google\n /(pixel c)\\b/i // Google Pixel C\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i // Google Pixel\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n // Sony\n /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\n ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n /sony tablet [ps]/i,\n /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n // OnePlus\n / (kb2005|in20[12]5|be20[12][59])\\b/i,\n /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [\n\n // Amazon\n /(alexa)webm/i,\n /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i, // Kindle Fire without Silk / Echo Show\n /(kf[a-z]+)( bui|\\)).+silk\\//i // Kindle Fire HD\n ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i // Fire Phone\n ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n // BlackBerry\n /(playbook);[-\\w\\),; ]+(rim)/i // BlackBerry PlayBook\n ], [MODEL, VENDOR, [TYPE, TABLET]], [\n /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n /\\(bb10; (\\w+)/i // BlackBerry 10\n ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n // Asus\n /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n // HTC\n /(nexus 9)/i // HTC Nexus 9\n ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i, // HTC\n\n // ZTE\n /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n // TCL\n /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\n ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n\n // itel\n /(itel) ((\\w+))/i\n ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n // Acer\n /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n // Meizu\n /droid.+; (m[1-5] note) bui/i,\n /\\bmz-([-\\w]{2,})/i\n ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n \n // Ulefone\n /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n // Energizer\n /; (energy ?\\w+)(?: bui|\\))/i,\n /; energizer ([\\w ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n // Cat\n /; cat (b35);/i,\n /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n // Smartfren\n /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n // Nothing\n /droid.+; (a(?:015|06[35]|142p?))/i\n ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n // MIXED\n /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan\n /; (imo) ((?!tab)[\\w ]+?)(?: bui|\\))/i, // IMO\n /(hp) ([\\w ]+\\w)/i, // HP iPAQ\n /(asus)-?(\\w+)/i, // Asus\n /(microsoft); (lumia[\\w ]+)/i, // Microsoft Lumia\n /(lenovo)[-_ ]?([-\\w]+)/i, // Lenovo\n /(jolla)/i, // Jolla\n /(oppo) ?([\\w ]+) bui/i // OPPO\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n /(imo) (tab \\w+)/i, // IMO\n /(kobo)\\s(ereader|touch)/i, // Kobo\n /(archos) (gamepad2?)/i, // Archos\n /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad\n /(kindle)\\/([\\w\\.]+)/i, // Kindle\n /(nook)[\\w ]+build\\/(\\w+)/i, // Nook\n /(dell) (strea[kpr\\d ]*[\\dko])/i, // Dell Streak\n /(le[- ]+pan)[- ]+(\\w{1,9}) bui/i, // Le Pan Tablets\n /(trinity)[- ]*(t\\d{3}) bui/i, // Trinity Tablets\n /(gigaset)[- ]+(q\\w{1,9}) bui/i, // Gigaset Tablets\n /(vodafone) ([\\w ]+)(?:\\)| bui)/i // Vodafone\n ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n /(surface duo)/i // Surface Duo\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i // Fairphone\n ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n /(u304aa)/i // AT&T\n ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [\n /\\bsie-(\\w*)/i // Siemens\n ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [\n /\\b(rct\\w+) b/i // RCA Tablets\n ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [\n /\\b(venue[\\d ]{2,7}) b/i // Dell Venue Tablets\n ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [\n /\\b(q(?:mv|ta)\\w+) b/i // Verizon Tablet\n ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [\n /\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i // Barnes & Noble Tablet\n ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [\n /\\b(tm\\d{3}\\w+) b/i\n ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [\n /\\b(k88) b/i // ZTE K Series Tablet\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [\n /\\b(nx\\d{3}j) b/i // ZTE Nubia\n ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [\n /\\b(gen\\d{3}) b.+49h/i // Swiss GEN Mobile\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [\n /\\b(zur\\d{3}) b/i // Swiss ZUR Tablet\n ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [\n /\\b((zeki)?tb.*\\b) b/i // Zeki Tablets\n ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [\n /\\b([yr]\\d{2}) b/i,\n /\\b(dragon[- ]+touch |dt)(\\w{5}) b/i // Dragon Touch Tablet\n ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [\n /\\b(ns-?\\w{0,9}) b/i // Insignia Tablets\n ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [\n /\\b((nxa|next)-?\\w{0,9}) b/i // NextBook Tablets\n ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [\n /\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones\n ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [\n /\\b(lvtel\\-)?(v1[12]) b/i // LvTel Phones\n ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [\n /\\b(ph-1) /i // Essential PH-1\n ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [\n /\\b(v(100md|700na|7011|917g).*\\b) b/i // Envizen Tablets\n ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [\n /\\b(trio[-\\w\\. ]+) b/i // MachSpeed Tablets\n ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [\n /\\btu_(1491) b/i // Rotor Tablets\n ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [\n /(shield[\\w ]+) b/i // Nvidia Shield Tablets\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [\n /(sprint) (\\w+)/i // Sprint Phones\n ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n /(kin\\.[onetw]{3})/i // Microsoft Kin\n ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i // Zebra\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n ///////////////////\n // SMARTTVS\n ///////////////////\n\n /smart-tv.+(samsung)/i // Samsung\n ], [VENDOR, [TYPE, SMARTTV]], [\n /hbbtv.+maple;(\\d+)/i\n ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i // LG SmartTV\n ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n /(apple) ?tv/i // Apple TV\n ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n /crkey/i // Google Chromecast\n ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n /droid.+aft(\\w+)( bui|\\))/i // Fire TV\n ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n /\\(dtv[\\);].+(aquos)/i,\n /(aquos-tv[\\w ]+)\\)/i // Sharp\n ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n /(bravia[\\w ]+)( bui|\\))/i // Sony\n ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n /(mitv-\\w{5}) bui/i // Xiaomi\n ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n /Hbbtv.*(technisat) (.*);/i // TechniSAT\n ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i, // Roku\n /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i // HbbTV devices\n ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i // SmartTV from Unidentified Vendors\n ], [[TYPE, SMARTTV]], [\n\n ///////////////////\n // CONSOLES\n ///////////////////\n\n /(ouya)/i, // Ouya\n /(nintendo) ([wids3utch]+)/i // Nintendo\n ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n /droid.+; (shield) bui/i // Nvidia\n ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [\n /(playstation [345portablevi]+)/i // Playstation\n ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i // Microsoft Xbox\n ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n ///////////////////\n // WEARABLES\n ///////////////////\n\n /\\b(sm-[lr]\\d\\d[05][fnuw]?s?)\\b/i // Samsung Galaxy Watch\n ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n /((pebble))app/i // Pebble\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i // Apple Watch\n ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /droid.+; (wt63?0{2,3})\\)/i\n ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n ///////////////////\n // XR\n ///////////////////\n\n /droid.+; (glass) \\d/i // Google Glass\n ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [\n /(pico) (4|neo3(?: link|pro)?)/i // Pico\n ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n /; (quest( \\d| pro)?)/i // Oculus Quest\n ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [\n\n ///////////////////\n // EMBEDDED\n ///////////////////\n\n /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i // Tesla\n ], [VENDOR, [TYPE, EMBEDDED]], [\n /(aeobc)\\b/i // Echo Dot\n ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n\n ////////////////////\n // MIXED (GENERIC)\n ///////////////////\n\n /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors\n ], [MODEL, [TYPE, MOBILE]], [\n /droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors\n ], [MODEL, [TYPE, TABLET]], [\n /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i // Unidentifiable Tablet\n ], [[TYPE, TABLET]], [\n /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile\n ], [[TYPE, MOBILE]], [\n /(android[-\\w\\. ]{0,9});.+buil/i // Generic Android Device\n ], [MODEL, [VENDOR, 'Generic']]\n ],\n\n engine : [[\n\n /windows.+ edge\\/([\\w\\.]+)/i // EdgeHTML\n ], [VERSION, [NAME, EDGE+'HTML']], [\n\n /(arkweb)\\/([\\w\\.]+)/i // ArkWeb\n ], [NAME, VERSION], [\n\n /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i // Blink\n ], [VERSION, [NAME, 'Blink']], [\n\n /(presto)\\/([\\w\\.]+)/i, // Presto\n /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n /ekioh(flow)\\/([\\w\\.]+)/i, // Flow\n /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i, // KHTML/Tasman/Links\n /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i, // iCab\n /\\b(libweb)/i\n ], [NAME, VERSION], [\n\n /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i // Gecko\n ], [VERSION, NAME]\n ],\n\n os : [[\n\n // Windows\n /microsoft (windows) (vista|xp)/i // Windows (iTunes)\n ], [NAME, VERSION], [\n /(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i // Windows Phone\n ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n /windows nt 6\\.2; (arm)/i, // Windows RT\n /windows[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n ], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [\n\n // iOS/macOS\n /ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i, // iOS\n /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n /cfnetwork\\/.+darwin/i\n ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n /(mac os x) ?([\\w\\. ]*)/i,\n /(macintosh|mac_powerpc\\b)(?!.+haiku)/i // Mac OS\n ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [\n\n // Mobile OSes\n /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS\n ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS/OpenHarmony\n /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish|openharmony)[-\\/ ]?([\\w\\.]*)/i,\n /(blackberry)\\w*\\/([\\w\\.]*)/i, // Blackberry\n /(tizen|kaios)[\\/ ]([\\w\\.]+)/i, // Tizen/KaiOS\n /\\((series40);/i // Series 40\n ], [NAME, VERSION], [\n /\\(bb(10);/i // BlackBerry 10\n ], [VERSION, [NAME, BLACKBERRY]], [\n /(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i // Symbian\n ], [VERSION, [NAME, 'Symbian']], [\n /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n ], [VERSION, [NAME, FIREFOX+' OS']], [\n /web0s;.+rt(tv)/i,\n /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i // WebOS\n ], [VERSION, [NAME, 'webOS']], [\n /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i // watchOS\n ], [VERSION, [NAME, 'watchOS']], [\n\n // Google Chromecast\n /crkey\\/([\\d\\.]+)/i // Google Chromecast\n ], [VERSION, [NAME, CHROME+'cast']], [\n /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i // Chromium OS\n ], [[NAME, CHROMIUM_OS], VERSION],[\n\n // Smart TVs\n /panasonic;(viera)/i, // Panasonic Viera\n /(netrange)mmh/i, // Netrange\n /(nettv)\\/(\\d+\\.[\\w\\.]+)/i, // NetTV\n\n // Console\n /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation\n /(xbox); +xbox ([^\\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)\n\n // Other\n /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i, // Joli/Palm\n /(mint)[\\/\\(\\) ]?(\\w*)/i, // Mint\n /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux\n /([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,\n // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n /(hurd|linux) ?([\\w\\.]*)/i, // Hurd/Linux\n /(gnu) ?([\\w\\.]*)/i, // GNU\n /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n /(haiku) (\\w+)/i // Haiku\n ], [NAME, VERSION], [\n /(sunos) ?([\\w\\.\\d]*)/i // Solaris\n ], [[NAME, 'Solaris'], VERSION], [\n /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i, // Solaris\n /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i, // AIX\n /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n /(unix) ?([\\w\\.]*)/i // UNIX\n ], [NAME, VERSION]\n ]\n };\n\n /////////////////\n // Constructor\n ////////////////\n\n var UAParser = function (ua, extensions) {\n\n if (typeof ua === OBJ_TYPE) {\n extensions = ua;\n ua = undefined;\n }\n\n if (!(this instanceof UAParser)) {\n return new UAParser(ua, extensions).getResult();\n }\n\n var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined;\n var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);\n var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;\n var _rgxmap = extensions ? extend(regexes, extensions) : regexes;\n var _isSelfNav = _navigator && _navigator.userAgent == _ua;\n\n this.getBrowser = function () {\n var _browser = {};\n _browser[NAME] = undefined;\n _browser[VERSION] = undefined;\n rgxMapper.call(_browser, _ua, _rgxmap.browser);\n _browser[MAJOR] = majorize(_browser[VERSION]);\n // Brave-specific detection\n if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {\n _browser[NAME] = 'Brave';\n }\n return _browser;\n };\n this.getCPU = function () {\n var _cpu = {};\n _cpu[ARCHITECTURE] = undefined;\n rgxMapper.call(_cpu, _ua, _rgxmap.cpu);\n return _cpu;\n };\n this.getDevice = function () {\n var _device = {};\n _device[VENDOR] = undefined;\n _device[MODEL] = undefined;\n _device[TYPE] = undefined;\n rgxMapper.call(_device, _ua, _rgxmap.device);\n if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {\n _device[TYPE] = MOBILE;\n }\n // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {\n _device[MODEL] = 'iPad';\n _device[TYPE] = TABLET;\n }\n return _device;\n };\n this.getEngine = function () {\n var _engine = {};\n _engine[NAME] = undefined;\n _engine[VERSION] = undefined;\n rgxMapper.call(_engine, _ua, _rgxmap.engine);\n return _engine;\n };\n this.getOS = function () {\n var _os = {};\n _os[NAME] = undefined;\n _os[VERSION] = undefined;\n rgxMapper.call(_os, _ua, _rgxmap.os);\n if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != 'Unknown') {\n _os[NAME] = _uach.platform \n .replace(/chrome os/i, CHROMIUM_OS)\n .replace(/macos/i, MAC_OS); // backward compatibility\n }\n return _os;\n };\n this.getResult = function () {\n return {\n ua : this.getUA(),\n browser : this.getBrowser(),\n engine : this.getEngine(),\n os : this.getOS(),\n device : this.getDevice(),\n cpu : this.getCPU()\n };\n };\n this.getUA = function () {\n return _ua;\n };\n this.setUA = function (ua) {\n _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;\n return this;\n };\n this.setUA(_ua);\n return this;\n };\n\n UAParser.VERSION = LIBVERSION;\n UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);\n UAParser.CPU = enumerize([ARCHITECTURE]);\n UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n ///////////\n // Export\n //////////\n\n // check js environment\n if (typeof(exports) !== UNDEF_TYPE) {\n // nodejs env\n if (typeof module !== UNDEF_TYPE && module.exports) {\n exports = module.exports = UAParser;\n }\n exports.UAParser = UAParser;\n } else {\n // requirejs env (optional)\n if (typeof(define) === FUNC_TYPE && define.amd) {\n define(function () {\n return UAParser;\n });\n } else if (typeof window !== UNDEF_TYPE) {\n // browser env\n window.UAParser = UAParser;\n }\n }\n\n // jQuery/Zepto specific (optional)\n // Note:\n // In AMD env the global scope should be kept clean, but jQuery is an exception.\n // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,\n // and we should catch that.\n var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);\n if ($ && !$.ua) {\n var parser = new UAParser();\n $.ua = parser.getResult();\n $.ua.get = function () {\n return parser.getUA();\n };\n $.ua.set = function (ua) {\n parser.setUA(ua);\n var result = parser.getResult();\n for (var prop in result) {\n $.ua[prop] = result[prop];\n }\n };\n }\n\n})(typeof window === 'object' ? window : this);\n", "import { webcrypto as crypto } from 'node:crypto'\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nconst POOL_SIZE_MULTIPLIER = 128\nlet pool, poolOffset\nfunction fillPool(bytes) {\n if (!pool || pool.length < bytes) {\n pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER)\n crypto.getRandomValues(pool)\n poolOffset = 0\n } else if (poolOffset + bytes > pool.length) {\n crypto.getRandomValues(pool)\n poolOffset = 0\n }\n poolOffset += bytes\n}\nexport function random(bytes) {\n fillPool((bytes |= 0))\n return pool.subarray(poolOffset - bytes, poolOffset)\n}\nexport function customRandom(alphabet, defaultSize, getRandom) {\n let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1\n let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let i = step\n while (i--) {\n id += alphabet[bytes[i] & mask] || ''\n if (id.length >= size) return id\n }\n }\n }\n}\nexport function customAlphabet(alphabet, size = 21) {\n return customRandom(alphabet, size, random)\n}\nexport function nanoid(size = 21) {\n fillPool((size |= 0))\n let id = ''\n for (let i = poolOffset - size; i < poolOffset; i++) {\n id += scopedUrlAlphabet[pool[i] & 63]\n }\n return id\n}\n", "export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\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 {nowInBigIntNanoSeconds} from './date.utils';\nimport {nonNullish} from './dfinity/nullish.utils';\n\nexport const timestamp = (): {\n collected_at: bigint;\n version?: bigint;\n} => ({\n collected_at: nowInBigIntNanoSeconds()\n});\n\nexport const userAgent = (): {user_agent?: string} => {\n const {userAgent} = navigator;\n return nonNullish(userAgent) ? {user_agent: userAgent} : {};\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 {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 page_view: SetPageViewPayload = {\n title,\n href,\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 };\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", "// TODO: duplicated because those should not be bundled in web worker. We can avoid this by transforming utils into a library of modules.\ninterface ImportMeta {\n env: Record<string, string> | undefined;\n}\n\nexport const envSatelliteId = (): string | undefined => {\n const viteEnvSatelliteId = (): string | undefined =>\n typeof import.meta !== 'undefined' &&\n typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n ? ((import.meta as unknown as ImportMeta).env?.VITE_SATELLITE_ID ??\n (import.meta as unknown as ImportMeta).env?.PUBLIC_SATELLITE_ID)\n : undefined;\n\n return typeof process !== 'undefined'\n ? (process.env?.NEXT_PUBLIC_SATELLITE_ID ?? viteEnvSatelliteId())\n : viteEnvSatelliteId();\n};\n\nexport const envOrbiterId = (): string | undefined => {\n const viteEnvOrbiterId = (): string | undefined =>\n typeof import.meta !== 'undefined' &&\n typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n ? ((import.meta as unknown as ImportMeta).env?.VITE_ORBITER_ID ??\n (import.meta as unknown as ImportMeta).env?.PUBLIC_ORBITER_ID)\n : undefined;\n\n return typeof process !== 'undefined'\n ? (process.env?.NEXT_PUBLIC_ORBITER_ID ?? viteEnvOrbiterId())\n : viteEnvOrbiterId();\n};\n\nexport const envContainer = (): string | undefined => {\n const viteEnvContainer = (): string | undefined =>\n typeof import.meta !== 'undefined' &&\n typeof (import.meta as unknown as ImportMeta).env !== 'undefined'\n ? ((import.meta as unknown as ImportMeta).env?.VITE_CONTAINER ??\n (import.meta as unknown as ImportMeta).env?.PUBLIC_CONTAINER)\n : undefined;\n\n return typeof process !== 'undefined'\n ? (process.env?.NEXT_PUBLIC_CONTAINER ?? viteEnvContainer())\n : viteEnvContainer();\n};\n", "import {initServices, initTrackPageViews, setPageView, startTrackPerformance} from './tracker';\nimport type {Environment, UserEnvironment} from './types/env';\nimport {assertNonNullish} from './utils/dfinity/asserts.utils';\nimport {envContainer, envOrbiterId, envSatelliteId} from './utils/window.env.utils';\n\nexport {trackEvent, trackEventAsync, trackPageView, trackPageViewAsync} from './tracker';\nexport type * from './types/env';\n\nconst parseEnv = (userEnv?: UserEnvironment): Environment => {\n const satelliteId = userEnv?.satelliteId ?? envSatelliteId();\n\n assertNonNullish(\n satelliteId,\n 'Satellite ID is not configured. Orbiter cannot be initialized without a target Satellite.'\n );\n\n const orbiterId = userEnv?.orbiterId ?? envOrbiterId();\n\n assertNonNullish(\n orbiterId,\n 'Orbiter ID is not configured. The analytics cannot be initialized without an Orbiter.'\n );\n\n const container = userEnv?.container ?? envContainer();\n\n return {\n orbiterId,\n satelliteId,\n container,\n options: userEnv?.options\n };\n};\n\n/**\n * Initializes the Juno Analytics.\n *\n * Although this function is synchronous, it triggers asynchronous tracking of the initial page view\n * and, optionally, the initialization of web vitals, without awaiting their completion.\n * This design ensures better performance and avoids blocking your application's boot time.\n *\n * @param {UserEnvironment} [userEnv] - The optional user environment configuration. If no environment is provided, the variables injected by the Vite or NextJS plugins will be used.\n * @returns {() => void} A cleanup function that removes hooks (such as navigation tracking) added for analytics.\n */\nexport const initOrbiter = (userEnv?: UserEnvironment): (() => void) => {\n const env = parseEnv(userEnv);\n\n const {cleanup: analyticsServicesCleanup} = initServices(env);\n\n // Save first page as soon as possible.\n // We do not await on purpose to not block the application's boot.\n setPageView();\n\n const {cleanup: pushHistoryCleanup} = initTrackPageViews();\n\n // We do not await on purpose to not block the application's boot.\n startTrackPerformance();\n\n return () => {\n analyticsServicesCleanup();\n pushHistoryCleanup();\n };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["web_vitals_exports", "__export", "L", "b", "$", "N", "_", "J", "w", "S", "ee", "j", "G", "Q", "e", "n", "t", "r", "i", "o", "a", "c", "u", "f", "s", "d", "l", "p", "v", "m", "h", "g", "y", "T", "E", "C", "A", "I", "P", "M", "k", "F", "D", "x", "R", "B", "H", "q", "O", "z", "K", "U", "V", "W", "X", "Y", "Z", "init_web_vitals", "__esmMin", "require_ua_parser", "__commonJSMin", "exports", "module", "window", "undefined", "LIBVERSION", "EMPTY", "UNKNOWN", "FUNC_TYPE", "UNDEF_TYPE", "OBJ_TYPE", "STR_TYPE", "MAJOR", "MODEL", "NAME", "TYPE", "VENDOR", "VERSION", "ARCHITECTURE", "CONSOLE", "MOBILE", "TABLET", "SMARTTV", "WEARABLE", "EMBEDDED", "UA_MAX_LENGTH", "AMAZON", "APPLE", "ASUS", "BLACKBERRY", "BROWSER", "CHROME", "EDGE", "FIREFOX", "GOOGLE", "HUAWEI", "LG", "MICROSOFT", "MOTOROLA", "OPERA", "SAMSUNG", "SHARP", "SONY", "XIAOMI", "ZEBRA", "FACEBOOK", "CHROMIUM_OS", "MAC_OS", "SUFFIX_BROWSER", "extend", "regexes", "extensions", "mergedRegexes", "i", "enumerize", "arr", "enums", "has", "str1", "str2", "lowerize", "str", "majorize", "version", "trim", "len", "rgxMapper", "ua", "arrays", "j", "k", "p", "q", "matches", "match", "regex", "props", "strMapper", "map", "oldSafariMap", "windowsVersionMap", "UAParser", "_navigator", "_ua", "_uach", "_rgxmap", "_isSelfNav", "_browser", "_cpu", "_device", "_engine", "_os", "$", "parser", "result", "prop", "crypto", "urlAlphabet", "POOL_SIZE_MULTIPLIER", "pool", "poolOffset", "fillPool", "bytes", "crypto", "nanoid", "size", "fillPool", "id", "i", "poolOffset", "urlAlphabet", "pool", "DOCKER_CONTAINER_WEB_URL", "isNullish", "argument", "nonNullish", "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", "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", "page_view", "warningOrbiterServicesNotInitialized", "timestamp", "startTrackPerformance", "isNullish", "postPerformanceMetric", "entry", "trackPageView", "trackEvent", "data", "trackEventAsync", "envSatelliteId", "viteEnvSatelliteId", "envOrbiterId", "viteEnvOrbiterId", "envContainer", "viteEnvContainer", "parseEnv", "userEnv", "satelliteId", "envSatelliteId", "assertNonNullish", "orbiterId", "envOrbiterId", "container", "envContainer", "initOrbiter", "env", "analyticsServicesCleanup", "initServices", "setPageView", "pushHistoryCleanup", "initTrackPageViews", "startTrackPerformance"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Environment } from '../types/env';
|
|
2
|
+
import type { SetPageViewsRequest, SetPerformanceMetricsRequest, SetTrackEventsRequest } from '../types/orbiter';
|
|
3
|
+
type ApiPath = '/views' | '/events' | '/metrics';
|
|
4
|
+
export declare class ApiError extends Error {
|
|
5
|
+
private readonly status;
|
|
6
|
+
private readonly statusText;
|
|
7
|
+
constructor(status: number, statusText: string);
|
|
8
|
+
}
|
|
9
|
+
export declare class OrbiterApi {
|
|
10
|
+
#private;
|
|
11
|
+
constructor({ container, orbiterId }: Environment);
|
|
12
|
+
postPageViews: ({ request: payload }: {
|
|
13
|
+
request: SetPageViewsRequest;
|
|
14
|
+
}) => Promise<null>;
|
|
15
|
+
postTrackEvents: ({ request: payload }: {
|
|
16
|
+
request: SetTrackEventsRequest;
|
|
17
|
+
}) => Promise<null>;
|
|
18
|
+
postPerformanceMetrics: ({ request: payload }: {
|
|
19
|
+
request: SetPerformanceMetricsRequest;
|
|
20
|
+
}) => Promise<null>;
|
|
21
|
+
post: <T, R>({ path, payload }: {
|
|
22
|
+
path: ApiPath;
|
|
23
|
+
payload: T;
|
|
24
|
+
}) => Promise<R>;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const DOCKER_CONTAINER_WEB_URL = "http://localhost:5987";
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import type { UserEnvironment } from './types/env';
|
|
2
|
-
export { trackEvent, trackPageView } from './
|
|
2
|
+
export { trackEvent, trackEventAsync, trackPageView, trackPageViewAsync } from './tracker';
|
|
3
3
|
export type * from './types/env';
|
|
4
4
|
/**
|
|
5
5
|
* Initializes the Juno Analytics.
|
|
6
|
+
*
|
|
7
|
+
* Although this function is synchronous, it triggers asynchronous tracking of the initial page view
|
|
8
|
+
* and, optionally, the initialization of web vitals, without awaiting their completion.
|
|
9
|
+
* This design ensures better performance and avoids blocking your application's boot time.
|
|
10
|
+
*
|
|
6
11
|
* @param {UserEnvironment} [userEnv] - The optional user environment configuration. If no environment is provided, the variables injected by the Vite or NextJS plugins will be used.
|
|
7
|
-
* @returns {
|
|
12
|
+
* @returns {() => void} A cleanup function that removes hooks (such as navigation tracking) added for analytics.
|
|
8
13
|
*/
|
|
9
|
-
export declare const initOrbiter: (userEnv?: UserEnvironment) =>
|
|
14
|
+
export declare const initOrbiter: (userEnv?: UserEnvironment) => (() => void);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Environment } from '../types/env';
|
|
2
|
+
import type { SetPageViewRequestEntry, SetPerformanceMetricRequestEntry, SetTrackEventRequestEntry } from '../types/orbiter';
|
|
3
|
+
export declare class OrbiterServices {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(env: Environment);
|
|
6
|
+
setPageView: (entry: SetPageViewRequestEntry) => Promise<null>;
|
|
7
|
+
setTrackEvent: (entry: SetTrackEventRequestEntry) => Promise<null>;
|
|
8
|
+
setPerformanceMetric: (entry: SetPerformanceMetricRequestEntry) => Promise<null>;
|
|
9
|
+
private satelliteId;
|
|
10
|
+
}
|
|
@@ -1 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
import type { SetPerformanceMetricRequestEntry } from '../types/orbiter';
|
|
2
|
+
type PostPerformanceMetric = (entry: SetPerformanceMetricRequestEntry) => Promise<void>;
|
|
3
|
+
export declare class PerformanceServices {
|
|
4
|
+
startPerformance({ sessionId, postPerformanceMetric }: {
|
|
5
|
+
sessionId: string;
|
|
6
|
+
postPerformanceMetric: PostPerformanceMetric;
|
|
7
|
+
}): Promise<void>;
|
|
8
|
+
private static setPerformanceMetric;
|
|
9
|
+
private static mapPerformanceMetric;
|
|
10
|
+
}
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Environment } from './types/env';
|
|
2
|
+
import type { TrackEvent } from './types/track';
|
|
3
|
+
export declare const initServices: (env: Environment) => {
|
|
4
|
+
cleanup: () => void;
|
|
5
|
+
};
|
|
6
|
+
export declare const initTrackPageViews: () => {
|
|
7
|
+
cleanup: () => void;
|
|
8
|
+
};
|
|
9
|
+
export declare const setPageView: () => Promise<void>;
|
|
10
|
+
export declare const startTrackPerformance: () => Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Tracks a page view in Juno Analytics.
|
|
13
|
+
*
|
|
14
|
+
* This function does not return a promise, as it triggers the tracking request without awaiting its completion.
|
|
15
|
+
* It is designed for fire-and-forget usage to avoid blocking application flow.
|
|
16
|
+
*/
|
|
17
|
+
export declare const trackPageView: () => void;
|
|
18
|
+
/**
|
|
19
|
+
* Tracks a page view in Juno Analytics.
|
|
20
|
+
* @returns {Promise<void>} A promise that resolves when the page view is tracked.
|
|
21
|
+
*/
|
|
22
|
+
export declare const trackPageViewAsync: () => Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Tracks a custom event in Juno Analytics.
|
|
25
|
+
*
|
|
26
|
+
* This function does not return a promise, as it triggers the tracking request without awaiting its completion.
|
|
27
|
+
* It is designed for fire-and-forget usage to avoid blocking application flow.
|
|
28
|
+
*
|
|
29
|
+
* @param {TrackEvent} data - The event details.
|
|
30
|
+
*/
|
|
31
|
+
export declare const trackEvent: (data: TrackEvent) => void;
|
|
32
|
+
/**
|
|
33
|
+
* Tracks a custom event in Juno Analytics.
|
|
34
|
+
* @param {TrackEvent} data - The event details.
|
|
35
|
+
* @returns {Promise<void>} A promise that resolves when the event is tracked.
|
|
36
|
+
*/
|
|
37
|
+
export declare const trackEventAsync: (data: TrackEvent) => Promise<void>;
|