@hellpig/anarchy-tracking 1.6.1 → 1.7.2

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.
Files changed (68) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/README.md +1 -1
  3. package/dist/Constants/Masks/index.es.js +2 -0
  4. package/dist/Constants/Masks/index.es.js.map +1 -0
  5. package/dist/Services/BrowserTrackingService/index.es.js +2 -0
  6. package/dist/Services/BrowserTrackingService/index.es.js.map +1 -0
  7. package/dist/Services/DesktopPreloadTrackingService/index.es.js +2 -0
  8. package/dist/Services/DesktopPreloadTrackingService/index.es.js.map +1 -0
  9. package/dist/Services/DesktopTrackingService/index.es.js +2 -0
  10. package/dist/Services/DesktopTrackingService/index.es.js.map +1 -0
  11. package/dist/Utils/DynamicDataUtils/index.es.js +2 -0
  12. package/dist/Utils/DynamicDataUtils/index.es.js.map +1 -0
  13. package/dist/Utils/IntegrationsBrowser/index.es.js +2 -0
  14. package/dist/Utils/IntegrationsBrowser/index.es.js.map +1 -0
  15. package/dist/Utils/IntegrationsNode/index.es.js +2 -0
  16. package/dist/Utils/IntegrationsNode/index.es.js.map +1 -0
  17. package/dist/Utils/ScrubEvent/index.es.js +2 -0
  18. package/dist/Utils/ScrubEvent/index.es.js.map +1 -0
  19. package/dist/Utils/ScrubsBrowser/index.es.js +2 -0
  20. package/dist/Utils/ScrubsBrowser/index.es.js.map +1 -0
  21. package/dist/Utils/ScrubsDesktop/index.es.js +2 -0
  22. package/dist/Utils/ScrubsDesktop/index.es.js.map +1 -0
  23. package/dist/Utils/browser/index.es.js +2 -0
  24. package/dist/Utils/browser/index.es.js.map +1 -0
  25. package/dist/Utils/desktop/index.es.js +2 -0
  26. package/dist/Utils/desktop/index.es.js.map +1 -0
  27. package/dist/anarchy-shared/src/Utils/CheckUtils/index.es.js +2 -0
  28. package/dist/anarchy-shared/src/Utils/CheckUtils/index.es.js.map +1 -0
  29. package/dist/anarchy-shared/src/Utils/FileUtils/index.es.js +2 -0
  30. package/dist/anarchy-shared/src/Utils/FileUtils/index.es.js.map +1 -0
  31. package/dist/{chunks/TrackingUtils.js → anarchy-shared/src/Utils/TrackingUtils/index.es.js} +2 -2
  32. package/dist/anarchy-shared/src/Utils/TrackingUtils/index.es.js.map +1 -0
  33. package/dist/browser/index.es.js +1 -1
  34. package/dist/browser/index.es.js.map +1 -1
  35. package/dist/desktop/index.es.js +1 -1
  36. package/dist/desktop/index.es.js.map +1 -1
  37. package/dist/desktop-preload/index.es.js +1 -1
  38. package/dist/desktop-preload/index.es.js.map +1 -1
  39. package/dist/index/index.es.js +1 -1
  40. package/legal/NOTICE.md +8 -8
  41. package/legal/THIRD_PARTY_LICENSES.md +8 -8
  42. package/package.json +3 -3
  43. package/dist/chunks/TrackingUtils.js.map +0 -1
  44. package/dist/chunks/browser.js +0 -2
  45. package/dist/chunks/browser.js.map +0 -1
  46. package/dist/chunks/index.js +0 -2
  47. package/dist/chunks/index.js.map +0 -1
  48. /package/dist/{anarchy-tracking/src/Constants → Constants}/Masks.d.ts +0 -0
  49. /package/dist/{anarchy-tracking/src/Constants → Constants}/index.d.ts +0 -0
  50. /package/dist/{anarchy-tracking/src/Models → Models}/TMetaData.d.ts +0 -0
  51. /package/dist/{anarchy-tracking/src/Models → Models}/TTrackingService.d.ts +0 -0
  52. /package/dist/{anarchy-tracking/src/Models → Models}/index.d.ts +0 -0
  53. /package/dist/{anarchy-tracking/src/Services → Services}/BrowserTrackingService.d.ts +0 -0
  54. /package/dist/{anarchy-tracking/src/Services → Services}/DesktopPreloadTrackingService.d.ts +0 -0
  55. /package/dist/{anarchy-tracking/src/Services → Services}/DesktopTrackingService.d.ts +0 -0
  56. /package/dist/{anarchy-tracking/src/Utils → Utils}/DynamicDataUtils.d.ts +0 -0
  57. /package/dist/{anarchy-tracking/src/Utils → Utils}/IntegrationsBrowser.d.ts +0 -0
  58. /package/dist/{anarchy-tracking/src/Utils → Utils}/IntegrationsNode.d.ts +0 -0
  59. /package/dist/{anarchy-tracking/src/Utils → Utils}/ScrubEvent.d.ts +0 -0
  60. /package/dist/{anarchy-tracking/src/Utils → Utils}/ScrubsBrowser.d.ts +0 -0
  61. /package/dist/{anarchy-tracking/src/Utils → Utils}/ScrubsDesktop.d.ts +0 -0
  62. /package/dist/{anarchy-tracking/src/Utils → Utils}/browser.d.ts +0 -0
  63. /package/dist/{anarchy-tracking/src/Utils → Utils}/desktop.d.ts +0 -0
  64. /package/dist/{anarchy-tracking/src/Utils → Utils}/index.d.ts +0 -0
  65. /package/dist/{anarchy-tracking/src/browser.d.ts → browser.d.ts} +0 -0
  66. /package/dist/{anarchy-tracking/src/desktop-preload.d.ts → desktop-preload.d.ts} +0 -0
  67. /package/dist/{anarchy-tracking/src/desktop.d.ts → desktop.d.ts} +0 -0
  68. /package/dist/{anarchy-tracking/src/index.d.ts → index.d.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -5,3 +5,4 @@
5
5
  - 1.4.0 Sentry release+dist tagging for better sourcemap handling
6
6
  - 1.5.0 Added optional dynamic context (and tags) to data (beforeSend)
7
7
  - 1.6.0 Added proper building and npm packaging
8
+ - 1.7.0 Fixes npm package
package/README.md CHANGED
@@ -31,4 +31,4 @@ SOFTWARE.
31
31
  See local files `LICENSE`, `CHANGELOG`, `NOTICE` (pointer), and files in `./legal`:
32
32
  `DISCLAIMER`, `EULA`, `PRIVACY`, `SECURITY`, `NOTICE` (full), `THIRD_PARTY_LICENSES`.
33
33
 
34
- Contacts — Privacy: {{PRIVACY_EMAIL}}, Security: {{SECURITY_EMAIL}}.
34
+ Contacts — Privacy: pnf036+anarchy@gmail.com, Security: pnf036+anarchy_security@gmail.com.
@@ -0,0 +1,2 @@
1
+ const HiddenField="hidden";export{HiddenField};
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Constants/Masks.ts"],"sourcesContent":["export const HiddenField = 'hidden' as const;\n"],"names":["HiddenField"],"mappings":"AAAO,MAAMA,YAAc"}
@@ -0,0 +1,2 @@
1
+ import{isDefined}from"../../anarchy-shared/src/Utils/CheckUtils/index.es.js";import{parseDistName}from"../../anarchy-shared/src/Utils/TrackingUtils/index.es.js";import{mutateEventWithDynamicData}from"../../Utils/DynamicDataUtils/index.es.js";import{rewriteFramesIntegrationBrowser}from"../../Utils/IntegrationsBrowser/index.es.js";import{scrubEvent}from"../../Utils/ScrubEvent/index.es.js";import{scrubUserPathsBrowser}from"../../Utils/ScrubsBrowser/index.es.js";import{init,setTags,captureException}from"@sentry/browser";function BrowserTrackingService(options,metaData,dynamicContextFn,dynamicTagsFn){let isStarted=!1;const defaultOptions={beforeSend(event,_hint){const result=scrubUserPathsBrowser(scrubEvent(event));return mutateEventWithDynamicData(result,dynamicContextFn,dynamicTagsFn),result},integrations:[rewriteFramesIntegrationBrowser()],tracesSampleRate:0,sendDefaultPii:!1},client=init({...defaultOptions,...options});isDefined(metaData)&&setTags(metaData);const{platform:platform,arch:arch}=parseDistName(options?.dist);setTags({layer:"web",errorTracker:"BrowserTrackingService",os:platform,arch:arch});const onError=ev=>{captureException(ev?.error??ev)},onRejection=ev=>{captureException(ev?.reason??ev)};function start(onErrorHandler=onError,onRejectionHandler=onRejection){isStarted||(isStarted=!0,window.addEventListener("error",onErrorHandler),window.addEventListener("unhandledrejection",onRejectionHandler))}return isDefined(client)&&start(),{captureException:captureException,start:start,stop:function(onErrorHandler=onError,onRejectionHandler=onRejection){isStarted=!1,window.removeEventListener("error",onErrorHandler),window.removeEventListener("unhandledrejection",onRejectionHandler)},isStarted:()=>isStarted}}export{BrowserTrackingService};
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Services/BrowserTrackingService.ts"],"sourcesContent":["import { isDefined, parseDistName } from '@Anarchy/Shared/Utils';\nimport type { TMetaData, TTrackingService } from '@Anarchy/Tracking/Models';\nimport { mutateEventWithDynamicData } from '@Anarchy/Tracking/Utils/DynamicDataUtils';\nimport { rewriteFramesIntegrationBrowser } from '@Anarchy/Tracking/Utils/IntegrationsBrowser';\nimport { scrubEvent } from '@Anarchy/Tracking/Utils/ScrubEvent';\nimport { scrubUserPathsBrowser } from '@Anarchy/Tracking/Utils/ScrubsBrowser';\nimport type { BrowserOptions, EventHint } from '@sentry/browser';\nimport { captureException, init, setTags } from '@sentry/browser';\nimport type { Client, ErrorEvent, Primitive } from '@sentry/core';\n\nexport function BrowserTrackingService(\n options?: BrowserOptions,\n metaData?: TMetaData,\n dynamicContextFn?: () => Record<string, any>,\n dynamicTagsFn?: () => Record<string, Primitive>\n): TTrackingService {\n let isStarted: boolean = false;\n\n const defaultOptions: BrowserOptions = {\n beforeSend(event: ErrorEvent, _hint: EventHint): PromiseLike<ErrorEvent | null> | ErrorEvent | null {\n const result: ErrorEvent = scrubUserPathsBrowser(scrubEvent(event));\n mutateEventWithDynamicData(result, dynamicContextFn, dynamicTagsFn);\n return result;\n },\n integrations: [rewriteFramesIntegrationBrowser()],\n tracesSampleRate: 0,\n //Important: make sure this is false if you want anonymous reports (no IPs, etc. for GDPR and similar acts).\n sendDefaultPii: false\n };\n\n const client: Client | undefined = init({\n ...defaultOptions,\n ...options\n });\n\n if (isDefined(metaData)) setTags(metaData);\n const { platform, arch } = parseDistName(options?.dist);\n setTags({\n layer: 'web',\n errorTracker: 'BrowserTrackingService',\n os: platform,\n arch\n });\n\n const onError = (ev: any): void => void captureException(ev?.error ?? ev);\n const onRejection = (ev: PromiseRejectionEvent): void => void captureException((ev as PromiseRejectionEvent)?.reason ?? ev);\n\n function start(onErrorHandler: (ev: any) => void = onError, onRejectionHandler: (ev: PromiseRejectionEvent) => void = onRejection): void {\n if (isStarted) return;\n isStarted = true;\n window.addEventListener('error', onErrorHandler);\n window.addEventListener('unhandledrejection', onRejectionHandler);\n }\n\n function stop(onErrorHandler: (ev: any) => void = onError, onRejectionHandler: (ev: PromiseRejectionEvent) => void = onRejection): void {\n isStarted = false;\n window.removeEventListener('error', onErrorHandler);\n window.removeEventListener('unhandledrejection', onRejectionHandler);\n }\n\n if (isDefined(client)) start();\n\n return {\n captureException,\n start,\n stop,\n isStarted: () => isStarted\n };\n}\n"],"names":["BrowserTrackingService","options","metaData","dynamicContextFn","dynamicTagsFn","isStarted","defaultOptions","beforeSend","event","_hint","result","scrubUserPathsBrowser","scrubEvent","mutateEventWithDynamicData","integrations","rewriteFramesIntegrationBrowser","tracesSampleRate","sendDefaultPii","client","init","isDefined","setTags","platform","arch","parseDistName","dist","layer","errorTracker","os","onError","ev","captureException","error","onRejection","reason","start","onErrorHandler","onRejectionHandler","window","addEventListener","stop","removeEventListener"],"mappings":"0gBAUO,SAASA,uBACdC,QACAC,SACAC,iBACAC,eAEA,IAAIC,WAAqB,EAEzB,MAAMC,eAAiC,CACrC,UAAAC,CAAWC,MAAmBC,OAC5B,MAAMC,OAAqBC,sBAAsBC,WAAWJ,QAE5D,OADAK,2BAA2BH,OAAQP,iBAAkBC,eAC9CM,MACT,EACAI,aAAc,CAACC,mCACfC,iBAAkB,EAElBC,gBAAgB,GAGZC,OAA6BC,KAAK,IACnCb,kBACAL,UAGDmB,UAAUlB,WAAWmB,QAAQnB,UACjC,MAAMoB,SAAEA,SAAAC,KAAUA,MAASC,cAAcvB,SAASwB,MAClDJ,QAAQ,CACNK,MAAO,MACPC,aAAc,yBACdC,GAAIN,SACJC,YAGF,MAAMM,QAAWC,KAAuBC,iBAAiBD,IAAIE,OAASF,KAChEG,YAAeH,KAAyCC,iBAAkBD,IAA8BI,QAAUJ,KAExH,SAASK,MAAMC,eAAoCP,QAASQ,mBAA0DJ,aAChH5B,YACJA,WAAY,EACZiC,OAAOC,iBAAiB,QAASH,gBACjCE,OAAOC,iBAAiB,qBAAsBF,oBAChD,CAUA,OAFIjB,UAAUF,SAASiB,QAEhB,CACLJ,kCACAI,YACAK,KAXF,SAAcJ,eAAoCP,QAASQ,mBAA0DJ,aACnH5B,WAAY,EACZiC,OAAOG,oBAAoB,QAASL,gBACpCE,OAAOG,oBAAoB,qBAAsBJ,mBACnD,EAQEhC,UAAW,IAAMA,UAErB"}
@@ -0,0 +1,2 @@
1
+ import{isDefined}from"../../anarchy-shared/src/Utils/CheckUtils/index.es.js";import{parseDistName}from"../../anarchy-shared/src/Utils/TrackingUtils/index.es.js";import{mutateEventWithDynamicData}from"../../Utils/DynamicDataUtils/index.es.js";import{rewriteFramesIntegrationBrowser}from"../../Utils/IntegrationsBrowser/index.es.js";import{scrubEvent}from"../../Utils/ScrubEvent/index.es.js";import{scrubUserPathsBrowser}from"../../Utils/ScrubsBrowser/index.es.js";import{init,setTags,captureException}from"@sentry/electron/renderer";function DesktopPreloadTrackingService(options,metaData,dynamicContextFn,dynamicTagsFn){let isStarted=!1;const defaultOptions={beforeSend(event,_hint){const result=scrubUserPathsBrowser(scrubEvent(event));return mutateEventWithDynamicData(result,dynamicContextFn,dynamicTagsFn),result},integrations:[rewriteFramesIntegrationBrowser()],tracesSampleRate:0,sendDefaultPii:!1};init({...defaultOptions,...options}),isDefined(metaData)&&setTags(metaData);const{platform:platform,arch:arch}=parseDistName(options?.dist);setTags({layer:"electron-preload",initLayer:"electron-preload",errorTracker:"DesktopPreloadTrackingService",errorTrackerInitializer:"DesktopPreloadTrackingService",os:platform,arch:arch});const onError=ev=>{captureException(ev?.error??ev)},onRejection=ev=>{captureException(ev?.reason??ev)};function start(onErrorHandler=onError,onRejectionHandler=onRejection){isStarted||(isStarted=!0,globalThis.window?.addEventListener?.("error",onErrorHandler),globalThis.window?.addEventListener?.("unhandledrejection",onRejectionHandler),globalThis.process?.on?.("uncaughtException",onErrorHandler),globalThis.process?.on?.("unhandledRejection",onRejectionHandler))}return start(),{captureException:captureException,start:start,stop:function(onErrorHandler=onError,onRejectionHandler=onRejection){isStarted=!1,globalThis.window?.removeEventListener?.("error",onErrorHandler),globalThis.window?.removeEventListener?.("unhandledrejection",onRejectionHandler),globalThis.process?.off?.("uncaughtException",onErrorHandler),globalThis.process?.off?.("unhandledRejection",onRejectionHandler)},isStarted:()=>isStarted}}export{DesktopPreloadTrackingService};
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Services/DesktopPreloadTrackingService.ts"],"sourcesContent":["import { isDefined, parseDistName } from '@Anarchy/Shared/Utils';\nimport type { TMetaData, TTrackingService } from '@Anarchy/Tracking/Models';\nimport { mutateEventWithDynamicData } from '@Anarchy/Tracking/Utils/DynamicDataUtils';\nimport { rewriteFramesIntegrationBrowser } from '@Anarchy/Tracking/Utils/IntegrationsBrowser';\nimport { scrubEvent } from '@Anarchy/Tracking/Utils/ScrubEvent';\nimport { scrubUserPathsBrowser } from '@Anarchy/Tracking/Utils/ScrubsBrowser';\nimport type { Integration, Primitive } from '@sentry/core';\nimport type { ErrorEvent, EventHint } from '@sentry/electron/renderer';\nimport { captureException, init, setTags } from '@sentry/electron/renderer';\n\nexport function DesktopPreloadTrackingService(\n options?: Record<string, any>,\n metaData?: TMetaData,\n dynamicContextFn?: () => Record<string, any>,\n dynamicTagsFn?: () => Record<string, Primitive>\n): TTrackingService {\n let isStarted: boolean = false;\n\n const defaultOptions = {\n beforeSend(event: ErrorEvent, _hint: EventHint): PromiseLike<ErrorEvent | null> | ErrorEvent | null {\n const result: ErrorEvent = scrubUserPathsBrowser(scrubEvent(event as any)) as ErrorEvent;\n mutateEventWithDynamicData(result as any, dynamicContextFn, dynamicTagsFn);\n return result;\n },\n integrations: [rewriteFramesIntegrationBrowser() as () => Integration],\n tracesSampleRate: 0,\n //Important: make sure this is false if you want anonymous reports (no IPs, etc. for GDPR and similar acts).\n sendDefaultPii: false\n };\n\n init({\n ...defaultOptions,\n ...options\n });\n\n if (isDefined(metaData)) setTags(metaData);\n const { platform, arch } = parseDistName(options?.dist);\n setTags({\n layer: 'electron-preload',\n initLayer: 'electron-preload',\n errorTracker: 'DesktopPreloadTrackingService',\n errorTrackerInitializer: 'DesktopPreloadTrackingService',\n os: platform,\n arch\n });\n\n const onError = (ev: any): void => void captureException(ev?.error ?? ev);\n const onRejection = (ev: PromiseRejectionEvent): void => void captureException((ev as PromiseRejectionEvent)?.reason ?? ev);\n\n function start(onErrorHandler: (ev: any) => void = onError, onRejectionHandler: (ev: PromiseRejectionEvent) => void = onRejection): void {\n if (isStarted) return;\n isStarted = true;\n\n globalThis.window?.addEventListener?.('error', onErrorHandler);\n globalThis.window?.addEventListener?.('unhandledrejection', onRejectionHandler);\n globalThis.process?.on?.('uncaughtException', onErrorHandler);\n globalThis.process?.on?.('unhandledRejection', onRejectionHandler);\n }\n\n function stop(onErrorHandler: (ev: any) => void = onError, onRejectionHandler: (ev: PromiseRejectionEvent) => void = onRejection): void {\n isStarted = false;\n globalThis.window?.removeEventListener?.('error', onErrorHandler);\n globalThis.window?.removeEventListener?.('unhandledrejection', onRejectionHandler);\n globalThis.process?.off?.('uncaughtException', onErrorHandler);\n globalThis.process?.off?.('unhandledRejection', onRejectionHandler);\n }\n\n start();\n\n return {\n captureException,\n start,\n stop,\n isStarted: () => isStarted\n };\n}\n"],"names":["DesktopPreloadTrackingService","options","metaData","dynamicContextFn","dynamicTagsFn","isStarted","defaultOptions","beforeSend","event","_hint","result","scrubUserPathsBrowser","scrubEvent","mutateEventWithDynamicData","integrations","rewriteFramesIntegrationBrowser","tracesSampleRate","sendDefaultPii","init","isDefined","setTags","platform","arch","parseDistName","dist","layer","initLayer","errorTracker","errorTrackerInitializer","os","onError","ev","captureException","error","onRejection","reason","start","onErrorHandler","onRejectionHandler","globalThis","window","addEventListener","process","on","stop","removeEventListener","off"],"mappings":"ohBAUO,SAASA,8BACdC,QACAC,SACAC,iBACAC,eAEA,IAAIC,WAAqB,EAEzB,MAAMC,eAAiB,CACrB,UAAAC,CAAWC,MAAmBC,OAC5B,MAAMC,OAAqBC,sBAAsBC,WAAWJ,QAE5D,OADAK,2BAA2BH,OAAeP,iBAAkBC,eACrDM,MACT,EACAI,aAAc,CAACC,mCACfC,iBAAkB,EAElBC,gBAAgB,GAGlBC,KAAK,IACAZ,kBACAL,UAGDkB,UAAUjB,WAAWkB,QAAQlB,UACjC,MAAMmB,SAAEA,SAAAC,KAAUA,MAASC,cAActB,SAASuB,MAClDJ,QAAQ,CACNK,MAAO,mBACPC,UAAW,mBACXC,aAAc,gCACdC,wBAAyB,gCACzBC,GAAIR,SACJC,YAGF,MAAMQ,QAAWC,KAAuBC,iBAAiBD,IAAIE,OAASF,KAChEG,YAAeH,KAAyCC,iBAAkBD,IAA8BI,QAAUJ,KAExH,SAASK,MAAMC,eAAoCP,QAASQ,mBAA0DJ,aAChH7B,YACJA,WAAY,EAEZkC,WAAWC,QAAQC,mBAAmB,QAASJ,gBAC/CE,WAAWC,QAAQC,mBAAmB,qBAAsBH,oBAC5DC,WAAWG,SAASC,KAAK,oBAAqBN,gBAC9CE,WAAWG,SAASC,KAAK,qBAAsBL,oBACjD,CAYA,OAFAF,QAEO,CACLJ,kCACAI,YACAQ,KAbF,SAAcP,eAAoCP,QAASQ,mBAA0DJ,aACnH7B,WAAY,EACZkC,WAAWC,QAAQK,sBAAsB,QAASR,gBAClDE,WAAWC,QAAQK,sBAAsB,qBAAsBP,oBAC/DC,WAAWG,SAASI,MAAM,oBAAqBT,gBAC/CE,WAAWG,SAASI,MAAM,qBAAsBR,mBAClD,EAQEjC,UAAW,IAAMA,UAErB"}
@@ -0,0 +1,2 @@
1
+ import{isDefined}from"../../anarchy-shared/src/Utils/CheckUtils/index.es.js";import{parseDistName}from"../../anarchy-shared/src/Utils/TrackingUtils/index.es.js";import{mutateEventWithDynamicData}from"../../Utils/DynamicDataUtils/index.es.js";import{rewriteFramesIntegrationNode}from"../../Utils/IntegrationsNode/index.es.js";import{scrubEvent}from"../../Utils/ScrubEvent/index.es.js";import{scrubUserPathsDesktop}from"../../Utils/ScrubsDesktop/index.es.js";import{init,setTags,captureException}from"@sentry/electron/main";function DesktopTrackingService(options,metaData,dynamicContextFn,dynamicTagsFn){let isStarted=!1;const defaultOptions={beforeSend(event,_hint){const result=scrubUserPathsDesktop(scrubEvent(event));return mutateEventWithDynamicData(result,dynamicContextFn,dynamicTagsFn),result},integrations:[rewriteFramesIntegrationNode()],tracesSampleRate:0,sendDefaultPii:!1};init({...defaultOptions,...options}),isDefined(metaData)&&setTags(metaData);const{platform:platform,arch:arch}=parseDistName(options?.dist);setTags({layer:"electron-main",errorTracker:"DesktopTrackingService",os:platform,arch:arch});const onError=ev=>{captureException(ev?.error??ev)},onRejection=ev=>{captureException(ev?.reason??ev)};function start(onErrorHandler=onError,onRejectionHandler=onRejection){isStarted||(isStarted=!0,process.on("uncaughtException",onErrorHandler),process.on("unhandledRejection",onRejectionHandler))}return start(),{captureException:captureException,start:start,stop:function(onErrorHandler=onError,onRejectionHandler=onRejection){isStarted=!1,process.off("uncaughtException",onErrorHandler),process.off("unhandledRejection",onRejectionHandler)},isStarted:()=>isStarted}}export{DesktopTrackingService};
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Services/DesktopTrackingService.ts"],"sourcesContent":["import { isDefined, parseDistName } from '@Anarchy/Shared/Utils';\nimport type { TMetaData, TTrackingService } from '@Anarchy/Tracking/Models';\nimport { mutateEventWithDynamicData } from '@Anarchy/Tracking/Utils/DynamicDataUtils';\nimport { rewriteFramesIntegrationNode } from '@Anarchy/Tracking/Utils/IntegrationsNode';\nimport { scrubEvent } from '@Anarchy/Tracking/Utils/ScrubEvent';\nimport { scrubUserPathsDesktop } from '@Anarchy/Tracking/Utils/ScrubsDesktop';\nimport type { Primitive } from '@sentry/core';\nimport type { ElectronMainOptions } from '@sentry/electron/esm/main';\nimport type { ErrorEvent, EventHint } from '@sentry/electron/main';\nimport { captureException, init, setTags } from '@sentry/electron/main';\n\nexport function DesktopTrackingService(\n options?: ElectronMainOptions,\n metaData?: TMetaData,\n dynamicContextFn?: () => Record<string, any>,\n dynamicTagsFn?: () => Record<string, Primitive>\n): TTrackingService {\n let isStarted: boolean = false;\n\n const defaultOptions: ElectronMainOptions = {\n beforeSend(event: ErrorEvent, _hint: EventHint): PromiseLike<ErrorEvent | null> | ErrorEvent | null {\n const result: ErrorEvent = scrubUserPathsDesktop(scrubEvent(event as any) as ErrorEvent);\n mutateEventWithDynamicData(result as any, dynamicContextFn, dynamicTagsFn);\n return result;\n },\n integrations: [rewriteFramesIntegrationNode()],\n tracesSampleRate: 0,\n //Important: make sure this is false if you want anonymous reports (no IPs, etc. for GDPR and similar acts).\n sendDefaultPii: false\n };\n\n init({\n ...defaultOptions,\n ...options\n });\n\n if (isDefined(metaData)) setTags(metaData);\n const { platform, arch } = parseDistName(options?.dist);\n setTags({\n layer: 'electron-main',\n errorTracker: 'DesktopTrackingService',\n os: platform,\n arch\n });\n\n const onError = (ev: any): void => void captureException(ev?.error ?? ev);\n const onRejection = (ev: PromiseRejectionEvent): void => void captureException((ev as PromiseRejectionEvent)?.reason ?? ev);\n\n function start(onErrorHandler: (ev: any) => void = onError, onRejectionHandler: (ev: PromiseRejectionEvent) => void = onRejection): void {\n if (isStarted) return;\n isStarted = true;\n process.on('uncaughtException', onErrorHandler);\n process.on('unhandledRejection', onRejectionHandler);\n }\n\n function stop(onErrorHandler: (ev: any) => void = onError, onRejectionHandler: (ev: PromiseRejectionEvent) => void = onRejection): void {\n isStarted = false;\n process.off('uncaughtException', onErrorHandler);\n process.off('unhandledRejection', onRejectionHandler);\n }\n\n start();\n\n return {\n captureException,\n start,\n stop,\n isStarted: () => isStarted\n };\n}\n"],"names":["DesktopTrackingService","options","metaData","dynamicContextFn","dynamicTagsFn","isStarted","defaultOptions","beforeSend","event","_hint","result","scrubUserPathsDesktop","scrubEvent","mutateEventWithDynamicData","integrations","rewriteFramesIntegrationNode","tracesSampleRate","sendDefaultPii","init","isDefined","setTags","platform","arch","parseDistName","dist","layer","errorTracker","os","onError","ev","captureException","error","onRejection","reason","start","onErrorHandler","onRejectionHandler","process","on","stop","off"],"mappings":"0gBAWO,SAASA,uBACdC,QACAC,SACAC,iBACAC,eAEA,IAAIC,WAAqB,EAEzB,MAAMC,eAAsC,CAC1C,UAAAC,CAAWC,MAAmBC,OAC5B,MAAMC,OAAqBC,sBAAsBC,WAAWJ,QAE5D,OADAK,2BAA2BH,OAAeP,iBAAkBC,eACrDM,MACT,EACAI,aAAc,CAACC,gCACfC,iBAAkB,EAElBC,gBAAgB,GAGlBC,KAAK,IACAZ,kBACAL,UAGDkB,UAAUjB,WAAWkB,QAAQlB,UACjC,MAAMmB,SAAEA,SAAAC,KAAUA,MAASC,cAActB,SAASuB,MAClDJ,QAAQ,CACNK,MAAO,gBACPC,aAAc,yBACdC,GAAIN,SACJC,YAGF,MAAMM,QAAWC,KAAuBC,iBAAiBD,IAAIE,OAASF,KAChEG,YAAeH,KAAyCC,iBAAkBD,IAA8BI,QAAUJ,KAExH,SAASK,MAAMC,eAAoCP,QAASQ,mBAA0DJ,aAChH3B,YACJA,WAAY,EACZgC,QAAQC,GAAG,oBAAqBH,gBAChCE,QAAQC,GAAG,qBAAsBF,oBACnC,CAUA,OAFAF,QAEO,CACLJ,kCACAI,YACAK,KAXF,SAAcJ,eAAoCP,QAASQ,mBAA0DJ,aACnH3B,WAAY,EACZgC,QAAQG,IAAI,oBAAqBL,gBACjCE,QAAQG,IAAI,qBAAsBJ,mBACpC,EAQE/B,UAAW,IAAMA,UAErB"}
@@ -0,0 +1,2 @@
1
+ import{isDefined}from"../../anarchy-shared/src/Utils/CheckUtils/index.es.js";function mutateEventWithDynamicData(result,dynamicContextFn,dynamicTagsFn){if(isDefined(dynamicContextFn)&&(result.contexts={...result.contexts??{},extra:dynamicContextFn()}),isDefined(dynamicTagsFn)){const dynamicTags=dynamicTagsFn();Object.keys(dynamicTags).forEach(key=>{result.tags={...result.tags??{},[key]:dynamicTags[key]}})}}export{mutateEventWithDynamicData};
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Utils/DynamicDataUtils.ts"],"sourcesContent":["import { isDefined } from '@Anarchy/Shared/Utils';\nimport type { ErrorEvent, Primitive } from '@sentry/core';\n\nexport function mutateEventWithDynamicData(result: ErrorEvent, dynamicContextFn?: () => Record<string, any>, dynamicTagsFn?: () => Record<string, Primitive>): void {\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(dynamicContextFn)) result.contexts = { ...(result.contexts ?? {}), extra: dynamicContextFn() };\n if (isDefined(dynamicTagsFn)) {\n const dynamicTags = dynamicTagsFn();\n // eslint-disable-next-line functional/immutable-data\n Object.keys(dynamicTags).forEach((key: string): void => void (result.tags = { ...(result.tags ?? {}), [key]: dynamicTags[key] }));\n }\n}\n"],"names":["mutateEventWithDynamicData","result","dynamicContextFn","dynamicTagsFn","isDefined","contexts","extra","dynamicTags","Object","keys","forEach","key","tags"],"mappings":"6EAGO,SAASA,2BAA2BC,OAAoBC,iBAA8CC,eAG3G,GADIC,UAAUF,oBAAmBD,OAAOI,SAAW,IAAMJ,OAAOI,UAAY,CAAA,EAAKC,MAAOJ,qBACpFE,UAAUD,eAAgB,CAC5B,MAAMI,YAAcJ,gBAEpBK,OAAOC,KAAKF,aAAaG,QAASC,MAA4BV,OAAOW,KAAO,IAAMX,OAAOW,MAAQ,GAAKD,CAACA,KAAMJ,YAAYI,OAC3H,CACF"}
@@ -0,0 +1,2 @@
1
+ import{rewriteFramesIntegration}from"@sentry/browser";const rewriteFramesIntegrationBrowser=()=>rewriteFramesIntegration({iteratee:frame=>{const f={...frame};if(!f.filename)return f;const name=String(f.filename).replace(/\\/g,"/");if(name.startsWith("app:///"))return f;const cutToLastDist=p=>{const idx=p.lastIndexOf("/dist/");return idx<0?null:p.slice(idx).replace(/^\/+/,"")},relFromLast=cutToLastDist(name);if(relFromLast){if(f.filename=`app:///${relFromLast}`,f.abs_path){const absRel=cutToLastDist(String(f.abs_path).replace(/\\/g,"/"));absRel&&(f.abs_path=`app:///${absRel}`)}return f}return f}});export{rewriteFramesIntegrationBrowser};
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Utils/IntegrationsBrowser.ts"],"sourcesContent":["import type { StackFrame } from '@sentry/browser';\nimport { rewriteFramesIntegration } from '@sentry/browser';\nimport type { Integration } from '@sentry/core';\n\nexport const rewriteFramesIntegrationBrowser = (): Integration =>\n rewriteFramesIntegration({\n // eslint-disable-next-line spellcheck/spell-checker\n iteratee: (frame: StackFrame): StackFrame => {\n const f: StackFrame = { ...(frame as any) } as any;\n if (!f.filename) return f;\n\n const name: string = String(f.filename).replace(/\\\\/g, '/');\n // already normalized\n if (name.startsWith('app:///')) return f;\n\n // Prefer the LAST \"/dist/\" occurrence so nested paths like\n // \".../dist/mac-arm64/.../app.asar/dist/dist-desktop/...\" map to\n // \"app:///dist/dist-desktop/...\" which matches uploaded urlPrefix/app paths.\n const cutToLastDist = (p: string): string | null => {\n const idx: number = p.lastIndexOf('/dist/');\n if (idx < 0) return null;\n return p.slice(idx).replace(/^\\/+/, '');\n };\n\n const relFromLast = cutToLastDist(name);\n if (relFromLast) {\n // eslint-disable-next-line functional/immutable-data\n (f as any).filename = `app:///${relFromLast}`;\n if (f.abs_path) {\n const abs: string = String(f.abs_path).replace(/\\\\/g, '/');\n const absRel: string | null = cutToLastDist(abs);\n if (absRel) {\n // eslint-disable-next-line functional/immutable-data\n (f as any).abs_path = `app:///${absRel}`;\n }\n }\n return f;\n }\n\n return f;\n }\n });\n"],"names":["rewriteFramesIntegrationBrowser","rewriteFramesIntegration","iteratee","frame","f","filename","name","String","replace","startsWith","cutToLastDist","p","idx","lastIndexOf","slice","relFromLast","abs_path","absRel"],"mappings":"sDAIO,MAAMA,gCAAkC,IAC7CC,yBAAyB,CAEvBC,SAAWC,QACT,MAAMC,EAAgB,IAAMD,OAC5B,IAAKC,EAAEC,SAAU,OAAOD,EAExB,MAAME,KAAeC,OAAOH,EAAEC,UAAUG,QAAQ,MAAO,KAEvD,GAAIF,KAAKG,WAAW,WAAY,OAAOL,EAKvC,MAAMM,cAAiBC,IACrB,MAAMC,IAAcD,EAAEE,YAAY,UAClC,OAAID,IAAM,EAAU,KACbD,EAAEG,MAAMF,KAAKJ,QAAQ,OAAQ,KAGhCO,YAAcL,cAAcJ,MAClC,GAAIS,YAAa,CAGf,GADCX,EAAUC,SAAW,UAAUU,cAC5BX,EAAEY,SAAU,CACd,MACMC,OAAwBP,cADVH,OAAOH,EAAEY,UAAUR,QAAQ,MAAO,MAElDS,SAEDb,EAAUY,SAAW,UAAUC,SAEpC,CACA,OAAOb,CACT,CAEA,OAAOA"}
@@ -0,0 +1,2 @@
1
+ import{toPosix}from"../../anarchy-shared/src/Utils/FileUtils/index.es.js";import{rewriteFramesIntegration}from"@sentry/core";const rewriteFramesIntegrationNode=options=>{let root=options?.root;try{!root&&"undefined"!=typeof process&&process.resourcesPath&&(root=process.resourcesPath),root||(root=__dirname)}catch{}const rootPosix=root?toPosix(root):void 0;return rewriteFramesIntegration({root:rootPosix,iteratee:frame=>{if(!frame||!frame.filename)return frame;const name=toPosix(frame.filename);if(name.startsWith("app:///"))return frame;if(rootPosix&&name.startsWith(rootPosix))return frame.filename="app:///"+name.slice(rootPosix.length).replace(/^\/+/,""),frame;const asarIdx=name.indexOf("/app.asar/");return asarIdx>=0?(frame.filename="app:///"+name.slice(asarIdx+10),frame):name.startsWith("file://")?(frame.filename="app:///"+name.replace(/^file:\/+/,""),frame):frame}})};export{rewriteFramesIntegrationNode};
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Utils/IntegrationsNode.ts"],"sourcesContent":["import { toPosix } from '@Anarchy/Shared/Utils';\nimport type { StackFrame } from '@sentry/core';\nimport { rewriteFramesIntegration } from '@sentry/core';\n\n//Important: if you use this, then upload source maps with --url-prefix \"app:///\"\nexport const rewriteFramesIntegrationNode = (options?: any): any => {\n let root = options?.root;\n\n try {\n if (!root && typeof process !== 'undefined' && (process as any).resourcesPath) {\n root = (process as any).resourcesPath as string;\n }\n if (!root) root = __dirname;\n } catch {\n // ignore\n }\n\n const rootPosix: string | undefined = root ? toPosix(root) : undefined;\n\n return rewriteFramesIntegration({\n root: rootPosix,\n // eslint-disable-next-line spellcheck/spell-checker\n iteratee: (frame: StackFrame): StackFrame => {\n if (!frame || !frame.filename) return frame;\n const name = toPosix(frame.filename);\n\n // Transform any absolute/file paths related to the app into app:///\n // 1) If SDK already made app:/// — leave it\n if (name.startsWith('app:///')) return frame;\n\n // 2) If the path is under root/resourcesPath - replace the prefix with app:///\n if (rootPosix && name.startsWith(rootPosix)) {\n // eslint-disable-next-line functional/immutable-data\n frame.filename = 'app:///' + name.slice(rootPosix.length).replace(/^\\/+/, '');\n return frame;\n }\n\n // 3) The path is inside asar\n const asarIdx: number = name.indexOf('/app.asar/');\n if (asarIdx >= 0) {\n // eslint-disable-next-line functional/immutable-data\n frame.filename = 'app:///' + name.slice(asarIdx + '/app.asar/'.length);\n return frame;\n }\n\n // 4) file:// URLs → app:///\n if (name.startsWith('file://')) {\n // eslint-disable-next-line functional/immutable-data\n frame.filename = 'app:///' + name.replace(/^file:\\/+/, '');\n return frame;\n }\n\n return frame;\n }\n });\n};\n"],"names":["rewriteFramesIntegrationNode","options","root","process","resourcesPath","__dirname","rootPosix","toPosix","rewriteFramesIntegration","iteratee","frame","filename","name","startsWith","slice","length","replace","asarIdx","indexOf"],"mappings":"6HAKO,MAAMA,6BAAgCC,UAC3C,IAAIC,KAAOD,SAASC,KAEpB,KACOA,MAA2B,oBAAZC,SAA4BA,QAAgBC,gBAC9DF,KAAQC,QAAgBC,eAErBF,OAAMA,KAAOG,UACpB,CAAA,MAEA,CAEA,MAAMC,UAAgCJ,KAAOK,QAAQL,WAAQ,EAE7D,OAAOM,yBAAyB,CAC9BN,KAAMI,UAENG,SAAWC,QACT,IAAKA,QAAUA,MAAMC,SAAU,OAAOD,MACtC,MAAME,KAAOL,QAAQG,MAAMC,UAI3B,GAAIC,KAAKC,WAAW,WAAY,OAAOH,MAGvC,GAAIJ,WAAaM,KAAKC,WAAWP,WAG/B,OADAI,MAAMC,SAAW,UAAYC,KAAKE,MAAMR,UAAUS,QAAQC,QAAQ,OAAQ,IACnEN,MAIT,MAAMO,QAAkBL,KAAKM,QAAQ,cACrC,OAAID,SAAW,GAEbP,MAAMC,SAAW,UAAYC,KAAKE,MAAMG,QAAU,IAC3CP,OAILE,KAAKC,WAAW,YAElBH,MAAMC,SAAW,UAAYC,KAAKI,QAAQ,YAAa,IAChDN,OAGFA"}
@@ -0,0 +1,2 @@
1
+ import{HiddenField}from"../../Constants/Masks/index.es.js";function scrubEvent(event){return event.user||(event.user=null),event.request&&(event.request={...event.request,url:HiddenField,headers:{...event.request?.headers,url:HiddenField,Referer:HiddenField,referer:HiddenField}},delete event.request.headers?.Cookie,delete event.request.headers?.cookie),event.contexts?.geo&&delete event.contexts.geo,event.contexts?.Geography&&delete event.contexts.Geography,event.contexts?.geography&&delete event.contexts.geography,event.breadcrumbs||(event.breadcrumbs=void 0),event}export{scrubEvent};
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Utils/ScrubEvent.ts"],"sourcesContent":["import { HiddenField } from '@Anarchy/Tracking/Constants';\nimport type { ErrorEvent } from '@sentry/core';\n\nexport function scrubEvent(event: ErrorEvent): ErrorEvent {\n // eslint-disable-next-line functional/immutable-data\n if (!event.user) event.user = null as any;\n\n if (event.request) {\n // eslint-disable-next-line functional/immutable-data\n event.request = {\n ...event.request,\n url: HiddenField,\n headers: {\n ...event.request?.headers,\n url: HiddenField,\n Referer: HiddenField,\n referer: HiddenField\n }\n };\n\n delete (event.request.headers as any)?.Cookie;\n delete (event.request.headers as any)?.cookie;\n }\n\n // eslint-disable-next-line functional/immutable-data\n if ((event as any).contexts?.geo) delete (event as any).contexts.geo;\n // eslint-disable-next-line functional/immutable-data\n if ((event as any).contexts?.Geography) delete (event as any).contexts.Geography;\n // eslint-disable-next-line functional/immutable-data\n if ((event as any).contexts?.geography) delete (event as any).contexts.geography;\n\n // eslint-disable-next-line functional/immutable-data\n if (!event.breadcrumbs) event.breadcrumbs = undefined;\n\n return event;\n}\n"],"names":["scrubEvent","event","user","request","url","HiddenField","headers","Referer","referer","Cookie","cookie","contexts","geo","Geography","geography","breadcrumbs"],"mappings":"2DAGO,SAASA,WAAWC,OA+BzB,OA7BKA,MAAMC,OAAMD,MAAMC,KAAO,MAE1BD,MAAME,UAERF,MAAME,QAAU,IACXF,MAAME,QACTC,IAAKC,YACLC,QAAS,IACJL,MAAME,SAASG,QAClBF,IAAKC,YACLE,QAASF,YACTG,QAASH,qBAILJ,MAAME,QAAQG,SAAiBG,cAC/BR,MAAME,QAAQG,SAAiBI,QAIpCT,MAAcU,UAAUC,YAAaX,MAAcU,SAASC,IAE5DX,MAAcU,UAAUE,kBAAmBZ,MAAcU,SAASE,UAElEZ,MAAcU,UAAUG,kBAAmBb,MAAcU,SAASG,UAGlEb,MAAMc,cAAad,MAAMc,iBAAc,GAErCd,KACT"}
@@ -0,0 +1,2 @@
1
+ import{HiddenField}from"../../Constants/Masks/index.es.js";const pathRegexps=[[/(\/Users)\/[^/]+/g,"$1/<home>"],[/(\/home)\/[^/]+/g,"$1/<home>"],[/(\/var\/home)\/[^/]+/g,"$1/<home>"],[/([A-Za-z]:\\Users)\\[^\\]+/g,"$1\\<home>"],[/([A-Za-z]:\\Documents and Settings)\\[^\\]+/g,"$1\\<home>"],[/(file:\/\/\/Users)\/[^/]+/g,"$1/<home>"],[/(file:\/\/\/home)\/[^/]+/g,"$1/<home>"],[/(file:\/\/\/var\/home)\/[^/]+/g,"$1/<home>"],[/(file:\/\/[A-Za-z]:\/Users)\/[^/]+/g,"$1/<home>"]];function replaceUserPaths(s,replacement="<home>"){return"string"!=typeof s?s:pathRegexps.reduce((acc,[re,tpl])=>acc.replace(re,tpl.replace("<home>",replacement)),s)}function scrubUserPathsBrowser(event){const replacement=HiddenField,message=event.message?replaceUserPaths(event.message,replacement):event.message,valuesIn=event.exception?.values,valuesOut=valuesIn?.map(v=>{const framesIn=v?.stacktrace?.frames,framesOut=framesIn?.map(f=>({...f,...f?.filename?{filename:replaceUserPaths(f.filename,replacement)}:{},...f?.abs_path?{abs_path:replaceUserPaths(f.abs_path,replacement)}:{},...f?.module?{module:replaceUserPaths(f.module,replacement)}:{},...f?.function?{function:replaceUserPaths(f.function,replacement)}:{}})),stacktraceOut=v?.stacktrace?{...v.stacktrace,...framesOut?{frames:framesOut}:{}}:v?.stacktrace;return{...v,...v?.value?{value:replaceUserPaths(v.value,replacement)}:{},...v?.type?{type:replaceUserPaths(v.type,replacement)}:{},...v?.stacktrace?{stacktrace:stacktraceOut}:{}}}),exceptionOut=event.exception?{...event.exception,...valuesOut?{values:valuesOut}:{}}:event.exception,requestOut=event.request?{...event.request,...event.request.url?{url:replaceUserPaths(event.request.url,replacement)}:{}}:event.request,extraIn=event.extra,extraOut=extraIn?Object.fromEntries(Object.entries(extraIn).map(([k,v])=>[k,"string"==typeof v?replaceUserPaths(v,replacement):v])):extraIn,breadcrumbsIn=event.breadcrumbs,breadcrumbsOut=breadcrumbsIn?.map(b=>{const dataIn=b?.data,dataOut=dataIn?Object.fromEntries(Object.entries(dataIn).map(([key,val])=>[key,"string"==typeof val?replaceUserPaths(val,replacement):val])):dataIn;return{...b,...b?.message?{message:replaceUserPaths(b.message,replacement)}:{},...b?.data&&"object"==typeof b.data?{data:dataOut}:{}}});return{...event,...message?{message:message}:{},...exceptionOut?{exception:exceptionOut}:{},...requestOut?{request:requestOut}:{},...void 0!==extraOut?{extra:extraOut}:{},...breadcrumbsOut?{breadcrumbs:breadcrumbsOut}:{}}}export{scrubUserPathsBrowser};
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Utils/ScrubsBrowser.ts"],"sourcesContent":["import { HiddenField } from '@Anarchy/Tracking/Constants';\nimport type { ErrorEvent } from '@sentry/browser';\n\nconst pathRegexps: ReadonlyArray<[RegExp, string]> = [\n // macOS: /Users/<name>/...\n [/(\\/Users)\\/[^/]+/g, '$1/<home>'],\n\n // Linux: /home/<name>/... and /var/home/<name>/...\n [/(\\/home)\\/[^/]+/g, '$1/<home>'],\n [/(\\/var\\/home)\\/[^/]+/g, '$1/<home>'],\n\n // Windows: C:\\\\Users\\\\<name>\\\\... (any drive letter)\n [/([A-Za-z]:\\\\Users)\\\\[^\\\\]+/g, '$1\\\\<home>'],\n\n // Old Windows: C:\\\\Documents and Settings\\\\<name>\\\\...\n [/([A-Za-z]:\\\\Documents and Settings)\\\\[^\\\\]+/g, '$1\\\\<home>'],\n\n // file:// URLs: file:///Users/<name>/..., file:///home/<name>/..., file://C:/Users/<name>/...\n [/(file:\\/\\/\\/Users)\\/[^/]+/g, '$1/<home>'],\n [/(file:\\/\\/\\/home)\\/[^/]+/g, '$1/<home>'],\n [/(file:\\/\\/\\/var\\/home)\\/[^/]+/g, '$1/<home>'],\n [/(file:\\/\\/[A-Za-z]:\\/Users)\\/[^/]+/g, '$1/<home>']\n];\n\nfunction replaceUserPaths(s?: unknown, replacement: string = '<home>'): string | unknown {\n if (typeof s !== 'string') return s;\n return pathRegexps.reduce((acc: string, [re, tpl]) => acc.replace(re, tpl.replace('<home>', replacement)), s);\n}\n\nexport function scrubUserPathsBrowser(event: ErrorEvent): ErrorEvent {\n const replacement = HiddenField;\n\n const message = event.message ? (replaceUserPaths(event.message, replacement) as string) : event.message;\n\n const valuesIn = event.exception?.values as ReadonlyArray<any> | undefined;\n const valuesOut = valuesIn?.map((v: any) => {\n const framesIn: ReadonlyArray<any> | undefined = v?.stacktrace?.frames;\n const framesOut = (framesIn as any[] | undefined)?.map((f: any) => ({\n ...f,\n ...(f?.filename ? { filename: replaceUserPaths(f.filename, replacement) } : {}),\n ...(f?.abs_path ? { abs_path: replaceUserPaths(f.abs_path, replacement) } : {}),\n ...(f?.module ? { module: replaceUserPaths(f.module, replacement) } : {}),\n ...(f?.function ? { function: replaceUserPaths(f.function, replacement) } : {})\n }));\n\n const stacktraceOut = v?.stacktrace ? { ...v.stacktrace, ...(framesOut ? { frames: framesOut } : {}) } : v?.stacktrace;\n\n return {\n ...v,\n ...(v?.value ? { value: replaceUserPaths(v.value, replacement) } : {}),\n ...(v?.type ? { type: replaceUserPaths(v.type, replacement) } : {}),\n ...(v?.stacktrace ? { stacktrace: stacktraceOut } : {})\n };\n });\n\n const exceptionOut = event.exception ? { ...event.exception, ...(valuesOut ? { values: valuesOut } : {}) } : event.exception;\n\n const requestOut = event.request\n ? {\n ...event.request,\n ...(event.request.url ? { url: replaceUserPaths(event.request.url, replacement) as string } : {})\n }\n : event.request;\n\n const extraIn = event.extra as Record<string, unknown> | undefined;\n const extraOut = extraIn ? Object.fromEntries(Object.entries(extraIn).map(([k, v]) => [k, typeof v === 'string' ? replaceUserPaths(v, replacement) : v])) : extraIn;\n\n const breadcrumbsIn = event.breadcrumbs as any[] | undefined;\n const breadcrumbsOut = breadcrumbsIn?.map((b: any) => {\n const dataIn = b?.data as Record<string, unknown> | undefined;\n const dataOut = dataIn ? Object.fromEntries(Object.entries(dataIn).map(([key, val]) => [key, typeof val === 'string' ? replaceUserPaths(val as string, replacement) : val])) : dataIn;\n\n return {\n ...b,\n ...(b?.message ? { message: replaceUserPaths(b.message, replacement) } : {}),\n ...(b?.data && typeof b.data === 'object' ? { data: dataOut } : {})\n };\n });\n\n return {\n ...event,\n ...(message ? { message } : {}),\n ...(exceptionOut ? { exception: exceptionOut as any } : {}),\n ...(requestOut ? { request: requestOut as any } : {}),\n ...(extraOut !== undefined ? { extra: extraOut as any } : {}),\n ...(breadcrumbsOut ? { breadcrumbs: breadcrumbsOut as any } : {})\n };\n}\n"],"names":["pathRegexps","replaceUserPaths","s","replacement","reduce","acc","re","tpl","replace","scrubUserPathsBrowser","event","HiddenField","message","valuesIn","exception","values","valuesOut","map","v","framesIn","stacktrace","frames","framesOut","f","filename","abs_path","module","function","stacktraceOut","value","type","exceptionOut","requestOut","request","url","extraIn","extra","extraOut","Object","fromEntries","entries","k","breadcrumbsIn","breadcrumbs","breadcrumbsOut","b","dataIn","data","dataOut","key","val"],"mappings":"2DAGA,MAAMA,YAA+C,CAEnD,CAAC,oBAAqB,aAGtB,CAAC,mBAAoB,aACrB,CAAC,wBAAyB,aAG1B,CAAC,8BAA+B,cAGhC,CAAC,+CAAgD,cAGjD,CAAC,6BAA8B,aAC/B,CAAC,4BAA6B,aAC9B,CAAC,iCAAkC,aACnC,CAAC,sCAAuC,cAG1C,SAASC,iBAAiBC,EAAaC,YAAsB,UAC3D,MAAiB,iBAAND,EAAuBA,EAC3BF,YAAYI,OAAO,CAACC,KAAcC,GAAIC,OAASF,IAAIG,QAAQF,GAAIC,IAAIC,QAAQ,SAAUL,cAAeD,EAC7G,CAEO,SAASO,sBAAsBC,OACpC,MAAMP,YAAcQ,YAEdC,QAAUF,MAAME,QAAWX,iBAAiBS,MAAME,QAAST,aAA0BO,MAAME,QAE3FC,SAAWH,MAAMI,WAAWC,OAC5BC,UAAYH,UAAUI,IAAKC,IAC/B,MAAMC,SAA2CD,GAAGE,YAAYC,OAC1DC,UAAaH,UAAgCF,IAAKM,IAAA,IACnDA,KACCA,GAAGC,SAAW,CAAEA,SAAUvB,iBAAiBsB,EAAEC,SAAUrB,cAAiB,CAAA,KACxEoB,GAAGE,SAAW,CAAEA,SAAUxB,iBAAiBsB,EAAEE,SAAUtB,cAAiB,CAAA,KACxEoB,GAAGG,OAAS,CAAEA,OAAQzB,iBAAiBsB,EAAEG,OAAQvB,cAAiB,CAAA,KAClEoB,GAAGI,SAAW,CAAEA,SAAU1B,iBAAiBsB,EAAEI,SAAUxB,cAAiB,CAAA,KAGxEyB,cAAgBV,GAAGE,WAAa,IAAKF,EAAEE,cAAgBE,UAAY,CAAED,OAAQC,WAAc,CAAA,GAAQJ,GAAGE,WAE5G,MAAO,IACFF,KACCA,GAAGW,MAAQ,CAAEA,MAAO5B,iBAAiBiB,EAAEW,MAAO1B,cAAiB,CAAA,KAC/De,GAAGY,KAAO,CAAEA,KAAM7B,iBAAiBiB,EAAEY,KAAM3B,cAAiB,CAAA,KAC5De,GAAGE,WAAa,CAAEA,WAAYQ,eAAkB,CAAA,KAIlDG,aAAerB,MAAMI,UAAY,IAAKJ,MAAMI,aAAeE,UAAY,CAAED,OAAQC,WAAc,CAAA,GAAQN,MAAMI,UAE7GkB,WAAatB,MAAMuB,QACrB,IACKvB,MAAMuB,WACLvB,MAAMuB,QAAQC,IAAM,CAAEA,IAAKjC,iBAAiBS,MAAMuB,QAAQC,IAAK/B,cAA2B,CAAA,GAEhGO,MAAMuB,QAEJE,QAAUzB,MAAM0B,MAChBC,SAAWF,QAAUG,OAAOC,YAAYD,OAAOE,QAAQL,SAASlB,IAAI,EAAEwB,EAAGvB,KAAO,CAACuB,EAAgB,iBAANvB,EAAiBjB,iBAAiBiB,EAAGf,aAAee,KAAOiB,QAEtJO,cAAgBhC,MAAMiC,YACtBC,eAAiBF,eAAezB,IAAK4B,IACzC,MAAMC,OAASD,GAAGE,KACZC,QAAUF,OAASR,OAAOC,YAAYD,OAAOE,QAAQM,QAAQ7B,IAAI,EAAEgC,IAAKC,OAAS,CAACD,IAAoB,iBAARC,IAAmBjD,iBAAiBiD,IAAe/C,aAAe+C,OAASJ,OAE/K,MAAO,IACFD,KACCA,GAAGjC,QAAU,CAAEA,QAASX,iBAAiB4C,EAAEjC,QAAST,cAAiB,CAAA,KACrE0C,GAAGE,MAA0B,iBAAXF,EAAEE,KAAoB,CAAEA,KAAMC,SAAY,CAAA,KAIpE,MAAO,IACFtC,SACCE,QAAU,CAAEA,iBAAY,CAAA,KACxBmB,aAAe,CAAEjB,UAAWiB,cAAwB,CAAA,KACpDC,WAAa,CAAEC,QAASD,YAAsB,CAAA,UACjC,IAAbK,SAAyB,CAAED,MAAOC,UAAoB,CAAA,KACtDO,eAAiB,CAAED,YAAaC,gBAA0B,CAAA,EAElE"}
@@ -0,0 +1,2 @@
1
+ import os from"node:os";import{isDefined,isString}from"../../anarchy-shared/src/Utils/CheckUtils/index.es.js";import{HiddenField}from"../../Constants/Masks/index.es.js";const homedir=os.homedir(),homeDirRegexp=new RegExp(homedir.replace(/\\/g,"/").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),replaceInString=s=>"string"==typeof s?s.replace(/\\/g,"/").replace(homeDirRegexp,HiddenField):s;function scrubUserPathsDesktop(event){return event.message&&(event.message=replaceInString(event.message)),event.exception?.values?.forEach(value=>{value?.stacktrace?.frames?.forEach(f=>{f.filename=replaceInString(f.filename),f.abs_path=replaceInString(f.abs_path),f.module=replaceInString(f.module)}),value.value&&(value.value=replaceInString(value.value)),value.type&&(value.type=replaceInString(value.type))}),isDefined(event.extra)&&Object.entries(event.extra).forEach(([key,value])=>{isDefined(event.extra)&&isString(value)&&(event.extra[key]=replaceInString(value))}),event}export{scrubUserPathsDesktop};
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Utils/ScrubsDesktop.ts"],"sourcesContent":["import os from 'node:os';\n\nimport { isDefined, isString } from '@Anarchy/Shared/Utils';\nimport { HiddenField } from '@Anarchy/Tracking/Constants';\nimport type { ErrorEvent } from '@sentry/electron/main';\n\nconst escape = (s: string): string => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n// eslint-disable-next-line spellcheck/spell-checker\nconst homedir: string = os.homedir();\n// eslint-disable-next-line spellcheck/spell-checker\nconst homeDirRegexp: RegExp = new RegExp(escape(homedir.replace(/\\\\/g, '/')), 'g');\nconst replaceInString = (s?: string): string | undefined => (typeof s === 'string' ? s.replace(/\\\\/g, '/').replace(homeDirRegexp, HiddenField) : s);\n\nexport function scrubUserPathsDesktop(event: ErrorEvent): ErrorEvent {\n // eslint-disable-next-line functional/immutable-data\n if (event.message) event.message = replaceInString(event.message);\n\n event.exception?.values?.forEach((value: any): void => {\n value?.stacktrace?.frames?.forEach((f: any): void => {\n // eslint-disable-next-line functional/immutable-data\n f.filename = replaceInString(f.filename);\n // eslint-disable-next-line functional/immutable-data\n f.abs_path = replaceInString(f.abs_path);\n // eslint-disable-next-line functional/immutable-data\n f.module = replaceInString(f.module);\n });\n\n // eslint-disable-next-line functional/immutable-data\n if (value.value) value.value = replaceInString(value.value);\n // eslint-disable-next-line functional/immutable-data\n if (value.type) value.type = replaceInString(value.type);\n });\n\n if (isDefined(event.extra)) {\n Object.entries(event.extra).forEach(([key, value]): void => {\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(event.extra) && isString(value)) event.extra[key] = replaceInString(value);\n });\n }\n\n return event;\n}\n"],"names":["homedir","os","homeDirRegexp","RegExp","replace","replaceInString","s","HiddenField","scrubUserPathsDesktop","event","message","exception","values","forEach","value","stacktrace","frames","f","filename","abs_path","module","type","isDefined","extra","Object","entries","key","isString"],"mappings":"yKAMA,MAEMA,QAAkBC,GAAGD,UAErBE,cAAwB,IAAIC,OAAcH,QAAQI,QAAQ,MAAO,KAJ/BA,QAAQ,sBAAuB,QAIO,KACxEC,gBAAmBC,GAAiD,iBAANA,EAAiBA,EAAEF,QAAQ,MAAO,KAAKA,QAAQF,cAAeK,aAAeD,EAE1I,SAASE,sBAAsBC,OA2BpC,OAzBIA,MAAMC,UAASD,MAAMC,QAAUL,gBAAgBI,MAAMC,UAEzDD,MAAME,WAAWC,QAAQC,QAASC,QAChCA,OAAOC,YAAYC,QAAQH,QAASI,IAElCA,EAAEC,SAAWb,gBAAgBY,EAAEC,UAE/BD,EAAEE,SAAWd,gBAAgBY,EAAEE,UAE/BF,EAAEG,OAASf,gBAAgBY,EAAEG,UAI3BN,MAAMA,QAAOA,MAAMA,MAAQT,gBAAgBS,MAAMA,QAEjDA,MAAMO,OAAMP,MAAMO,KAAOhB,gBAAgBS,MAAMO,SAGjDC,UAAUb,MAAMc,QAClBC,OAAOC,QAAQhB,MAAMc,OAAOV,QAAQ,EAAEa,IAAKZ,UAErCQ,UAAUb,MAAMc,QAAUI,SAASb,SAAQL,MAAMc,MAAMG,KAAOrB,gBAAgBS,UAI/EL,KACT"}
@@ -0,0 +1,2 @@
1
+ export{rewriteFramesIntegrationBrowser}from"../IntegrationsBrowser/index.es.js";export{scrubUserPathsBrowser}from"../ScrubsBrowser/index.es.js";
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export{rewriteFramesIntegrationNode}from"../IntegrationsNode/index.es.js";export{scrubUserPathsDesktop}from"../ScrubsDesktop/index.es.js";
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ const isDefined=value=>null!=value,isString=value=>"string"==typeof value;export{isDefined,isString};
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../../../../anarchy-shared/src/Utils/CheckUtils.ts"],"sourcesContent":["export const isDefined = <T>(value: T | undefined | null): value is T => <T>value !== undefined && <T>value !== null;\n\nexport const isAllDefined = <T>(values: ReadonlyArray<T | undefined | null>): values is ReadonlyArray<T> => !values.some(isNotDefined);\n\nexport const isNotDefined = <T>(value: T | undefined | null): value is undefined | null => !isDefined<T>(value);\n\nexport const isAllNotDefined = <T>(values: ReadonlyArray<T | undefined | null>): values is ReadonlyArray<undefined | null> => values.every(isNotDefined);\n\nexport const isString = (value: unknown): value is string => typeof value === 'string';\n\nexport const isBoolean = (value: unknown): value is boolean => typeof value === 'boolean';\n"],"names":["isDefined","value","isString"],"mappings":"AAAO,MAAMA,UAAgBC,OAA+CA,YAQ/DC,SAAYD,OAAqD,iBAAVA"}
@@ -0,0 +1,2 @@
1
+ const toPosix=s=>s.replace(/\\/g,"/");export{toPosix};
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../../../../anarchy-shared/src/Utils/FileUtils.ts"],"sourcesContent":["import { FileSizes } from '@Anarchy/Shared/Constants';\n\nimport { isDefined } from './CheckUtils';\n\nexport function getHumanReadableMemorySize(bytes: number, decimals: number = 2): string {\n if (!+bytes) return '0 Bytes';\n const k: number = 1024;\n const dm: number = decimals < 0 ? 0 : decimals;\n\n const i: number = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${Object.values(FileSizes)[i]}`;\n}\n\nexport function getFileExtension(name: string): string | undefined {\n const extension: RegExpExecArray | null = /^.+\\.([^.]+)$/.exec(name);\n return isDefined(extension) ? extension[1] : undefined;\n}\n\nexport const toPosix = (s: string): string => s.replace(/\\\\/g, '/');\n"],"names":["toPosix","s","replace"],"mappings":"AAmBO,MAAMA,QAAWC,GAAsBA,EAAEC,QAAQ,MAAO"}
@@ -1,2 +1,2 @@
1
- function parseDistName(distName){if(!distName)return{platform:"unknown",arch:"unknown"};const parts=distName.toLowerCase().trim().split("-"),[platform,arch]=parts;return{platform:platform||"unknown",arch:arch||"unknown"}}export{parseDistName as p};
2
- //# sourceMappingURL=TrackingUtils.js.map
1
+ function parseDistName(distName){if(!distName)return{platform:"unknown",arch:"unknown"};const parts=distName.toLowerCase().trim().split("-"),[platform,arch]=parts;return{platform:platform||"unknown",arch:arch||"unknown"}}export{parseDistName};
2
+ //# sourceMappingURL=index.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../../../../../../anarchy-shared/src/Utils/TrackingUtils.ts"],"sourcesContent":["export function parseDistName(distName: string | undefined | null): Readonly<{ platform: string; arch: string }> {\n if (!distName) return { platform: 'unknown', arch: 'unknown' };\n\n const parts: ReadonlyArray<string> = distName.toLowerCase().trim().split('-');\n const [platform, arch] = parts;\n return { platform: platform || 'unknown', arch: arch || 'unknown' };\n}\n"],"names":["parseDistName","distName","platform","arch","parts","toLowerCase","trim","split"],"mappings":"AAAO,SAASA,cAAcC,UAC5B,IAAKA,SAAU,MAAO,CAAEC,SAAU,UAAWC,KAAM,WAEnD,MAAMC,MAA+BH,SAASI,cAAcC,OAAOC,MAAM,MAClEL,SAAUC,MAAQC,MACzB,MAAO,CAAEF,SAAUA,UAAY,UAAWC,KAAMA,MAAQ,UAC1D"}
@@ -1,2 +1,2 @@
1
- import{i as isDefined,s as scrubEvent,m as mutateEventWithDynamicData}from"../chunks/index.js";import{p as parseDistName}from"../chunks/TrackingUtils.js";import{r as rewriteFramesIntegrationBrowser,s as scrubUserPathsBrowser}from"../chunks/browser.js";export{b as Utils}from"../chunks/browser.js";import{init,setTags,captureException}from"@sentry/browser";function BrowserTrackingService(options,metaData,dynamicContextFn,dynamicTagsFn){let isStarted=!1;const defaultOptions={beforeSend(event,_hint){const result=scrubUserPathsBrowser(scrubEvent(event));return mutateEventWithDynamicData(result,dynamicContextFn,dynamicTagsFn),result},integrations:[rewriteFramesIntegrationBrowser()],tracesSampleRate:0,sendDefaultPii:!1},client=init({...defaultOptions,...options});isDefined(metaData)&&setTags(metaData);const{platform:platform,arch:arch}=parseDistName(options?.dist);setTags({layer:"web",errorTracker:"BrowserTrackingService",os:platform,arch:arch});const onError=ev=>{captureException(ev?.error??ev)},onRejection=ev=>{captureException(ev?.reason??ev)};function start(onErrorHandler=onError,onRejectionHandler=onRejection){isStarted||(isStarted=!0,window.addEventListener("error",onErrorHandler),window.addEventListener("unhandledrejection",onRejectionHandler))}return isDefined(client)&&start(),{captureException:captureException,start:start,stop:function(onErrorHandler=onError,onRejectionHandler=onRejection){isStarted=!1,window.removeEventListener("error",onErrorHandler),window.removeEventListener("unhandledrejection",onRejectionHandler)},isStarted:()=>isStarted}}export{BrowserTrackingService};
1
+ export{BrowserTrackingService}from"../Services/BrowserTrackingService/index.es.js";import*as browser from"../Utils/browser/index.es.js";export{browser as Utils};
2
2
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../src/Services/BrowserTrackingService.ts"],"sourcesContent":["import { isDefined, parseDistName } from '@Anarchy/Shared/Utils';\nimport type { TMetaData, TTrackingService } from '@Anarchy/Tracking/Models';\nimport { mutateEventWithDynamicData } from '@Anarchy/Tracking/Utils/DynamicDataUtils';\nimport { rewriteFramesIntegrationBrowser } from '@Anarchy/Tracking/Utils/IntegrationsBrowser';\nimport { scrubEvent } from '@Anarchy/Tracking/Utils/ScrubEvent';\nimport { scrubUserPathsBrowser } from '@Anarchy/Tracking/Utils/ScrubsBrowser';\nimport type { BrowserOptions, EventHint } from '@sentry/browser';\nimport { captureException, init, setTags } from '@sentry/browser';\nimport type { Client, ErrorEvent, Primitive } from '@sentry/core';\n\nexport function BrowserTrackingService(\n options?: BrowserOptions,\n metaData?: TMetaData,\n dynamicContextFn?: () => Record<string, any>,\n dynamicTagsFn?: () => Record<string, Primitive>\n): TTrackingService {\n let isStarted: boolean = false;\n\n const defaultOptions: BrowserOptions = {\n beforeSend(event: ErrorEvent, _hint: EventHint): PromiseLike<ErrorEvent | null> | ErrorEvent | null {\n const result: ErrorEvent = scrubUserPathsBrowser(scrubEvent(event));\n mutateEventWithDynamicData(result, dynamicContextFn, dynamicTagsFn);\n return result;\n },\n integrations: [rewriteFramesIntegrationBrowser()],\n tracesSampleRate: 0,\n //Important: make sure this is false if you want anonymous reports (no IPs, etc. for GDPR and similar acts).\n sendDefaultPii: false\n };\n\n const client: Client | undefined = init({\n ...defaultOptions,\n ...options\n });\n\n if (isDefined(metaData)) setTags(metaData);\n const { platform, arch } = parseDistName(options?.dist);\n setTags({\n layer: 'web',\n errorTracker: 'BrowserTrackingService',\n os: platform,\n arch\n });\n\n const onError = (ev: any): void => void captureException(ev?.error ?? ev);\n const onRejection = (ev: PromiseRejectionEvent): void => void captureException((ev as PromiseRejectionEvent)?.reason ?? ev);\n\n function start(onErrorHandler: (ev: any) => void = onError, onRejectionHandler: (ev: PromiseRejectionEvent) => void = onRejection): void {\n if (isStarted) return;\n isStarted = true;\n window.addEventListener('error', onErrorHandler);\n window.addEventListener('unhandledrejection', onRejectionHandler);\n }\n\n function stop(onErrorHandler: (ev: any) => void = onError, onRejectionHandler: (ev: PromiseRejectionEvent) => void = onRejection): void {\n isStarted = false;\n window.removeEventListener('error', onErrorHandler);\n window.removeEventListener('unhandledrejection', onRejectionHandler);\n }\n\n if (isDefined(client)) start();\n\n return {\n captureException,\n start,\n stop,\n isStarted: () => isStarted\n };\n}\n"],"names":["BrowserTrackingService","options","metaData","dynamicContextFn","dynamicTagsFn","isStarted","defaultOptions","beforeSend","event","_hint","result","scrubUserPathsBrowser","scrubEvent","mutateEventWithDynamicData","integrations","rewriteFramesIntegrationBrowser","tracesSampleRate","sendDefaultPii","client","init","isDefined","setTags","platform","arch","parseDistName","dist","layer","errorTracker","os","onError","ev","captureException","error","onRejection","reason","start","onErrorHandler","onRejectionHandler","window","addEventListener","stop","removeEventListener"],"mappings":"oWAUO,SAASA,uBACdC,QACAC,SACAC,iBACAC,eAEA,IAAIC,WAAqB,EAEzB,MAAMC,eAAiC,CACrC,UAAAC,CAAWC,MAAmBC,OAC5B,MAAMC,OAAqBC,sBAAsBC,WAAWJ,QAE5D,OADAK,2BAA2BH,OAAQP,iBAAkBC,eAC9CM,MACT,EACAI,aAAc,CAACC,mCACfC,iBAAkB,EAElBC,gBAAgB,GAGZC,OAA6BC,KAAK,IACnCb,kBACAL,UAGDmB,UAAUlB,WAAWmB,QAAQnB,UACjC,MAAMoB,SAAEA,SAAAC,KAAUA,MAASC,cAAcvB,SAASwB,MAClDJ,QAAQ,CACNK,MAAO,MACPC,aAAc,yBACdC,GAAIN,SACJC,YAGF,MAAMM,QAAWC,KAAuBC,iBAAiBD,IAAIE,OAASF,KAChEG,YAAeH,KAAyCC,iBAAkBD,IAA8BI,QAAUJ,KAExH,SAASK,MAAMC,eAAoCP,QAASQ,mBAA0DJ,aAChH5B,YACJA,WAAY,EACZiC,OAAOC,iBAAiB,QAASH,gBACjCE,OAAOC,iBAAiB,qBAAsBF,oBAChD,CAUA,OAFIjB,UAAUF,SAASiB,QAEhB,CACLJ,kCACAI,YACAK,KAXF,SAAcJ,eAAoCP,QAASQ,mBAA0DJ,aACnH5B,WAAY,EACZiC,OAAOG,oBAAoB,QAASL,gBACpCE,OAAOG,oBAAoB,qBAAsBJ,mBACnD,EAQEhC,UAAW,IAAMA,UAErB"}
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- import{i as isDefined,a as isString,H as HiddenField,s as scrubEvent,m as mutateEventWithDynamicData}from"../chunks/index.js";import{p as parseDistName}from"../chunks/TrackingUtils.js";import{rewriteFramesIntegration}from"@sentry/core";import os from"node:os";import{init,setTags,captureException}from"@sentry/electron/main";const toPosix=s=>s.replace(/\\/g,"/"),rewriteFramesIntegrationNode=options=>{let root=options?.root;try{!root&&"undefined"!=typeof process&&process.resourcesPath&&(root=process.resourcesPath),root||(root=__dirname)}catch{}const rootPosix=root?toPosix(root):void 0;return rewriteFramesIntegration({root:rootPosix,iteratee:frame=>{if(!frame||!frame.filename)return frame;const name=toPosix(frame.filename);if(name.startsWith("app:///"))return frame;if(rootPosix&&name.startsWith(rootPosix))return frame.filename="app:///"+name.slice(rootPosix.length).replace(/^\/+/,""),frame;const asarIdx=name.indexOf("/app.asar/");return asarIdx>=0?(frame.filename="app:///"+name.slice(asarIdx+10),frame):name.startsWith("file://")?(frame.filename="app:///"+name.replace(/^file:\/+/,""),frame):frame}})},homedir=os.homedir(),homeDirRegexp=new RegExp(homedir.replace(/\\/g,"/").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"g"),replaceInString=s=>"string"==typeof s?s.replace(/\\/g,"/").replace(homeDirRegexp,HiddenField):s;function scrubUserPathsDesktop(event){return event.message&&(event.message=replaceInString(event.message)),event.exception?.values?.forEach(value=>{value?.stacktrace?.frames?.forEach(f=>{f.filename=replaceInString(f.filename),f.abs_path=replaceInString(f.abs_path),f.module=replaceInString(f.module)}),value.value&&(value.value=replaceInString(value.value)),value.type&&(value.type=replaceInString(value.type))}),isDefined(event.extra)&&Object.entries(event.extra).forEach(([key,value])=>{isDefined(event.extra)&&isString(value)&&(event.extra[key]=replaceInString(value))}),event}function DesktopTrackingService(options,metaData,dynamicContextFn,dynamicTagsFn){let isStarted=!1;const defaultOptions={beforeSend(event,_hint){const result=scrubUserPathsDesktop(scrubEvent(event));return mutateEventWithDynamicData(result,dynamicContextFn,dynamicTagsFn),result},integrations:[rewriteFramesIntegrationNode()],tracesSampleRate:0,sendDefaultPii:!1};init({...defaultOptions,...options}),isDefined(metaData)&&setTags(metaData);const{platform:platform,arch:arch}=parseDistName(options?.dist);setTags({layer:"electron-main",errorTracker:"DesktopTrackingService",os:platform,arch:arch});const onError=ev=>{captureException(ev?.error??ev)},onRejection=ev=>{captureException(ev?.reason??ev)};function start(onErrorHandler=onError,onRejectionHandler=onRejection){isStarted||(isStarted=!0,process.on("uncaughtException",onErrorHandler),process.on("unhandledRejection",onRejectionHandler))}return start(),{captureException:captureException,start:start,stop:function(onErrorHandler=onError,onRejectionHandler=onRejection){isStarted=!1,process.off("uncaughtException",onErrorHandler),process.off("unhandledRejection",onRejectionHandler)},isStarted:()=>isStarted}}const desktop=Object.freeze(Object.defineProperty({__proto__:null,rewriteFramesIntegrationNode:rewriteFramesIntegrationNode,scrubUserPathsDesktop:scrubUserPathsDesktop},Symbol.toStringTag,{value:"Module"}));export{DesktopTrackingService,desktop as Utils};
1
+ export{DesktopTrackingService}from"../Services/DesktopTrackingService/index.es.js";import*as desktop from"../Utils/desktop/index.es.js";export{desktop as Utils};
2
2
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../anarchy-shared/src/Utils/FileUtils.ts","../../src/Utils/IntegrationsNode.ts","../../src/Utils/ScrubsDesktop.ts","../../src/Services/DesktopTrackingService.ts"],"sourcesContent":["import { FileSizes } from '@Anarchy/Shared/Constants';\n\nimport { isDefined } from './CheckUtils';\n\nexport function getHumanReadableMemorySize(bytes: number, decimals: number = 2): string {\n if (!+bytes) return '0 Bytes';\n const k: number = 1024;\n const dm: number = decimals < 0 ? 0 : decimals;\n\n const i: number = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${Object.values(FileSizes)[i]}`;\n}\n\nexport function getFileExtension(name: string): string | undefined {\n const extension: RegExpExecArray | null = /^.+\\.([^.]+)$/.exec(name);\n return isDefined(extension) ? extension[1] : undefined;\n}\n\nexport const toPosix = (s: string): string => s.replace(/\\\\/g, '/');\n","import { toPosix } from '@Anarchy/Shared/Utils';\nimport type { StackFrame } from '@sentry/core';\nimport { rewriteFramesIntegration } from '@sentry/core';\n\n//Important: if you use this, then upload source maps with --url-prefix \"app:///\"\nexport const rewriteFramesIntegrationNode = (options?: any): any => {\n let root = options?.root;\n\n try {\n if (!root && typeof process !== 'undefined' && (process as any).resourcesPath) {\n root = (process as any).resourcesPath as string;\n }\n if (!root) root = __dirname;\n } catch {\n // ignore\n }\n\n const rootPosix: string | undefined = root ? toPosix(root) : undefined;\n\n return rewriteFramesIntegration({\n root: rootPosix,\n // eslint-disable-next-line spellcheck/spell-checker\n iteratee: (frame: StackFrame): StackFrame => {\n if (!frame || !frame.filename) return frame;\n const name = toPosix(frame.filename);\n\n // Transform any absolute/file paths related to the app into app:///\n // 1) If SDK already made app:/// — leave it\n if (name.startsWith('app:///')) return frame;\n\n // 2) If the path is under root/resourcesPath - replace the prefix with app:///\n if (rootPosix && name.startsWith(rootPosix)) {\n // eslint-disable-next-line functional/immutable-data\n frame.filename = 'app:///' + name.slice(rootPosix.length).replace(/^\\/+/, '');\n return frame;\n }\n\n // 3) The path is inside asar\n const asarIdx: number = name.indexOf('/app.asar/');\n if (asarIdx >= 0) {\n // eslint-disable-next-line functional/immutable-data\n frame.filename = 'app:///' + name.slice(asarIdx + '/app.asar/'.length);\n return frame;\n }\n\n // 4) file:// URLs → app:///\n if (name.startsWith('file://')) {\n // eslint-disable-next-line functional/immutable-data\n frame.filename = 'app:///' + name.replace(/^file:\\/+/, '');\n return frame;\n }\n\n return frame;\n }\n });\n};\n","import os from 'node:os';\n\nimport { isDefined, isString } from '@Anarchy/Shared/Utils';\nimport { HiddenField } from '@Anarchy/Tracking/Constants';\nimport type { ErrorEvent } from '@sentry/electron/main';\n\nconst escape = (s: string): string => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n// eslint-disable-next-line spellcheck/spell-checker\nconst homedir: string = os.homedir();\n// eslint-disable-next-line spellcheck/spell-checker\nconst homeDirRegexp: RegExp = new RegExp(escape(homedir.replace(/\\\\/g, '/')), 'g');\nconst replaceInString = (s?: string): string | undefined => (typeof s === 'string' ? s.replace(/\\\\/g, '/').replace(homeDirRegexp, HiddenField) : s);\n\nexport function scrubUserPathsDesktop(event: ErrorEvent): ErrorEvent {\n // eslint-disable-next-line functional/immutable-data\n if (event.message) event.message = replaceInString(event.message);\n\n event.exception?.values?.forEach((value: any): void => {\n value?.stacktrace?.frames?.forEach((f: any): void => {\n // eslint-disable-next-line functional/immutable-data\n f.filename = replaceInString(f.filename);\n // eslint-disable-next-line functional/immutable-data\n f.abs_path = replaceInString(f.abs_path);\n // eslint-disable-next-line functional/immutable-data\n f.module = replaceInString(f.module);\n });\n\n // eslint-disable-next-line functional/immutable-data\n if (value.value) value.value = replaceInString(value.value);\n // eslint-disable-next-line functional/immutable-data\n if (value.type) value.type = replaceInString(value.type);\n });\n\n if (isDefined(event.extra)) {\n Object.entries(event.extra).forEach(([key, value]): void => {\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(event.extra) && isString(value)) event.extra[key] = replaceInString(value);\n });\n }\n\n return event;\n}\n","import { isDefined, parseDistName } from '@Anarchy/Shared/Utils';\nimport type { TMetaData, TTrackingService } from '@Anarchy/Tracking/Models';\nimport { mutateEventWithDynamicData } from '@Anarchy/Tracking/Utils/DynamicDataUtils';\nimport { rewriteFramesIntegrationNode } from '@Anarchy/Tracking/Utils/IntegrationsNode';\nimport { scrubEvent } from '@Anarchy/Tracking/Utils/ScrubEvent';\nimport { scrubUserPathsDesktop } from '@Anarchy/Tracking/Utils/ScrubsDesktop';\nimport type { Primitive } from '@sentry/core';\nimport type { ElectronMainOptions } from '@sentry/electron/esm/main';\nimport type { ErrorEvent, EventHint } from '@sentry/electron/main';\nimport { captureException, init, setTags } from '@sentry/electron/main';\n\nexport function DesktopTrackingService(\n options?: ElectronMainOptions,\n metaData?: TMetaData,\n dynamicContextFn?: () => Record<string, any>,\n dynamicTagsFn?: () => Record<string, Primitive>\n): TTrackingService {\n let isStarted: boolean = false;\n\n const defaultOptions: ElectronMainOptions = {\n beforeSend(event: ErrorEvent, _hint: EventHint): PromiseLike<ErrorEvent | null> | ErrorEvent | null {\n const result: ErrorEvent = scrubUserPathsDesktop(scrubEvent(event as any) as ErrorEvent);\n mutateEventWithDynamicData(result as any, dynamicContextFn, dynamicTagsFn);\n return result;\n },\n integrations: [rewriteFramesIntegrationNode()],\n tracesSampleRate: 0,\n //Important: make sure this is false if you want anonymous reports (no IPs, etc. for GDPR and similar acts).\n sendDefaultPii: false\n };\n\n init({\n ...defaultOptions,\n ...options\n });\n\n if (isDefined(metaData)) setTags(metaData);\n const { platform, arch } = parseDistName(options?.dist);\n setTags({\n layer: 'electron-main',\n errorTracker: 'DesktopTrackingService',\n os: platform,\n arch\n });\n\n const onError = (ev: any): void => void captureException(ev?.error ?? ev);\n const onRejection = (ev: PromiseRejectionEvent): void => void captureException((ev as PromiseRejectionEvent)?.reason ?? ev);\n\n function start(onErrorHandler: (ev: any) => void = onError, onRejectionHandler: (ev: PromiseRejectionEvent) => void = onRejection): void {\n if (isStarted) return;\n isStarted = true;\n process.on('uncaughtException', onErrorHandler);\n process.on('unhandledRejection', onRejectionHandler);\n }\n\n function stop(onErrorHandler: (ev: any) => void = onError, onRejectionHandler: (ev: PromiseRejectionEvent) => void = onRejection): void {\n isStarted = false;\n process.off('uncaughtException', onErrorHandler);\n process.off('unhandledRejection', onRejectionHandler);\n }\n\n start();\n\n return {\n captureException,\n start,\n stop,\n isStarted: () => isStarted\n };\n}\n"],"names":["toPosix","s","replace","rewriteFramesIntegrationNode","options","root","process","resourcesPath","__dirname","rootPosix","rewriteFramesIntegration","iteratee","frame","filename","name","startsWith","slice","length","asarIdx","indexOf","homedir","os","homeDirRegexp","RegExp","replaceInString","HiddenField","scrubUserPathsDesktop","event","message","exception","values","forEach","value","stacktrace","frames","f","abs_path","module","type","isDefined","extra","Object","entries","key","isString","DesktopTrackingService","metaData","dynamicContextFn","dynamicTagsFn","isStarted","defaultOptions","beforeSend","_hint","result","scrubEvent","mutateEventWithDynamicData","integrations","tracesSampleRate","sendDefaultPii","init","setTags","platform","arch","parseDistName","dist","layer","errorTracker","onError","ev","captureException","error","onRejection","reason","start","onErrorHandler","onRejectionHandler","on","stop","off"],"mappings":"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"}
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- import{i as isDefined,s as scrubEvent,m as mutateEventWithDynamicData}from"../chunks/index.js";import{p as parseDistName}from"../chunks/TrackingUtils.js";import{r as rewriteFramesIntegrationBrowser,s as scrubUserPathsBrowser}from"../chunks/browser.js";export{b as Utils}from"../chunks/browser.js";import{init,setTags,captureException}from"@sentry/electron/renderer";function DesktopPreloadTrackingService(options,metaData,dynamicContextFn,dynamicTagsFn){let isStarted=!1;const defaultOptions={beforeSend(event,_hint){const result=scrubUserPathsBrowser(scrubEvent(event));return mutateEventWithDynamicData(result,dynamicContextFn,dynamicTagsFn),result},integrations:[rewriteFramesIntegrationBrowser()],tracesSampleRate:0,sendDefaultPii:!1};init({...defaultOptions,...options}),isDefined(metaData)&&setTags(metaData);const{platform:platform,arch:arch}=parseDistName(options?.dist);setTags({layer:"electron-preload",initLayer:"electron-preload",errorTracker:"DesktopPreloadTrackingService",errorTrackerInitializer:"DesktopPreloadTrackingService",os:platform,arch:arch});const onError=ev=>{captureException(ev?.error??ev)},onRejection=ev=>{captureException(ev?.reason??ev)};function start(onErrorHandler=onError,onRejectionHandler=onRejection){isStarted||(isStarted=!0,globalThis.window?.addEventListener?.("error",onErrorHandler),globalThis.window?.addEventListener?.("unhandledrejection",onRejectionHandler),globalThis.process?.on?.("uncaughtException",onErrorHandler),globalThis.process?.on?.("unhandledRejection",onRejectionHandler))}return start(),{captureException:captureException,start:start,stop:function(onErrorHandler=onError,onRejectionHandler=onRejection){isStarted=!1,globalThis.window?.removeEventListener?.("error",onErrorHandler),globalThis.window?.removeEventListener?.("unhandledrejection",onRejectionHandler),globalThis.process?.off?.("uncaughtException",onErrorHandler),globalThis.process?.off?.("unhandledRejection",onRejectionHandler)},isStarted:()=>isStarted}}export{DesktopPreloadTrackingService};
1
+ export{DesktopPreloadTrackingService}from"../Services/DesktopPreloadTrackingService/index.es.js";import*as browser from"../Utils/browser/index.es.js";export{browser as Utils};
2
2
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../src/Services/DesktopPreloadTrackingService.ts"],"sourcesContent":["import { isDefined, parseDistName } from '@Anarchy/Shared/Utils';\nimport type { TMetaData, TTrackingService } from '@Anarchy/Tracking/Models';\nimport { mutateEventWithDynamicData } from '@Anarchy/Tracking/Utils/DynamicDataUtils';\nimport { rewriteFramesIntegrationBrowser } from '@Anarchy/Tracking/Utils/IntegrationsBrowser';\nimport { scrubEvent } from '@Anarchy/Tracking/Utils/ScrubEvent';\nimport { scrubUserPathsBrowser } from '@Anarchy/Tracking/Utils/ScrubsBrowser';\nimport type { Integration, Primitive } from '@sentry/core';\nimport type { ErrorEvent, EventHint } from '@sentry/electron/renderer';\nimport { captureException, init, setTags } from '@sentry/electron/renderer';\n\nexport function DesktopPreloadTrackingService(\n options?: Record<string, any>,\n metaData?: TMetaData,\n dynamicContextFn?: () => Record<string, any>,\n dynamicTagsFn?: () => Record<string, Primitive>\n): TTrackingService {\n let isStarted: boolean = false;\n\n const defaultOptions = {\n beforeSend(event: ErrorEvent, _hint: EventHint): PromiseLike<ErrorEvent | null> | ErrorEvent | null {\n const result: ErrorEvent = scrubUserPathsBrowser(scrubEvent(event as any)) as ErrorEvent;\n mutateEventWithDynamicData(result as any, dynamicContextFn, dynamicTagsFn);\n return result;\n },\n integrations: [rewriteFramesIntegrationBrowser() as () => Integration],\n tracesSampleRate: 0,\n //Important: make sure this is false if you want anonymous reports (no IPs, etc. for GDPR and similar acts).\n sendDefaultPii: false\n };\n\n init({\n ...defaultOptions,\n ...options\n });\n\n if (isDefined(metaData)) setTags(metaData);\n const { platform, arch } = parseDistName(options?.dist);\n setTags({\n layer: 'electron-preload',\n initLayer: 'electron-preload',\n errorTracker: 'DesktopPreloadTrackingService',\n errorTrackerInitializer: 'DesktopPreloadTrackingService',\n os: platform,\n arch\n });\n\n const onError = (ev: any): void => void captureException(ev?.error ?? ev);\n const onRejection = (ev: PromiseRejectionEvent): void => void captureException((ev as PromiseRejectionEvent)?.reason ?? ev);\n\n function start(onErrorHandler: (ev: any) => void = onError, onRejectionHandler: (ev: PromiseRejectionEvent) => void = onRejection): void {\n if (isStarted) return;\n isStarted = true;\n\n globalThis.window?.addEventListener?.('error', onErrorHandler);\n globalThis.window?.addEventListener?.('unhandledrejection', onRejectionHandler);\n globalThis.process?.on?.('uncaughtException', onErrorHandler);\n globalThis.process?.on?.('unhandledRejection', onRejectionHandler);\n }\n\n function stop(onErrorHandler: (ev: any) => void = onError, onRejectionHandler: (ev: PromiseRejectionEvent) => void = onRejection): void {\n isStarted = false;\n globalThis.window?.removeEventListener?.('error', onErrorHandler);\n globalThis.window?.removeEventListener?.('unhandledrejection', onRejectionHandler);\n globalThis.process?.off?.('uncaughtException', onErrorHandler);\n globalThis.process?.off?.('unhandledRejection', onRejectionHandler);\n }\n\n start();\n\n return {\n captureException,\n start,\n stop,\n isStarted: () => isStarted\n };\n}\n"],"names":["DesktopPreloadTrackingService","options","metaData","dynamicContextFn","dynamicTagsFn","isStarted","defaultOptions","beforeSend","event","_hint","result","scrubUserPathsBrowser","scrubEvent","mutateEventWithDynamicData","integrations","rewriteFramesIntegrationBrowser","tracesSampleRate","sendDefaultPii","init","isDefined","setTags","platform","arch","parseDistName","dist","layer","initLayer","errorTracker","errorTrackerInitializer","os","onError","ev","captureException","error","onRejection","reason","start","onErrorHandler","onRejectionHandler","globalThis","window","addEventListener","process","on","stop","removeEventListener","off"],"mappings":"8WAUO,SAASA,8BACdC,QACAC,SACAC,iBACAC,eAEA,IAAIC,WAAqB,EAEzB,MAAMC,eAAiB,CACrB,UAAAC,CAAWC,MAAmBC,OAC5B,MAAMC,OAAqBC,sBAAsBC,WAAWJ,QAE5D,OADAK,2BAA2BH,OAAeP,iBAAkBC,eACrDM,MACT,EACAI,aAAc,CAACC,mCACfC,iBAAkB,EAElBC,gBAAgB,GAGlBC,KAAK,IACAZ,kBACAL,UAGDkB,UAAUjB,WAAWkB,QAAQlB,UACjC,MAAMmB,SAAEA,SAAAC,KAAUA,MAASC,cAActB,SAASuB,MAClDJ,QAAQ,CACNK,MAAO,mBACPC,UAAW,mBACXC,aAAc,gCACdC,wBAAyB,gCACzBC,GAAIR,SACJC,YAGF,MAAMQ,QAAWC,KAAuBC,iBAAiBD,IAAIE,OAASF,KAChEG,YAAeH,KAAyCC,iBAAkBD,IAA8BI,QAAUJ,KAExH,SAASK,MAAMC,eAAoCP,QAASQ,mBAA0DJ,aAChH7B,YACJA,WAAY,EAEZkC,WAAWC,QAAQC,mBAAmB,QAASJ,gBAC/CE,WAAWC,QAAQC,mBAAmB,qBAAsBH,oBAC5DC,WAAWG,SAASC,KAAK,oBAAqBN,gBAC9CE,WAAWG,SAASC,KAAK,qBAAsBL,oBACjD,CAYA,OAFAF,QAEO,CACLJ,kCACAI,YACAQ,KAbF,SAAcP,eAAoCP,QAASQ,mBAA0DJ,aACnH7B,WAAY,EACZkC,WAAWC,QAAQK,sBAAsB,QAASR,gBAClDE,WAAWC,QAAQK,sBAAsB,qBAAsBP,oBAC/DC,WAAWG,SAASI,MAAM,oBAAqBT,gBAC/CE,WAAWG,SAASI,MAAM,qBAAsBR,mBAClD,EAQEjC,UAAW,IAAMA,UAErB"}
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +1,2 @@
1
- export{H as HiddenField,m as mutateEventWithDynamicData,s as scrubEvent}from"../chunks/index.js";
1
+ export{HiddenField}from"../Constants/Masks/index.es.js";export{mutateEventWithDynamicData}from"../Utils/DynamicDataUtils/index.es.js";export{scrubEvent}from"../Utils/ScrubEvent/index.es.js";
2
2
  //# sourceMappingURL=index.es.js.map
package/legal/NOTICE.md CHANGED
@@ -55,7 +55,7 @@ The following notices are reproduced as provided by the respective licensors (e.
55
55
 
56
56
  ---
57
57
 
58
- ## @opentelemetry/context-async-hooks@2.3.0
58
+ ## @opentelemetry/context-async-hooks@2.5.0
59
59
 
60
60
  **License(s):** Apache-2.0
61
61
 
@@ -79,7 +79,7 @@ The following notices are reproduced as provided by the respective licensors (e.
79
79
 
80
80
  ---
81
81
 
82
- ## @opentelemetry/core@2.3.0
82
+ ## @opentelemetry/core@2.5.0
83
83
 
84
84
  **License(s):** Apache-2.0
85
85
 
@@ -379,7 +379,7 @@ The following notices are reproduced as provided by the respective licensors (e.
379
379
 
380
380
  ---
381
381
 
382
- ## @opentelemetry/resources@2.3.0
382
+ ## @opentelemetry/resources@2.5.0
383
383
 
384
384
  **License(s):** Apache-2.0
385
385
 
@@ -391,7 +391,7 @@ The following notices are reproduced as provided by the respective licensors (e.
391
391
 
392
392
  ---
393
393
 
394
- ## @opentelemetry/sdk-trace-base@2.3.0
394
+ ## @opentelemetry/sdk-trace-base@2.5.0
395
395
 
396
396
  **License(s):** Apache-2.0
397
397
 
@@ -403,7 +403,7 @@ The following notices are reproduced as provided by the respective licensors (e.
403
403
 
404
404
  ---
405
405
 
406
- ## @opentelemetry/semantic-conventions@1.38.0
406
+ ## @opentelemetry/semantic-conventions@1.39.0
407
407
 
408
408
  **License(s):** Apache-2.0
409
409
 
@@ -753,7 +753,7 @@ The following notices are reproduced as provided by the respective licensors (e.
753
753
 
754
754
  ---
755
755
 
756
- ## cjs-module-lexer@1.4.3
756
+ ## cjs-module-lexer@2.2.0
757
757
 
758
758
  **License(s):** MIT
759
759
 
@@ -799,7 +799,7 @@ The following notices are reproduced as provided by the respective licensors (e.
799
799
 
800
800
  ---
801
801
 
802
- ## import-in-the-middle@2.0.1
802
+ ## import-in-the-middle@2.0.6
803
803
 
804
804
  **License(s):** Apache-2.0
805
805
 
@@ -853,7 +853,7 @@ The following notices are reproduced as provided by the respective licensors (e.
853
853
 
854
854
  ---
855
855
 
856
- ## pg-protocol@1.10.3
856
+ ## pg-protocol@1.11.0
857
857
 
858
858
  **License(s):** MIT
859
859
 
@@ -854,7 +854,7 @@ limitations under the License.
854
854
 
855
855
  ---
856
856
 
857
- ## @opentelemetry/context-async-hooks@2.3.0
857
+ ## @opentelemetry/context-async-hooks@2.5.0
858
858
 
859
859
  **License:** Apache-2.0
860
860
 
@@ -1282,7 +1282,7 @@ limitations under the License.
1282
1282
 
1283
1283
  ---
1284
1284
 
1285
- ## @opentelemetry/core@2.3.0
1285
+ ## @opentelemetry/core@2.5.0
1286
1286
 
1287
1287
  **License:** Apache-2.0
1288
1288
 
@@ -6632,7 +6632,7 @@ limitations under the License.
6632
6632
 
6633
6633
  ---
6634
6634
 
6635
- ## @opentelemetry/resources@2.3.0
6635
+ ## @opentelemetry/resources@2.5.0
6636
6636
 
6637
6637
  **License:** Apache-2.0
6638
6638
 
@@ -6846,7 +6846,7 @@ limitations under the License.
6846
6846
 
6847
6847
  ---
6848
6848
 
6849
- ## @opentelemetry/sdk-trace-base@2.3.0
6849
+ ## @opentelemetry/sdk-trace-base@2.5.0
6850
6850
 
6851
6851
  **License:** Apache-2.0
6852
6852
 
@@ -7060,7 +7060,7 @@ limitations under the License.
7060
7060
 
7061
7061
  ---
7062
7062
 
7063
- ## @opentelemetry/semantic-conventions@1.38.0
7063
+ ## @opentelemetry/semantic-conventions@1.39.0
7064
7064
 
7065
7065
  **License:** Apache-2.0
7066
7066
 
@@ -8567,7 +8567,7 @@ SOFTWARE.
8567
8567
 
8568
8568
  ---
8569
8569
 
8570
- ## cjs-module-lexer@1.4.3
8570
+ ## cjs-module-lexer@2.2.0
8571
8571
 
8572
8572
  **License:** MIT
8573
8573
 
@@ -8685,7 +8685,7 @@ THE SOFTWARE.
8685
8685
 
8686
8686
  ---
8687
8687
 
8688
- ## import-in-the-middle@2.0.1
8688
+ ## import-in-the-middle@2.0.6
8689
8689
 
8690
8690
  **License:** Apache-2.0
8691
8691
 
@@ -9011,7 +9011,7 @@ PERFORMANCE OF THIS SOFTWARE.
9011
9011
 
9012
9012
  ---
9013
9013
 
9014
- ## pg-protocol@1.10.3
9014
+ ## pg-protocol@1.11.0
9015
9015
 
9016
9016
  **License:** MIT
9017
9017
 
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@hellpig/anarchy-tracking",
3
3
  "author": "S. Panfilov",
4
4
  "private": false,
5
- "version": "1.6.1",
5
+ "version": "1.7.2",
6
6
  "type": "module",
7
7
  "repository": {
8
8
  "type": "git",
@@ -42,6 +42,7 @@
42
42
  "types": "./dist/index.d.ts",
43
43
  "import": "./dist/anarchy-tracking.es.js"
44
44
  },
45
+ "./package.json": "./package.json",
45
46
  "./browser": {
46
47
  "types": "./dist/browser.d.ts",
47
48
  "import": "./dist/browser.es.js"
@@ -53,8 +54,7 @@
53
54
  "./desktop-preload": {
54
55
  "types": "./dist/desktop-preload.d.ts",
55
56
  "import": "./dist/desktop-preload.es.js"
56
- },
57
- "./package.json": "./package.json"
57
+ }
58
58
  },
59
59
  "typesVersions": {
60
60
  "*": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"TrackingUtils.js","sources":["../../../anarchy-shared/src/Utils/TrackingUtils.ts"],"sourcesContent":["export function parseDistName(distName: string | undefined | null): Readonly<{ platform: string; arch: string }> {\n if (!distName) return { platform: 'unknown', arch: 'unknown' };\n\n const parts: ReadonlyArray<string> = distName.toLowerCase().trim().split('-');\n const [platform, arch] = parts;\n return { platform: platform || 'unknown', arch: arch || 'unknown' };\n}\n"],"names":["parseDistName","distName","platform","arch","parts","toLowerCase","trim","split"],"mappings":"AAAO,SAASA,cAAcC,UAC5B,IAAKA,SAAU,MAAO,CAAEC,SAAU,UAAWC,KAAM,WAEnD,MAAMC,MAA+BH,SAASI,cAAcC,OAAOC,MAAM,MAClEL,SAAUC,MAAQC,MACzB,MAAO,CAAEF,SAAUA,UAAY,UAAWC,KAAMA,MAAQ,UAC1D"}
@@ -1,2 +0,0 @@
1
- import{rewriteFramesIntegration}from"@sentry/browser";import{H as HiddenField}from"./index.js";const rewriteFramesIntegrationBrowser=()=>rewriteFramesIntegration({iteratee:frame=>{const f={...frame};if(!f.filename)return f;const name=String(f.filename).replace(/\\/g,"/");if(name.startsWith("app:///"))return f;const cutToLastDist=p=>{const idx=p.lastIndexOf("/dist/");return idx<0?null:p.slice(idx).replace(/^\/+/,"")},relFromLast=cutToLastDist(name);if(relFromLast){if(f.filename=`app:///${relFromLast}`,f.abs_path){const absRel=cutToLastDist(String(f.abs_path).replace(/\\/g,"/"));absRel&&(f.abs_path=`app:///${absRel}`)}return f}return f}}),pathRegexps=[[/(\/Users)\/[^/]+/g,"$1/<home>"],[/(\/home)\/[^/]+/g,"$1/<home>"],[/(\/var\/home)\/[^/]+/g,"$1/<home>"],[/([A-Za-z]:\\Users)\\[^\\]+/g,"$1\\<home>"],[/([A-Za-z]:\\Documents and Settings)\\[^\\]+/g,"$1\\<home>"],[/(file:\/\/\/Users)\/[^/]+/g,"$1/<home>"],[/(file:\/\/\/home)\/[^/]+/g,"$1/<home>"],[/(file:\/\/\/var\/home)\/[^/]+/g,"$1/<home>"],[/(file:\/\/[A-Za-z]:\/Users)\/[^/]+/g,"$1/<home>"]];function replaceUserPaths(s,replacement="<home>"){return"string"!=typeof s?s:pathRegexps.reduce((acc,[re,tpl])=>acc.replace(re,tpl.replace("<home>",replacement)),s)}function scrubUserPathsBrowser(event){const replacement=HiddenField,message=event.message?replaceUserPaths(event.message,replacement):event.message,valuesIn=event.exception?.values,valuesOut=valuesIn?.map(v=>{const framesIn=v?.stacktrace?.frames,framesOut=framesIn?.map(f=>({...f,...f?.filename?{filename:replaceUserPaths(f.filename,replacement)}:{},...f?.abs_path?{abs_path:replaceUserPaths(f.abs_path,replacement)}:{},...f?.module?{module:replaceUserPaths(f.module,replacement)}:{},...f?.function?{function:replaceUserPaths(f.function,replacement)}:{}})),stacktraceOut=v?.stacktrace?{...v.stacktrace,...framesOut?{frames:framesOut}:{}}:v?.stacktrace;return{...v,...v?.value?{value:replaceUserPaths(v.value,replacement)}:{},...v?.type?{type:replaceUserPaths(v.type,replacement)}:{},...v?.stacktrace?{stacktrace:stacktraceOut}:{}}}),exceptionOut=event.exception?{...event.exception,...valuesOut?{values:valuesOut}:{}}:event.exception,requestOut=event.request?{...event.request,...event.request.url?{url:replaceUserPaths(event.request.url,replacement)}:{}}:event.request,extraIn=event.extra,extraOut=extraIn?Object.fromEntries(Object.entries(extraIn).map(([k,v])=>[k,"string"==typeof v?replaceUserPaths(v,replacement):v])):extraIn,breadcrumbsIn=event.breadcrumbs,breadcrumbsOut=breadcrumbsIn?.map(b=>{const dataIn=b?.data,dataOut=dataIn?Object.fromEntries(Object.entries(dataIn).map(([key,val])=>[key,"string"==typeof val?replaceUserPaths(val,replacement):val])):dataIn;return{...b,...b?.message?{message:replaceUserPaths(b.message,replacement)}:{},...b?.data&&"object"==typeof b.data?{data:dataOut}:{}}});return{...event,...message?{message:message}:{},...exceptionOut?{exception:exceptionOut}:{},...requestOut?{request:requestOut}:{},...void 0!==extraOut?{extra:extraOut}:{},...breadcrumbsOut?{breadcrumbs:breadcrumbsOut}:{}}}const browser=Object.freeze(Object.defineProperty({__proto__:null,rewriteFramesIntegrationBrowser:rewriteFramesIntegrationBrowser,scrubUserPathsBrowser:scrubUserPathsBrowser},Symbol.toStringTag,{value:"Module"}));export{browser as b,rewriteFramesIntegrationBrowser as r,scrubUserPathsBrowser as s};
2
- //# sourceMappingURL=browser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser.js","sources":["../../src/Utils/IntegrationsBrowser.ts","../../src/Utils/ScrubsBrowser.ts"],"sourcesContent":["import type { StackFrame } from '@sentry/browser';\nimport { rewriteFramesIntegration } from '@sentry/browser';\nimport type { Integration } from '@sentry/core';\n\nexport const rewriteFramesIntegrationBrowser = (): Integration =>\n rewriteFramesIntegration({\n // eslint-disable-next-line spellcheck/spell-checker\n iteratee: (frame: StackFrame): StackFrame => {\n const f: StackFrame = { ...(frame as any) } as any;\n if (!f.filename) return f;\n\n const name: string = String(f.filename).replace(/\\\\/g, '/');\n // already normalized\n if (name.startsWith('app:///')) return f;\n\n // Prefer the LAST \"/dist/\" occurrence so nested paths like\n // \".../dist/mac-arm64/.../app.asar/dist/dist-desktop/...\" map to\n // \"app:///dist/dist-desktop/...\" which matches uploaded urlPrefix/app paths.\n const cutToLastDist = (p: string): string | null => {\n const idx: number = p.lastIndexOf('/dist/');\n if (idx < 0) return null;\n return p.slice(idx).replace(/^\\/+/, '');\n };\n\n const relFromLast = cutToLastDist(name);\n if (relFromLast) {\n // eslint-disable-next-line functional/immutable-data\n (f as any).filename = `app:///${relFromLast}`;\n if (f.abs_path) {\n const abs: string = String(f.abs_path).replace(/\\\\/g, '/');\n const absRel: string | null = cutToLastDist(abs);\n if (absRel) {\n // eslint-disable-next-line functional/immutable-data\n (f as any).abs_path = `app:///${absRel}`;\n }\n }\n return f;\n }\n\n return f;\n }\n });\n","import { HiddenField } from '@Anarchy/Tracking/Constants';\nimport type { ErrorEvent } from '@sentry/browser';\n\nconst pathRegexps: ReadonlyArray<[RegExp, string]> = [\n // macOS: /Users/<name>/...\n [/(\\/Users)\\/[^/]+/g, '$1/<home>'],\n\n // Linux: /home/<name>/... and /var/home/<name>/...\n [/(\\/home)\\/[^/]+/g, '$1/<home>'],\n [/(\\/var\\/home)\\/[^/]+/g, '$1/<home>'],\n\n // Windows: C:\\\\Users\\\\<name>\\\\... (any drive letter)\n [/([A-Za-z]:\\\\Users)\\\\[^\\\\]+/g, '$1\\\\<home>'],\n\n // Old Windows: C:\\\\Documents and Settings\\\\<name>\\\\...\n [/([A-Za-z]:\\\\Documents and Settings)\\\\[^\\\\]+/g, '$1\\\\<home>'],\n\n // file:// URLs: file:///Users/<name>/..., file:///home/<name>/..., file://C:/Users/<name>/...\n [/(file:\\/\\/\\/Users)\\/[^/]+/g, '$1/<home>'],\n [/(file:\\/\\/\\/home)\\/[^/]+/g, '$1/<home>'],\n [/(file:\\/\\/\\/var\\/home)\\/[^/]+/g, '$1/<home>'],\n [/(file:\\/\\/[A-Za-z]:\\/Users)\\/[^/]+/g, '$1/<home>']\n];\n\nfunction replaceUserPaths(s?: unknown, replacement: string = '<home>'): string | unknown {\n if (typeof s !== 'string') return s;\n return pathRegexps.reduce((acc: string, [re, tpl]) => acc.replace(re, tpl.replace('<home>', replacement)), s);\n}\n\nexport function scrubUserPathsBrowser(event: ErrorEvent): ErrorEvent {\n const replacement = HiddenField;\n\n const message = event.message ? (replaceUserPaths(event.message, replacement) as string) : event.message;\n\n const valuesIn = event.exception?.values as ReadonlyArray<any> | undefined;\n const valuesOut = valuesIn?.map((v: any) => {\n const framesIn: ReadonlyArray<any> | undefined = v?.stacktrace?.frames;\n const framesOut = (framesIn as any[] | undefined)?.map((f: any) => ({\n ...f,\n ...(f?.filename ? { filename: replaceUserPaths(f.filename, replacement) } : {}),\n ...(f?.abs_path ? { abs_path: replaceUserPaths(f.abs_path, replacement) } : {}),\n ...(f?.module ? { module: replaceUserPaths(f.module, replacement) } : {}),\n ...(f?.function ? { function: replaceUserPaths(f.function, replacement) } : {})\n }));\n\n const stacktraceOut = v?.stacktrace ? { ...v.stacktrace, ...(framesOut ? { frames: framesOut } : {}) } : v?.stacktrace;\n\n return {\n ...v,\n ...(v?.value ? { value: replaceUserPaths(v.value, replacement) } : {}),\n ...(v?.type ? { type: replaceUserPaths(v.type, replacement) } : {}),\n ...(v?.stacktrace ? { stacktrace: stacktraceOut } : {})\n };\n });\n\n const exceptionOut = event.exception ? { ...event.exception, ...(valuesOut ? { values: valuesOut } : {}) } : event.exception;\n\n const requestOut = event.request\n ? {\n ...event.request,\n ...(event.request.url ? { url: replaceUserPaths(event.request.url, replacement) as string } : {})\n }\n : event.request;\n\n const extraIn = event.extra as Record<string, unknown> | undefined;\n const extraOut = extraIn ? Object.fromEntries(Object.entries(extraIn).map(([k, v]) => [k, typeof v === 'string' ? replaceUserPaths(v, replacement) : v])) : extraIn;\n\n const breadcrumbsIn = event.breadcrumbs as any[] | undefined;\n const breadcrumbsOut = breadcrumbsIn?.map((b: any) => {\n const dataIn = b?.data as Record<string, unknown> | undefined;\n const dataOut = dataIn ? Object.fromEntries(Object.entries(dataIn).map(([key, val]) => [key, typeof val === 'string' ? replaceUserPaths(val as string, replacement) : val])) : dataIn;\n\n return {\n ...b,\n ...(b?.message ? { message: replaceUserPaths(b.message, replacement) } : {}),\n ...(b?.data && typeof b.data === 'object' ? { data: dataOut } : {})\n };\n });\n\n return {\n ...event,\n ...(message ? { message } : {}),\n ...(exceptionOut ? { exception: exceptionOut as any } : {}),\n ...(requestOut ? { request: requestOut as any } : {}),\n ...(extraOut !== undefined ? { extra: extraOut as any } : {}),\n ...(breadcrumbsOut ? { breadcrumbs: breadcrumbsOut as any } : {})\n };\n}\n"],"names":["rewriteFramesIntegrationBrowser","rewriteFramesIntegration","iteratee","frame","f","filename","name","String","replace","startsWith","cutToLastDist","p","idx","lastIndexOf","slice","relFromLast","abs_path","absRel","pathRegexps","replaceUserPaths","s","replacement","reduce","acc","re","tpl","scrubUserPathsBrowser","event","HiddenField","message","valuesIn","exception","values","valuesOut","map","v","framesIn","stacktrace","frames","framesOut","module","function","stacktraceOut","value","type","exceptionOut","requestOut","request","url","extraIn","extra","extraOut","Object","fromEntries","entries","k","breadcrumbsIn","breadcrumbs","breadcrumbsOut","b","dataIn","data","dataOut","key","val"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- const HiddenField="hidden",isDefined=value=>null!=value,isString=value=>"string"==typeof value;function mutateEventWithDynamicData(result,dynamicContextFn,dynamicTagsFn){if(isDefined(dynamicContextFn)&&(result.contexts={...result.contexts??{},extra:dynamicContextFn()}),isDefined(dynamicTagsFn)){const dynamicTags=dynamicTagsFn();Object.keys(dynamicTags).forEach(key=>{result.tags={...result.tags??{},[key]:dynamicTags[key]}})}}function scrubEvent(event){return event.user||(event.user=null),event.request&&(event.request={...event.request,url:"hidden",headers:{...event.request?.headers,url:"hidden",Referer:"hidden",referer:"hidden"}},delete event.request.headers?.Cookie,delete event.request.headers?.cookie),event.contexts?.geo&&delete event.contexts.geo,event.contexts?.Geography&&delete event.contexts.Geography,event.contexts?.geography&&delete event.contexts.geography,event.breadcrumbs||(event.breadcrumbs=void 0),event}export{HiddenField as H,isString as a,isDefined as i,mutateEventWithDynamicData as m,scrubEvent as s};
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../src/Constants/Masks.ts","../../../anarchy-shared/src/Utils/CheckUtils.ts","../../src/Utils/DynamicDataUtils.ts","../../src/Utils/ScrubEvent.ts"],"sourcesContent":["export const HiddenField = 'hidden' as const;\n","export const isDefined = <T>(value: T | undefined | null): value is T => <T>value !== undefined && <T>value !== null;\n\nexport const isAllDefined = <T>(values: ReadonlyArray<T | undefined | null>): values is ReadonlyArray<T> => !values.some(isNotDefined);\n\nexport const isNotDefined = <T>(value: T | undefined | null): value is undefined | null => !isDefined<T>(value);\n\nexport const isAllNotDefined = <T>(values: ReadonlyArray<T | undefined | null>): values is ReadonlyArray<undefined | null> => values.every(isNotDefined);\n\nexport const isString = (value: unknown): value is string => typeof value === 'string';\n\nexport const isBoolean = (value: unknown): value is boolean => typeof value === 'boolean';\n","import { isDefined } from '@Anarchy/Shared/Utils';\nimport type { ErrorEvent, Primitive } from '@sentry/core';\n\nexport function mutateEventWithDynamicData(result: ErrorEvent, dynamicContextFn?: () => Record<string, any>, dynamicTagsFn?: () => Record<string, Primitive>): void {\n // eslint-disable-next-line functional/immutable-data\n if (isDefined(dynamicContextFn)) result.contexts = { ...(result.contexts ?? {}), extra: dynamicContextFn() };\n if (isDefined(dynamicTagsFn)) {\n const dynamicTags = dynamicTagsFn();\n // eslint-disable-next-line functional/immutable-data\n Object.keys(dynamicTags).forEach((key: string): void => void (result.tags = { ...(result.tags ?? {}), [key]: dynamicTags[key] }));\n }\n}\n","import { HiddenField } from '@Anarchy/Tracking/Constants';\nimport type { ErrorEvent } from '@sentry/core';\n\nexport function scrubEvent(event: ErrorEvent): ErrorEvent {\n // eslint-disable-next-line functional/immutable-data\n if (!event.user) event.user = null as any;\n\n if (event.request) {\n // eslint-disable-next-line functional/immutable-data\n event.request = {\n ...event.request,\n url: HiddenField,\n headers: {\n ...event.request?.headers,\n url: HiddenField,\n Referer: HiddenField,\n referer: HiddenField\n }\n };\n\n delete (event.request.headers as any)?.Cookie;\n delete (event.request.headers as any)?.cookie;\n }\n\n // eslint-disable-next-line functional/immutable-data\n if ((event as any).contexts?.geo) delete (event as any).contexts.geo;\n // eslint-disable-next-line functional/immutable-data\n if ((event as any).contexts?.Geography) delete (event as any).contexts.Geography;\n // eslint-disable-next-line functional/immutable-data\n if ((event as any).contexts?.geography) delete (event as any).contexts.geography;\n\n // eslint-disable-next-line functional/immutable-data\n if (!event.breadcrumbs) event.breadcrumbs = undefined;\n\n return event;\n}\n"],"names":["HiddenField","isDefined","value","isString","mutateEventWithDynamicData","result","dynamicContextFn","dynamicTagsFn","contexts","extra","dynamicTags","Object","keys","forEach","key","tags","scrubEvent","event","user","request","url","headers","Referer","referer","Cookie","cookie","geo","Geography","geography","breadcrumbs"],"mappings":"AAAO,MAAMA,YAAc,SCAdC,UAAgBC,OAA+CA,YAQ/DC,SAAYD,OAAqD,iBAAVA,MCL7D,SAASE,2BAA2BC,OAAoBC,iBAA8CC,eAG3G,GADIN,UAAUK,oBAAmBD,OAAOG,SAAW,IAAMH,OAAOG,UAAY,CAAA,EAAKC,MAAOH,qBACpFL,UAAUM,eAAgB,CAC5B,MAAMG,YAAcH,gBAEpBI,OAAOC,KAAKF,aAAaG,QAASC,MAA4BT,OAAOU,KAAO,IAAMV,OAAOU,MAAQ,GAAKD,CAACA,KAAMJ,YAAYI,OAC3H,CACF,CCRO,SAASE,WAAWC,OA+BzB,OA7BKA,MAAMC,OAAMD,MAAMC,KAAO,MAE1BD,MAAME,UAERF,MAAME,QAAU,IACXF,MAAME,QACTC,IHXqB,SGYrBC,QAAS,IACJJ,MAAME,SAASE,QAClBD,IHdmB,SGenBE,QHfmB,SGgBnBC,QHhBmB,kBGoBfN,MAAME,QAAQE,SAAiBG,cAC/BP,MAAME,QAAQE,SAAiBI,QAIpCR,MAAcT,UAAUkB,YAAaT,MAAcT,SAASkB,IAE5DT,MAAcT,UAAUmB,kBAAmBV,MAAcT,SAASmB,UAElEV,MAAcT,UAAUoB,kBAAmBX,MAAcT,SAASoB,UAGlEX,MAAMY,cAAaZ,MAAMY,iBAAc,GAErCZ,KACT"}