@hellpig/anarchy-tracking 1.7.2 → 1.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +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"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Services/BrowserTrackingService.ts"],"sourcesContent":["import { isDefined, parseDistName } from '@hellpig/anarchy-shared/Utils';\nimport type { TMetaData, TTrackingService } from '@hellpig/anarchy-tracking/Models';\nimport { mutateEventWithDynamicData } from '@hellpig/anarchy-tracking/Utils/DynamicDataUtils';\nimport { rewriteFramesIntegrationBrowser } from '@hellpig/anarchy-tracking/Utils/IntegrationsBrowser';\nimport { scrubEvent } from '@hellpig/anarchy-tracking/Utils/ScrubEvent';\nimport { scrubUserPathsBrowser } from '@hellpig/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"}
@@ -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":"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"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Services/DesktopPreloadTrackingService.ts"],"sourcesContent":["import { isDefined, parseDistName } from '@hellpig/anarchy-shared/Utils';\nimport type { TMetaData, TTrackingService } from '@hellpig/anarchy-tracking/Models';\nimport { mutateEventWithDynamicData } from '@hellpig/anarchy-tracking/Utils/DynamicDataUtils';\nimport { rewriteFramesIntegrationBrowser } from '@hellpig/anarchy-tracking/Utils/IntegrationsBrowser';\nimport { scrubEvent } from '@hellpig/anarchy-tracking/Utils/ScrubEvent';\nimport { scrubUserPathsBrowser } from '@hellpig/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"}
@@ -1 +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"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Services/DesktopTrackingService.ts"],"sourcesContent":["import { isDefined, parseDistName } from '@hellpig/anarchy-shared/Utils';\nimport type { TMetaData, TTrackingService } from '@hellpig/anarchy-tracking/Models';\nimport { mutateEventWithDynamicData } from '@hellpig/anarchy-tracking/Utils/DynamicDataUtils';\nimport { rewriteFramesIntegrationNode } from '@hellpig/anarchy-tracking/Utils/IntegrationsNode';\nimport { scrubEvent } from '@hellpig/anarchy-tracking/Utils/ScrubEvent';\nimport { scrubUserPathsDesktop } from '@hellpig/anarchy-tracking/Utils/ScrubsDesktop';\nimport type { Primitive } from '@sentry/core';\nimport type { ElectronMainOptions, 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":"0gBAUO,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"}
@@ -1,4 +1,4 @@
1
1
  import { TMetaData, TTrackingService } from '../Models';
2
2
  import { Primitive } from '@sentry/core';
3
- import { ElectronMainOptions } from '@sentry/electron/esm/main';
3
+ import { ElectronMainOptions } from '@sentry/electron/main';
4
4
  export declare function DesktopTrackingService(options?: ElectronMainOptions, metaData?: TMetaData, dynamicContextFn?: () => Record<string, any>, dynamicTagsFn?: () => Record<string, Primitive>): TTrackingService;
@@ -1 +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"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Utils/DynamicDataUtils.ts"],"sourcesContent":["import { isDefined } from '@hellpig/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"}
@@ -1 +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"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Utils/IntegrationsNode.ts"],"sourcesContent":["import { toPosix } from '@hellpig/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"}
@@ -1 +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"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Utils/ScrubEvent.ts"],"sourcesContent":["import { HiddenField } from '@hellpig/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"}
@@ -1 +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"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Utils/ScrubsBrowser.ts"],"sourcesContent":["import { HiddenField } from '@hellpig/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"}
@@ -1 +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"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../src/Utils/ScrubsDesktop.ts"],"sourcesContent":["import os from 'node:os';\n\nimport { isDefined, isString } from '@hellpig/anarchy-shared/Utils';\nimport { HiddenField } from '@hellpig/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"}
@@ -1 +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
+ {"version":3,"file":"index.es.js","sources":["../../../../../../anarchy-shared/src/Utils/FileUtils.ts"],"sourcesContent":["import { FileSizes } from '@hellpig/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"}
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.7.2",
5
+ "version": "1.7.4",
6
6
  "type": "module",
7
7
  "repository": {
8
8
  "type": "git",