@elbwalker/tagger
Version:
A helper to set up tracking based on walkerOS
1 lines • 3.7 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { WalkerOS } from '@elbwalker/types';\nimport type { ITagger } from './types';\n\nfunction Tagger(config: Partial<ITagger.Config> = {}): ITagger.Instance {\n const instance: ITagger.Instance = {\n config: {\n prefix: config.prefix || 'data-elb',\n },\n entity,\n action: actionMethod,\n property: propertyMethod,\n context: contextMethod,\n globals: globalsMethod,\n };\n\n // data-elb=\"entity\"\n function entity(name: string) {\n return { [attrName()]: name };\n }\n\n // data-elbaction=\"trigger:action\"\n function actionMethod(\n triggerActions: ITagger.Trigger | ITagger.KevVal,\n action?: string,\n ): WalkerOS.Properties {\n if (typeof triggerActions === 'string')\n triggerActions = { [triggerActions]: action || triggerActions };\n\n return {\n [attrName('action', false)]: getStr(triggerActions),\n };\n }\n\n // data-elb-entity=\"key:val\"\n function propertyMethod(\n entity: string,\n properties: string | ITagger.KevVal,\n value?: WalkerOS.Property,\n ): WalkerOS.Properties {\n if (typeof properties === 'string')\n properties = { [properties]: value || '' };\n\n return { [attrName(entity)]: getStr(properties) };\n }\n\n // data-elbcontext=\"key:val\"\n function contextMethod(\n context: string | ITagger.KevVal,\n value?: WalkerOS.Property,\n ): WalkerOS.Properties {\n if (typeof context === 'string') context = { [context]: value || '' };\n\n return { [attrName('context', false)]: getStr(context) };\n }\n\n // data-elbglobals=\"key:val\"\n function globalsMethod(\n globals: string | ITagger.KevVal,\n value?: WalkerOS.Property,\n ): WalkerOS.Properties {\n if (typeof globals === 'string') globals = { [globals]: value || '' };\n\n return { [attrName('globals', false)]: getStr(globals) };\n }\n\n function attrName(name?: string, isProperty = true) {\n const separator = isProperty ? '-' : '';\n name = name ? separator + name : '';\n\n return instance.config.prefix + name;\n }\n\n function getStr(obj: ITagger.KevVal): string {\n let str = '';\n let separator = '';\n\n Object.entries(obj).forEach(([key, val]) => {\n str += `${separator}${key}:${val}`;\n separator = ';';\n });\n\n return str;\n }\n\n return instance;\n}\n\nexport default Tagger;\n"],"mappings":";AAGA,SAAS,OAAO,SAAkC,CAAC,GAAqB;AACtE,QAAM,WAA6B;AAAA,IACjC,QAAQ;AAAA,MACN,QAAQ,OAAO,UAAU;AAAA,IAC3B;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAGA,WAAS,OAAO,MAAc;AAC5B,WAAO,EAAE,CAAC,SAAS,CAAC,GAAG,KAAK;AAAA,EAC9B;AAGA,WAAS,aACP,gBACA,QACqB;AACrB,QAAI,OAAO,mBAAmB;AAC5B,uBAAiB,EAAE,CAAC,cAAc,GAAG,UAAU,eAAe;AAEhE,WAAO;AAAA,MACL,CAAC,SAAS,UAAU,KAAK,CAAC,GAAG,OAAO,cAAc;AAAA,IACpD;AAAA,EACF;AAGA,WAAS,eACPA,SACA,YACA,OACqB;AACrB,QAAI,OAAO,eAAe;AACxB,mBAAa,EAAE,CAAC,UAAU,GAAG,SAAS,GAAG;AAE3C,WAAO,EAAE,CAAC,SAASA,OAAM,CAAC,GAAG,OAAO,UAAU,EAAE;AAAA,EAClD;AAGA,WAAS,cACP,SACA,OACqB;AACrB,QAAI,OAAO,YAAY,SAAU,WAAU,EAAE,CAAC,OAAO,GAAG,SAAS,GAAG;AAEpE,WAAO,EAAE,CAAC,SAAS,WAAW,KAAK,CAAC,GAAG,OAAO,OAAO,EAAE;AAAA,EACzD;AAGA,WAAS,cACP,SACA,OACqB;AACrB,QAAI,OAAO,YAAY,SAAU,WAAU,EAAE,CAAC,OAAO,GAAG,SAAS,GAAG;AAEpE,WAAO,EAAE,CAAC,SAAS,WAAW,KAAK,CAAC,GAAG,OAAO,OAAO,EAAE;AAAA,EACzD;AAEA,WAAS,SAAS,MAAe,aAAa,MAAM;AAClD,UAAM,YAAY,aAAa,MAAM;AACrC,WAAO,OAAO,YAAY,OAAO;AAEjC,WAAO,SAAS,OAAO,SAAS;AAAA,EAClC;AAEA,WAAS,OAAO,KAA6B;AAC3C,QAAI,MAAM;AACV,QAAI,YAAY;AAEhB,WAAO,QAAQ,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,GAAG,MAAM;AAC1C,aAAO,GAAG,SAAS,GAAG,GAAG,IAAI,GAAG;AAChC,kBAAY;AAAA,IACd,CAAC;AAED,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,IAAO,gBAAQ;","names":["entity"]}