@coveo/relay 0.6.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- async function e({event:e,config:t,environment:n}){const{url:r,token:o}=t,c={"Content-Type":"application/json",Authorization:`Bearer ${o}`},a=await n.fetch(`${r}${"validate"==t.mode?"/validate":""}`,{method:"POST",body:JSON.stringify([e]),headers:c}),i=await a.json();if(!a.ok)throw new Error({...i});return i}var t=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function n(e){const n="visitorId";return{getClientId:()=>{const r=e.storage,o=r.getItem(n),c=o&&("string"==typeof(a=o)&&t.test(a))?o:e.generateUUID();var a;return r.setItem(n,c),c},clear:()=>{e.storage.removeItem(n)}}}const r=function(){const e="coveo_";return{getItem(t){const n=`${e}${t}=`,r=document.cookie.split(";");for(const e of r){const t=e.replace(/^\s+/,"");if(0===t.lastIndexOf(n,0))return t.substring(n.length,t.length)}return null},setItem(t,n,r){const o=(e=>{const t=e.split(".").slice(-2);return 2==t.length?t.join("."):""})(window.location.hostname),c=`;expires=${new Date((new Date).getTime()+r).toUTCString()}`,a=o?`;domain=${o}`:"";document.cookie=`${e}${t}=${n}${c}${a};path=/;SameSite=Lax`},removeItem(e){this.setItem(e,"",-1)}}}();async function o(e,t){return fetch(e,t).catch((e=>{throw new Error(`${e.message}: The "host" value is invalid or a network error occured, according to the FetchAPI's response.`,{cause:e})}))}function c(){return{runtime:"browser",fetch:(e,t)=>o(e,t),getReferrerUrl:()=>function(){const e=document.referrer;return""===e?null:e}(),getUrl:()=>window.location.href,getUserAgent:()=>navigator.userAgent,generateUUID:()=>crypto.randomUUID(),storage:{getItem:e=>r.getItem(e)||localStorage.getItem(e),removeItem(e){r.removeItem(e),localStorage.removeItem(e)},setItem(e,t){localStorage.setItem(e,t),r.setItem(e,t,31556952e3)}}}}function a(){return{getItem:()=>null,removeItem(){},setItem(){}}}function i(){return function(){try{return"object"==typeof window}catch(e){return!1}}()?c():{runtime:"node",fetch:(e,t)=>o(e,t),getReferrerUrl:()=>null,getUrl:()=>null,getUserAgent:()=>null,generateUUID:()=>crypto.randomUUID(),storage:a()}}const l="0.6.0";function s(e,t,n,r){const{getReferrerUrl:o,getUrl:c,getUserAgent:a}=n,i=function(e){const{trackingId:t}=e;return{trackingId:t}}(t),s=r.getClientId();return Object.freeze({type:e,config:i,ts:Date.now(),source:`relay@${l}`,clientId:s,userAgent:a(),referrerUrl:o(),url:c()})}const u="*";function g(){const e=[];function t({type:t,callback:n}){return e.findIndex((e=>e.type===t&&e.callback===n))}function n(n,r){r?function(n){const r=t(n);r>=0&&e.splice(r,1)}({type:n,callback:r}):function(t){if(t===u)e.length=0;else for(let n=e.length-1;n>=0;n--)e[n].type===t&&e.splice(n,1)}(n)}return{add:function(r){return t(r)<0&&e.push(r),()=>n(r.type,r.callback)},call:function(t){e.forEach((e=>{if(function(e,t){return"*"===e.type||t===e.type}(e,t.meta.type))try{e.callback(t)}catch(e){console.error(e)}}))},remove:n}}function f({url:e,token:t,trackingId:n,...r}){return Object.freeze({url:e,token:t,trackingId:n,...!!r.mode&&{mode:r.mode}})}function m(t){const r=function(e){let t=f(e);return{get:()=>t,update:e=>{t=f({...t,...e})}}}(t),o=()=>"disabled"==r.get().mode?{runtime:"null",fetch:()=>Promise.resolve(new Response(JSON.stringify(""))),getReferrerUrl:()=>null,getUrl:()=>null,getUserAgent:()=>null,generateUUID:()=>"",storage:a()}:i(),c=n(o()),{add:u,call:m,remove:d}=g();return{emit:(t,n)=>{const a=function(e,t,n,r,o){return{...t,meta:s(e,n,r,o)}}(t,n,r.get(),o(),c);m(a);const i={config:r.get(),environment:o(),event:a};return"validate"===r.get().mode?async function(t){const n=await e(t);if(!n)return{valid:!1,errors:[{type:"",message:"disabled",path:""}]};const{valid:r,errors:o}=n[0];return{valid:r,errors:o??[]}}(i):async function(t){await e(t)}(i)},getMeta:e=>s(e,r.get(),o(),c),on:(e,t)=>u({type:e,callback:t}),off:(e,t)=>d(e,t),updateConfig:e=>r.update(e),version:l,clearStorage:()=>{c.clear()}}}export{m as createRelay};
1
+ async function e({event:e,config:t,environment:n}){const{url:r,token:o}=t,c={"Content-Type":"application/json",Authorization:`Bearer ${o}`},a=await n.fetch(`${r}${"validate"==t.mode?"/validate":""}`,{method:"POST",body:JSON.stringify([e]),headers:c}),i=await a.json();if(!a.ok)throw new Error({...i});return i}async function t(t){const{listenerManager:n,event:r,config:o}=t;return"disabled"!==o.mode&&n.call(r),"validate"===o.mode?async function(t){const n=await e(t);if(!n)return{valid:!1,errors:[{type:"",message:"disabled",path:""}]};const{valid:r,errors:o}=n[0];return{valid:r,errors:o??[]}}(t):async function(t){await e(t)}(t)}var n=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function r(e){const t="visitorId";return{getClientId:()=>{const r=e.storage,o=r.getItem(t),c=o&&("string"==typeof(a=o)&&n.test(a))?o:e.generateUUID();var a;return r.setItem(t,c),c},clear:()=>{e.storage.removeItem(t)}}}const o=function(){const e="coveo_";return{getItem(t){const n=`${e}${t}=`,r=document.cookie.split(";");for(const e of r){const t=e.replace(/^\s+/,"");if(0===t.lastIndexOf(n,0))return t.substring(n.length,t.length)}return null},setItem(t,n,r){const o=(e=>{const t=e.split(".").slice(-2);return 2==t.length?t.join("."):""})(window.location.hostname),c=`;expires=${new Date((new Date).getTime()+r).toUTCString()}`,a=o?`;domain=${o}`:"";document.cookie=`${e}${t}=${n}${c}${a};path=/;SameSite=Lax`},removeItem(e){this.setItem(e,"",-1)}}}();async function c(e,t){return fetch(e,t).catch((e=>{throw new Error(`${e.message}: The "host" value is invalid or a network error occured, according to the FetchAPI's response.`,{cause:e})}))}function a(){return{runtime:"browser",fetch:(e,t)=>c(e,t),getReferrerUrl:()=>function(){const e=document.referrer;return""===e?null:e}(),getUrl:()=>window.location.href,getUserAgent:()=>navigator.userAgent,generateUUID:()=>crypto.randomUUID(),storage:{getItem:e=>o.getItem(e)||localStorage.getItem(e),removeItem(e){o.removeItem(e),localStorage.removeItem(e)},setItem(e,t){localStorage.setItem(e,t),o.setItem(e,t,31556952e3)}}}}function i(){return{getItem:()=>null,removeItem(){},setItem(){}}}function l(){return function(){try{return"object"==typeof window}catch(e){return!1}}()?a():{runtime:"node",fetch:(e,t)=>c(e,t),getReferrerUrl:()=>null,getUrl:()=>null,getUserAgent:()=>null,generateUUID:()=>crypto.randomUUID(),storage:i()}}const s="0.6.1";function u(e,t,n,r){const{getReferrerUrl:o,getUrl:c,getUserAgent:a}=n,i=function(e){const{trackingId:t}=e;return{trackingId:t}}(t),l=r.getClientId();return Object.freeze({type:e,config:i,ts:Date.now(),source:`relay@${s}`,clientId:l,userAgent:a(),referrerUrl:o(),url:c()})}const g="*";function f(){const e=[];function t({type:t,callback:n}){return e.findIndex((e=>e.type===t&&e.callback===n))}function n(n,r){r?function(n){const r=t(n);r>=0&&e.splice(r,1)}({type:n,callback:r}):function(t){if(t===g)e.length=0;else for(let n=e.length-1;n>=0;n--)e[n].type===t&&e.splice(n,1)}(n)}return{add:function(r){return t(r)<0&&e.push(r),()=>n(r.type,r.callback)},call:function(t){e.forEach((e=>{if(function(e,t){return"*"===e.type||t===e.type}(e,t.meta.type))try{e.callback(t)}catch(e){console.error(e)}}))},remove:n}}function m({url:e,token:t,trackingId:n,...r}){return Object.freeze({url:e,token:t,trackingId:n,...!!r.mode&&{mode:r.mode}})}function d(e){const n=function(e){let t=m(e);return{get:()=>t,update:e=>{t=m({...t,...e})}}}(e),o=f(),c=()=>"disabled"==n.get().mode?{runtime:"null",fetch:()=>Promise.resolve(new Response(JSON.stringify(""))),getReferrerUrl:()=>null,getUrl:()=>null,getUserAgent:()=>null,generateUUID:()=>"",storage:i()}:l(),a=r(c());return{emit:(e,r)=>{const i=n.get(),l=c(),s=function(e,t,n,r,o){return{...t,meta:u(e,n,r,o)}}(e,r,i,l,a);return t({config:i,environment:l,event:s,listenerManager:o})},getMeta:e=>u(e,n.get(),c(),a),on:(e,t)=>o.add({type:e,callback:t}),off:(e,t)=>o.remove(e,t),updateConfig:e=>n.update(e),version:s,clearStorage:()=>{a.clear()}}}export{d as createRelay};
2
2
  //# sourceMappingURL=relay.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relay.min.js","sources":["../../src/event-api-call/event-api-caller.ts","../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/regex.js","../../src/client-id/client-id.ts","../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/validate.js","../../src/environment/browser/storage/cookie.ts","../../src/environment/utils/fetch.ts","../../src/environment/browser/browser.ts","../../src/environment/browser/storage/storage.ts","../../src/environment/storage.ts","../../src/environment/environment.ts","../../src/environment/node/node.ts","../../src/version.ts","../../src/event/meta/meta.ts","../../src/listener/listener.ts","../../src/config/config.ts","../../src/relay.ts","../../src/environment/null/null.ts","../../src/event/relay-event.ts","../../src/validate/validate.ts","../../src/emit/emit.ts"],"sourcesContent":["import { Environment } from \"../environment/environment\";\nimport { RelayEvent } from \"../event/relay-event\";\nimport { RelayConfig } from \"../config/config\";\nimport { ValidationResponse } from \"../relay\";\n\nexport interface EventApiCallParams {\n config: RelayConfig;\n environment: Environment;\n event: Readonly<RelayEvent>;\n}\n\nexport async function callEventApi<T>({\n event,\n config,\n environment,\n}: EventApiCallParams): Promise<T> {\n const { url, token } = config;\n const headers = {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`,\n };\n const response = await environment.fetch(\n `${url}${config.mode == \"validate\" ? \"/validate\" : \"\"}`,\n {\n method: \"POST\",\n body: JSON.stringify([event]),\n headers,\n }\n );\n\n const data = await response.json();\n\n if (!response.ok) {\n throw new Error({\n ...data,\n });\n }\n\n return data;\n}\n","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import { validate } from \"uuid\";\nimport { Environment } from \"../environment/environment\";\n\nexport interface ClientIdManager {\n getClientId: () => string;\n clear: () => void;\n}\n\nexport function createClientIdManager(\n environment: Environment\n): ClientIdManager {\n const key = \"visitorId\";\n return {\n getClientId: () => {\n const storage = environment.storage;\n\n const existingClientId = storage.getItem(key);\n const clientId =\n existingClientId && validate(existingClientId)\n ? existingClientId\n : environment.generateUUID();\n storage.setItem(key, clientId);\n return clientId;\n },\n clear: () => {\n environment.storage.removeItem(key);\n },\n };\n}\n","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","export interface CookieManager {\n getItem: (key: string) => string | null;\n removeItem: (key: string) => void;\n setItem: (key: string, data: string, expire: number) => void;\n}\n\nexport const cookieManager: CookieManager = createCookieManager();\n\nfunction createCookieManager(): CookieManager {\n const prefix = \"coveo_\";\n const getDomain = (host: string) => {\n const parts = host.split(\".\").slice(-2);\n return parts.length == 2 ? parts.join(\".\") : \"\";\n };\n\n return {\n getItem(key: string): string | null {\n const cookiePrefix = `${prefix}${key}=`;\n const cookieArray = document.cookie.split(\";\");\n for (const cookie of cookieArray) {\n const prettifyCookie = cookie.replace(/^\\s+/, \"\");\n if (prettifyCookie.lastIndexOf(cookiePrefix, 0) === 0) {\n return prettifyCookie.substring(\n cookiePrefix.length,\n prettifyCookie.length\n );\n }\n }\n return null;\n },\n setItem(key: string, data: string, expire: number): void {\n const domain = getDomain(window.location.hostname);\n const expireSection = `;expires=${new Date(\n new Date().getTime() + expire\n ).toUTCString()}`;\n const domainSection = domain ? `;domain=${domain}` : \"\";\n document.cookie = `${prefix}${key}=${data}${expireSection}${domainSection};path=/;SameSite=Lax`;\n },\n\n removeItem(key: string): void {\n this.setItem(key, \"\", -1);\n },\n };\n}\n","export async function fetchAPI(\n url: string,\n init?: RequestInit\n): Promise<Response> {\n return fetch(url, init).catch((err: Error) => {\n throw new Error(\n `${err.message}: The \"host\" value is invalid or a network error occured, according to the FetchAPI's response.`,\n { cause: err }\n );\n });\n}\n","import { Environment } from \"../environment\";\nimport { createBrowserStorage } from \"./storage/storage\";\nimport { fetchAPI } from \"../utils/fetch\";\n\nfunction getReferrerUrl() {\n const referrer = document.referrer;\n\n return referrer === \"\" ? null : referrer;\n}\n\nexport function buildBrowserEnvironment(): Environment {\n return {\n runtime: \"browser\",\n fetch: (url: string, init?: RequestInit) => fetchAPI(url, init),\n getReferrerUrl: () => getReferrerUrl(),\n getUrl: () => window.location.href,\n getUserAgent: () => navigator.userAgent,\n generateUUID: () => crypto.randomUUID(),\n storage: createBrowserStorage(),\n };\n}\n","import { Storage } from \"../../storage\";\nimport { cookieManager } from \"./cookie\";\n\nexport function createBrowserStorage(): Storage {\n return {\n getItem(key: string): string | null {\n return cookieManager.getItem(key) || localStorage.getItem(key);\n },\n\n removeItem(key: string): void {\n cookieManager.removeItem(key);\n localStorage.removeItem(key);\n },\n\n setItem(key: string, data: string): void {\n const oneYear = 31556952000;\n localStorage.setItem(key, data);\n cookieManager.setItem(key, data, oneYear);\n },\n };\n}\n","export interface Storage {\n getItem: (key: string) => string | null;\n removeItem: (key: string) => void;\n setItem: (key: string, data: string) => void;\n}\n\nexport function createNullStorage(): Storage {\n return {\n getItem(): string | null {\n return null;\n },\n removeItem(): void {\n return;\n },\n setItem(): void {\n return;\n },\n };\n}\n","import { buildBrowserEnvironment } from \"./browser/browser\";\nimport { buildNodeEnvironment } from \"./node/node\";\nimport { Storage } from \"./storage\";\n\nexport interface Environment {\n runtime: \"browser\" | \"node\" | \"null\";\n fetch: (url: string, init?: RequestInit) => Promise<Response>;\n getReferrerUrl: () => string | null;\n getUrl: () => string | null;\n getUserAgent: () => string | null;\n generateUUID: () => string;\n storage: Storage;\n}\n\nexport function currentEnvironment(): Environment {\n return isBrowser() ? buildBrowserEnvironment() : buildNodeEnvironment();\n}\n\nfunction isBrowser() {\n try {\n return typeof window === \"object\";\n } catch (e) {\n return false;\n }\n}\n","import { Environment } from \"../environment\";\nimport { createNullStorage } from \"../storage\";\nimport { fetchAPI } from \"../utils/fetch\";\n\nexport function buildNodeEnvironment(): Environment {\n return {\n runtime: \"node\",\n fetch: (url: string, init?: RequestInit) => fetchAPI(url, init),\n getReferrerUrl: () => null,\n getUrl: () => null,\n getUserAgent: () => null,\n generateUUID: () => crypto.randomUUID(),\n storage: createNullStorage(),\n };\n}\n","export const version: string = process.env.VERSION ?? \"\";\n","import { ClientIdManager } from \"../../client-id/client-id\";\nimport { Environment } from \"../../environment/environment\";\nimport { RelayConfig } from \"../../config/config\";\nimport { version } from \"../../version\";\n\ninterface EventConfig {\n trackingId: string;\n}\n\nexport interface Meta {\n type: string;\n config: EventConfig;\n ts: number;\n source: string;\n clientId: string;\n userAgent: string | null;\n referrerUrl: string | null;\n url: string | null;\n}\n\nfunction getEventConfig(config: RelayConfig): EventConfig {\n const { trackingId } = config;\n return { trackingId };\n}\n\nfunction getSource(): string {\n return `relay@${version}`;\n}\n\nexport function createMeta(\n type: string,\n config: RelayConfig,\n environment: Environment,\n clientIdManager: ClientIdManager\n): Readonly<Meta> {\n const { getReferrerUrl, getUrl, getUserAgent } = environment;\n const eventConfig = getEventConfig(config);\n const clientId = clientIdManager.getClientId();\n\n return Object.freeze({\n type,\n config: eventConfig,\n ts: Date.now(),\n source: getSource(),\n clientId,\n userAgent: getUserAgent(),\n referrerUrl: getReferrerUrl(),\n url: getUrl(),\n });\n}\n","import { RelayEvent } from \"../event/relay-event\";\n\nconst ANY_EVENT_TYPE = \"*\";\n\nexport type EventCallback = (event: RelayEvent) => void;\n\ninterface Listener {\n type: string;\n callback: EventCallback;\n}\n\ninterface ListenerManager {\n add: (listener: Listener) => () => void;\n call: (event: RelayEvent) => void;\n remove: (type: string, callback?: EventCallback) => void;\n}\n\nexport function createListenerManager(): ListenerManager {\n const listeners: Listener[] = [];\n\n function getListenerIndex({ type, callback }: Listener): number {\n return listeners.findIndex(\n (listener) => listener.type === type && listener.callback === callback\n );\n }\n\n function isMatchesType(listener: Listener, type: string): boolean {\n return listener.type === \"*\" || type === listener.type;\n }\n\n function add(listener: Listener): () => void {\n if (getListenerIndex(listener) < 0) {\n listeners.push(listener);\n }\n return () => remove(listener.type, listener.callback);\n }\n\n function call(event: RelayEvent) {\n listeners.forEach((listener) => {\n if (isMatchesType(listener, event.meta.type)) {\n try {\n listener.callback(event);\n } catch (e) {\n console.error(e);\n }\n }\n });\n }\n\n function removeMultiple(type: string) {\n if (type === ANY_EVENT_TYPE) {\n listeners.length = 0;\n } else {\n for (let i = listeners.length - 1; i >= 0; i--) {\n if (listeners[i].type === type) {\n listeners.splice(i, 1);\n }\n }\n }\n }\n\n function removeOne(listener: Listener) {\n const index = getListenerIndex(listener);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n }\n\n function remove(type: string, callback?: EventCallback) {\n !!callback ? removeOne({ type, callback }) : removeMultiple(type);\n }\n\n return {\n add,\n call,\n remove,\n };\n}\n","export type RelayMode = \"emit\" | \"validate\" | \"disabled\";\n\nexport interface RelayConfig {\n url: string;\n token: string;\n trackingId: string;\n mode?: RelayMode;\n}\n\nexport interface ConfigManager {\n get: () => Readonly<RelayConfig>;\n update: (updatedConfig: Partial<RelayConfig>) => void;\n}\n\nfunction pick({\n url,\n token,\n trackingId,\n ...rest\n}: RelayConfig): Readonly<RelayConfig> {\n return Object.freeze({\n url,\n token,\n trackingId,\n ...(!!rest.mode && { mode: rest.mode }),\n });\n}\n\nexport function createConfigManager(\n initialConfig: RelayConfig\n): Readonly<ConfigManager> {\n let _config: Readonly<RelayConfig> = pick(initialConfig);\n\n return {\n get: () => _config,\n update: (updatedConfig: Partial<RelayConfig>) => {\n _config = pick({ ..._config, ...updatedConfig });\n },\n };\n}\n","import { emit } from \"./emit/emit\";\nimport { createClientIdManager } from \"./client-id/client-id\";\nimport { currentEnvironment } from \"./environment/environment\";\nimport { createRelayEvent } from \"./event/relay-event\";\nimport { version } from \"./version\";\nimport { createMeta, Meta } from \"./event/meta/meta\";\nimport { createListenerManager, EventCallback } from \"./listener/listener\";\nimport { createConfigManager, RelayConfig } from \"./config/config\";\nimport {\n validate,\n ValidationError,\n ValidationResponse,\n} from \"./validate/validate\";\nimport { buildNullEnvironment } from \"./environment/null/null\";\n\ntype RelayPayload = Record<string, unknown>;\ntype Off = () => void;\n\ninterface Relay {\n emit: (\n type: string,\n payload: RelayPayload\n ) => Promise<void | ValidationResponse>;\n getMeta: (type: string) => Meta;\n on: (type: string, callback: EventCallback) => Off;\n off: (type: string, callback?: EventCallback) => void;\n updateConfig: (config: Partial<RelayConfig>) => void;\n version: string;\n clearStorage: () => void;\n}\n\nexport function createRelay(initialConfig: RelayConfig): Relay {\n const configManager = createConfigManager(initialConfig);\n const getEnvironment = () =>\n configManager.get().mode == \"disabled\"\n ? buildNullEnvironment()\n : currentEnvironment();\n const clientIdManager = createClientIdManager(getEnvironment());\n\n const { add, call, remove } = createListenerManager();\n\n return {\n emit: (type: string, payload: RelayPayload) => {\n const event = createRelayEvent(\n type,\n payload,\n configManager.get(),\n getEnvironment(),\n clientIdManager\n );\n\n call(event);\n\n const params = {\n config: configManager.get(),\n environment: getEnvironment(),\n event,\n };\n\n return configManager.get().mode === \"validate\"\n ? validate(params)\n : emit(params);\n },\n getMeta: (type: string) =>\n createMeta(type, configManager.get(), getEnvironment(), clientIdManager),\n on: (type: string, callback: EventCallback) => add({ type, callback }),\n off: (type: string, callback?: EventCallback) => remove(type, callback),\n updateConfig: (config: Partial<RelayConfig>) =>\n configManager.update(config),\n version,\n clearStorage: () => {\n clientIdManager.clear();\n },\n };\n}\n\nexport type { RelayPayload, RelayConfig, ValidationError, ValidationResponse };\n","import { Environment } from \"../environment\";\nimport { createNullStorage } from \"../storage\";\n\nexport function buildNullEnvironment(): Environment {\n return {\n runtime: \"null\",\n fetch: () => Promise.resolve(new Response(JSON.stringify(\"\"))),\n getReferrerUrl: () => null,\n getUrl: () => null,\n getUserAgent: () => null,\n generateUUID: () => \"\",\n storage: createNullStorage(),\n };\n}\n","import { ClientIdManager } from \"../client-id/client-id\";\nimport { Environment } from \"../environment/environment\";\nimport { RelayConfig, RelayPayload } from \"../relay\";\nimport { createMeta, Meta } from \"./meta/meta\";\n\nexport interface RelayEvent extends RelayPayload {\n meta: Readonly<Meta>;\n}\n\nexport function createRelayEvent(\n type: string,\n payload: RelayPayload,\n config: RelayConfig,\n environment: Environment,\n clientIdManager: ClientIdManager\n): Readonly<RelayEvent> {\n return {\n ...payload,\n meta: createMeta(type, config, environment, clientIdManager),\n };\n}\n","import {\n callEventApi,\n EventApiCallParams,\n} from \"../event-api-call/event-api-caller\";\n\nexport interface ValidationError {\n type: string;\n message: string;\n path: string;\n}\n\nexport interface ValidationResponse {\n valid: boolean;\n errors: ValidationError[];\n}\n\nexport async function validate(\n params: EventApiCallParams\n): Promise<Readonly<ValidationResponse>> {\n const data = await callEventApi<ValidationResponse[] | \"\">(params);\n\n if (!data) {\n return {\n valid: false,\n errors: [{ type: \"\", message: \"disabled\", path: \"\" }],\n };\n }\n\n const { valid, errors } = data[0];\n\n return { valid, errors: errors ?? [] };\n}\n","import {\n callEventApi,\n EventApiCallParams,\n} from \"../event-api-call/event-api-caller\";\n\nexport async function emit(params: EventApiCallParams) {\n await callEventApi(params);\n}\n"],"names":["async","callEventApi","event","config","environment","url","token","headers","Authorization","response","fetch","mode","method","body","JSON","stringify","data","json","ok","Error","REGEX","createClientIdManager","key","getClientId","storage","existingClientId","getItem","clientId","uuid","test","generateUUID","setItem","clear","removeItem","cookieManager","prefix","cookiePrefix","cookieArray","document","cookie","split","prettifyCookie","replace","lastIndexOf","substring","length","expire","domain","host","parts","slice","join","getDomain","window","location","hostname","expireSection","Date","getTime","toUTCString","domainSection","this","createCookieManager","fetchAPI","init","catch","err","message","cause","buildBrowserEnvironment","runtime","getReferrerUrl","referrer","getUrl","href","getUserAgent","navigator","userAgent","crypto","randomUUID","localStorage","createNullStorage","currentEnvironment","e","isBrowser","version","createMeta","type","clientIdManager","eventConfig","trackingId","getEventConfig","Object","freeze","ts","now","source","referrerUrl","ANY_EVENT_TYPE","createListenerManager","listeners","getListenerIndex","callback","findIndex","listener","remove","index","splice","removeOne","i","removeMultiple","add","push","call","forEach","isMatchesType","meta","console","error","pick","rest","createRelay","initialConfig","configManager","_config","get","update","updatedConfig","createConfigManager","getEnvironment","Promise","resolve","Response","emit","payload","createRelayEvent","params","valid","errors","path","validate","getMeta","on","off","updateConfig","clearStorage"],"mappings":"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","x_google_ignoreList":[1,3]}
1
+ {"version":3,"file":"relay.min.js","sources":["../../src/event-api-call/event-api-caller.ts","../../src/emit/emit.ts","../../src/validate/validate.ts","../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/regex.js","../../src/client-id/client-id.ts","../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/validate.js","../../src/environment/browser/storage/cookie.ts","../../src/environment/utils/fetch.ts","../../src/environment/browser/browser.ts","../../src/environment/browser/storage/storage.ts","../../src/environment/storage.ts","../../src/environment/environment.ts","../../src/environment/node/node.ts","../../src/version.ts","../../src/event/meta/meta.ts","../../src/listener/listener.ts","../../src/config/config.ts","../../src/relay.ts","../../src/environment/null/null.ts","../../src/event/relay-event.ts"],"sourcesContent":["import { Environment } from \"../environment/environment\";\nimport { RelayEvent } from \"../event/relay-event\";\nimport { RelayConfig } from \"../config/config\";\nimport { ValidationResponse } from \"../relay\";\n\nexport interface EventApiCallParams {\n config: RelayConfig;\n environment: Environment;\n event: Readonly<RelayEvent>;\n}\n\nexport async function callEventApi<T>({\n event,\n config,\n environment,\n}: EventApiCallParams): Promise<T> {\n const { url, token } = config;\n const headers = {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${token}`,\n };\n const response = await environment.fetch(\n `${url}${config.mode == \"validate\" ? \"/validate\" : \"\"}`,\n {\n method: \"POST\",\n body: JSON.stringify([event]),\n headers,\n }\n );\n\n const data = await response.json();\n\n if (!response.ok) {\n throw new Error({\n ...data,\n });\n }\n\n return data;\n}\n","import { Environment } from \"../environment/environment\";\nimport {\n callEventApi,\n EventApiCallParams,\n} from \"../event-api-call/event-api-caller\";\nimport { RelayEvent } from \"../event/relay-event\";\nimport { ListenerManager } from \"../listener/listener\";\nimport { RelayConfig } from \"../relay\";\nimport { validate } from \"../validate/validate\";\n\nexport interface EmitParams {\n config: RelayConfig;\n environment: Environment;\n event: RelayEvent;\n listenerManager: ListenerManager;\n}\n\nexport async function emit(params: EmitParams) {\n const { listenerManager, event, config } = params;\n const isEnabled = config.mode !== \"disabled\";\n\n isEnabled && listenerManager.call(event);\n return config.mode === \"validate\" ? validate(params) : emitEvent(params);\n}\n\nasync function emitEvent(params: EventApiCallParams) {\n await callEventApi(params);\n}\n","import {\n callEventApi,\n EventApiCallParams,\n} from \"../event-api-call/event-api-caller\";\n\nexport interface ValidationError {\n type: string;\n message: string;\n path: string;\n}\n\nexport interface ValidationResponse {\n valid: boolean;\n errors: ValidationError[];\n}\n\nexport async function validate(\n params: EventApiCallParams\n): Promise<Readonly<ValidationResponse>> {\n const data = await callEventApi<ValidationResponse[] | \"\">(params);\n\n if (!data) {\n return {\n valid: false,\n errors: [{ type: \"\", message: \"disabled\", path: \"\" }],\n };\n }\n\n const { valid, errors } = data[0];\n\n return { valid, errors: errors ?? [] };\n}\n","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import { validate } from \"uuid\";\nimport { Environment } from \"../environment/environment\";\n\nexport interface ClientIdManager {\n getClientId: () => string;\n clear: () => void;\n}\n\nexport function createClientIdManager(\n environment: Environment\n): ClientIdManager {\n const key = \"visitorId\";\n return {\n getClientId: () => {\n const storage = environment.storage;\n\n const existingClientId = storage.getItem(key);\n const clientId =\n existingClientId && validate(existingClientId)\n ? existingClientId\n : environment.generateUUID();\n storage.setItem(key, clientId);\n return clientId;\n },\n clear: () => {\n environment.storage.removeItem(key);\n },\n };\n}\n","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","export interface CookieManager {\n getItem: (key: string) => string | null;\n removeItem: (key: string) => void;\n setItem: (key: string, data: string, expire: number) => void;\n}\n\nexport const cookieManager: CookieManager = createCookieManager();\n\nfunction createCookieManager(): CookieManager {\n const prefix = \"coveo_\";\n const getDomain = (host: string) => {\n const parts = host.split(\".\").slice(-2);\n return parts.length == 2 ? parts.join(\".\") : \"\";\n };\n\n return {\n getItem(key: string): string | null {\n const cookiePrefix = `${prefix}${key}=`;\n const cookieArray = document.cookie.split(\";\");\n for (const cookie of cookieArray) {\n const prettifyCookie = cookie.replace(/^\\s+/, \"\");\n if (prettifyCookie.lastIndexOf(cookiePrefix, 0) === 0) {\n return prettifyCookie.substring(\n cookiePrefix.length,\n prettifyCookie.length\n );\n }\n }\n return null;\n },\n setItem(key: string, data: string, expire: number): void {\n const domain = getDomain(window.location.hostname);\n const expireSection = `;expires=${new Date(\n new Date().getTime() + expire\n ).toUTCString()}`;\n const domainSection = domain ? `;domain=${domain}` : \"\";\n document.cookie = `${prefix}${key}=${data}${expireSection}${domainSection};path=/;SameSite=Lax`;\n },\n\n removeItem(key: string): void {\n this.setItem(key, \"\", -1);\n },\n };\n}\n","export async function fetchAPI(\n url: string,\n init?: RequestInit\n): Promise<Response> {\n return fetch(url, init).catch((err: Error) => {\n throw new Error(\n `${err.message}: The \"host\" value is invalid or a network error occured, according to the FetchAPI's response.`,\n { cause: err }\n );\n });\n}\n","import { Environment } from \"../environment\";\nimport { createBrowserStorage } from \"./storage/storage\";\nimport { fetchAPI } from \"../utils/fetch\";\n\nfunction getReferrerUrl() {\n const referrer = document.referrer;\n\n return referrer === \"\" ? null : referrer;\n}\n\nexport function buildBrowserEnvironment(): Environment {\n return {\n runtime: \"browser\",\n fetch: (url: string, init?: RequestInit) => fetchAPI(url, init),\n getReferrerUrl: () => getReferrerUrl(),\n getUrl: () => window.location.href,\n getUserAgent: () => navigator.userAgent,\n generateUUID: () => crypto.randomUUID(),\n storage: createBrowserStorage(),\n };\n}\n","import { Storage } from \"../../storage\";\nimport { cookieManager } from \"./cookie\";\n\nexport function createBrowserStorage(): Storage {\n return {\n getItem(key: string): string | null {\n return cookieManager.getItem(key) || localStorage.getItem(key);\n },\n\n removeItem(key: string): void {\n cookieManager.removeItem(key);\n localStorage.removeItem(key);\n },\n\n setItem(key: string, data: string): void {\n const oneYear = 31556952000;\n localStorage.setItem(key, data);\n cookieManager.setItem(key, data, oneYear);\n },\n };\n}\n","export interface Storage {\n getItem: (key: string) => string | null;\n removeItem: (key: string) => void;\n setItem: (key: string, data: string) => void;\n}\n\nexport function createNullStorage(): Storage {\n return {\n getItem(): string | null {\n return null;\n },\n removeItem(): void {\n return;\n },\n setItem(): void {\n return;\n },\n };\n}\n","import { buildBrowserEnvironment } from \"./browser/browser\";\nimport { buildNodeEnvironment } from \"./node/node\";\nimport { Storage } from \"./storage\";\n\nexport interface Environment {\n runtime: \"browser\" | \"node\" | \"null\";\n fetch: (url: string, init?: RequestInit) => Promise<Response>;\n getReferrerUrl: () => string | null;\n getUrl: () => string | null;\n getUserAgent: () => string | null;\n generateUUID: () => string;\n storage: Storage;\n}\n\nexport function currentEnvironment(): Environment {\n return isBrowser() ? buildBrowserEnvironment() : buildNodeEnvironment();\n}\n\nfunction isBrowser() {\n try {\n return typeof window === \"object\";\n } catch (e) {\n return false;\n }\n}\n","import { Environment } from \"../environment\";\nimport { createNullStorage } from \"../storage\";\nimport { fetchAPI } from \"../utils/fetch\";\n\nexport function buildNodeEnvironment(): Environment {\n return {\n runtime: \"node\",\n fetch: (url: string, init?: RequestInit) => fetchAPI(url, init),\n getReferrerUrl: () => null,\n getUrl: () => null,\n getUserAgent: () => null,\n generateUUID: () => crypto.randomUUID(),\n storage: createNullStorage(),\n };\n}\n","export const version: string = process.env.VERSION ?? \"\";\n","import { ClientIdManager } from \"../../client-id/client-id\";\nimport { Environment } from \"../../environment/environment\";\nimport { RelayConfig } from \"../../config/config\";\nimport { version } from \"../../version\";\n\ninterface EventConfig {\n trackingId: string;\n}\n\nexport interface Meta {\n type: string;\n config: EventConfig;\n ts: number;\n source: string;\n clientId: string;\n userAgent: string | null;\n referrerUrl: string | null;\n url: string | null;\n}\n\nfunction getEventConfig(config: RelayConfig): EventConfig {\n const { trackingId } = config;\n return { trackingId };\n}\n\nfunction getSource(): string {\n return `relay@${version}`;\n}\n\nexport function createMeta(\n type: string,\n config: RelayConfig,\n environment: Environment,\n clientIdManager: ClientIdManager\n): Readonly<Meta> {\n const { getReferrerUrl, getUrl, getUserAgent } = environment;\n const eventConfig = getEventConfig(config);\n const clientId = clientIdManager.getClientId();\n\n return Object.freeze({\n type,\n config: eventConfig,\n ts: Date.now(),\n source: getSource(),\n clientId,\n userAgent: getUserAgent(),\n referrerUrl: getReferrerUrl(),\n url: getUrl(),\n });\n}\n","import { RelayEvent } from \"../event/relay-event\";\n\nconst ANY_EVENT_TYPE = \"*\";\n\nexport type EventCallback = (event: RelayEvent) => void;\n\ninterface Listener {\n type: string;\n callback: EventCallback;\n}\n\nexport interface ListenerManager {\n add: (listener: Listener) => () => void;\n call: (event: RelayEvent) => void;\n remove: (type: string, callback?: EventCallback) => void;\n}\n\nexport function createListenerManager(): ListenerManager {\n const listeners: Listener[] = [];\n\n function getListenerIndex({ type, callback }: Listener): number {\n return listeners.findIndex(\n (listener) => listener.type === type && listener.callback === callback\n );\n }\n\n function isMatchesType(listener: Listener, type: string): boolean {\n return listener.type === \"*\" || type === listener.type;\n }\n\n function add(listener: Listener): () => void {\n if (getListenerIndex(listener) < 0) {\n listeners.push(listener);\n }\n return () => remove(listener.type, listener.callback);\n }\n\n function call(event: RelayEvent) {\n listeners.forEach((listener) => {\n if (isMatchesType(listener, event.meta.type)) {\n try {\n listener.callback(event);\n } catch (e) {\n console.error(e);\n }\n }\n });\n }\n\n function removeMultiple(type: string) {\n if (type === ANY_EVENT_TYPE) {\n listeners.length = 0;\n } else {\n for (let i = listeners.length - 1; i >= 0; i--) {\n if (listeners[i].type === type) {\n listeners.splice(i, 1);\n }\n }\n }\n }\n\n function removeOne(listener: Listener) {\n const index = getListenerIndex(listener);\n if (index >= 0) {\n listeners.splice(index, 1);\n }\n }\n\n function remove(type: string, callback?: EventCallback) {\n !!callback ? removeOne({ type, callback }) : removeMultiple(type);\n }\n\n return {\n add,\n call,\n remove,\n };\n}\n","export type RelayMode = \"emit\" | \"validate\" | \"disabled\";\n\nexport interface RelayConfig {\n url: string;\n token: string;\n trackingId: string;\n mode?: RelayMode;\n}\n\nexport interface ConfigManager {\n get: () => Readonly<RelayConfig>;\n update: (updatedConfig: Partial<RelayConfig>) => void;\n}\n\nfunction pick({\n url,\n token,\n trackingId,\n ...rest\n}: RelayConfig): Readonly<RelayConfig> {\n return Object.freeze({\n url,\n token,\n trackingId,\n ...(!!rest.mode && { mode: rest.mode }),\n });\n}\n\nexport function createConfigManager(\n initialConfig: RelayConfig\n): Readonly<ConfigManager> {\n let _config: Readonly<RelayConfig> = pick(initialConfig);\n\n return {\n get: () => _config,\n update: (updatedConfig: Partial<RelayConfig>) => {\n _config = pick({ ..._config, ...updatedConfig });\n },\n };\n}\n","import { emit } from \"./emit/emit\";\nimport { createClientIdManager } from \"./client-id/client-id\";\nimport { currentEnvironment } from \"./environment/environment\";\nimport { createRelayEvent } from \"./event/relay-event\";\nimport { version } from \"./version\";\nimport { createMeta, Meta } from \"./event/meta/meta\";\nimport { createListenerManager, EventCallback } from \"./listener/listener\";\nimport { createConfigManager, RelayConfig } from \"./config/config\";\nimport { ValidationError, ValidationResponse } from \"./validate/validate\";\nimport { buildNullEnvironment } from \"./environment/null/null\";\n\ntype RelayPayload = Record<string, unknown>;\ntype Off = () => void;\n\ninterface Relay {\n emit: (\n type: string,\n payload: RelayPayload\n ) => Promise<void | ValidationResponse>;\n getMeta: (type: string) => Meta;\n on: (type: string, callback: EventCallback) => Off;\n off: (type: string, callback?: EventCallback) => void;\n updateConfig: (config: Partial<RelayConfig>) => void;\n version: string;\n clearStorage: () => void;\n}\n\nexport function createRelay(initialConfig: RelayConfig): Relay {\n const configManager = createConfigManager(initialConfig);\n const listenerManager = createListenerManager();\n\n const getEnvironment = () =>\n configManager.get().mode == \"disabled\"\n ? buildNullEnvironment()\n : currentEnvironment();\n const clientIdManager = createClientIdManager(getEnvironment());\n\n return {\n emit: (type: string, payload: RelayPayload) => {\n const config = configManager.get();\n const environment = getEnvironment();\n\n const event = createRelayEvent(\n type,\n payload,\n config,\n environment,\n clientIdManager\n );\n\n return emit({\n config,\n environment,\n event,\n listenerManager,\n });\n },\n getMeta: (type: string) =>\n createMeta(type, configManager.get(), getEnvironment(), clientIdManager),\n on: (type: string, callback: EventCallback) =>\n listenerManager.add({ type, callback }),\n off: (type: string, callback?: EventCallback) =>\n listenerManager.remove(type, callback),\n updateConfig: (config: Partial<RelayConfig>) =>\n configManager.update(config),\n version,\n clearStorage: () => {\n clientIdManager.clear();\n },\n };\n}\n\nexport type { RelayPayload, RelayConfig, ValidationError, ValidationResponse };\n","import { Environment } from \"../environment\";\nimport { createNullStorage } from \"../storage\";\n\nexport function buildNullEnvironment(): Environment {\n return {\n runtime: \"null\",\n fetch: () => Promise.resolve(new Response(JSON.stringify(\"\"))),\n getReferrerUrl: () => null,\n getUrl: () => null,\n getUserAgent: () => null,\n generateUUID: () => \"\",\n storage: createNullStorage(),\n };\n}\n","import { ClientIdManager } from \"../client-id/client-id\";\nimport { Environment } from \"../environment/environment\";\nimport { RelayConfig, RelayPayload } from \"../relay\";\nimport { createMeta, Meta } from \"./meta/meta\";\n\nexport interface RelayEvent extends RelayPayload {\n meta: Readonly<Meta>;\n}\n\nexport function createRelayEvent(\n type: string,\n payload: RelayPayload,\n config: RelayConfig,\n environment: Environment,\n clientIdManager: ClientIdManager\n): Readonly<RelayEvent> {\n return {\n ...payload,\n meta: createMeta(type, config, environment, clientIdManager),\n };\n}\n"],"names":["async","callEventApi","event","config","environment","url","token","headers","Authorization","response","fetch","mode","method","body","JSON","stringify","data","json","ok","Error","emit","params","listenerManager","call","valid","errors","type","message","path","validate","emitEvent","REGEX","createClientIdManager","key","getClientId","storage","existingClientId","getItem","clientId","uuid","test","generateUUID","setItem","clear","removeItem","cookieManager","prefix","cookiePrefix","cookieArray","document","cookie","split","prettifyCookie","replace","lastIndexOf","substring","length","expire","domain","host","parts","slice","join","getDomain","window","location","hostname","expireSection","Date","getTime","toUTCString","domainSection","this","createCookieManager","fetchAPI","init","catch","err","cause","buildBrowserEnvironment","runtime","getReferrerUrl","referrer","getUrl","href","getUserAgent","navigator","userAgent","crypto","randomUUID","localStorage","createNullStorage","currentEnvironment","e","isBrowser","version","createMeta","clientIdManager","eventConfig","trackingId","getEventConfig","Object","freeze","ts","now","source","referrerUrl","ANY_EVENT_TYPE","createListenerManager","listeners","getListenerIndex","callback","findIndex","listener","remove","index","splice","removeOne","i","removeMultiple","add","push","forEach","isMatchesType","meta","console","error","pick","rest","createRelay","initialConfig","configManager","_config","get","update","updatedConfig","createConfigManager","getEnvironment","Promise","resolve","Response","payload","createRelayEvent","getMeta","on","off","updateConfig","clearStorage"],"mappings":"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","x_google_ignoreList":[3,5]}
@@ -1,3 +1,12 @@
1
- import { EventApiCallParams } from "../event-api-call/event-api-caller";
2
- export declare function emit(params: EventApiCallParams): Promise<void>;
1
+ import { Environment } from "../environment/environment";
2
+ import { RelayEvent } from "../event/relay-event";
3
+ import { ListenerManager } from "../listener/listener";
4
+ import { RelayConfig } from "../relay";
5
+ export interface EmitParams {
6
+ config: RelayConfig;
7
+ environment: Environment;
8
+ event: RelayEvent;
9
+ listenerManager: ListenerManager;
10
+ }
11
+ export declare function emit(params: EmitParams): Promise<void | Readonly<import("../relay").ValidationResponse>>;
3
12
  //# sourceMappingURL=emit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../../src/emit/emit.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EACnB,MAAM,oCAAoC,CAAC;AAE5C,wBAAsB,IAAI,CAAC,MAAM,EAAE,kBAAkB,iBAEpD"}
1
+ {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../../src/emit/emit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAKzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,wBAAsB,IAAI,CAAC,MAAM,EAAE,UAAU,mEAM5C"}
@@ -4,7 +4,7 @@ interface Listener {
4
4
  type: string;
5
5
  callback: EventCallback;
6
6
  }
7
- interface ListenerManager {
7
+ export interface ListenerManager {
8
8
  add: (listener: Listener) => () => void;
9
9
  call: (event: RelayEvent) => void;
10
10
  remove: (type: string, callback?: EventCallback) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../src/listener/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAExD,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,UAAU,eAAe;IACvB,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,IAAI,CAAC;IACxC,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1D;AAED,wBAAgB,qBAAqB,IAAI,eAAe,CA4DvD"}
1
+ {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../src/listener/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAExD,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,IAAI,CAAC;IACxC,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1D;AAED,wBAAgB,qBAAqB,IAAI,eAAe,CA4DvD"}
@@ -1 +1 @@
1
- {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../src/relay.ts"],"names":[],"mappings":"AAKA,OAAO,EAAc,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAyB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAuB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAEL,eAAe,EACf,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAG7B,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5C,KAAK,GAAG,GAAG,MAAM,IAAI,CAAC;AAEtB,UAAU,KAAK;IACb,IAAI,EAAE,CACJ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,KAClB,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAC,CAAC;IACxC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,KAAK,GAAG,CAAC;IACnD,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IACtD,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,WAAW,GAAG,KAAK,CA2C7D;AAED,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../src/relay.ts"],"names":[],"mappings":"AAKA,OAAO,EAAc,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAyB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAuB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG1E,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5C,KAAK,GAAG,GAAG,MAAM,IAAI,CAAC;AAEtB,UAAU,KAAK;IACb,IAAI,EAAE,CACJ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,KAClB,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAC,CAAC;IACxC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,KAAK,GAAG,CAAC;IACnD,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IACtD,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,WAAW,GAAG,KAAK,CA2C7D;AAED,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAC"}
package/lib/relay.cjs CHANGED
@@ -20,13 +20,31 @@ async function callEventApi({ event, config, environment, }) {
20
20
  return data;
21
21
  }
22
22
 
23
+ async function validate$1(params) {
24
+ const data = await callEventApi(params);
25
+ if (!data) {
26
+ return {
27
+ valid: false,
28
+ errors: [{ type: "", message: "disabled", path: "" }],
29
+ };
30
+ }
31
+ const { valid, errors } = data[0];
32
+ return { valid, errors: errors ?? [] };
33
+ }
34
+
23
35
  async function emit(params) {
36
+ const { listenerManager, event, config } = params;
37
+ const isEnabled = config.mode !== "disabled";
38
+ isEnabled && listenerManager.call(event);
39
+ return config.mode === "validate" ? validate$1(params) : emitEvent(params);
40
+ }
41
+ async function emitEvent(params) {
24
42
  await callEventApi(params);
25
43
  }
26
44
 
27
45
  var REGEX = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
28
46
 
29
- function validate$1(uuid) {
47
+ function validate(uuid) {
30
48
  return typeof uuid === 'string' && REGEX.test(uuid);
31
49
  }
32
50
 
@@ -36,7 +54,7 @@ function createClientIdManager(environment) {
36
54
  getClientId: () => {
37
55
  const storage = environment.storage;
38
56
  const existingClientId = storage.getItem(key);
39
- const clientId = existingClientId && validate$1(existingClientId)
57
+ const clientId = existingClientId && validate(existingClientId)
40
58
  ? existingClientId
41
59
  : environment.generateUUID();
42
60
  storage.setItem(key, clientId);
@@ -156,7 +174,7 @@ function isBrowser() {
156
174
  }
157
175
  }
158
176
 
159
- const version = "0.6.0" ;
177
+ const version = "0.6.1" ;
160
178
 
161
179
  function getEventConfig(config) {
162
180
  const { trackingId } = config;
@@ -261,18 +279,6 @@ function createConfigManager(initialConfig) {
261
279
  };
262
280
  }
263
281
 
264
- async function validate(params) {
265
- const data = await callEventApi(params);
266
- if (!data) {
267
- return {
268
- valid: false,
269
- errors: [{ type: "", message: "disabled", path: "" }],
270
- };
271
- }
272
- const { valid, errors } = data[0];
273
- return { valid, errors: errors ?? [] };
274
- }
275
-
276
282
  function buildNullEnvironment() {
277
283
  return {
278
284
  runtime: "null",
@@ -287,27 +293,26 @@ function buildNullEnvironment() {
287
293
 
288
294
  function createRelay(initialConfig) {
289
295
  const configManager = createConfigManager(initialConfig);
296
+ const listenerManager = createListenerManager();
290
297
  const getEnvironment = () => configManager.get().mode == "disabled"
291
298
  ? buildNullEnvironment()
292
299
  : currentEnvironment();
293
300
  const clientIdManager = createClientIdManager(getEnvironment());
294
- const { add, call, remove } = createListenerManager();
295
301
  return {
296
302
  emit: (type, payload) => {
297
- const event = createRelayEvent(type, payload, configManager.get(), getEnvironment(), clientIdManager);
298
- call(event);
299
- const params = {
300
- config: configManager.get(),
301
- environment: getEnvironment(),
303
+ const config = configManager.get();
304
+ const environment = getEnvironment();
305
+ const event = createRelayEvent(type, payload, config, environment, clientIdManager);
306
+ return emit({
307
+ config,
308
+ environment,
302
309
  event,
303
- };
304
- return configManager.get().mode === "validate"
305
- ? validate(params)
306
- : emit(params);
310
+ listenerManager,
311
+ });
307
312
  },
308
313
  getMeta: (type) => createMeta(type, configManager.get(), getEnvironment(), clientIdManager),
309
- on: (type, callback) => add({ type, callback }),
310
- off: (type, callback) => remove(type, callback),
314
+ on: (type, callback) => listenerManager.add({ type, callback }),
315
+ off: (type, callback) => listenerManager.remove(type, callback),
311
316
  updateConfig: (config) => configManager.update(config),
312
317
  version,
313
318
  clearStorage: () => {
package/lib/relay.js CHANGED
@@ -18,13 +18,31 @@ async function callEventApi({ event, config, environment, }) {
18
18
  return data;
19
19
  }
20
20
 
21
+ async function validate$1(params) {
22
+ const data = await callEventApi(params);
23
+ if (!data) {
24
+ return {
25
+ valid: false,
26
+ errors: [{ type: "", message: "disabled", path: "" }],
27
+ };
28
+ }
29
+ const { valid, errors } = data[0];
30
+ return { valid, errors: errors ?? [] };
31
+ }
32
+
21
33
  async function emit(params) {
34
+ const { listenerManager, event, config } = params;
35
+ const isEnabled = config.mode !== "disabled";
36
+ isEnabled && listenerManager.call(event);
37
+ return config.mode === "validate" ? validate$1(params) : emitEvent(params);
38
+ }
39
+ async function emitEvent(params) {
22
40
  await callEventApi(params);
23
41
  }
24
42
 
25
43
  var REGEX = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
26
44
 
27
- function validate$1(uuid) {
45
+ function validate(uuid) {
28
46
  return typeof uuid === 'string' && REGEX.test(uuid);
29
47
  }
30
48
 
@@ -34,7 +52,7 @@ function createClientIdManager(environment) {
34
52
  getClientId: () => {
35
53
  const storage = environment.storage;
36
54
  const existingClientId = storage.getItem(key);
37
- const clientId = existingClientId && validate$1(existingClientId)
55
+ const clientId = existingClientId && validate(existingClientId)
38
56
  ? existingClientId
39
57
  : environment.generateUUID();
40
58
  storage.setItem(key, clientId);
@@ -154,7 +172,7 @@ function isBrowser() {
154
172
  }
155
173
  }
156
174
 
157
- const version = "0.6.0" ;
175
+ const version = "0.6.1" ;
158
176
 
159
177
  function getEventConfig(config) {
160
178
  const { trackingId } = config;
@@ -259,18 +277,6 @@ function createConfigManager(initialConfig) {
259
277
  };
260
278
  }
261
279
 
262
- async function validate(params) {
263
- const data = await callEventApi(params);
264
- if (!data) {
265
- return {
266
- valid: false,
267
- errors: [{ type: "", message: "disabled", path: "" }],
268
- };
269
- }
270
- const { valid, errors } = data[0];
271
- return { valid, errors: errors ?? [] };
272
- }
273
-
274
280
  function buildNullEnvironment() {
275
281
  return {
276
282
  runtime: "null",
@@ -285,27 +291,26 @@ function buildNullEnvironment() {
285
291
 
286
292
  function createRelay(initialConfig) {
287
293
  const configManager = createConfigManager(initialConfig);
294
+ const listenerManager = createListenerManager();
288
295
  const getEnvironment = () => configManager.get().mode == "disabled"
289
296
  ? buildNullEnvironment()
290
297
  : currentEnvironment();
291
298
  const clientIdManager = createClientIdManager(getEnvironment());
292
- const { add, call, remove } = createListenerManager();
293
299
  return {
294
300
  emit: (type, payload) => {
295
- const event = createRelayEvent(type, payload, configManager.get(), getEnvironment(), clientIdManager);
296
- call(event);
297
- const params = {
298
- config: configManager.get(),
299
- environment: getEnvironment(),
301
+ const config = configManager.get();
302
+ const environment = getEnvironment();
303
+ const event = createRelayEvent(type, payload, config, environment, clientIdManager);
304
+ return emit({
305
+ config,
306
+ environment,
300
307
  event,
301
- };
302
- return configManager.get().mode === "validate"
303
- ? validate(params)
304
- : emit(params);
308
+ listenerManager,
309
+ });
305
310
  },
306
311
  getMeta: (type) => createMeta(type, configManager.get(), getEnvironment(), clientIdManager),
307
- on: (type, callback) => add({ type, callback }),
308
- off: (type, callback) => remove(type, callback),
312
+ on: (type, callback) => listenerManager.add({ type, callback }),
313
+ off: (type, callback) => listenerManager.remove(type, callback),
309
314
  updateConfig: (config) => configManager.update(config),
310
315
  version,
311
316
  clearStorage: () => {
package/lib/relay.mjs CHANGED
@@ -18,13 +18,31 @@ async function callEventApi({ event, config, environment, }) {
18
18
  return data;
19
19
  }
20
20
 
21
+ async function validate$1(params) {
22
+ const data = await callEventApi(params);
23
+ if (!data) {
24
+ return {
25
+ valid: false,
26
+ errors: [{ type: "", message: "disabled", path: "" }],
27
+ };
28
+ }
29
+ const { valid, errors } = data[0];
30
+ return { valid, errors: errors ?? [] };
31
+ }
32
+
21
33
  async function emit(params) {
34
+ const { listenerManager, event, config } = params;
35
+ const isEnabled = config.mode !== "disabled";
36
+ isEnabled && listenerManager.call(event);
37
+ return config.mode === "validate" ? validate$1(params) : emitEvent(params);
38
+ }
39
+ async function emitEvent(params) {
22
40
  await callEventApi(params);
23
41
  }
24
42
 
25
43
  var REGEX = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;
26
44
 
27
- function validate$1(uuid) {
45
+ function validate(uuid) {
28
46
  return typeof uuid === 'string' && REGEX.test(uuid);
29
47
  }
30
48
 
@@ -34,7 +52,7 @@ function createClientIdManager(environment) {
34
52
  getClientId: () => {
35
53
  const storage = environment.storage;
36
54
  const existingClientId = storage.getItem(key);
37
- const clientId = existingClientId && validate$1(existingClientId)
55
+ const clientId = existingClientId && validate(existingClientId)
38
56
  ? existingClientId
39
57
  : environment.generateUUID();
40
58
  storage.setItem(key, clientId);
@@ -154,7 +172,7 @@ function isBrowser() {
154
172
  }
155
173
  }
156
174
 
157
- const version = "0.6.0" ;
175
+ const version = "0.6.1" ;
158
176
 
159
177
  function getEventConfig(config) {
160
178
  const { trackingId } = config;
@@ -259,18 +277,6 @@ function createConfigManager(initialConfig) {
259
277
  };
260
278
  }
261
279
 
262
- async function validate(params) {
263
- const data = await callEventApi(params);
264
- if (!data) {
265
- return {
266
- valid: false,
267
- errors: [{ type: "", message: "disabled", path: "" }],
268
- };
269
- }
270
- const { valid, errors } = data[0];
271
- return { valid, errors: errors ?? [] };
272
- }
273
-
274
280
  function buildNullEnvironment() {
275
281
  return {
276
282
  runtime: "null",
@@ -285,27 +291,26 @@ function buildNullEnvironment() {
285
291
 
286
292
  function createRelay(initialConfig) {
287
293
  const configManager = createConfigManager(initialConfig);
294
+ const listenerManager = createListenerManager();
288
295
  const getEnvironment = () => configManager.get().mode == "disabled"
289
296
  ? buildNullEnvironment()
290
297
  : currentEnvironment();
291
298
  const clientIdManager = createClientIdManager(getEnvironment());
292
- const { add, call, remove } = createListenerManager();
293
299
  return {
294
300
  emit: (type, payload) => {
295
- const event = createRelayEvent(type, payload, configManager.get(), getEnvironment(), clientIdManager);
296
- call(event);
297
- const params = {
298
- config: configManager.get(),
299
- environment: getEnvironment(),
301
+ const config = configManager.get();
302
+ const environment = getEnvironment();
303
+ const event = createRelayEvent(type, payload, config, environment, clientIdManager);
304
+ return emit({
305
+ config,
306
+ environment,
300
307
  event,
301
- };
302
- return configManager.get().mode === "validate"
303
- ? validate(params)
304
- : emit(params);
308
+ listenerManager,
309
+ });
305
310
  },
306
311
  getMeta: (type) => createMeta(type, configManager.get(), getEnvironment(), clientIdManager),
307
- on: (type, callback) => add({ type, callback }),
308
- off: (type, callback) => remove(type, callback),
312
+ on: (type, callback) => listenerManager.add({ type, callback }),
313
+ off: (type, callback) => listenerManager.remove(type, callback),
309
314
  updateConfig: (config) => configManager.update(config),
310
315
  version,
311
316
  clearStorage: () => {
@@ -1,3 +1,12 @@
1
- import { EventApiCallParams } from "../event-api-call/event-api-caller";
2
- export declare function emit(params: EventApiCallParams): Promise<void>;
1
+ import { Environment } from "../environment/environment";
2
+ import { RelayEvent } from "../event/relay-event";
3
+ import { ListenerManager } from "../listener/listener";
4
+ import { RelayConfig } from "../relay";
5
+ export interface EmitParams {
6
+ config: RelayConfig;
7
+ environment: Environment;
8
+ event: RelayEvent;
9
+ listenerManager: ListenerManager;
10
+ }
11
+ export declare function emit(params: EmitParams): Promise<void | Readonly<import("../relay").ValidationResponse>>;
3
12
  //# sourceMappingURL=emit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../../src/emit/emit.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kBAAkB,EACnB,MAAM,oCAAoC,CAAC;AAE5C,wBAAsB,IAAI,CAAC,MAAM,EAAE,kBAAkB,iBAEpD"}
1
+ {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../../src/emit/emit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAKzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,wBAAsB,IAAI,CAAC,MAAM,EAAE,UAAU,mEAM5C"}
@@ -4,7 +4,7 @@ interface Listener {
4
4
  type: string;
5
5
  callback: EventCallback;
6
6
  }
7
- interface ListenerManager {
7
+ export interface ListenerManager {
8
8
  add: (listener: Listener) => () => void;
9
9
  call: (event: RelayEvent) => void;
10
10
  remove: (type: string, callback?: EventCallback) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../src/listener/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAExD,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,UAAU,eAAe;IACvB,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,IAAI,CAAC;IACxC,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1D;AAED,wBAAgB,qBAAqB,IAAI,eAAe,CA4DvD"}
1
+ {"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../src/listener/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAIlD,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAExD,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,IAAI,CAAC;IACxC,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAClC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1D;AAED,wBAAgB,qBAAqB,IAAI,eAAe,CA4DvD"}
@@ -1 +1 @@
1
- {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../src/relay.ts"],"names":[],"mappings":"AAKA,OAAO,EAAc,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAyB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAuB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAEL,eAAe,EACf,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAG7B,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5C,KAAK,GAAG,GAAG,MAAM,IAAI,CAAC;AAEtB,UAAU,KAAK;IACb,IAAI,EAAE,CACJ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,KAClB,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAC,CAAC;IACxC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,KAAK,GAAG,CAAC;IACnD,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IACtD,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,WAAW,GAAG,KAAK,CA2C7D;AAED,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../src/relay.ts"],"names":[],"mappings":"AAKA,OAAO,EAAc,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAyB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAuB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG1E,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5C,KAAK,GAAG,GAAG,MAAM,IAAI,CAAC;AAEtB,UAAU,KAAK;IACb,IAAI,EAAE,CACJ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,YAAY,KAClB,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAC,CAAC;IACxC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,KAAK,GAAG,CAAC;IACnD,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IACtD,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,WAAW,GAAG,KAAK,CA2C7D;AAED,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coveo/relay",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "A library for sending analytics events using Coveo's Event protocol.",
5
5
  "files": [
6
6
  "lib/**/*"