@junobuild/analytics 0.0.25 → 0.0.26-next-2024-08-24

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.
@@ -0,0 +1,2 @@
1
+ function i(e){return new Promise((t,r)=>{e.oncomplete=e.onsuccess=()=>t(e.result),e.onabort=e.onerror=()=>r(e.error)})}function c(e,t){let r=indexedDB.open(e);r.onupgradeneeded=()=>r.result.createObjectStore(t);let n=i(r);return(o,l)=>n.then(d=>l(d.transaction(t,o).objectStore(t)))}var f;function y(){return f||(f=c("keyval-store","keyval")),f}function a(e,t,r=y()){return r("readwrite",n=>(n.put(t,e),i(n.transaction)))}function s(e,t=y()){return t("readwrite",r=>(e.forEach(n=>r.delete(n)),i(r.transaction)))}function P(e,t){return e.openCursor().onsuccess=function(){this.result&&(t(this.result),this.result.continue())},i(e.transaction)}function u(e=y()){return e("readonly",t=>{if(t.getAll&&t.getAllKeys)return Promise.all([i(t.getAllKeys()),i(t.getAll())]).then(([n,o])=>n.map((l,d)=>[l,o[d]]));let r=[];return e("readonly",n=>P(n,o=>r.push([o.key,o.value])).then(()=>r))})}var m=c("juno-views","views"),p=c("juno-events","events"),v=c("juno-metrics","metrics"),I=({key:e,view:t})=>a(e,t,m),b=()=>u(m),h=e=>s(e,m),k=({key:e,track:t})=>a(e,t,p),K=()=>u(p),V=e=>s(e,p),x=({key:e,view:t})=>a(e,t,v),M=()=>u(v),A=e=>s(e,v);export{h as delPageViews,A as delPerformanceMetrics,V as delTrackEvents,b as getPageViews,M as getPerformanceMetrics,K as getTrackEvents,I as setPageView,x as setPerformanceMetric,k as setTrackEvent};
2
+ //# sourceMappingURL=idb.services-CVJFLYYN.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../node_modules/idb-keyval/dist/index.js", "../../src/services/idb.services.ts"],
4
- "sourcesContent": ["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, IdbTrackEvent} from '../types/idb';\n\nconst viewsStore = createStore('juno-views', 'views');\nconst eventsStore = createStore('juno-events', 'events');\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"],
5
- "mappings": "AAAA,SAASA,EAAiBC,EAAS,CAC/B,OAAO,IAAI,QAAQ,CAACC,EAASC,IAAW,CAEpCF,EAAQ,WAAaA,EAAQ,UAAY,IAAMC,EAAQD,EAAQ,MAAM,EAErEA,EAAQ,QAAUA,EAAQ,QAAU,IAAME,EAAOF,EAAQ,KAAK,CAClE,CAAC,CACL,CACA,SAASG,EAAYC,EAAQC,EAAW,CACpC,IAAML,EAAU,UAAU,KAAKI,CAAM,EACrCJ,EAAQ,gBAAkB,IAAMA,EAAQ,OAAO,kBAAkBK,CAAS,EAC1E,IAAMC,EAAMP,EAAiBC,CAAO,EACpC,MAAO,CAACO,EAAQC,IAAaF,EAAI,KAAMG,GAAOD,EAASC,EAAG,YAAYJ,EAAWE,CAAM,EAAE,YAAYF,CAAS,CAAC,CAAC,CACpH,CACA,IAAIK,EACJ,SAASC,GAAkB,CACvB,OAAKD,IACDA,EAAsBP,EAAY,eAAgB,QAAQ,GAEvDO,CACX,CAiBA,SAASE,EAAIC,EAAKC,EAAOC,EAAcC,EAAgB,EAAG,CACtD,OAAOD,EAAY,YAAcE,IAC7BA,EAAM,IAAIH,EAAOD,CAAG,EACbK,EAAiBD,EAAM,WAAW,EAC5C,CACL,CAiEA,SAASE,EAAQC,EAAMC,EAAcC,EAAgB,EAAG,CACpD,OAAOD,EAAY,YAAcE,IAC7BH,EAAK,QAASI,GAAQD,EAAM,OAAOC,CAAG,CAAC,EAChCC,EAAiBF,EAAM,WAAW,EAC5C,CACL,CAYA,SAASG,EAAWC,EAAOC,EAAU,CACjC,OAAAD,EAAM,WAAW,EAAE,UAAY,UAAY,CAClC,KAAK,SAEVC,EAAS,KAAK,MAAM,EACpB,KAAK,OAAO,SAAS,EACzB,EACOC,EAAiBF,EAAM,WAAW,CAC7C,CAoCA,SAASG,EAAQC,EAAcC,EAAgB,EAAG,CAC9C,OAAOD,EAAY,WAAaE,GAAU,CAGtC,GAAIA,EAAM,QAAUA,EAAM,WACtB,OAAO,QAAQ,IAAI,CACfC,EAAiBD,EAAM,WAAW,CAAC,EACnCC,EAAiBD,EAAM,OAAO,CAAC,CACnC,CAAC,EAAE,KAAK,CAAC,CAACE,EAAMC,CAAM,IAAMD,EAAK,IAAI,CAACE,EAAKC,IAAM,CAACD,EAAKD,EAAOE,CAAC,CAAC,CAAC,CAAC,EAEtE,IAAMC,EAAQ,CAAC,EACf,OAAOR,EAAY,WAAaE,GAAUO,EAAWP,EAAQQ,GAAWF,EAAM,KAAK,CAACE,EAAO,IAAKA,EAAO,KAAK,CAAC,CAAC,EAAE,KAAK,IAAMF,CAAK,CAAC,CACrI,CAAC,CACL,CClLA,IAAMG,EAAaC,EAAY,aAAc,OAAO,EAC9CC,EAAcD,EAAY,cAAe,QAAQ,EAE1CE,EAAc,CAAC,CAAC,IAAAC,EAAK,KAAAC,CAAI,IACpCC,EAAIF,EAAKC,EAAML,CAAU,EAEdO,EAAe,IAA6CC,EAAQR,CAAU,EAE9ES,EAAgBC,GAAuCC,EAAQD,EAAMV,CAAU,EAE/EY,EAAgB,CAAC,CAAC,IAAAR,EAAK,MAAAS,CAAK,IACvCP,EAAIF,EAAKS,EAAOX,CAAW,EAEhBY,EAAiB,IAA+CN,EAAQN,CAAW,EAEnFa,EAAkBL,GAAuCC,EAAQD,EAAMR,CAAW",
6
- "names": ["promisifyRequest", "request", "resolve", "reject", "createStore", "dbName", "storeName", "dbp", "txMode", "callback", "db", "defaultGetStoreFunc", "defaultGetStore", "set", "key", "value", "customStore", "defaultGetStore", "store", "promisifyRequest", "delMany", "keys", "customStore", "defaultGetStore", "store", "key", "promisifyRequest", "eachCursor", "store", "callback", "promisifyRequest", "entries", "customStore", "defaultGetStore", "store", "promisifyRequest", "keys", "values", "key", "i", "items", "eachCursor", "cursor", "viewsStore", "createStore", "eventsStore", "setPageView", "key", "view", "set", "getPageViews", "entries", "delPageViews", "keys", "delMany", "setTrackEvent", "track", "getTrackEvents", "delTrackEvents"]
4
+ "sourcesContent": ["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"],
5
+ "mappings": "AAAA,SAASA,EAAiBC,EAAS,CAC/B,OAAO,IAAI,QAAQ,CAACC,EAASC,IAAW,CAEpCF,EAAQ,WAAaA,EAAQ,UAAY,IAAMC,EAAQD,EAAQ,MAAM,EAErEA,EAAQ,QAAUA,EAAQ,QAAU,IAAME,EAAOF,EAAQ,KAAK,CAClE,CAAC,CACL,CACA,SAASG,EAAYC,EAAQC,EAAW,CACpC,IAAML,EAAU,UAAU,KAAKI,CAAM,EACrCJ,EAAQ,gBAAkB,IAAMA,EAAQ,OAAO,kBAAkBK,CAAS,EAC1E,IAAMC,EAAMP,EAAiBC,CAAO,EACpC,MAAO,CAACO,EAAQC,IAAaF,EAAI,KAAMG,GAAOD,EAASC,EAAG,YAAYJ,EAAWE,CAAM,EAAE,YAAYF,CAAS,CAAC,CAAC,CACpH,CACA,IAAIK,EACJ,SAASC,GAAkB,CACvB,OAAKD,IACDA,EAAsBP,EAAY,eAAgB,QAAQ,GAEvDO,CACX,CAiBA,SAASE,EAAIC,EAAKC,EAAOC,EAAcC,EAAgB,EAAG,CACtD,OAAOD,EAAY,YAAcE,IAC7BA,EAAM,IAAIH,EAAOD,CAAG,EACbK,EAAiBD,EAAM,WAAW,EAC5C,CACL,CAiEA,SAASE,EAAQC,EAAMC,EAAcC,EAAgB,EAAG,CACpD,OAAOD,EAAY,YAAcE,IAC7BH,EAAK,QAASI,GAAQD,EAAM,OAAOC,CAAG,CAAC,EAChCC,EAAiBF,EAAM,WAAW,EAC5C,CACL,CAYA,SAASG,EAAWC,EAAOC,EAAU,CACjC,OAAAD,EAAM,WAAW,EAAE,UAAY,UAAY,CAClC,KAAK,SAEVC,EAAS,KAAK,MAAM,EACpB,KAAK,OAAO,SAAS,EACzB,EACOC,EAAiBF,EAAM,WAAW,CAC7C,CAoCA,SAASG,EAAQC,EAAcC,EAAgB,EAAG,CAC9C,OAAOD,EAAY,WAAaE,GAAU,CAGtC,GAAIA,EAAM,QAAUA,EAAM,WACtB,OAAO,QAAQ,IAAI,CACfC,EAAiBD,EAAM,WAAW,CAAC,EACnCC,EAAiBD,EAAM,OAAO,CAAC,CACnC,CAAC,EAAE,KAAK,CAAC,CAACE,EAAMC,CAAM,IAAMD,EAAK,IAAI,CAACE,EAAKC,IAAM,CAACD,EAAKD,EAAOE,CAAC,CAAC,CAAC,CAAC,EAEtE,IAAMC,EAAQ,CAAC,EACf,OAAOR,EAAY,WAAaE,GAAUO,EAAWP,EAAQQ,GAAWF,EAAM,KAAK,CAACE,EAAO,IAAKA,EAAO,KAAK,CAAC,CAAC,EAAE,KAAK,IAAMF,CAAK,CAAC,CACrI,CAAC,CACL,CClLA,IAAMG,EAAaC,EAAY,aAAc,OAAO,EAC9CC,EAAcD,EAAY,cAAe,QAAQ,EACjDE,EAAeF,EAAY,eAAgB,SAAS,EAE7CG,EAAc,CAAC,CAAC,IAAAC,EAAK,KAAAC,CAAI,IACpCC,EAAIF,EAAKC,EAAMN,CAAU,EAEdQ,EAAe,IAA6CC,EAAQT,CAAU,EAE9EU,EAAgBC,GAAuCC,EAAQD,EAAMX,CAAU,EAE/Ea,EAAgB,CAAC,CAAC,IAAAR,EAAK,MAAAS,CAAK,IACvCP,EAAIF,EAAKS,EAAOZ,CAAW,EAEhBa,EAAiB,IAA+CN,EAAQP,CAAW,EAEnFc,EAAkBL,GAAuCC,EAAQD,EAAMT,CAAW,EAElFe,EAAuB,CAAC,CACnC,IAAAZ,EACA,KAAAC,CACF,IAGqBC,EAAIF,EAAKC,EAAMH,CAAY,EAEnCe,EAAwB,IACnCT,EAAQN,CAAY,EAETgB,EAAyBR,GACpCC,EAAQD,EAAMR,CAAY",
6
+ "names": ["promisifyRequest", "request", "resolve", "reject", "createStore", "dbName", "storeName", "dbp", "txMode", "callback", "db", "defaultGetStoreFunc", "defaultGetStore", "set", "key", "value", "customStore", "defaultGetStore", "store", "promisifyRequest", "delMany", "keys", "customStore", "defaultGetStore", "store", "key", "promisifyRequest", "eachCursor", "store", "callback", "promisifyRequest", "entries", "customStore", "defaultGetStore", "store", "promisifyRequest", "keys", "values", "key", "i", "items", "eachCursor", "cursor", "viewsStore", "createStore", "eventsStore", "metricsStore", "setPageView", "key", "view", "set", "getPageViews", "entries", "delPageViews", "keys", "delMany", "setTrackEvent", "track", "getTrackEvents", "delTrackEvents", "setPerformanceMetric", "getPerformanceMetrics", "delPerformanceMetrics"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var y="abcdefghijklmnopqrstuvwxyz234567",s=Object.create(null);for(let e=0;e<y.length;e++)s[y[e]]=e;s[0]=s.o;s[1]=s.i;var V=new Uint32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);var c=e=>e==null,p=e=>!c(e),O=class extends Error{},o=(e,t)=>{if(c(e))throw new O(t)};var d=e=>p(e)?[e]:[];var l=()=>typeof window<"u";var w="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var x=(e=21)=>{let t="",r=crypto.getRandomValues(new Uint8Array(e));for(;e--;)t+=w[r[e]&63];return t};var h=()=>BigInt(Date.now())*BigInt(1e6);var u=()=>({collected_at:h(),updated_at:[],version:[]}),m=()=>{let{userAgent:e}=navigator;return{user_agent:d(e)}};var C="Analytics worker not initialized. Did you call `initOrbiter`?",i=e=>{c(e)&&console.warn(C)};var M=()=>{if(!(typeof crypto>"u"))return x()},f=M(),n,v=e=>{let{path:t}=e.worker??{},r=t===void 0?"./workers/analytics.worker.js":t;n=new Worker(r);let a=()=>console.warn("Unable to connect to the analytics web worker. Have you deployed it?");return n?.addEventListener("error",a,!1),B(e),{cleanup(){n?.removeEventListener("error",a,!1)}}},I=()=>{let e=async()=>await E(),t=new Proxy(history.pushState,{apply:async(r,a,b)=>{r.apply(a,b),await e()}});return history.pushState=t,addEventListener("popstate",e,{passive:!0}),{cleanup(){t=null,removeEventListener("popstate",e,!1)}}},_="No session ID initialized.",g=async()=>{if(!l())return;o(f,_);let{title:e,location:{href:t},referrer:r}=document,{innerWidth:a,innerHeight:b}=window,{timeZone:S}=Intl.DateTimeFormat().resolvedOptions(),P={title:e,href:t,referrer:d(p(r)&&r!==""?r:void 0),device:{inner_width:a,inner_height:b},time_zone:S,session_id:f,...m(),...u()};await(await import("./idb.services-V6IDWAXJ.js")).setPageView({key:x(),view:P})},E=async()=>{i(n),await g(),n?.postMessage({msg:"junoTrackPageView"})},L=async e=>{if(!l())return;o(f,_),i(n),await(await import("./idb.services-V6IDWAXJ.js")).setTrackEvent({key:x(),track:{...e,session_id:f,...m(),...u()}}),n?.postMessage({msg:"junoTrackEvent"})},B=e=>{i(n),n?.postMessage({msg:"junoInitEnvironment",data:e})},k=()=>{i(n),n?.postMessage({msg:"junoStartTrackTimer"})},T=()=>{i(n),n?.postMessage({msg:"junoStopTracker"})};var N=()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_SATELLITE_ID??import.meta.env?.PUBLIC_SATELLITE_ID:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_SATELLITE_ID??e():e()},A=()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_ORBITER_ID??import.meta.env?.PUBLIC_ORBITER_ID:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_ORBITER_ID??e():e()},U=()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_CONTAINER??import.meta.env?.PUBLIC_CONTAINER:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_CONTAINER??e():e()};var R=e=>{let t=e?.satelliteId??N();o(t,"Satellite ID is not configured. Orbiter cannot be initialized without a target Satellite.");let r=e?.orbiterId??A();o(r,"Orbiter ID is not configured. The analytics cannot be initialized without an Orbiter.");let a=e?.container??U();return{orbiterId:r,satelliteId:t,container:a,worker:e?.worker}},we=async e=>{await g();let t=R(e),{cleanup:r}=v(t),{cleanup:a}=I();return k(),()=>{T(),r(),a()}};export{we as initOrbiter,L as trackEvent,E as trackPageView};
1
+ var I="abcdefghijklmnopqrstuvwxyz234567",l=Object.create(null);for(let e=0;e<I.length;e++)l[I[e]]=e;l[0]=l.o;l[1]=l.i;var K=new Uint32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);var w=e=>e==null,g=e=>!w(e),D=class extends Error{},c=(e,t)=>{if(w(e))throw new D(t)};var d=e=>g(e)?[e]:[];var y=()=>typeof window<"u";var _="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";var x=(e=21)=>{let t="",r=crypto.getRandomValues(new Uint8Array(e));for(;e--;)t+=_[r[e]&63];return t};var k=()=>BigInt(Date.now())*BigInt(1e6);var u=()=>({collected_at:k(),updated_at:[],version:[]}),m=()=>{let{userAgent:e}=navigator;return{user_agent:d(e)}};var j="Analytics worker not initialized. Did you call `initOrbiter`?",f=e=>{w(e)&&console.warn(j)};var T=async e=>{let{onCLS:t,onFCP:r,onINP:n,onLCP:i,onTTFB:p}=await import("./web-vitals-BPYNZXGZ.js"),o=s=>{(async()=>await V({...s,sessionId:e}))()};t(o),r(o),n(o),i(o),p(o)},V=async e=>{let t=F(e);if(t==="unknown"){console.warn("Performance metric ignored. Unknown metric name.",e);return}if(t==="deprecated")return;await(await import("./idb.services-CVJFLYYN.js")).setPerformanceMetric({key:x(),view:t})},F=({sessionId:e,name:t,value:r,delta:n,id:i,navigationType:p})=>{let s=(()=>{switch(t){case"CLS":return{CLS:null};case"FCP":return{FCP:null};case"INP":return{INP:null};case"LCP":return{LCP:null};case"TTFB":return{TTFB:null};case"FID":return"deprecated";default:return"unknown"}})();if(s==="unknown"||s==="deprecated")return s;let O={value:r,delta:n,id:i,navigation_type:d((()=>{switch(p){case"navigate":return{Navigate:null};case"restore":return{Restore:null};case"reload":return{Reload:null};case"back-forward":return{BackForward:null};case"back-forward-cache":return{BackForwardCache:null};case"prerender":return{Prerender:null};default:return}})())},{location:{href:B}}=document,{updated_at:z,...R}=u();return{href:B,metric_name:s,session_id:e,data:{WebVitalsMetric:O},...m(),...R}};var W=()=>{if(!(typeof crypto>"u"))return x()},b=W(),a,N=e=>{let{path:t}=e.worker??{},r=t===void 0?"./workers/analytics.worker.js":t;a=new Worker(r);let n=()=>console.warn("Unable to connect to the analytics web worker. Have you deployed it?");return a?.addEventListener("error",n,!1),J(e),{cleanup(){a?.removeEventListener("error",n,!1)}}},E=()=>{let e=async()=>await A(),t=new Proxy(history.pushState,{apply:async(r,n,i)=>{r.apply(n,i),await e()}});return history.pushState=t,addEventListener("popstate",e,{passive:!0}),{cleanup(){t=null,removeEventListener("popstate",e,!1)}}},v="No session ID initialized.",h=async()=>{if(!y())return;c(b,v);let{title:e,location:{href:t},referrer:r}=document,{innerWidth:n,innerHeight:i}=window,{timeZone:p}=Intl.DateTimeFormat().resolvedOptions(),o={title:e,href:t,referrer:d(g(r)&&r!==""?r:void 0),device:{inner_width:n,inner_height:i},time_zone:p,session_id:b,...m(),...u()};await(await import("./idb.services-CVJFLYYN.js")).setPageView({key:x(),view:o})},P=async({options:e})=>{y()&&e?.performance!==!1&&(c(b,v),await T(b))},A=async()=>{f(a),await h(),a?.postMessage({msg:"junoTrackPageView"})},H=async e=>{if(!y())return;c(b,v),f(a),await(await import("./idb.services-CVJFLYYN.js")).setTrackEvent({key:x(),track:{...e,session_id:b,...m(),...u()}}),a?.postMessage({msg:"junoTrackEvent"})},J=e=>{f(a),a?.postMessage({msg:"junoInitEnvironment",data:e})},M=()=>{f(a),a?.postMessage({msg:"junoStartTrackTimer"})},S=()=>{f(a),a?.postMessage({msg:"junoStopTracker"})};var U=()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_SATELLITE_ID??import.meta.env?.PUBLIC_SATELLITE_ID:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_SATELLITE_ID??e():e()},C=()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_ORBITER_ID??import.meta.env?.PUBLIC_ORBITER_ID:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_ORBITER_ID??e():e()},L=()=>{let e=()=>typeof import.meta<"u"&&typeof import.meta.env<"u"?import.meta.env?.VITE_CONTAINER??import.meta.env?.PUBLIC_CONTAINER:void 0;return typeof process<"u"?process.env?.NEXT_PUBLIC_CONTAINER??e():e()};var q=e=>{let t=e?.satelliteId??U();c(t,"Satellite ID is not configured. Orbiter cannot be initialized without a target Satellite.");let r=e?.orbiterId??C();c(r,"Orbiter ID is not configured. The analytics cannot be initialized without an Orbiter.");let n=e?.container??L();return{orbiterId:r,satelliteId:t,container:n,worker:e?.worker,options:e?.options}},Le=async e=>{await h();let t=q(e),{cleanup:r}=N(t),{cleanup:n}=E();return await P(t),M(),()=>{S(),r(),n()}};export{Le as initOrbiter,H as trackEvent,A as trackPageView};
2
2
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../node_modules/@dfinity/principal/src/utils/base32.ts", "../../../../node_modules/@dfinity/principal/src/utils/getCrc.ts", "../../../utils/src/utils/debounce.utils.ts", "../../../utils/src/utils/json.utils.ts", "../../../utils/src/utils/null.utils.ts", "../../../utils/src/utils/did.utils.ts", "../../../utils/src/utils/env.utils.ts", "../../../../node_modules/nanoid/url-alphabet/index.js", "../../../../node_modules/nanoid/index.browser.js", "../../src/utils/date.utils.ts", "../../src/utils/analytics.utils.ts", "../../src/utils/log.utils.ts", "../../src/services/analytics.services.ts", "../../src/utils/window.env.utils.ts", "../../src/index.ts"],
4
- "sourcesContent": ["const alphabet = 'abcdefghijklmnopqrstuvwxyz234567';\n\n// Build a lookup table for decoding.\nconst lookupTable: Record<string, number> = Object.create(null);\nfor (let i = 0; i < alphabet.length; i++) {\n lookupTable[alphabet[i]] = i;\n}\n\n// Add aliases for rfc4648.\nlookupTable['0'] = lookupTable.o;\nlookupTable['1'] = lookupTable.i;\n\n/**\n * @param input The input array to encode.\n * @returns A Base32 string encoding the input.\n */\nexport function encode(input: Uint8Array): string {\n // How many bits will we skip from the first byte.\n let skip = 0;\n // 5 high bits, carry from one byte to the next.\n let bits = 0;\n\n // The output string in base32.\n let output = '';\n\n function encodeByte(byte: number) {\n if (skip < 0) {\n // we have a carry from the previous byte\n bits |= byte >> -skip;\n } else {\n // no carry\n bits = (byte << skip) & 248;\n }\n\n if (skip > 3) {\n // Not enough data to produce a character, get us another one\n skip -= 8;\n return 1;\n }\n\n if (skip < 4) {\n // produce a character\n output += alphabet[bits >> 3];\n skip += 5;\n }\n\n return 0;\n }\n\n for (let i = 0; i < input.length; ) {\n i += encodeByte(input[i]);\n }\n\n return output + (skip < 0 ? alphabet[bits >> 3] : '');\n}\n\n/**\n * @param input The base32 encoded string to decode.\n */\nexport function decode(input: string): Uint8Array {\n // how many bits we have from the previous character.\n let skip = 0;\n // current byte we're producing.\n let byte = 0;\n\n const output = new Uint8Array(((input.length * 4) / 3) | 0);\n let o = 0;\n\n function decodeChar(char: string) {\n // Consume a character from the stream, store\n // the output in this.output. As before, better\n // to use update().\n let val = lookupTable[char.toLowerCase()];\n if (val === undefined) {\n throw new Error(`Invalid character: ${JSON.stringify(char)}`);\n }\n\n // move to the high bits\n val <<= 3;\n byte |= val >>> skip;\n skip += 5;\n\n if (skip >= 8) {\n // We have enough bytes to produce an output\n output[o++] = byte;\n skip -= 8;\n\n if (skip > 0) {\n byte = (val << (5 - skip)) & 255;\n } else {\n byte = 0;\n }\n }\n }\n\n for (const c of input) {\n decodeChar(c);\n }\n\n return output.slice(0, o);\n}\n", "// This file is translated to JavaScript from\n// https://lxp32.github.io/docs/a-simple-example-crc32-calculation/\nconst lookUpTable: Uint32Array = new Uint32Array([\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,\n 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,\n 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,\n 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,\n 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,\n 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,\n 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,\n 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,\n 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,\n 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,\n 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,\n 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,\n 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,\n 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,\n 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,\n 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,\n 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,\n 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,\n]);\n\n/**\n * Calculate the CRC32 of an ArrayBufferLike.\n * @param buf The BufferLike to calculate the CRC32 of.\n */\nexport function getCrc32(buf: ArrayBufferLike): number {\n const b = new Uint8Array(buf);\n let crc = -1;\n\n for (let i = 0; i < b.length; i++) {\n const byte = b[i];\n const t = (byte ^ crc) & 0xff;\n crc = lookUpTable[t] ^ (crc >>> 8);\n }\n\n return (crc ^ -1) >>> 0;\n}\n", "/**\n * Creates a debounced function that delays invoking the provided function until after the specified timeout.\n * @param {Function} func - The function to debounce.\n * @param {number} [timeout=300] - The number of milliseconds to delay. Defaults to 300ms if not specified or invalid.\n * @returns {Function} A debounced function.\n */\n/* eslint-disable-next-line @typescript-eslint/ban-types */\nexport const debounce = (func: Function, timeout?: number): Function => {\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n return (...args: unknown[]) => {\n const next = () => func(...args);\n\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = setTimeout(next, timeout !== undefined && timeout > 0 ? timeout : 300);\n };\n};\n", "import {Principal} from '@dfinity/principal';\nimport {nonNullish} from './null.utils';\n\nconst JSON_KEY_BIGINT = '__bigint__';\nconst JSON_KEY_PRINCIPAL = '__principal__';\nconst JSON_KEY_UINT8ARRAY = '__uint8array__';\n\n/**\n * A function that alters the behavior of the stringification process for BigInt, Principal, and Uint8Array.\n * @param {string} _key - The key of the value being stringified.\n * @param {unknown} value - The value being stringified.\n * @returns {unknown} The altered value for stringification.\n */\nexport const jsonReplacer = (_key: string, value: unknown): unknown => {\n if (typeof value === 'bigint') {\n return {[JSON_KEY_BIGINT]: `${value}`};\n }\n\n if (nonNullish(value) && value instanceof Principal) {\n return {[JSON_KEY_PRINCIPAL]: value.toText()};\n }\n\n if (nonNullish(value) && value instanceof Uint8Array) {\n return {[JSON_KEY_UINT8ARRAY]: Array.from(value)};\n }\n\n return value;\n};\n\n/**\n * A parser that interprets revived BigInt, Principal, and Uint8Array when constructing JavaScript values or objects.\n * @param {string} _key - The key of the value being parsed.\n * @param {unknown} value - The value being parsed.\n * @returns {unknown} The parsed value.\n */\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 if (nonNullish(value) && typeof value === 'object' && JSON_KEY_PRINCIPAL in value) {\n return Principal.fromText(mapValue(JSON_KEY_PRINCIPAL));\n }\n\n if (nonNullish(value) && typeof value === 'object' && JSON_KEY_UINT8ARRAY in value) {\n return Uint8Array.from(mapValue(JSON_KEY_UINT8ARRAY));\n }\n\n return value;\n};\n", "/**\n * Checks if the provided argument is null or undefined.\n * @template T\n * @param {T | undefined | null} argument - The argument to check.\n * @returns {boolean} True if the argument is null or undefined, false otherwise.\n */\nexport const isNullish = <T>(argument: T | undefined | null): argument is undefined | null =>\n argument === null || argument === undefined;\n\n/**\n * Checks if the provided argument is neither null nor undefined.\n * @template T\n * @param {T | undefined | null} argument - The argument to check.\n * @returns {boolean} True if the argument is neither null nor undefined, false otherwise.\n */\nexport const nonNullish = <T>(argument: T | undefined | null): argument is NonNullable<T> =>\n !isNullish(argument);\n\n/**\n * Represents an error thrown when a value is null or undefined.\n * @class\n * @extends {Error}\n */\nexport class NullishError extends Error {}\n\n/**\n * Asserts that a value is neither null nor undefined.\n * @template T\n * @param {T} value - The value to check.\n * @param {string} [message] - The optional error message to use if the assertion fails.\n * @throws {NullishError} If the value is null or undefined.\n * @returns {asserts value is NonNullable<T>} Asserts that the value is neither null nor undefined.\n */\nexport const assertNonNullish: <T>(\n value: T,\n message?: string\n) => asserts value is NonNullable<T> = <T>(value: T, message?: string): void => {\n if (isNullish(value)) {\n throw new NullishError(message);\n }\n};\n", "import {jsonReplacer, jsonReviver} from './json.utils';\nimport {nonNullish} from './null.utils';\n\n/**\n * Converts a value to a nullable array.\n * @template T\n * @param {T} [value] - The value to convert.\n * @returns {([] | [T])} A nullable array containing the value if non-nullish, or an empty array if nullish.\n */\nexport const toNullable = <T>(value?: T): [] | [T] => {\n return nonNullish(value) ? [value] : [];\n};\n\n/**\n * Extracts a value from a nullable array.\n * @template T\n * @param {([] | [T])} value - The nullable array.\n * @returns {(T | undefined)} The value if present, or undefined if the array is empty.\n */\nexport const fromNullable = <T>(value: [] | [T]): T | undefined => {\n return value?.[0];\n};\n\n/**\n * Converts data to a Uint8Array for transmission or storage.\n * @template T\n * @param {T} data - The data to convert.\n * @returns {Promise<Uint8Array>} A promise that resolves to a Uint8Array representation of the data.\n */\nexport const toArray = async <T>(data: T): Promise<Uint8Array> => {\n const blob: Blob = new Blob([JSON.stringify(data, jsonReplacer)], {\n type: 'application/json; charset=utf-8'\n });\n return new Uint8Array(await blob.arrayBuffer());\n};\n\n/**\n * Converts a Uint8Array or number array back to the original data type.\n * @template T\n * @param {(Uint8Array | number[])} data - The array to convert.\n * @returns {Promise<T>} A promise that resolves to the original data.\n */\nexport const fromArray = async <T>(data: Uint8Array | number[]): Promise<T> => {\n const blob: Blob = new Blob([data instanceof Uint8Array ? data : new Uint8Array(data)], {\n type: 'application/json; charset=utf-8'\n });\n return JSON.parse(await blob.text(), jsonReviver);\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", "export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n", "import { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n", "export const nowInBigIntNanoSeconds = (): bigint => BigInt(Date.now()) * BigInt(1e6);\n", "import {toNullable} from '@junobuild/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", "import {isNullish} from '@junobuild/utils';\n\nconst WORKER_UNDEFINED_MSG =\n 'Analytics worker not initialized. Did you call `initOrbiter`?' as const;\n\nexport const warningWorkerNotInitialized = <T>(value: T) => {\n if (isNullish(value)) {\n console.warn(WORKER_UNDEFINED_MSG);\n }\n};\n", "import {assertNonNullish, isBrowser, nonNullish, toNullable} 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';\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 === undefined ? './workers/analytics.worker.js' : path;\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 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.' as const;\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 as string,\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\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 as string, ...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", "// TODO: duplicated because those should not be bundled in web worker. We can avoid this by transforming utils into a library of modules.\ntype ImportMeta = {env: Record<string, string> | undefined};\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 {assertNonNullish} from '@junobuild/utils';\nimport {\n initTrackPageViews,\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 * 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 };\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 // 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"],
5
- "mappings": "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",
6
- "names": ["alphabet", "lookupTable", "i", "lookUpTable", "isNullish", "argument", "nonNullish", "NullishError", "assertNonNullish", "value", "message", "toNullable", "value", "nonNullish", "isBrowser", "urlAlphabet", "nanoid", "size", "id", "bytes", "urlAlphabet", "nowInBigIntNanoSeconds", "timestamp", "nowInBigIntNanoSeconds", "userAgent", "g", "WORKER_UNDEFINED_MSG", "warningWorkerNotInitialized", "value", "initSessionId", "nanoid", "sessionId", "worker", "initWorker", "env", "path", "workerUrl", "consoleWarn", "initWorkerEnvironment", "initTrackPageViews", "trackPages", "trackPageView", "pushStateProxy", "target", "thisArg", "argArray", "SESSION_ID_UNDEFINED_MSG", "setPageView", "h", "x", "title", "href", "referrer", "innerWidth", "innerHeight", "timeZone", "data", "g", "t", "userAgent", "timestamp", "warningWorkerNotInitialized", "trackEvent", "startTracking", "stopTracking", "envSatelliteId", "viteEnvSatelliteId", "envOrbiterId", "viteEnvOrbiterId", "envContainer", "viteEnvContainer", "parseEnv", "userEnv", "satelliteId", "envSatelliteId", "x", "orbiterId", "envOrbiterId", "container", "envContainer", "initOrbiter", "setPageView", "env", "workerCleanup", "initWorker", "pushHistoryCleanup", "initTrackPageViews", "startTracking", "stopTracking"]
3
+ "sources": ["../../../../node_modules/@dfinity/principal/src/utils/base32.ts", "../../../../node_modules/@dfinity/principal/src/utils/getCrc.ts", "../../../utils/src/utils/debounce.utils.ts", "../../../utils/src/utils/json.utils.ts", "../../../utils/src/utils/null.utils.ts", "../../../utils/src/utils/did.utils.ts", "../../../utils/src/utils/env.utils.ts", "../../../../node_modules/nanoid/url-alphabet/index.js", "../../../../node_modules/nanoid/index.browser.js", "../../src/utils/date.utils.ts", "../../src/utils/analytics.utils.ts", "../../src/utils/log.utils.ts", "../../src/services/performance.services.ts", "../../src/services/analytics.services.ts", "../../src/utils/window.env.utils.ts", "../../src/index.ts"],
4
+ "sourcesContent": ["const alphabet = 'abcdefghijklmnopqrstuvwxyz234567';\n\n// Build a lookup table for decoding.\nconst lookupTable: Record<string, number> = Object.create(null);\nfor (let i = 0; i < alphabet.length; i++) {\n lookupTable[alphabet[i]] = i;\n}\n\n// Add aliases for rfc4648.\nlookupTable['0'] = lookupTable.o;\nlookupTable['1'] = lookupTable.i;\n\n/**\n * @param input The input array to encode.\n * @returns A Base32 string encoding the input.\n */\nexport function encode(input: Uint8Array): string {\n // How many bits will we skip from the first byte.\n let skip = 0;\n // 5 high bits, carry from one byte to the next.\n let bits = 0;\n\n // The output string in base32.\n let output = '';\n\n function encodeByte(byte: number) {\n if (skip < 0) {\n // we have a carry from the previous byte\n bits |= byte >> -skip;\n } else {\n // no carry\n bits = (byte << skip) & 248;\n }\n\n if (skip > 3) {\n // Not enough data to produce a character, get us another one\n skip -= 8;\n return 1;\n }\n\n if (skip < 4) {\n // produce a character\n output += alphabet[bits >> 3];\n skip += 5;\n }\n\n return 0;\n }\n\n for (let i = 0; i < input.length; ) {\n i += encodeByte(input[i]);\n }\n\n return output + (skip < 0 ? alphabet[bits >> 3] : '');\n}\n\n/**\n * @param input The base32 encoded string to decode.\n */\nexport function decode(input: string): Uint8Array {\n // how many bits we have from the previous character.\n let skip = 0;\n // current byte we're producing.\n let byte = 0;\n\n const output = new Uint8Array(((input.length * 4) / 3) | 0);\n let o = 0;\n\n function decodeChar(char: string) {\n // Consume a character from the stream, store\n // the output in this.output. As before, better\n // to use update().\n let val = lookupTable[char.toLowerCase()];\n if (val === undefined) {\n throw new Error(`Invalid character: ${JSON.stringify(char)}`);\n }\n\n // move to the high bits\n val <<= 3;\n byte |= val >>> skip;\n skip += 5;\n\n if (skip >= 8) {\n // We have enough bytes to produce an output\n output[o++] = byte;\n skip -= 8;\n\n if (skip > 0) {\n byte = (val << (5 - skip)) & 255;\n } else {\n byte = 0;\n }\n }\n }\n\n for (const c of input) {\n decodeChar(c);\n }\n\n return output.slice(0, o);\n}\n", "// This file is translated to JavaScript from\n// https://lxp32.github.io/docs/a-simple-example-crc32-calculation/\nconst lookUpTable: Uint32Array = new Uint32Array([\n 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,\n 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,\n 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,\n 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,\n 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,\n 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,\n 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,\n 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,\n 0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,\n 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,\n 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,\n 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,\n 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,\n 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,\n 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,\n 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,\n 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,\n 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,\n 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,\n 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,\n 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,\n 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,\n 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,\n 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,\n 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,\n 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,\n 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,\n 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,\n 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,\n 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,\n 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,\n 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,\n]);\n\n/**\n * Calculate the CRC32 of an ArrayBufferLike.\n * @param buf The BufferLike to calculate the CRC32 of.\n */\nexport function getCrc32(buf: ArrayBufferLike): number {\n const b = new Uint8Array(buf);\n let crc = -1;\n\n for (let i = 0; i < b.length; i++) {\n const byte = b[i];\n const t = (byte ^ crc) & 0xff;\n crc = lookUpTable[t] ^ (crc >>> 8);\n }\n\n return (crc ^ -1) >>> 0;\n}\n", "/**\n * Creates a debounced function that delays invoking the provided function until after the specified timeout.\n * @param {Function} func - The function to debounce.\n * @param {number} [timeout=300] - The number of milliseconds to delay. Defaults to 300ms if not specified or invalid.\n * @returns {Function} A debounced function.\n */\n/* eslint-disable-next-line @typescript-eslint/ban-types */\nexport const debounce = (func: Function, timeout?: number): Function => {\n let timer: ReturnType<typeof setTimeout> | undefined;\n\n return (...args: unknown[]) => {\n const next = () => func(...args);\n\n if (timer) {\n clearTimeout(timer);\n }\n\n timer = setTimeout(next, timeout !== undefined && timeout > 0 ? timeout : 300);\n };\n};\n", "import {Principal} from '@dfinity/principal';\nimport {nonNullish} from './null.utils';\n\nconst JSON_KEY_BIGINT = '__bigint__';\nconst JSON_KEY_PRINCIPAL = '__principal__';\nconst JSON_KEY_UINT8ARRAY = '__uint8array__';\n\n/**\n * A function that alters the behavior of the stringification process for BigInt, Principal, and Uint8Array.\n * @param {string} _key - The key of the value being stringified.\n * @param {unknown} value - The value being stringified.\n * @returns {unknown} The altered value for stringification.\n */\nexport const jsonReplacer = (_key: string, value: unknown): unknown => {\n if (typeof value === 'bigint') {\n return {[JSON_KEY_BIGINT]: `${value}`};\n }\n\n if (nonNullish(value) && value instanceof Principal) {\n return {[JSON_KEY_PRINCIPAL]: value.toText()};\n }\n\n if (nonNullish(value) && value instanceof Uint8Array) {\n return {[JSON_KEY_UINT8ARRAY]: Array.from(value)};\n }\n\n return value;\n};\n\n/**\n * A parser that interprets revived BigInt, Principal, and Uint8Array when constructing JavaScript values or objects.\n * @param {string} _key - The key of the value being parsed.\n * @param {unknown} value - The value being parsed.\n * @returns {unknown} The parsed value.\n */\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 if (nonNullish(value) && typeof value === 'object' && JSON_KEY_PRINCIPAL in value) {\n return Principal.fromText(mapValue(JSON_KEY_PRINCIPAL));\n }\n\n if (nonNullish(value) && typeof value === 'object' && JSON_KEY_UINT8ARRAY in value) {\n return Uint8Array.from(mapValue(JSON_KEY_UINT8ARRAY));\n }\n\n return value;\n};\n", "/**\n * Checks if the provided argument is null or undefined.\n * @template T\n * @param {T | undefined | null} argument - The argument to check.\n * @returns {boolean} True if the argument is null or undefined, false otherwise.\n */\nexport const isNullish = <T>(argument: T | undefined | null): argument is undefined | null =>\n argument === null || argument === undefined;\n\n/**\n * Checks if the provided argument is neither null nor undefined.\n * @template T\n * @param {T | undefined | null} argument - The argument to check.\n * @returns {boolean} True if the argument is neither null nor undefined, false otherwise.\n */\nexport const nonNullish = <T>(argument: T | undefined | null): argument is NonNullable<T> =>\n !isNullish(argument);\n\n/**\n * Represents an error thrown when a value is null or undefined.\n * @class\n * @extends {Error}\n */\nexport class NullishError extends Error {}\n\n/**\n * Asserts that a value is neither null nor undefined.\n * @template T\n * @param {T} value - The value to check.\n * @param {string} [message] - The optional error message to use if the assertion fails.\n * @throws {NullishError} If the value is null or undefined.\n * @returns {asserts value is NonNullable<T>} Asserts that the value is neither null nor undefined.\n */\nexport const assertNonNullish: <T>(\n value: T,\n message?: string\n) => asserts value is NonNullable<T> = <T>(value: T, message?: string): void => {\n if (isNullish(value)) {\n throw new NullishError(message);\n }\n};\n", "import {jsonReplacer, jsonReviver} from './json.utils';\nimport {nonNullish} from './null.utils';\n\n/**\n * Converts a value to a nullable array.\n * @template T\n * @param {T} [value] - The value to convert.\n * @returns {([] | [T])} A nullable array containing the value if non-nullish, or an empty array if nullish.\n */\nexport const toNullable = <T>(value?: T): [] | [T] => {\n return nonNullish(value) ? [value] : [];\n};\n\n/**\n * Extracts a value from a nullable array.\n * @template T\n * @param {([] | [T])} value - The nullable array.\n * @returns {(T | undefined)} The value if present, or undefined if the array is empty.\n */\nexport const fromNullable = <T>(value: [] | [T]): T | undefined => {\n return value?.[0];\n};\n\n/**\n * Converts data to a Uint8Array for transmission or storage.\n * @template T\n * @param {T} data - The data to convert.\n * @returns {Promise<Uint8Array>} A promise that resolves to a Uint8Array representation of the data.\n */\nexport const toArray = async <T>(data: T): Promise<Uint8Array> => {\n const blob: Blob = new Blob([JSON.stringify(data, jsonReplacer)], {\n type: 'application/json; charset=utf-8'\n });\n return new Uint8Array(await blob.arrayBuffer());\n};\n\n/**\n * Converts a Uint8Array or number array back to the original data type.\n * @template T\n * @param {(Uint8Array | number[])} data - The array to convert.\n * @returns {Promise<T>} A promise that resolves to the original data.\n */\nexport const fromArray = async <T>(data: Uint8Array | number[]): Promise<T> => {\n const blob: Blob = new Blob([data instanceof Uint8Array ? data : new Uint8Array(data)], {\n type: 'application/json; charset=utf-8'\n });\n return JSON.parse(await blob.text(), jsonReviver);\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", "export const urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n", "import { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nexport let random = bytes => crypto.getRandomValues(new Uint8Array(bytes))\nexport let customRandom = (alphabet, defaultSize, getRandom) => {\n let mask = (2 << (Math.log(alphabet.length - 1) / Math.LN2)) - 1\n let step = -~((1.6 * mask * defaultSize) / alphabet.length)\n return (size = defaultSize) => {\n let id = ''\n while (true) {\n let bytes = getRandom(step)\n let j = step\n while (j--) {\n id += alphabet[bytes[j] & mask] || ''\n if (id.length === size) return id\n }\n }\n }\n}\nexport let customAlphabet = (alphabet, size = 21) =>\n customRandom(alphabet, size, random)\nexport let nanoid = (size = 21) => {\n let id = ''\n let bytes = crypto.getRandomValues(new Uint8Array(size))\n while (size--) {\n id += scopedUrlAlphabet[bytes[size] & 63]\n }\n return id\n}\n", "export const nowInBigIntNanoSeconds = (): bigint => BigInt(Date.now()) * BigInt(1e6);\n", "import {toNullable} from '@junobuild/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", "import {isNullish} from '@junobuild/utils';\n\nconst WORKER_UNDEFINED_MSG =\n 'Analytics worker not initialized. Did you call `initOrbiter`?' as const;\n\nexport const warningWorkerNotInitialized = <T>(value: T) => {\n if (isNullish(value)) {\n console.warn(WORKER_UNDEFINED_MSG);\n }\n};\n", "import {toNullable} from '@junobuild/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", "import {assertNonNullish, isBrowser, nonNullish, toNullable} 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 === undefined ? './workers/analytics.worker.js' : path;\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 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.' as const;\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 as string,\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 as string, ...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", "// TODO: duplicated because those should not be bundled in web worker. We can avoid this by transforming utils into a library of modules.\ntype ImportMeta = {env: Record<string, string> | undefined};\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 {assertNonNullish} from '@junobuild/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"],
5
+ "mappings": "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",
6
+ "names": ["alphabet", "lookupTable", "i", "lookUpTable", "isNullish", "argument", "nonNullish", "NullishError", "assertNonNullish", "value", "message", "toNullable", "value", "nonNullish", "isBrowser", "urlAlphabet", "nanoid", "size", "id", "bytes", "urlAlphabet", "nowInBigIntNanoSeconds", "timestamp", "nowInBigIntNanoSeconds", "userAgent", "g", "WORKER_UNDEFINED_MSG", "warningWorkerNotInitialized", "value", "c", "startPerformance", "sessionId", "onCLS", "onFCP", "onINP", "onLCP", "onTTFB", "setMetric", "metric", "setPerformanceMetric", "data", "mapPerformanceMetric", "nanoid", "metricName", "value", "delta", "id", "navigationType", "metric_name", "g", "href", "_", "timestampRest", "timestamp", "userAgent", "initSessionId", "nanoid", "sessionId", "worker", "initWorker", "env", "path", "workerUrl", "consoleWarn", "initWorkerEnvironment", "initTrackPageViews", "trackPages", "trackPageView", "pushStateProxy", "target", "thisArg", "argArray", "SESSION_ID_UNDEFINED_MSG", "setPageView", "h", "x", "title", "href", "referrer", "innerWidth", "innerHeight", "timeZone", "data", "g", "t", "userAgent", "timestamp", "initTrackPerformance", "options", "startPerformance", "warningWorkerNotInitialized", "trackEvent", "startTracking", "stopTracking", "envSatelliteId", "viteEnvSatelliteId", "envOrbiterId", "viteEnvOrbiterId", "envContainer", "viteEnvContainer", "parseEnv", "userEnv", "satelliteId", "envSatelliteId", "x", "orbiterId", "envOrbiterId", "container", "envContainer", "initOrbiter", "setPageView", "env", "workerCleanup", "initWorker", "pushHistoryCleanup", "initTrackPageViews", "initTrackPerformance", "startTracking", "stopTracking"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ var F,p,T,z,S,G=-1,v=function(n){addEventListener("pageshow",function(t){t.persisted&&(G=t.timeStamp,n(t))},!0)},M=function(){var n=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(n&&n.responseStart>0&&n.responseStart<performance.now())return n},w=function(){var n=M();return n&&n.activationStart||0},s=function(n,t){var r=M(),i="navigate";return G>=0?i="back-forward-cache":r&&(document.prerendering||w()>0?i="prerender":document.wasDiscarded?i="restore":r.type&&(i=r.type.replace(/_/g,"-"))),{name:n,value:t===void 0?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:i}},h=function(n,t,r){try{if(PerformanceObserver.supportedEntryTypes.includes(n)){var i=new PerformanceObserver(function(e){Promise.resolve().then(function(){t(e.getEntries())})});return i.observe(Object.assign({type:n,buffered:!0},r||{})),i}}catch{}},f=function(n,t,r,i){var e,a;return function(c){t.value>=0&&(c||i)&&((a=t.value-(e||0))||e===void 0)&&(e=t.value,t.delta=a,t.rating=function(u,o){return u>o[1]?"poor":u>o[0]?"needs-improvement":"good"}(t.value,r),n(t))}},k=function(n){requestAnimationFrame(function(){return requestAnimationFrame(function(){return n()})})},y=function(n){document.addEventListener("visibilitychange",function(){document.visibilityState==="hidden"&&n()})},I=function(n){var t=!1;return function(){t||(n(),t=!0)}},m=-1,B=function(){return document.visibilityState!=="hidden"||document.prerendering?1/0:0},b=function(n){document.visibilityState==="hidden"&&m>-1&&(m=n.type==="visibilitychange"?n.timeStamp:0,Z())},x=function(){addEventListener("visibilitychange",b,!0),addEventListener("prerenderingchange",b,!0)},Z=function(){removeEventListener("visibilitychange",b,!0),removeEventListener("prerenderingchange",b,!0)},D=function(){return m<0&&(m=B(),x(),v(function(){setTimeout(function(){m=B(),x()},0)})),{get firstHiddenTime(){return m}}},E=function(n){document.prerendering?addEventListener("prerenderingchange",function(){return n()},!0):n()},R=[1800,3e3],$=function(n,t){t=t||{},E(function(){var r,i=D(),e=s("FCP"),a=h("paint",function(c){c.forEach(function(u){u.name==="first-contentful-paint"&&(a.disconnect(),u.startTime<i.firstHiddenTime&&(e.value=Math.max(u.startTime-w(),0),e.entries.push(u),r(!0)))})});a&&(r=f(n,e,R,t.reportAllChanges),v(function(c){e=s("FCP"),r=f(n,e,R,t.reportAllChanges),k(function(){e.value=performance.now()-c.timeStamp,r(!0)})}))})},H=[.1,.25],sn=function(n,t){t=t||{},$(I(function(){var r,i=s("CLS",0),e=0,a=[],c=function(o){o.forEach(function(d){if(!d.hadRecentInput){var X=a[0],Y=a[a.length-1];e&&d.startTime-Y.startTime<1e3&&d.startTime-X.startTime<5e3?(e+=d.value,a.push(d)):(e=d.value,a=[d])}}),e>i.value&&(i.value=e,i.entries=a,r())},u=h("layout-shift",c);u&&(r=f(n,i,H,t.reportAllChanges),y(function(){c(u.takeRecords()),r(!0)}),v(function(){e=0,i=s("CLS",0),r=f(n,i,H,t.reportAllChanges),k(function(){return r()})}),setTimeout(r,0))}))},J=0,P=1/0,C=0,nn=function(n){n.forEach(function(t){t.interactionId&&(P=Math.min(P,t.interactionId),C=Math.max(C,t.interactionId),J=C?(C-P)/7+1:0)})},K=function(){return F?J:performance.interactionCount||0},tn=function(){"interactionCount"in performance||F||(F=h("event",nn,{type:"event",buffered:!0,durationThreshold:0}))},l=[],L=new Map,Q=0,en=function(){var n=Math.min(l.length-1,Math.floor((K()-Q)/50));return l[n]},rn=[],on=function(n){if(rn.forEach(function(e){return e(n)}),n.interactionId||n.entryType==="first-input"){var t=l[l.length-1],r=L.get(n.interactionId);if(r||l.length<10||n.duration>t.latency){if(r)n.duration>r.latency?(r.entries=[n],r.latency=n.duration):n.duration===r.latency&&n.startTime===r.entries[0].startTime&&r.entries.push(n);else{var i={id:n.interactionId,latency:n.duration,entries:[n]};L.set(i.id,i),l.push(i)}l.sort(function(e,a){return a.latency-e.latency}),l.length>10&&l.splice(10).forEach(function(e){return L.delete(e.id)})}}},U=function(n){var t=self.requestIdleCallback||self.setTimeout,r=-1;return n=I(n),document.visibilityState==="hidden"?n():(r=t(n),y(n)),r},N=[200,500],fn=function(n,t){"PerformanceEventTiming"in self&&"interactionId"in PerformanceEventTiming.prototype&&(t=t||{},E(function(){var r;tn();var i,e=s("INP"),a=function(u){U(function(){u.forEach(on);var o=en();o&&o.latency!==e.value&&(e.value=o.latency,e.entries=o.entries,i())})},c=h("event",a,{durationThreshold:(r=t.durationThreshold)!==null&&r!==void 0?r:40});i=f(n,e,N,t.reportAllChanges),c&&(c.observe({type:"first-input",buffered:!0}),y(function(){a(c.takeRecords()),i(!0)}),v(function(){Q=K(),l.length=0,L.clear(),e=s("INP"),i=f(n,e,N,t.reportAllChanges)}))}))},q=[2500,4e3],A={},dn=function(n,t){t=t||{},E(function(){var r,i=D(),e=s("LCP"),a=function(o){t.reportAllChanges||(o=o.slice(-1)),o.forEach(function(d){d.startTime<i.firstHiddenTime&&(e.value=Math.max(d.startTime-w(),0),e.entries=[d],r())})},c=h("largest-contentful-paint",a);if(c){r=f(n,e,q,t.reportAllChanges);var u=I(function(){A[e.id]||(a(c.takeRecords()),c.disconnect(),A[e.id]=!0,r(!0))});["keydown","click"].forEach(function(o){addEventListener(o,function(){return U(u)},!0)}),y(u),v(function(o){e=s("LCP"),r=f(n,e,q,t.reportAllChanges),k(function(){e.value=performance.now()-o.timeStamp,A[e.id]=!0,r(!0)})})}})},O=[800,1800],an=function n(t){document.prerendering?E(function(){return n(t)}):document.readyState!=="complete"?addEventListener("load",function(){return n(t)},!0):setTimeout(t,0)},ln=function(n,t){t=t||{};var r=s("TTFB"),i=f(n,r,O,t.reportAllChanges);an(function(){var e=M();e&&(r.value=Math.max(e.responseStart-w(),0),r.entries=[e],i(!0),v(function(){r=s("TTFB",0),(i=f(n,r,O,t.reportAllChanges))(!0)}))})},g={passive:!0,capture:!0},cn=new Date,j=function(n,t){p||(p=t,T=n,z=new Date,W(removeEventListener),V())},V=function(){if(T>=0&&T<z-cn){var n={entryType:"first-input",name:p.type,target:p.target,cancelable:p.cancelable,startTime:p.timeStamp,processingStart:p.timeStamp+T};S.forEach(function(t){t(n)}),S=[]}},un=function(n){if(n.cancelable){var t=(n.timeStamp>1e12?new Date:performance.now())-n.timeStamp;n.type=="pointerdown"?function(r,i){var e=function(){j(r,i),c()},a=function(){c()},c=function(){removeEventListener("pointerup",e,g),removeEventListener("pointercancel",a,g)};addEventListener("pointerup",e,g),addEventListener("pointercancel",a,g)}(t,n):j(t,n)}},W=function(n){["mousedown","keydown","touchstart","pointerdown"].forEach(function(t){return n(t,un,g)})},_=[100,300],pn=function(n,t){t=t||{},E(function(){var r,i=D(),e=s("FID"),a=function(o){o.startTime<i.firstHiddenTime&&(e.value=o.processingStart-o.startTime,e.entries.push(o),r(!0))},c=function(o){o.forEach(a)},u=h("first-input",c);r=f(n,e,_,t.reportAllChanges),u&&(y(I(function(){c(u.takeRecords()),u.disconnect()})),v(function(){var o;e=s("FID"),r=f(n,e,_,t.reportAllChanges),S=[],T=-1,p=null,W(addEventListener),o=a,S.push(o),V()}))})};export{H as CLSThresholds,R as FCPThresholds,_ as FIDThresholds,N as INPThresholds,q as LCPThresholds,O as TTFBThresholds,sn as onCLS,$ as onFCP,pn as onFID,fn as onINP,dn as onLCP,ln as onTTFB};
2
+ //# sourceMappingURL=web-vitals-BPYNZXGZ.js.map
@@ -0,0 +1,7 @@
1
+ {
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)}),!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"],
5
+ "mappings": "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",
6
+ "names": ["e", "n", "t", "r", "i", "o", "a", "c", "u", "f", "s", "d", "l", "p", "v", "h", "g", "T", "y", "E", "C", "b", "S", "L", "w", "A", "I", "P", "M", "k", "F", "D", "x", "R", "B", "H", "q", "O", "j", "_", "z", "G", "m", "J", "K", "Q", "U", "V", "W", "Z", "X", "Y", "$", "ee"]
7
+ }
@@ -37,6 +37,17 @@ export interface AnalyticsTop10PageViews {
37
37
  export interface AnalyticsTrackEvents {
38
38
  total: Array<[string, number]>;
39
39
  }
40
+ export interface AnalyticsWebVitalsPageMetrics {
41
+ cls: [] | [number];
42
+ fcp: [] | [number];
43
+ inp: [] | [number];
44
+ lcp: [] | [number];
45
+ ttfb: [] | [number];
46
+ }
47
+ export interface AnalyticsWebVitalsPerformanceMetrics {
48
+ overall: AnalyticsWebVitalsPageMetrics;
49
+ pages: Array<[string, AnalyticsWebVitalsPageMetrics]>;
50
+ }
40
51
  export interface CalendarDate {
41
52
  day: number;
42
53
  month: number;
@@ -69,6 +80,13 @@ export interface MemorySize {
69
80
  stable: bigint;
70
81
  heap: bigint;
71
82
  }
83
+ export type NavigationType =
84
+ | {Navigate: null}
85
+ | {Restore: null}
86
+ | {Reload: null}
87
+ | {BackForward: null}
88
+ | {BackForwardCache: null}
89
+ | {Prerender: null};
72
90
  export interface OrbiterSatelliteConfig {
73
91
  updated_at: bigint;
74
92
  created_at: bigint;
@@ -92,9 +110,27 @@ export interface PageViewDevice {
92
110
  inner_height: number;
93
111
  inner_width: number;
94
112
  }
113
+ export type PerformanceData = {WebVitalsMetric: WebVitalsMetric};
114
+ export interface PerformanceMetric {
115
+ updated_at: bigint;
116
+ session_id: string;
117
+ data: PerformanceData;
118
+ href: string;
119
+ metric_name: PerformanceMetricName;
120
+ created_at: bigint;
121
+ satellite_id: Principal;
122
+ version: [] | [bigint];
123
+ }
124
+ export type PerformanceMetricName =
125
+ | {CLS: null}
126
+ | {FCP: null}
127
+ | {INP: null}
128
+ | {LCP: null}
129
+ | {TTFB: null};
95
130
  export type Result = {Ok: PageView} | {Err: string};
96
131
  export type Result_1 = {Ok: null} | {Err: Array<[AnalyticKey, string]>};
97
- export type Result_2 = {Ok: TrackEvent} | {Err: string};
132
+ export type Result_2 = {Ok: PerformanceMetric} | {Err: string};
133
+ export type Result_3 = {Ok: TrackEvent} | {Err: string};
98
134
  export interface SetController {
99
135
  metadata: Array<[string, string]>;
100
136
  scope: ControllerScope;
@@ -116,6 +152,15 @@ export interface SetPageView {
116
152
  version: [] | [bigint];
117
153
  user_agent: [] | [string];
118
154
  }
155
+ export interface SetPerformanceMetric {
156
+ session_id: string;
157
+ data: PerformanceData;
158
+ href: string;
159
+ metric_name: PerformanceMetricName;
160
+ satellite_id: Principal;
161
+ version: [] | [bigint];
162
+ user_agent: [] | [string];
163
+ }
119
164
  export interface SetSatelliteConfig {
120
165
  version: [] | [bigint];
121
166
  enabled: boolean;
@@ -138,6 +183,12 @@ export interface TrackEvent {
138
183
  satellite_id: Principal;
139
184
  version: [] | [bigint];
140
185
  }
186
+ export interface WebVitalsMetric {
187
+ id: string;
188
+ value: number;
189
+ navigation_type: [] | [NavigationType];
190
+ delta: number;
191
+ }
141
192
  export interface _SERVICE {
142
193
  del_controllers: ActorMethod<[DeleteControllersArgs], Array<[Principal, Controller]>>;
143
194
  del_satellite_config: ActorMethod<[Principal, DelSatelliteConfig], undefined>;
@@ -146,6 +197,11 @@ export interface _SERVICE {
146
197
  get_page_views_analytics_clients: ActorMethod<[GetAnalytics], AnalyticsClientsPageViews>;
147
198
  get_page_views_analytics_metrics: ActorMethod<[GetAnalytics], AnalyticsMetricsPageViews>;
148
199
  get_page_views_analytics_top_10: ActorMethod<[GetAnalytics], AnalyticsTop10PageViews>;
200
+ get_performance_metrics: ActorMethod<[GetAnalytics], Array<[AnalyticKey, PerformanceMetric]>>;
201
+ get_performance_metrics_analytics_web_vitals: ActorMethod<
202
+ [GetAnalytics],
203
+ AnalyticsWebVitalsPerformanceMetrics
204
+ >;
149
205
  get_track_events: ActorMethod<[GetAnalytics], Array<[AnalyticKey, TrackEvent]>>;
150
206
  get_track_events_analytics: ActorMethod<[GetAnalytics], AnalyticsTrackEvents>;
151
207
  list_controllers: ActorMethod<[], Array<[Principal, Controller]>>;
@@ -154,11 +210,13 @@ export interface _SERVICE {
154
210
  set_controllers: ActorMethod<[SetControllersArgs], Array<[Principal, Controller]>>;
155
211
  set_page_view: ActorMethod<[AnalyticKey, SetPageView], Result>;
156
212
  set_page_views: ActorMethod<[Array<[AnalyticKey, SetPageView]>], Result_1>;
213
+ set_performance_metric: ActorMethod<[AnalyticKey, SetPerformanceMetric], Result_2>;
214
+ set_performance_metrics: ActorMethod<[Array<[AnalyticKey, SetPerformanceMetric]>], Result_1>;
157
215
  set_satellite_configs: ActorMethod<
158
216
  [Array<[Principal, SetSatelliteConfig]>],
159
217
  Array<[Principal, OrbiterSatelliteConfig]>
160
218
  >;
161
- set_track_event: ActorMethod<[AnalyticKey, SetTrackEvent], Result_2>;
219
+ set_track_event: ActorMethod<[AnalyticKey, SetTrackEvent], Result_3>;
162
220
  set_track_events: ActorMethod<[Array<[AnalyticKey, SetTrackEvent]>], Result_1>;
163
221
  version: ActorMethod<[], string>;
164
222
  }
@@ -78,6 +78,49 @@ export const idlFactory = ({IDL}) => {
78
78
  referrers: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32)),
79
79
  pages: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat32))
80
80
  });
81
+ const NavigationType = IDL.Variant({
82
+ Navigate: IDL.Null,
83
+ Restore: IDL.Null,
84
+ Reload: IDL.Null,
85
+ BackForward: IDL.Null,
86
+ BackForwardCache: IDL.Null,
87
+ Prerender: IDL.Null
88
+ });
89
+ const WebVitalsMetric = IDL.Record({
90
+ id: IDL.Text,
91
+ value: IDL.Float64,
92
+ navigation_type: IDL.Opt(NavigationType),
93
+ delta: IDL.Float64
94
+ });
95
+ const PerformanceData = IDL.Variant({WebVitalsMetric: WebVitalsMetric});
96
+ const PerformanceMetricName = IDL.Variant({
97
+ CLS: IDL.Null,
98
+ FCP: IDL.Null,
99
+ INP: IDL.Null,
100
+ LCP: IDL.Null,
101
+ TTFB: IDL.Null
102
+ });
103
+ const PerformanceMetric = IDL.Record({
104
+ updated_at: IDL.Nat64,
105
+ session_id: IDL.Text,
106
+ data: PerformanceData,
107
+ href: IDL.Text,
108
+ metric_name: PerformanceMetricName,
109
+ created_at: IDL.Nat64,
110
+ satellite_id: IDL.Principal,
111
+ version: IDL.Opt(IDL.Nat64)
112
+ });
113
+ const AnalyticsWebVitalsPageMetrics = IDL.Record({
114
+ cls: IDL.Opt(IDL.Float64),
115
+ fcp: IDL.Opt(IDL.Float64),
116
+ inp: IDL.Opt(IDL.Float64),
117
+ lcp: IDL.Opt(IDL.Float64),
118
+ ttfb: IDL.Opt(IDL.Float64)
119
+ });
120
+ const AnalyticsWebVitalsPerformanceMetrics = IDL.Record({
121
+ overall: AnalyticsWebVitalsPageMetrics,
122
+ pages: IDL.Vec(IDL.Tuple(IDL.Text, AnalyticsWebVitalsPageMetrics))
123
+ });
81
124
  const TrackEvent = IDL.Record({
82
125
  updated_at: IDL.Nat64,
83
126
  session_id: IDL.Text,
@@ -123,6 +166,16 @@ export const idlFactory = ({IDL}) => {
123
166
  Ok: IDL.Null,
124
167
  Err: IDL.Vec(IDL.Tuple(AnalyticKey, IDL.Text))
125
168
  });
169
+ const SetPerformanceMetric = IDL.Record({
170
+ session_id: IDL.Text,
171
+ data: PerformanceData,
172
+ href: IDL.Text,
173
+ metric_name: PerformanceMetricName,
174
+ satellite_id: IDL.Principal,
175
+ version: IDL.Opt(IDL.Nat64),
176
+ user_agent: IDL.Opt(IDL.Text)
177
+ });
178
+ const Result_2 = IDL.Variant({Ok: PerformanceMetric, Err: IDL.Text});
126
179
  const SetSatelliteConfig = IDL.Record({
127
180
  version: IDL.Opt(IDL.Nat64),
128
181
  enabled: IDL.Bool
@@ -136,7 +189,7 @@ export const idlFactory = ({IDL}) => {
136
189
  version: IDL.Opt(IDL.Nat64),
137
190
  user_agent: IDL.Opt(IDL.Text)
138
191
  });
139
- const Result_2 = IDL.Variant({Ok: TrackEvent, Err: IDL.Text});
192
+ const Result_3 = IDL.Variant({Ok: TrackEvent, Err: IDL.Text});
140
193
  return IDL.Service({
141
194
  del_controllers: IDL.Func(
142
195
  [DeleteControllersArgs],
@@ -161,6 +214,16 @@ export const idlFactory = ({IDL}) => {
161
214
  ['query']
162
215
  ),
163
216
  get_page_views_analytics_top_10: IDL.Func([GetAnalytics], [AnalyticsTop10PageViews], ['query']),
217
+ get_performance_metrics: IDL.Func(
218
+ [GetAnalytics],
219
+ [IDL.Vec(IDL.Tuple(AnalyticKey, PerformanceMetric))],
220
+ ['query']
221
+ ),
222
+ get_performance_metrics_analytics_web_vitals: IDL.Func(
223
+ [GetAnalytics],
224
+ [AnalyticsWebVitalsPerformanceMetrics],
225
+ ['query']
226
+ ),
164
227
  get_track_events: IDL.Func(
165
228
  [GetAnalytics],
166
229
  [IDL.Vec(IDL.Tuple(AnalyticKey, TrackEvent))],
@@ -181,12 +244,18 @@ export const idlFactory = ({IDL}) => {
181
244
  ),
182
245
  set_page_view: IDL.Func([AnalyticKey, SetPageView], [Result], []),
183
246
  set_page_views: IDL.Func([IDL.Vec(IDL.Tuple(AnalyticKey, SetPageView))], [Result_1], []),
247
+ set_performance_metric: IDL.Func([AnalyticKey, SetPerformanceMetric], [Result_2], []),
248
+ set_performance_metrics: IDL.Func(
249
+ [IDL.Vec(IDL.Tuple(AnalyticKey, SetPerformanceMetric))],
250
+ [Result_1],
251
+ []
252
+ ),
184
253
  set_satellite_configs: IDL.Func(
185
254
  [IDL.Vec(IDL.Tuple(IDL.Principal, SetSatelliteConfig))],
186
255
  [IDL.Vec(IDL.Tuple(IDL.Principal, OrbiterSatelliteConfig))],
187
256
  []
188
257
  ),
189
- set_track_event: IDL.Func([AnalyticKey, SetTrackEvent], [Result_2], []),
258
+ set_track_event: IDL.Func([AnalyticKey, SetTrackEvent], [Result_3], []),
190
259
  set_track_events: IDL.Func([IDL.Vec(IDL.Tuple(AnalyticKey, SetTrackEvent))], [Result_1], []),
191
260
  version: IDL.Func([], [IDL.Text], ['query'])
192
261
  });