@taqueria/analytics
Version:
A TypeScript SDK submitting events for Taqueria activity
1 lines • 3.46 kB
Source Map (JSON)
{"version":3,"sources":["index.ts"],"sourcesContent":["import type { Deps, EventName, EventParams, StoredEvent } from '@taqueria/analytics/types';\nexport type { Consent, EventParams } from '@taqueria/analytics/types';\n\n// TODO: Move to env variable\nconst MEASUREMENT_ID = 'G-8LSQ6J7P0Q';\nconst API_SECRET = '3aHoMp2USE21ZPmAVTI1Lg';\n\nconst noop = () => {};\n\nconst getCurrentTimestamp = () => {\n\tconst currentTime = new Date();\n\treturn currentTime.toDateString() + ', ' + currentTime.toTimeString();\n};\n\nconst toRequestURI = () =>\n\t`https://www.google-analytics.com/mp/collect?measurement_id=${MEASUREMENT_ID}&api_secret=${API_SECRET}`;\n\nexport const inject = ({ taqVersion, taqBuild, fields, getMachineId, operatingSystem, fetch, ...deps }: Deps) => {\n\tlet events: StoredEvent[] = [];\n\n\tconst toRequestBody = (client_id: string) =>\n\t\tJSON.stringify({\n\t\t\tclient_id,\n\t\t\tevents: events.map(event => {\n\t\t\t\tevent.params['taq_client'] = client_id;\n\t\t\t\treturn event;\n\t\t\t}),\n\t\t});\n\n\tconst getEvents = () => [...events];\n\n\tconst addEvent = (name: EventName, params: EventParams) =>\n\t\tevents.push({\n\t\t\tname,\n\t\t\tparams: {\n\t\t\t\ttaq_error: false,\n\t\t\t\ttaq_timestamp: getCurrentTimestamp(),\n\t\t\t\ttaq_version: taqVersion,\n\t\t\t\ttaq_build: taqBuild,\n\t\t\t\ttaq_os: operatingSystem,\n\t\t\t\t...fields,\n\t\t\t\t...params,\n\t\t\t},\n\t\t});\n\n\tconst empty = () => {\n\t\tevents = [];\n\t};\n\n\tconst sendEvents = () =>\n\t\tgetMachineId()\n\t\t\t.then(toRequestBody)\n\t\t\t.then((body: string) => fetch(toRequestURI(), { method: 'POST', body }))\n\t\t\t.then(empty)\n\t\t\t.catch(noop);\n\n\tconst isTrackingAllowed = () => deps.settings.consent === 'opt_in';\n\n\tconst track = (fn: () => Promise<void>) =>\n\t\tdeps.isCICD || deps.isTesting || !isTrackingAllowed()\n\t\t\t? Promise.resolve()\n\t\t\t: fn();\n\n\tconst trackEvent = (name: EventName, params: EventParams) =>\n\t\ttrack(() => {\n\t\t\taddEvent(name, params);\n\t\t\treturn Promise.resolve(noop());\n\t\t});\n\n\tconst sendTrackedEvents = () => track(sendEvents);\n\n\treturn {\n\t\ttrackEvent,\n\t\tsendTrackedEvents,\n\t\tgetEvents,\n\t};\n};\n\nexport default {\n\tinject,\n};\n"],"mappings":";AAIA,IAAM,iBAAiB;AACvB,IAAM,aAAa;AAEnB,IAAM,OAAO,MAAM;AAAC;AAEpB,IAAM,sBAAsB,MAAM;AACjC,QAAM,cAAc,oBAAI,KAAK;AAC7B,SAAO,YAAY,aAAa,IAAI,OAAO,YAAY,aAAa;AACrE;AAEA,IAAM,eAAe,MACpB,8DAA8D,6BAA6B;AAErF,IAAM,SAAS,CAAC,EAAE,YAAY,UAAU,QAAQ,cAAc,iBAAiB,OAAO,GAAG,KAAK,MAAY;AAChH,MAAI,SAAwB,CAAC;AAE7B,QAAM,gBAAgB,CAAC,cACtB,KAAK,UAAU;AAAA,IACd;AAAA,IACA,QAAQ,OAAO,IAAI,WAAS;AAC3B,YAAM,OAAO,YAAY,IAAI;AAC7B,aAAO;AAAA,IACR,CAAC;AAAA,EACF,CAAC;AAEF,QAAM,YAAY,MAAM,CAAC,GAAG,MAAM;AAElC,QAAM,WAAW,CAAC,MAAiB,WAClC,OAAO,KAAK;AAAA,IACX;AAAA,IACA,QAAQ;AAAA,MACP,WAAW;AAAA,MACX,eAAe,oBAAoB;AAAA,MACnC,aAAa;AAAA,MACb,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,GAAG;AAAA,MACH,GAAG;AAAA,IACJ;AAAA,EACD,CAAC;AAEF,QAAM,QAAQ,MAAM;AACnB,aAAS,CAAC;AAAA,EACX;AAEA,QAAM,aAAa,MAClB,aAAa,EACX,KAAK,aAAa,EAClB,KAAK,CAAC,SAAiB,MAAM,aAAa,GAAG,EAAE,QAAQ,QAAQ,KAAK,CAAC,CAAC,EACtE,KAAK,KAAK,EACV,MAAM,IAAI;AAEb,QAAM,oBAAoB,MAAM,KAAK,SAAS,YAAY;AAE1D,QAAM,QAAQ,CAAC,OACd,KAAK,UAAU,KAAK,aAAa,CAAC,kBAAkB,IACjD,QAAQ,QAAQ,IAChB,GAAG;AAEP,QAAM,aAAa,CAAC,MAAiB,WACpC,MAAM,MAAM;AACX,aAAS,MAAM,MAAM;AACrB,WAAO,QAAQ,QAAQ,KAAK,CAAC;AAAA,EAC9B,CAAC;AAEF,QAAM,oBAAoB,MAAM,MAAM,UAAU;AAEhD,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACD;AAEA,IAAO,6BAAQ;AAAA,EACd;AACD;","names":[]}