@webex/internal-plugin-metrics 3.12.0-llmrefactor.1 → 3.12.0-llmrefactor.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 (30) hide show
  1. package/dist/index.js.map +1 -1
  2. package/dist/metrics.js +1 -1
  3. package/dist/metrics.types.js.map +1 -1
  4. package/dist/new-metrics.js +44 -11
  5. package/dist/new-metrics.js.map +1 -1
  6. package/dist/privacy-and-security-permission-enricher/constants.js +18 -0
  7. package/dist/privacy-and-security-permission-enricher/constants.js.map +1 -0
  8. package/dist/privacy-and-security-permission-enricher/index.js +143 -0
  9. package/dist/privacy-and-security-permission-enricher/index.js.map +1 -0
  10. package/dist/privacy-and-security-permission-enricher/types.js +7 -0
  11. package/dist/privacy-and-security-permission-enricher/types.js.map +1 -0
  12. package/dist/privacy-and-security-permission-enricher/utils.js +71 -0
  13. package/dist/privacy-and-security-permission-enricher/utils.js.map +1 -0
  14. package/dist/types/index.d.ts +2 -2
  15. package/dist/types/metrics.types.d.ts +3 -0
  16. package/dist/types/new-metrics.d.ts +13 -1
  17. package/dist/types/privacy-and-security-permission-enricher/constants.d.ts +6 -0
  18. package/dist/types/privacy-and-security-permission-enricher/index.d.ts +40 -0
  19. package/dist/types/privacy-and-security-permission-enricher/types.d.ts +14 -0
  20. package/dist/types/privacy-and-security-permission-enricher/utils.d.ts +5 -0
  21. package/package.json +7 -7
  22. package/src/index.ts +2 -0
  23. package/src/metrics.types.ts +9 -0
  24. package/src/new-metrics.ts +41 -2
  25. package/src/privacy-and-security-permission-enricher/constants.ts +33 -0
  26. package/src/privacy-and-security-permission-enricher/index.ts +142 -0
  27. package/src/privacy-and-security-permission-enricher/types.ts +21 -0
  28. package/src/privacy-and-security-permission-enricher/utils.ts +82 -0
  29. package/test/unit/spec/new-metrics.ts +144 -48
  30. package/test/unit/spec/privacy-and-security-permission-enricher.ts +318 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_webexCore","require","_metrics","_interopRequireWildcard","_config","_interopRequireDefault","_newMetrics","Utils","exports","AutomatedUserUtils","CALL_DIAGNOSTIC_CONFIG","CallDiagnosticUtils","_callDiagnosticMetrics2","_callDiagnosticMetricsLatencies","_behavioralMetrics","_operationalMetrics","_businessMetrics","_rtcMetrics","_preloginMetrics","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","registerInternalPlugin","Metrics","config","NewMetrics"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {registerInternalPlugin} from '@webex/webex-core';\n\nimport Metrics from './metrics';\nimport config from './config';\nimport NewMetrics from './new-metrics';\nimport * as Utils from './utils';\nimport * as AutomatedUserUtils from './automated-user';\nimport {\n ClientEvent,\n ClientEventLeaveReason,\n SubmitBehavioralEvent,\n SubmitClientEvent,\n SubmitInternalEvent,\n SubmitOperationalEvent,\n SubmitBusinessEvent,\n SubmitMQE,\n PreComputedLatencies,\n SubmitFeatureEvent,\n LocusSyncLatencyEventName,\n} from './metrics.types';\nimport * as CALL_DIAGNOSTIC_CONFIG from './call-diagnostic/config';\nimport * as CallDiagnosticUtils from './call-diagnostic/call-diagnostic-metrics.util';\nimport CallDiagnosticMetrics from './call-diagnostic/call-diagnostic-metrics';\nimport CallDiagnosticLatencies from './call-diagnostic/call-diagnostic-metrics-latencies';\nimport BehavioralMetrics from './behavioral-metrics';\nimport OperationalMetrics from './operational-metrics';\nimport BusinessMetrics from './business-metrics';\nimport RtcMetrics from './rtcMetrics';\nimport PreLoginMetrics from './prelogin-metrics';\n\nregisterInternalPlugin('metrics', Metrics, {\n config,\n});\n\nregisterInternalPlugin('newMetrics', NewMetrics, {\n config,\n});\n\nexport {default, getOSNameInternal} from './metrics';\n\nexport {\n config,\n CALL_DIAGNOSTIC_CONFIG,\n AutomatedUserUtils,\n NewMetrics,\n Utils,\n CallDiagnosticUtils,\n CallDiagnosticLatencies,\n CallDiagnosticMetrics,\n BehavioralMetrics,\n OperationalMetrics,\n BusinessMetrics,\n RtcMetrics,\n PreLoginMetrics,\n};\nexport {isAutomatedUser, isAutomatedUserAgent} from './automated-user';\nexport type {\n ClientEvent,\n ClientEventLeaveReason,\n SubmitBehavioralEvent,\n SubmitClientEvent,\n SubmitInternalEvent,\n SubmitMQE,\n SubmitOperationalEvent,\n SubmitBusinessEvent,\n PreComputedLatencies,\n SubmitFeatureEvent,\n LocusSyncLatencyEventName,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAD,sBAAA,CAAAJ,OAAA;AACA,IAAAM,KAAA,GAAAJ,uBAAA,CAAAF,OAAA;AAAiCO,OAAA,CAAAD,KAAA,GAAAA,KAAA;AACjC,IAAAE,kBAAA,GAAAN,uBAAA,CAAAF,OAAA;AAAuDO,OAAA,CAAAC,kBAAA,GAAAA,kBAAA;AAcvD,IAAAC,sBAAA,GAAAP,uBAAA,CAAAF,OAAA;AAAmEO,OAAA,CAAAE,sBAAA,GAAAA,sBAAA;AACnE,IAAAC,mBAAA,GAAAR,uBAAA,CAAAF,OAAA;AAAsFO,OAAA,CAAAG,mBAAA,GAAAA,mBAAA;AACtF,IAAAC,uBAAA,GAAAP,sBAAA,CAAAJ,OAAA;AACA,IAAAY,+BAAA,GAAAR,sBAAA,CAAAJ,OAAA;AACA,IAAAa,kBAAA,GAAAT,sBAAA,CAAAJ,OAAA;AACA,IAAAc,mBAAA,GAAAV,sBAAA,CAAAJ,OAAA;AACA,IAAAe,gBAAA,GAAAX,sBAAA,CAAAJ,OAAA;AACA,IAAAgB,WAAA,GAAAZ,sBAAA,CAAAJ,OAAA;AACA,IAAAiB,gBAAA,GAAAb,sBAAA,CAAAJ,OAAA;AAAiD,SAAAE,wBAAAgB,CAAA,EAAAC,CAAA,6BAAAC,QAAA,MAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAlB,uBAAA,YAAAA,wBAAAgB,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,gBAAAW,OAAA,CAAAX,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAM,GAAA,CAAAZ,CAAA,UAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,GAAAM,CAAA,CAAAQ,GAAA,CAAAd,CAAA,EAAAQ,CAAA,cAAAO,EAAA,IAAAf,CAAA,gBAAAe,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,EAAA,OAAAR,CAAA,IAAAD,CAAA,GAAAY,sBAAA,KAAAC,gCAAA,CAAAnB,CAAA,EAAAe,EAAA,OAAAR,CAAA,CAAAM,GAAA,IAAAN,CAAA,CAAAO,GAAA,IAAAR,CAAA,CAAAE,CAAA,EAAAO,EAAA,EAAAR,CAAA,IAAAC,CAAA,CAAAO,EAAA,IAAAf,CAAA,CAAAe,EAAA,WAAAP,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAhCjD;AACA;AACA;;AAgCA,IAAAmB,iCAAsB,EAAC,SAAS,EAAEC,gBAAO,EAAE;EACzCC,MAAM,EAANA;AACF,CAAC,CAAC;AAEF,IAAAF,iCAAsB,EAAC,YAAY,EAAEG,mBAAU,EAAE;EAC/CD,MAAM,EAANA;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_webexCore","require","_metrics","_interopRequireWildcard","_config","_interopRequireDefault","_newMetrics","Utils","exports","AutomatedUserUtils","CALL_DIAGNOSTIC_CONFIG","CallDiagnosticUtils","_callDiagnosticMetrics2","_callDiagnosticMetricsLatencies","_behavioralMetrics","_operationalMetrics","_businessMetrics","_rtcMetrics","_preloginMetrics","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","registerInternalPlugin","Metrics","config","NewMetrics"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {registerInternalPlugin} from '@webex/webex-core';\n\nimport Metrics from './metrics';\nimport config from './config';\nimport NewMetrics from './new-metrics';\nimport * as Utils from './utils';\nimport * as AutomatedUserUtils from './automated-user';\nimport {\n ClientEvent,\n ClientEventLeaveReason,\n SubmitBehavioralEvent,\n SubmitClientEvent,\n SubmitInternalEvent,\n SubmitOperationalEvent,\n SubmitBusinessEvent,\n SubmitMQE,\n PreComputedLatencies,\n SubmitFeatureEvent,\n LocusSyncLatencyEventName,\n PrivacyAndSecurityPermission,\n} from './metrics.types';\nimport * as CALL_DIAGNOSTIC_CONFIG from './call-diagnostic/config';\nimport * as CallDiagnosticUtils from './call-diagnostic/call-diagnostic-metrics.util';\nimport CallDiagnosticMetrics from './call-diagnostic/call-diagnostic-metrics';\nimport CallDiagnosticLatencies from './call-diagnostic/call-diagnostic-metrics-latencies';\nimport BehavioralMetrics from './behavioral-metrics';\nimport OperationalMetrics from './operational-metrics';\nimport BusinessMetrics from './business-metrics';\nimport RtcMetrics from './rtcMetrics';\nimport PreLoginMetrics from './prelogin-metrics';\n\nregisterInternalPlugin('metrics', Metrics, {\n config,\n});\n\nregisterInternalPlugin('newMetrics', NewMetrics, {\n config,\n});\n\nexport {default, getOSNameInternal} from './metrics';\n\nexport {\n config,\n CALL_DIAGNOSTIC_CONFIG,\n AutomatedUserUtils,\n NewMetrics,\n Utils,\n CallDiagnosticUtils,\n CallDiagnosticLatencies,\n CallDiagnosticMetrics,\n BehavioralMetrics,\n OperationalMetrics,\n BusinessMetrics,\n RtcMetrics,\n PreLoginMetrics,\n};\nexport {isAutomatedUser, isAutomatedUserAgent} from './automated-user';\nexport type {\n ClientEvent,\n ClientEventLeaveReason,\n SubmitBehavioralEvent,\n SubmitClientEvent,\n SubmitInternalEvent,\n SubmitMQE,\n SubmitOperationalEvent,\n SubmitBusinessEvent,\n PreComputedLatencies,\n SubmitFeatureEvent,\n LocusSyncLatencyEventName,\n PrivacyAndSecurityPermission,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAAA,UAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAC,sBAAA,CAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAD,sBAAA,CAAAJ,OAAA;AACA,IAAAM,KAAA,GAAAJ,uBAAA,CAAAF,OAAA;AAAiCO,OAAA,CAAAD,KAAA,GAAAA,KAAA;AACjC,IAAAE,kBAAA,GAAAN,uBAAA,CAAAF,OAAA;AAAuDO,OAAA,CAAAC,kBAAA,GAAAA,kBAAA;AAevD,IAAAC,sBAAA,GAAAP,uBAAA,CAAAF,OAAA;AAAmEO,OAAA,CAAAE,sBAAA,GAAAA,sBAAA;AACnE,IAAAC,mBAAA,GAAAR,uBAAA,CAAAF,OAAA;AAAsFO,OAAA,CAAAG,mBAAA,GAAAA,mBAAA;AACtF,IAAAC,uBAAA,GAAAP,sBAAA,CAAAJ,OAAA;AACA,IAAAY,+BAAA,GAAAR,sBAAA,CAAAJ,OAAA;AACA,IAAAa,kBAAA,GAAAT,sBAAA,CAAAJ,OAAA;AACA,IAAAc,mBAAA,GAAAV,sBAAA,CAAAJ,OAAA;AACA,IAAAe,gBAAA,GAAAX,sBAAA,CAAAJ,OAAA;AACA,IAAAgB,WAAA,GAAAZ,sBAAA,CAAAJ,OAAA;AACA,IAAAiB,gBAAA,GAAAb,sBAAA,CAAAJ,OAAA;AAAiD,SAAAE,wBAAAgB,CAAA,EAAAC,CAAA,6BAAAC,QAAA,MAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAlB,uBAAA,YAAAA,wBAAAgB,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,gBAAAW,OAAA,CAAAX,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAM,GAAA,CAAAZ,CAAA,UAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,GAAAM,CAAA,CAAAQ,GAAA,CAAAd,CAAA,EAAAQ,CAAA,cAAAO,EAAA,IAAAf,CAAA,gBAAAe,EAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,EAAA,OAAAR,CAAA,IAAAD,CAAA,GAAAY,sBAAA,KAAAC,gCAAA,CAAAnB,CAAA,EAAAe,EAAA,OAAAR,CAAA,CAAAM,GAAA,IAAAN,CAAA,CAAAO,GAAA,IAAAR,CAAA,CAAAE,CAAA,EAAAO,EAAA,EAAAR,CAAA,IAAAC,CAAA,CAAAO,EAAA,IAAAf,CAAA,CAAAe,EAAA,WAAAP,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAjCjD;AACA;AACA;;AAiCA,IAAAmB,iCAAsB,EAAC,SAAS,EAAEC,gBAAO,EAAE;EACzCC,MAAM,EAANA;AACF,CAAC,CAAC;AAEF,IAAAF,iCAAsB,EAAC,YAAY,EAAEG,mBAAU,EAAE;EAC/CD,MAAM,EAANA;AACF,CAAC,CAAC","ignoreList":[]}
package/dist/metrics.js CHANGED
@@ -147,7 +147,7 @@ var Metrics = _webexCore.WebexPlugin.extend({
147
147
  }
148
148
  });
149
149
  },
150
- version: "3.12.0-llmrefactor.1"
150
+ version: "3.12.0-llmrefactor.2"
151
151
  });
152
152
  var _default = exports.default = Metrics;
153
153
  //# sourceMappingURL=metrics.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["LOCUS_SYNC_LATENCY_EVENT_NAMES","exports"],"sources":["metrics.types.ts"],"sourcesContent":["import type {\n ClientEvent as RawClientEvent,\n Event as RawEvent,\n MediaQualityEvent as RawMediaQualityEvent,\n FeatureEvent as RawFeatureEvent,\n} from '@webex/event-dictionary-ts';\n\nexport type Event = Omit<RawEvent, 'event'> & {\n event: RawClientEvent | RawMediaQualityEvent | RawFeatureEvent;\n};\n\nexport type ClientEventError = NonNullable<RawClientEvent['errors']>[0];\n\nexport type EnvironmentType = NonNullable<RawEvent['origin']['environment']>;\n\nexport type NewEnvironmentType = NonNullable<RawEvent['origin']['newEnvironment']>;\n\nexport type ClientLaunchMethodType = NonNullable<\n RawEvent['origin']['clientInfo']\n>['clientLaunchMethod'];\n\nexport type ClientUserNameInput = NonNullable<RawClientEvent['userNameInput']>;\n\nexport type ClientEmailInput = NonNullable<RawClientEvent['emailInput']>;\n\nexport type BrowserLaunchMethodType = NonNullable<\n RawEvent['origin']['clientInfo']\n>['browserLaunchMethod'];\n\nexport type MetricEventProduct = 'webex' | 'wxcc_desktop' | 'wxcc_crm' | 'wxcc_sdk';\n\nexport type MetricEventAgent = 'user' | 'browser' | 'system' | 'sdk' | 'redux' | 'service' | 'api';\n\nexport type MetricEventVerb =\n | 'abort'\n | 'accept'\n | 'activate'\n | 'apply'\n | 'answer'\n | 'authorize'\n | 'build'\n | 'cancel'\n | 'change'\n | 'click'\n | 'close'\n | 'complete'\n | 'connect'\n | 'create'\n | 'deactivate'\n | 'decrypt'\n | 'delete'\n | 'deliver'\n | 'destroy'\n | 'disable'\n | 'disconnect'\n | 'dismiss'\n | 'display'\n | 'download'\n | 'edit'\n | 'enable'\n | 'encrypt'\n | 'end'\n | 'expire'\n | 'fail'\n | 'fetch'\n | 'fire'\n | 'generate'\n | 'get'\n | 'hide'\n | 'hover'\n | 'ignore'\n | 'initialize'\n | 'initiate'\n | 'invalidate'\n | 'join'\n | 'list'\n | 'load'\n | 'login'\n | 'logout'\n | 'notify'\n | 'offer'\n | 'open'\n | 'press'\n | 'receive'\n | 'refer'\n | 'refresh'\n | 'register'\n | 'release'\n | 'reload'\n | 'reject'\n | 'request'\n | 'reset'\n | 'resize'\n | 'respond'\n | 'retry'\n | 'revoke'\n | 'save'\n | 'search'\n | 'select'\n | 'send'\n | 'set'\n | 'sign'\n | 'start'\n | 'submit'\n | 'switch'\n | 'sync'\n | 'toggle'\n | 'transfer'\n | 'unregister'\n | 'update'\n | 'upload'\n | 'use'\n | 'validate'\n | 'view'\n | 'visit'\n | 'wait'\n | 'warn'\n | 'exit';\n\nexport type MetricEventJoinFlowVersion = 'Other' | 'NewFTE';\nexport type MetricEventMeetingJoinPhase = 'pre-join' | 'join' | 'in-meeting';\n\nexport type SubmitClientEventOptions = {\n meetingId?: string;\n mediaConnections?: any[];\n rawError?: any;\n correlationId?: string;\n sessionCorrelationId?: string;\n preLoginId?: string;\n environment?: EnvironmentType;\n newEnvironmentType?: NewEnvironmentType;\n clientLaunchMethod?: ClientLaunchMethodType;\n browserLaunchMethod?: BrowserLaunchMethodType;\n webexConferenceIdStr?: string;\n globalMeetingId?: string;\n joinFlowVersion?: MetricEventJoinFlowVersion;\n meetingJoinPhase?: MetricEventMeetingJoinPhase;\n triggeredTime?: string;\n emailInput?: ClientEmailInput;\n userNameInput?: ClientUserNameInput;\n vendorId?: string;\n};\n\nexport type SubmitMQEOptions = {\n meetingId: string;\n mediaConnections?: any[];\n networkType?: Event['origin']['networkType'];\n webexConferenceIdStr?: string;\n globalMeetingId?: string;\n};\n\nexport const LOCUS_SYNC_LATENCY_EVENT_NAMES = [\n 'internal.client.locus.sync.start',\n 'internal.client.locus.hashtree.request',\n 'internal.client.locus.hashtree.response',\n 'internal.client.locus.sync.request',\n 'internal.client.locus.sync.response',\n 'internal.client.locus.sync.message.received',\n] as const;\n\nexport type LocusSyncLatencyEventName = (typeof LOCUS_SYNC_LATENCY_EVENT_NAMES)[number];\n\nexport type InternalEvent = {\n name:\n | 'internal.client.meetinginfo.request'\n | 'internal.client.meetinginfo.response'\n | 'internal.register.device.request'\n | 'internal.register.device.response'\n | 'internal.reset.join.latencies'\n | 'internal.host.meeting.participant.admitted'\n | 'internal.client.meeting.interstitial-window.showed'\n | 'internal.client.interstitial-window.click.joinbutton'\n | 'internal.client.add-media.turn-discovery.start'\n | 'internal.client.add-media.turn-discovery.end'\n | 'internal.client.share.initiated'\n | 'internal.client.share.stopped'\n | LocusSyncLatencyEventName;\n\n payload?: never;\n options?: never;\n};\n\nexport interface ClientEvent {\n name: RawClientEvent['name'];\n payload?: RawClientEvent;\n options?: SubmitClientEventOptions;\n}\n\nexport interface DeviceContext {\n app: {version: string};\n device: {id: string};\n locale: string;\n os: {\n name: string;\n version: string;\n };\n}\n\nexport type MetricType = 'behavioral' | 'operational' | 'business';\n\nexport type Table = 'wbxapp_callend_metrics' | 'business_metrics' | 'business_ucf' | 'default';\n\ntype InternalEventPayload = string | number | boolean;\nexport type EventPayload = Record<string, InternalEventPayload>;\nexport type BehavioralEventPayload = EventPayload; // for compatibilty, can be remove after wxcc-desktop did change their imports.\n\nexport interface BusinessEventPayload {\n metricName: string;\n timestamp: number;\n context: DeviceContext;\n browserDetails: object;\n value: EventPayload;\n}\n\nexport interface BusinessEvent {\n type: string[];\n eventPayload: BusinessEventPayload;\n}\n\nexport interface TaggedEvent {\n context: DeviceContext;\n metricName: string;\n tags: EventPayload;\n timestamp: number;\n type: [MetricType];\n}\n\nexport type BehavioralEvent = TaggedEvent;\nexport type OperationalEvent = TaggedEvent;\n\nexport interface FeatureEvent {\n name: RawFeatureEvent['name'];\n payload?: RawFeatureEvent;\n options?: SubmitClientEventOptions;\n}\n\nexport interface MediaQualityEvent {\n name: RawMediaQualityEvent['name'];\n payload?: RawMediaQualityEvent;\n options: SubmitMQEOptions;\n}\n\nexport type RecursivePartial<T> = {\n [P in keyof T]?: T[P] extends (infer U)[]\n ? RecursivePartial<U>[]\n : T[P] extends object\n ? RecursivePartial<T[P]>\n : T[P];\n};\n\nexport type MetricEventNames =\n | InternalEvent['name']\n | ClientEvent['name']\n | BehavioralEvent['metricName']\n | OperationalEvent['metricName']\n | BusinessEvent['eventPayload']['metricName']\n | FeatureEvent['name']\n | MediaQualityEvent['name'];\n\nexport type ClientInfo = NonNullable<RawEvent['origin']['clientInfo']>;\nexport type ClientType = NonNullable<RawEvent['origin']['clientInfo']>['clientType'];\nexport type SubClientType = NonNullable<RawEvent['origin']['clientInfo']>['subClientType'];\nexport type NetworkType = NonNullable<RawEvent['origin']>['networkType'];\n\nexport type ClientSubServiceType = ClientEvent['payload']['webexSubServiceType'];\nexport type ClientEventPayload = RecursivePartial<ClientEvent['payload']>;\nexport type ClientEventLeaveReason = ClientEvent['payload']['leaveReason'];\nexport type ClientEventPayloadError = ClientEvent['payload']['errors'];\n\nexport type ClientFeatureEventPayload = RecursivePartial<FeatureEvent['payload']>;\n\nexport type MediaQualityEventAudioSetupDelayPayload = NonNullable<\n MediaQualityEvent['payload']\n>['audioSetupDelay'];\nexport type MediaQualityEventVideoSetupDelayPayload = NonNullable<\n MediaQualityEvent['payload']\n>['videoSetupDelay'];\n\nexport type SubmitMQEPayload = RecursivePartial<MediaQualityEvent['payload']> & {\n intervals: NonNullable<MediaQualityEvent['payload']>['intervals'];\n};\n\nexport type SubmitInternalEvent = (args: {\n name: InternalEvent['name'];\n payload?: RecursivePartial<InternalEvent['payload']>;\n options?: any;\n}) => void;\n\nexport type SubmitBehavioralEvent = (args: {\n product: MetricEventProduct;\n agent: MetricEventAgent;\n target: string;\n verb: MetricEventVerb;\n payload?: EventPayload;\n}) => void;\n\nexport type SubmitClientEvent = (args: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n}) => Promise<any>;\n\nexport type SubmitOperationalEvent = (args: {\n name: OperationalEvent['metricName'];\n payload: EventPayload;\n}) => void;\n\nexport type SubmitBusinessEvent = (args: {\n name: OperationalEvent['metricName'];\n payload: EventPayload;\n metadata?: EventPayload;\n table?: Table;\n}) => void;\n\nexport type SubmitMQE = (args: {\n name: MediaQualityEvent['name'];\n payload: SubmitMQEPayload;\n options: any;\n}) => void;\n\nexport type BuildClientEventFetchRequestOptions = (args: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n}) => Promise<any>;\n\nexport type PreComputedLatencies =\n | 'internal.client.pageJMT'\n | 'internal.download.time'\n | 'internal.get.cluster.time'\n | 'internal.click.to.interstitial'\n | 'internal.click.to.interstitial.with.user.delay'\n | 'internal.click.to.interstitial.for.client.jmt'\n | 'internal.refresh.captcha.time'\n | 'internal.exchange.ci.token.time'\n | 'internal.get.u2c.time'\n | 'internal.call.init.join.req'\n | 'internal.other.app.api.time'\n | 'internal.api.fetch.intelligence.models'\n | 'internal.client.locus.sync.random.backoff';\n\nexport interface IdType {\n meetingId?: string;\n callId?: string;\n}\n\nexport interface IMetricsAttributes {\n type: string;\n version: string;\n userId: string;\n correlationId: string;\n connectionId: string;\n data: any[];\n meetingId?: string;\n callId?: string;\n}\n\nexport interface DelayedClientEvent {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n}\n\nexport type SubmitFeatureEvent = (args: {\n name: FeatureEvent['name'];\n payload?: RecursivePartial<FeatureEvent['payload']>;\n options?: SubmitClientEventOptions;\n}) => Promise<any>;\n\nexport interface DelayedClientFeatureEvent {\n name: FeatureEvent['name'];\n payload?: RecursivePartial<FeatureEvent['payload']>;\n options?: SubmitClientEventOptions;\n}\n"],"mappings":";;;;;;;AAuJO,IAAMA,8BAA8B,GAAAC,OAAA,CAAAD,8BAAA,GAAG,CAC5C,kCAAkC,EAClC,wCAAwC,EACxC,yCAAyC,EACzC,oCAAoC,EACpC,qCAAqC,EACrC,6CAA6C,CACrC;;AA8CyC","ignoreList":[]}
1
+ {"version":3,"names":["LOCUS_SYNC_LATENCY_EVENT_NAMES","exports"],"sources":["metrics.types.ts"],"sourcesContent":["import type {\n ClientEvent as RawClientEvent,\n Event as RawEvent,\n MediaQualityEvent as RawMediaQualityEvent,\n FeatureEvent as RawFeatureEvent,\n} from '@webex/event-dictionary-ts';\n\nexport type Event = Omit<RawEvent, 'event'> & {\n event: RawClientEvent | RawMediaQualityEvent | RawFeatureEvent;\n};\n\nexport type ClientEventError = NonNullable<RawClientEvent['errors']>[0];\n\nexport type EnvironmentType = NonNullable<RawEvent['origin']['environment']>;\n\nexport type NewEnvironmentType = NonNullable<RawEvent['origin']['newEnvironment']>;\n\nexport type ClientLaunchMethodType = NonNullable<\n RawEvent['origin']['clientInfo']\n>['clientLaunchMethod'];\n\nexport type ClientUserNameInput = NonNullable<RawClientEvent['userNameInput']>;\n\nexport type ClientEmailInput = NonNullable<RawClientEvent['emailInput']>;\n\nexport type PrivacyAndSecurityPermission = NonNullable<\n RawClientEvent['privacyAndSecurityPermission']\n>;\n\nexport type PrivacyAndSecurityPermissionResource = keyof PrivacyAndSecurityPermission;\n\nexport type PrivacyAndSecurityPermissionState =\n PrivacyAndSecurityPermission[PrivacyAndSecurityPermissionResource];\n\nexport type BrowserLaunchMethodType = NonNullable<\n RawEvent['origin']['clientInfo']\n>['browserLaunchMethod'];\n\nexport type MetricEventProduct = 'webex' | 'wxcc_desktop' | 'wxcc_crm' | 'wxcc_sdk';\n\nexport type MetricEventAgent = 'user' | 'browser' | 'system' | 'sdk' | 'redux' | 'service' | 'api';\n\nexport type MetricEventVerb =\n | 'abort'\n | 'accept'\n | 'activate'\n | 'apply'\n | 'answer'\n | 'authorize'\n | 'build'\n | 'cancel'\n | 'change'\n | 'click'\n | 'close'\n | 'complete'\n | 'connect'\n | 'create'\n | 'deactivate'\n | 'decrypt'\n | 'delete'\n | 'deliver'\n | 'destroy'\n | 'disable'\n | 'disconnect'\n | 'dismiss'\n | 'display'\n | 'download'\n | 'edit'\n | 'enable'\n | 'encrypt'\n | 'end'\n | 'expire'\n | 'fail'\n | 'fetch'\n | 'fire'\n | 'generate'\n | 'get'\n | 'hide'\n | 'hover'\n | 'ignore'\n | 'initialize'\n | 'initiate'\n | 'invalidate'\n | 'join'\n | 'list'\n | 'load'\n | 'login'\n | 'logout'\n | 'notify'\n | 'offer'\n | 'open'\n | 'press'\n | 'receive'\n | 'refer'\n | 'refresh'\n | 'register'\n | 'release'\n | 'reload'\n | 'reject'\n | 'request'\n | 'reset'\n | 'resize'\n | 'respond'\n | 'retry'\n | 'revoke'\n | 'save'\n | 'search'\n | 'select'\n | 'send'\n | 'set'\n | 'sign'\n | 'start'\n | 'submit'\n | 'switch'\n | 'sync'\n | 'toggle'\n | 'transfer'\n | 'unregister'\n | 'update'\n | 'upload'\n | 'use'\n | 'validate'\n | 'view'\n | 'visit'\n | 'wait'\n | 'warn'\n | 'exit';\n\nexport type MetricEventJoinFlowVersion = 'Other' | 'NewFTE';\nexport type MetricEventMeetingJoinPhase = 'pre-join' | 'join' | 'in-meeting';\n\nexport type SubmitClientEventOptions = {\n meetingId?: string;\n mediaConnections?: any[];\n rawError?: any;\n correlationId?: string;\n sessionCorrelationId?: string;\n preLoginId?: string;\n environment?: EnvironmentType;\n newEnvironmentType?: NewEnvironmentType;\n clientLaunchMethod?: ClientLaunchMethodType;\n browserLaunchMethod?: BrowserLaunchMethodType;\n webexConferenceIdStr?: string;\n globalMeetingId?: string;\n joinFlowVersion?: MetricEventJoinFlowVersion;\n meetingJoinPhase?: MetricEventMeetingJoinPhase;\n triggeredTime?: string;\n emailInput?: ClientEmailInput;\n userNameInput?: ClientUserNameInput;\n vendorId?: string;\n};\n\nexport type SubmitMQEOptions = {\n meetingId: string;\n mediaConnections?: any[];\n networkType?: Event['origin']['networkType'];\n webexConferenceIdStr?: string;\n globalMeetingId?: string;\n};\n\nexport const LOCUS_SYNC_LATENCY_EVENT_NAMES = [\n 'internal.client.locus.sync.start',\n 'internal.client.locus.hashtree.request',\n 'internal.client.locus.hashtree.response',\n 'internal.client.locus.sync.request',\n 'internal.client.locus.sync.response',\n 'internal.client.locus.sync.message.received',\n] as const;\n\nexport type LocusSyncLatencyEventName = (typeof LOCUS_SYNC_LATENCY_EVENT_NAMES)[number];\n\nexport type InternalEvent = {\n name:\n | 'internal.client.meetinginfo.request'\n | 'internal.client.meetinginfo.response'\n | 'internal.register.device.request'\n | 'internal.register.device.response'\n | 'internal.reset.join.latencies'\n | 'internal.host.meeting.participant.admitted'\n | 'internal.client.meeting.interstitial-window.showed'\n | 'internal.client.interstitial-window.click.joinbutton'\n | 'internal.client.add-media.turn-discovery.start'\n | 'internal.client.add-media.turn-discovery.end'\n | 'internal.client.share.initiated'\n | 'internal.client.share.stopped'\n | LocusSyncLatencyEventName;\n\n payload?: never;\n options?: never;\n};\n\nexport interface ClientEvent {\n name: RawClientEvent['name'];\n payload?: RawClientEvent;\n options?: SubmitClientEventOptions;\n}\n\nexport interface DeviceContext {\n app: {version: string};\n device: {id: string};\n locale: string;\n os: {\n name: string;\n version: string;\n };\n}\n\nexport type MetricType = 'behavioral' | 'operational' | 'business';\n\nexport type Table = 'wbxapp_callend_metrics' | 'business_metrics' | 'business_ucf' | 'default';\n\ntype InternalEventPayload = string | number | boolean;\nexport type EventPayload = Record<string, InternalEventPayload>;\nexport type BehavioralEventPayload = EventPayload; // for compatibilty, can be remove after wxcc-desktop did change their imports.\n\nexport interface BusinessEventPayload {\n metricName: string;\n timestamp: number;\n context: DeviceContext;\n browserDetails: object;\n value: EventPayload;\n}\n\nexport interface BusinessEvent {\n type: string[];\n eventPayload: BusinessEventPayload;\n}\n\nexport interface TaggedEvent {\n context: DeviceContext;\n metricName: string;\n tags: EventPayload;\n timestamp: number;\n type: [MetricType];\n}\n\nexport type BehavioralEvent = TaggedEvent;\nexport type OperationalEvent = TaggedEvent;\n\nexport interface FeatureEvent {\n name: RawFeatureEvent['name'];\n payload?: RawFeatureEvent;\n options?: SubmitClientEventOptions;\n}\n\nexport interface MediaQualityEvent {\n name: RawMediaQualityEvent['name'];\n payload?: RawMediaQualityEvent;\n options: SubmitMQEOptions;\n}\n\nexport type RecursivePartial<T> = {\n [P in keyof T]?: T[P] extends (infer U)[]\n ? RecursivePartial<U>[]\n : T[P] extends object\n ? RecursivePartial<T[P]>\n : T[P];\n};\n\nexport type MetricEventNames =\n | InternalEvent['name']\n | ClientEvent['name']\n | BehavioralEvent['metricName']\n | OperationalEvent['metricName']\n | BusinessEvent['eventPayload']['metricName']\n | FeatureEvent['name']\n | MediaQualityEvent['name'];\n\nexport type ClientInfo = NonNullable<RawEvent['origin']['clientInfo']>;\nexport type ClientType = NonNullable<RawEvent['origin']['clientInfo']>['clientType'];\nexport type SubClientType = NonNullable<RawEvent['origin']['clientInfo']>['subClientType'];\nexport type NetworkType = NonNullable<RawEvent['origin']>['networkType'];\n\nexport type ClientSubServiceType = ClientEvent['payload']['webexSubServiceType'];\nexport type ClientEventPayload = RecursivePartial<ClientEvent['payload']>;\nexport type ClientEventLeaveReason = ClientEvent['payload']['leaveReason'];\nexport type ClientEventPayloadError = ClientEvent['payload']['errors'];\n\nexport type ClientFeatureEventPayload = RecursivePartial<FeatureEvent['payload']>;\n\nexport type MediaQualityEventAudioSetupDelayPayload = NonNullable<\n MediaQualityEvent['payload']\n>['audioSetupDelay'];\nexport type MediaQualityEventVideoSetupDelayPayload = NonNullable<\n MediaQualityEvent['payload']\n>['videoSetupDelay'];\n\nexport type SubmitMQEPayload = RecursivePartial<MediaQualityEvent['payload']> & {\n intervals: NonNullable<MediaQualityEvent['payload']>['intervals'];\n};\n\nexport type SubmitInternalEvent = (args: {\n name: InternalEvent['name'];\n payload?: RecursivePartial<InternalEvent['payload']>;\n options?: any;\n}) => void;\n\nexport type SubmitBehavioralEvent = (args: {\n product: MetricEventProduct;\n agent: MetricEventAgent;\n target: string;\n verb: MetricEventVerb;\n payload?: EventPayload;\n}) => void;\n\nexport type SubmitClientEvent = (args: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n}) => Promise<any>;\n\nexport type SubmitOperationalEvent = (args: {\n name: OperationalEvent['metricName'];\n payload: EventPayload;\n}) => void;\n\nexport type SubmitBusinessEvent = (args: {\n name: OperationalEvent['metricName'];\n payload: EventPayload;\n metadata?: EventPayload;\n table?: Table;\n}) => void;\n\nexport type SubmitMQE = (args: {\n name: MediaQualityEvent['name'];\n payload: SubmitMQEPayload;\n options: any;\n}) => void;\n\nexport type BuildClientEventFetchRequestOptions = (args: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n}) => Promise<any>;\n\nexport type PreComputedLatencies =\n | 'internal.client.pageJMT'\n | 'internal.download.time'\n | 'internal.get.cluster.time'\n | 'internal.click.to.interstitial'\n | 'internal.click.to.interstitial.with.user.delay'\n | 'internal.click.to.interstitial.for.client.jmt'\n | 'internal.refresh.captcha.time'\n | 'internal.exchange.ci.token.time'\n | 'internal.get.u2c.time'\n | 'internal.call.init.join.req'\n | 'internal.other.app.api.time'\n | 'internal.api.fetch.intelligence.models'\n | 'internal.client.locus.sync.random.backoff';\n\nexport interface IdType {\n meetingId?: string;\n callId?: string;\n}\n\nexport interface IMetricsAttributes {\n type: string;\n version: string;\n userId: string;\n correlationId: string;\n connectionId: string;\n data: any[];\n meetingId?: string;\n callId?: string;\n}\n\nexport interface DelayedClientEvent {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n}\n\nexport type SubmitFeatureEvent = (args: {\n name: FeatureEvent['name'];\n payload?: RecursivePartial<FeatureEvent['payload']>;\n options?: SubmitClientEventOptions;\n}) => Promise<any>;\n\nexport interface DelayedClientFeatureEvent {\n name: FeatureEvent['name'];\n payload?: RecursivePartial<FeatureEvent['payload']>;\n options?: SubmitClientEventOptions;\n}\n"],"mappings":";;;;;;;AAgKO,IAAMA,8BAA8B,GAAAC,OAAA,CAAAD,8BAAA,GAAG,CAC5C,kCAAkC,EAClC,wCAAwC,EACxC,yCAAyC,EACzC,oCAAoC,EACpC,qCAAqC,EACrC,6CAA6C,CACrC;;AA8CyC","ignoreList":[]}
@@ -27,6 +27,7 @@ var _callDiagnosticMetricsLatencies = _interopRequireDefault(require("./call-dia
27
27
  var _callDiagnosticMetrics2 = require("./call-diagnostic/call-diagnostic-metrics.util");
28
28
  var _utils = require("./utils");
29
29
  var _automatedUser = require("./automated-user");
30
+ var _privacyAndSecurityPermissionEnricher = _interopRequireDefault(require("./privacy-and-security-permission-enricher"));
30
31
  var _Metrics;
31
32
  /* eslint-disable @typescript-eslint/no-unused-vars */
32
33
  /* eslint-disable class-methods-use-this */
@@ -54,8 +55,6 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
54
55
  args[_key] = arguments[_key];
55
56
  }
56
57
  _this = _callSuper(this, Metrics, [].concat(args));
57
-
58
- // @ts-ignore
59
58
  // Call Diagnostic latencies
60
59
  (0, _defineProperty2.default)(_this, "callDiagnosticLatencies", void 0);
61
60
  // Helper classes to handle the different types of metrics
@@ -78,6 +77,12 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
78
77
  */
79
78
  (0, _defineProperty2.default)(_this, "delayedClientEventsOverrides", {});
80
79
  (0, _defineProperty2.default)(_this, "delayedClientFeatureEventsOverrides", {});
80
+ (0, _defineProperty2.default)(_this, "privacyAndSecurityPermissionEnricher", void 0);
81
+ _this.privacyAndSecurityPermissionEnricher = new _privacyAndSecurityPermissionEnricher.default(function (error) {
82
+ // @ts-ignore
83
+ _this.webex.logger.error('NewMetrics: @submitClientEvent. Privacy and security permission enrichment failed.', error);
84
+ });
85
+ // @ts-ignore
81
86
  _this.callDiagnosticLatencies = new _callDiagnosticMetricsLatencies.default({}, {
82
87
  parent: _this.webex
83
88
  });
@@ -387,14 +392,42 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
387
392
  meetingId: options === null || options === void 0 ? void 0 : options.meetingId
388
393
  }
389
394
  });
390
- return this.callDiagnosticMetrics.submitClientEvent({
395
+ var enrichedPayload = this.privacyAndSecurityPermissionEnricher.enrich({
391
396
  name: name,
392
397
  payload: payload,
398
+ scope: this.getPermissionScope(options)
399
+ });
400
+ return this.callDiagnosticMetrics.submitClientEvent({
401
+ name: name,
402
+ payload: enrichedPayload,
393
403
  options: options,
394
404
  delaySubmitEvent: this.delaySubmitClientEvents
395
405
  });
396
406
  }
397
407
 
408
+ /**
409
+ * Stores the latest browser permission state supplied by the client.
410
+ * @param permission latest normalized permission snapshot
411
+ */
412
+ }, {
413
+ key: "setPrivacyAndSecurityPermission",
414
+ value: function setPrivacyAndSecurityPermission(permission) {
415
+ this.privacyAndSecurityPermissionEnricher.setPermission(permission);
416
+ }
417
+
418
+ /**
419
+ * Resolves event options to the call identity used by Call Diagnostic where possible.
420
+ * @param options client event options
421
+ * @returns the permission history scope
422
+ */
423
+ }, {
424
+ key: "getPermissionScope",
425
+ value: function getPermissionScope(options) {
426
+ var _webex$meetings, _webex$meetings$getBa, _ref9, _options$correlationI;
427
+ var meeting = options !== null && options !== void 0 && options.meetingId ? (_webex$meetings = this.webex.meetings) === null || _webex$meetings === void 0 ? void 0 : (_webex$meetings$getBa = _webex$meetings.getBasicMeetingInformation) === null || _webex$meetings$getBa === void 0 ? void 0 : _webex$meetings$getBa.call(_webex$meetings, options.meetingId) : undefined;
428
+ return (_ref9 = (_options$correlationI = options === null || options === void 0 ? void 0 : options.correlationId) !== null && _options$correlationI !== void 0 ? _options$correlationI : meeting === null || meeting === void 0 ? void 0 : meeting.correlationId) !== null && _ref9 !== void 0 ? _ref9 : 'default';
429
+ }
430
+
398
431
  /**
399
432
  * Issue request to alias a user's pre-login ID with their CI UUID
400
433
  * @param {string} preLoginId
@@ -452,12 +485,12 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
452
485
  }, {
453
486
  key: "buildClientEventFetchRequestOptions",
454
487
  value: (function () {
455
- var _buildClientEventFetchRequestOptions = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(_ref9) {
488
+ var _buildClientEventFetchRequestOptions = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(_ref0) {
456
489
  var name, payload, options;
457
490
  return _regenerator.default.wrap(function (_context) {
458
491
  while (1) switch (_context.prev = _context.next) {
459
492
  case 0:
460
- name = _ref9.name, payload = _ref9.payload, options = _ref9.options;
493
+ name = _ref0.name, payload = _ref0.payload, options = _ref0.options;
461
494
  return _context.abrupt("return", this.callDiagnosticMetrics.buildClientEventFetchRequestOptions({
462
495
  name: name,
463
496
  payload: payload,
@@ -508,9 +541,9 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
508
541
  */
509
542
  }, {
510
543
  key: "setDelaySubmitClientEvents",
511
- value: function setDelaySubmitClientEvents(_ref0) {
512
- var shouldDelay = _ref0.shouldDelay,
513
- overrides = _ref0.overrides;
544
+ value: function setDelaySubmitClientEvents(_ref1) {
545
+ var shouldDelay = _ref1.shouldDelay,
546
+ overrides = _ref1.overrides;
514
547
  this.delaySubmitClientEvents = shouldDelay;
515
548
  this.delayedClientEventsOverrides = overrides || {};
516
549
  if (this.isReady && !shouldDelay) {
@@ -529,9 +562,9 @@ var Metrics = /*#__PURE__*/function (_WebexPlugin) {
529
562
  */
530
563
  }, {
531
564
  key: "setDelaySubmitClientFeatureEvents",
532
- value: function setDelaySubmitClientFeatureEvents(_ref1) {
533
- var shouldDelay = _ref1.shouldDelay,
534
- overrides = _ref1.overrides;
565
+ value: function setDelaySubmitClientFeatureEvents(_ref10) {
566
+ var shouldDelay = _ref10.shouldDelay,
567
+ overrides = _ref10.overrides;
535
568
  this.delaySubmitClientFeatureEvents = shouldDelay;
536
569
  this.delayedClientFeatureEventsOverrides = overrides || {};
537
570
  if (this.isReady && !shouldDelay) {
@@ -1 +1 @@
1
- {"version":3,"names":["_webexCore","require","_callDiagnosticMetrics","_interopRequireDefault","_behavioralMetrics","_operationalMetrics","_businessMetrics","_preloginMetrics","_preloginMetricsBatcher","_callDiagnosticMetricsLatencies","_callDiagnosticMetrics2","_utils","_automatedUser","_Metrics","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","Metrics","_WebexPlugin","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","concat","_defineProperty2","callDiagnosticLatencies","CallDiagnosticLatencies","parent","webex","callDiagnosticMetrics","CallDiagnosticMetrics","onReady","_inherits2","_createClass2","key","value","_this2","once","preLoginMetrics","PreLoginMetrics","PreLoginMetricsBatcher","isReady","setDelaySubmitClientEvents","shouldDelay","delaySubmitClientEvents","overrides","delayedClientEventsOverrides","submitInternalEvent","_ref","name","payload","options","clearTimestamps","saveTimestamp","lazyBuildBehavioralMetrics","behavioralMetrics","BehavioralMetrics","lazyBuildOperationalMetrics","operationalMetrics","OperationalMetrics","lazyBuildBusinessMetrics","businessMetrics","BusinessMetrics","isReadyToSubmitBehavioralEvents","_this$behavioralMetri","_this$behavioralMetri2","isReadyToSubmitEvents","isReadyToSubmitOperationalEvents","_this$operationalMetr","_this$operationalMetr2","isReadyToSubmitBusinessEvents","_this$businessMetrics","_this$businessMetrics2","isAutomatedUser","detectAutomatedUser","submitBehavioralEvent","_ref2","product","agent","target","verb","logger","log","_promise","resolve","submitOperationalEvent","_ref3","submitBusinessEvent","_ref4","table","metadata","submitPreLoginEvent","_ref5","preLoginId","submitMQE","_ref6","submitFeatureEvent","_ref7","meetingId","delaySubmitEvent","delaySubmitClientFeatureEvents","submitClientEvent","_ref8","clientMetricsAliasUser","_this3","request","method","api","resource","headers","body","qs","alias","then","res","catch","err","error","generateCommonErrorMetadata","reject","_buildClientEventFetchRequestOptions","_asyncToGenerator2","_regenerator","mark","_callee","_ref9","wrap","_context","prev","next","abrupt","buildClientEventFetchRequestOptions","stop","_x","setMetricTimingsAndFetch","setTimingsAndFetch","setMetricTimings","isServiceErrorExpected","serviceErrorCode","_ref0","submitDelayedClientEvents","setDelaySubmitClientFeatureEvents","_ref1","delayedClientFeatureEventsOverrides","submitDelayedClientFeatureEvents","WebexPlugin","_default","exports"],"sources":["new-metrics.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable valid-jsdoc */\n\n// @ts-ignore\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport CallDiagnosticMetrics from './call-diagnostic/call-diagnostic-metrics';\nimport BehavioralMetrics from './behavioral-metrics';\nimport OperationalMetrics from './operational-metrics';\nimport BusinessMetrics from './business-metrics';\nimport PreLoginMetrics from './prelogin-metrics';\nimport PreLoginMetricsBatcher from './prelogin-metrics-batcher';\nimport {\n RecursivePartial,\n MetricEventProduct,\n MetricEventAgent,\n MetricEventVerb,\n ClientEvent,\n FeatureEvent,\n EventPayload,\n OperationalEvent,\n MediaQualityEvent,\n InternalEvent,\n SubmitClientEventOptions,\n Table,\n DelayedClientEvent,\n DelayedClientFeatureEvent,\n} from './metrics.types';\nimport CallDiagnosticLatencies from './call-diagnostic/call-diagnostic-metrics-latencies';\nimport {setMetricTimings} from './call-diagnostic/call-diagnostic-metrics.util';\nimport {generateCommonErrorMetadata} from './utils';\nimport {isAutomatedUser as detectAutomatedUser} from './automated-user';\n\n/**\n * Metrics plugin to centralize all types of metrics.\n * https://confluence-eng-gpk2.cisco.com/conf/pages/viewpage.action?pageId=231011379\n * @class\n */\nclass Metrics extends WebexPlugin {\n // eslint-disable-next-line no-use-before-define\n static instance: Metrics;\n\n // Call Diagnostic latencies\n callDiagnosticLatencies: CallDiagnosticLatencies;\n // Helper classes to handle the different types of metrics\n callDiagnosticMetrics: CallDiagnosticMetrics;\n behavioralMetrics: BehavioralMetrics;\n operationalMetrics: OperationalMetrics;\n businessMetrics: BusinessMetrics;\n preLoginMetrics: PreLoginMetrics;\n isReady = false;\n\n /**\n * Whether or not to delay the submission of client events.\n */\n delaySubmitClientEvents = false;\n\n /**\n * Whether or not to delay the submission of feature events.\n */\n delaySubmitClientFeatureEvents = false;\n\n /**\n * Overrides for delayed client events. E.g. if you want to override the correlationId for all delayed client events, you can set this to { correlationId: 'newCorrelationId' }\n */\n delayedClientEventsOverrides: Partial<DelayedClientEvent['options']> = {};\n\n delayedClientFeatureEventsOverrides: Partial<DelayedClientFeatureEvent['options']> = {};\n\n /**\n * Constructor\n * @param args\n * @constructor\n * @private\n * @returns\n */\n constructor(...args) {\n super(...args);\n\n // @ts-ignore\n this.callDiagnosticLatencies = new CallDiagnosticLatencies({}, {parent: this.webex});\n // @ts-ignore\n this.callDiagnosticMetrics = new CallDiagnosticMetrics({}, {parent: this.webex});\n this.onReady();\n }\n\n /**\n * On Ready\n */\n private onReady() {\n // @ts-ignore\n this.webex.once('ready', () => {\n this.preLoginMetrics = new PreLoginMetrics(\n // @ts-ignore\n new PreLoginMetricsBatcher({}, {parent: this.webex}),\n {},\n // @ts-ignore\n {parent: this.webex}\n );\n this.isReady = true;\n this.setDelaySubmitClientEvents({\n shouldDelay: this.delaySubmitClientEvents,\n overrides: this.delayedClientEventsOverrides,\n });\n });\n }\n\n /**\n * Used for internal purposes only\n * @param args\n */\n submitInternalEvent({\n name,\n payload,\n options,\n }: {\n name: InternalEvent['name'];\n payload?: RecursivePartial<InternalEvent['payload']>;\n options?: any;\n }) {\n if (name === 'internal.reset.join.latencies') {\n this.callDiagnosticLatencies.clearTimestamps();\n } else {\n this.callDiagnosticLatencies.saveTimestamp({key: name});\n }\n }\n\n /**\n * if webex metrics is ready, build behavioral metric backend if not already done.\n */\n private lazyBuildBehavioralMetrics() {\n if (this.isReady && !this.behavioralMetrics) {\n // @ts-ignore\n this.behavioralMetrics = new BehavioralMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * if webex metrics is ready, build operational metric backend if not already done.\n */\n private lazyBuildOperationalMetrics() {\n if (this.isReady && !this.operationalMetrics) {\n // @ts-ignore\n this.operationalMetrics = new OperationalMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * if webex metrics is ready, build business metric backend if not already done.\n */\n private lazyBuildBusinessMetrics() {\n if (this.isReady && !this.businessMetrics) {\n // @ts-ignore\n this.businessMetrics = new BusinessMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * @returns true once we have the deviceId we need to submit behavioral events to Amplitude\n */\n isReadyToSubmitBehavioralEvents() {\n this.lazyBuildBehavioralMetrics();\n\n return this.behavioralMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * @returns true once we have the deviceId we need to submit operational events\n */\n isReadyToSubmitOperationalEvents() {\n this.lazyBuildOperationalMetrics();\n\n return this.operationalMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * @returns true once we have the deviceId we need to submit business events\n */\n isReadyToSubmitBusinessEvents() {\n this.lazyBuildBusinessMetrics();\n\n return this.businessMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * @returns whether the current user agent belongs to an automated user\n */\n isAutomatedUser() {\n return detectAutomatedUser();\n }\n\n /**\n * Behavioral event\n * @param args\n */\n submitBehavioralEvent({\n product,\n agent,\n target,\n verb,\n payload,\n }: {\n product: MetricEventProduct;\n agent: MetricEventAgent;\n target: string;\n verb: MetricEventVerb;\n payload?: EventPayload;\n }) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitBehavioralEvent. Attempted to submit before webex.ready: ${product}.${agent}.${target}.${verb}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildBehavioralMetrics();\n\n return this.behavioralMetrics.submitBehavioralEvent({product, agent, target, verb, payload});\n }\n\n /**\n * Operational event\n * @param args\n */\n submitOperationalEvent({name, payload}: {name: string; payload?: EventPayload}) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitOperationalEvent. Attempted to submit before webex.ready: ${name}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildOperationalMetrics();\n\n return this.operationalMetrics.submitOperationalEvent({name, payload});\n }\n\n /**\n * Business event\n * @param args\n */\n submitBusinessEvent({\n name,\n payload,\n table,\n metadata,\n }: {\n name: string;\n payload: EventPayload;\n table?: Table;\n metadata?: EventPayload;\n }) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitBusinessEvent. Attempted to submit before webex.ready: ${name}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildBusinessMetrics();\n\n return this.businessMetrics.submitBusinessEvent({name, payload, table, metadata});\n }\n\n /**\n * Call Analyzer: Pre-Login Event\n * @param args\n */\n submitPreLoginEvent({\n name,\n preLoginId,\n payload,\n metadata,\n }: {\n name: string;\n preLoginId: string;\n payload: EventPayload;\n metadata?: EventPayload;\n }): Promise<void> {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitPreLoginEvent. Attempted to submit before webex.ready: ${name}`\n );\n\n return Promise.resolve();\n }\n\n return this.preLoginMetrics.submitPreLoginEvent({\n name,\n preLoginId,\n payload,\n metadata,\n });\n }\n\n /**\n * Call Analyzer: Media Quality Event\n * @param args\n */\n submitMQE({\n name,\n payload,\n options,\n }: {\n name: MediaQualityEvent['name'];\n payload: RecursivePartial<MediaQualityEvent['payload']> & {\n intervals: MediaQualityEvent['payload']['intervals'];\n };\n options: any;\n }) {\n this.callDiagnosticLatencies.saveTimestamp({key: name});\n this.callDiagnosticMetrics.submitMQE({name, payload, options});\n }\n\n /**\n * Call Analyzer: Feature Usage Event\n * @param args\n */\n submitFeatureEvent({\n name,\n payload,\n options,\n }: {\n name: FeatureEvent['name'];\n payload?: RecursivePartial<FeatureEvent['payload']>;\n options: any;\n }) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitFeatureEvent. Attempted to submit before webex.ready. Event name: ${name}`\n );\n\n return Promise.resolve();\n }\n this.callDiagnosticLatencies.saveTimestamp({\n key: name,\n options: {meetingId: options?.meetingId},\n });\n\n return this.callDiagnosticMetrics.submitFeatureEvent({\n name,\n payload,\n options,\n delaySubmitEvent: this.delaySubmitClientFeatureEvents,\n });\n }\n\n /**\n * Call Analyzer: Client Event\n * @public\n * @param args\n */\n public submitClientEvent({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n }): Promise<any> {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitClientEvent. Attempted to submit before webex.ready. Event name: ${name}`\n );\n\n return Promise.resolve();\n }\n this.callDiagnosticLatencies.saveTimestamp({\n key: name,\n options: {meetingId: options?.meetingId},\n });\n\n return this.callDiagnosticMetrics.submitClientEvent({\n name,\n payload,\n options,\n delaySubmitEvent: this.delaySubmitClientEvents,\n });\n }\n\n /**\n * Issue request to alias a user's pre-login ID with their CI UUID\n * @param {string} preLoginId\n * @returns {Object} HttpResponse object\n */\n public clientMetricsAliasUser(preLoginId: string) {\n // @ts-ignore\n return this.webex\n .request({\n method: 'POST',\n api: 'metrics',\n resource: 'clientmetrics',\n headers: {\n 'x-prelogin-userid': preLoginId,\n },\n body: {},\n qs: {\n alias: true,\n },\n })\n .then((res) => {\n // @ts-ignore\n this.webex.logger.log(`NewMetrics: @clientMetricsAliasUser. Request successful.`);\n\n return res;\n })\n .catch((err) => {\n // @ts-ignore\n this.logger.error(\n `NewMetrics: @clientMetricsAliasUser. Request failed:`,\n `err: ${generateCommonErrorMetadata(err)}`\n );\n\n return Promise.reject(err);\n });\n }\n\n /**\n * Returns a promise that will resolve to fetch options for submitting a metric.\n *\n * This is to support quickly submitting metrics when the browser/tab is closing.\n * Calling submitClientEvent will not work because there some async steps that will\n * not complete before the browser is closed. Instead, we pre-gather all the\n * information/options needed for the request(s), and then simply and quickly\n * fire the fetch(es) when beforeUnload is triggered.\n *\n * We must use fetch instead of request because fetch has a keepalive option that\n * allows the request it to outlive the page.\n *\n * Note: the timings values will be wrong, but setMetricTimingsAndFetch() will\n * properly adjust them before submitting.\n *\n * @public\n * @param {Object} arg\n * @param {String} arg.name - event name\n * @param {Object} arg.payload - event payload\n * @param {Object} arg.options - other options\n * @returns {Promise} promise that resolves to options to be used with fetch\n */\n public async buildClientEventFetchRequestOptions({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n }): Promise<any> {\n return this.callDiagnosticMetrics.buildClientEventFetchRequestOptions({\n name,\n payload,\n options,\n });\n }\n\n /**\n * Submits a metric from pre-built request options via the fetch API. Updates\n * the \"$timings\" and \"originTime\" values to Date.now() since the existing times\n * were set when the options were built (not submitted).\n\n * @param {any} options - the pre-built request options for submitting a metric\n * @returns {Promise} promise that resolves to the response object\n */\n public setMetricTimingsAndFetch(options: any): Promise<any> {\n // @ts-ignore\n return this.webex.setTimingsAndFetch(setMetricTimings(options));\n }\n\n /**\n * Returns true if the specified serviceErrorCode maps to an expected error.\n * @param {number} serviceErrorCode the service error code\n * @returns {boolean}\n */\n public isServiceErrorExpected(serviceErrorCode: number): boolean {\n return this.callDiagnosticMetrics.isServiceErrorExpected(serviceErrorCode);\n }\n\n /**\n * Sets the value of delaySubmitClientEvents. If set to true, client events will be delayed until submitDelayedClientEvents is called. If\n * set to false, delayed client events will be submitted.\n *\n * @param {object} options - {shouldDelay: A boolean value indicating whether to delay the submission of client events, overrides: An object containing overrides for the client events}\n */\n public setDelaySubmitClientEvents({\n shouldDelay,\n overrides,\n }: {\n shouldDelay: boolean;\n overrides?: Partial<DelayedClientEvent['options']>;\n }) {\n this.delaySubmitClientEvents = shouldDelay;\n this.delayedClientEventsOverrides = overrides || {};\n\n if (this.isReady && !shouldDelay) {\n return this.callDiagnosticMetrics.submitDelayedClientEvents(overrides);\n }\n\n return Promise.resolve();\n }\n\n /**\n * Sets the value of setDelaySubmitClientFeatureEvents.\n * If set to true, feature events will be delayed until submitDelayedClientFeatureEvents is called.\n * If set to false, delayed feature events will be submitted.\n *\n * @param {object} options - {shouldDelay: A boolean value indicating whether to delay the submission of feature events,\n * overrides: An object containing overrides for the feature events}\n */\n public setDelaySubmitClientFeatureEvents({\n shouldDelay,\n overrides,\n }: {\n shouldDelay: boolean;\n overrides?: Partial<DelayedClientFeatureEvent['options']>;\n }) {\n this.delaySubmitClientFeatureEvents = shouldDelay;\n this.delayedClientFeatureEventsOverrides = overrides || {};\n\n if (this.isReady && !shouldDelay) {\n return this.callDiagnosticMetrics.submitDelayedClientFeatureEvents(overrides);\n }\n\n return Promise.resolve();\n }\n}\n\nexport default Metrics;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_webexCore","require","_callDiagnosticMetrics","_interopRequireDefault","_behavioralMetrics","_operationalMetrics","_businessMetrics","_preloginMetrics","_preloginMetricsBatcher","_callDiagnosticMetricsLatencies","_callDiagnosticMetrics2","_utils","_automatedUser","_privacyAndSecurityPermissionEnricher","_Metrics","_callSuper","t","o","e","_getPrototypeOf2","default","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","apply","Boolean","prototype","valueOf","call","Metrics","_WebexPlugin","_this","_classCallCheck2","_len","arguments","length","args","Array","_key","concat","_defineProperty2","privacyAndSecurityPermissionEnricher","PrivacyAndSecurityPermissionEnricher","error","webex","logger","callDiagnosticLatencies","CallDiagnosticLatencies","parent","callDiagnosticMetrics","CallDiagnosticMetrics","onReady","_inherits2","_createClass2","key","value","_this2","once","preLoginMetrics","PreLoginMetrics","PreLoginMetricsBatcher","isReady","setDelaySubmitClientEvents","shouldDelay","delaySubmitClientEvents","overrides","delayedClientEventsOverrides","submitInternalEvent","_ref","name","payload","options","clearTimestamps","saveTimestamp","lazyBuildBehavioralMetrics","behavioralMetrics","BehavioralMetrics","lazyBuildOperationalMetrics","operationalMetrics","OperationalMetrics","lazyBuildBusinessMetrics","businessMetrics","BusinessMetrics","isReadyToSubmitBehavioralEvents","_this$behavioralMetri","_this$behavioralMetri2","isReadyToSubmitEvents","isReadyToSubmitOperationalEvents","_this$operationalMetr","_this$operationalMetr2","isReadyToSubmitBusinessEvents","_this$businessMetrics","_this$businessMetrics2","isAutomatedUser","detectAutomatedUser","submitBehavioralEvent","_ref2","product","agent","target","verb","log","_promise","resolve","submitOperationalEvent","_ref3","submitBusinessEvent","_ref4","table","metadata","submitPreLoginEvent","_ref5","preLoginId","submitMQE","_ref6","submitFeatureEvent","_ref7","meetingId","delaySubmitEvent","delaySubmitClientFeatureEvents","submitClientEvent","_ref8","enrichedPayload","enrich","scope","getPermissionScope","setPrivacyAndSecurityPermission","permission","setPermission","_webex$meetings","_webex$meetings$getBa","_ref9","_options$correlationI","meeting","meetings","getBasicMeetingInformation","undefined","correlationId","clientMetricsAliasUser","_this3","request","method","api","resource","headers","body","qs","alias","then","res","catch","err","generateCommonErrorMetadata","reject","_buildClientEventFetchRequestOptions","_asyncToGenerator2","_regenerator","mark","_callee","_ref0","wrap","_context","prev","next","abrupt","buildClientEventFetchRequestOptions","stop","_x","setMetricTimingsAndFetch","setTimingsAndFetch","setMetricTimings","isServiceErrorExpected","serviceErrorCode","_ref1","submitDelayedClientEvents","setDelaySubmitClientFeatureEvents","_ref10","delayedClientFeatureEventsOverrides","submitDelayedClientFeatureEvents","WebexPlugin","_default","exports"],"sources":["new-metrics.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable valid-jsdoc */\n\n// @ts-ignore\nimport {WebexPlugin} from '@webex/webex-core';\n\nimport CallDiagnosticMetrics from './call-diagnostic/call-diagnostic-metrics';\nimport BehavioralMetrics from './behavioral-metrics';\nimport OperationalMetrics from './operational-metrics';\nimport BusinessMetrics from './business-metrics';\nimport PreLoginMetrics from './prelogin-metrics';\nimport PreLoginMetricsBatcher from './prelogin-metrics-batcher';\nimport {\n RecursivePartial,\n MetricEventProduct,\n MetricEventAgent,\n MetricEventVerb,\n ClientEvent,\n FeatureEvent,\n EventPayload,\n MediaQualityEvent,\n InternalEvent,\n SubmitClientEventOptions,\n Table,\n DelayedClientEvent,\n DelayedClientFeatureEvent,\n PrivacyAndSecurityPermission,\n} from './metrics.types';\nimport CallDiagnosticLatencies from './call-diagnostic/call-diagnostic-metrics-latencies';\nimport {setMetricTimings} from './call-diagnostic/call-diagnostic-metrics.util';\nimport {generateCommonErrorMetadata} from './utils';\nimport {isAutomatedUser as detectAutomatedUser} from './automated-user';\nimport PrivacyAndSecurityPermissionEnricher from './privacy-and-security-permission-enricher';\n\n/**\n * Metrics plugin to centralize all types of metrics.\n * https://confluence-eng-gpk2.cisco.com/conf/pages/viewpage.action?pageId=231011379\n * @class\n */\nclass Metrics extends WebexPlugin {\n // eslint-disable-next-line no-use-before-define\n static instance: Metrics;\n\n // Call Diagnostic latencies\n callDiagnosticLatencies: CallDiagnosticLatencies;\n // Helper classes to handle the different types of metrics\n callDiagnosticMetrics: CallDiagnosticMetrics;\n behavioralMetrics: BehavioralMetrics;\n operationalMetrics: OperationalMetrics;\n businessMetrics: BusinessMetrics;\n preLoginMetrics: PreLoginMetrics;\n isReady = false;\n\n /**\n * Whether or not to delay the submission of client events.\n */\n delaySubmitClientEvents = false;\n\n /**\n * Whether or not to delay the submission of feature events.\n */\n delaySubmitClientFeatureEvents = false;\n\n /**\n * Overrides for delayed client events. E.g. if you want to override the correlationId for all delayed client events, you can set this to { correlationId: 'newCorrelationId' }\n */\n delayedClientEventsOverrides: Partial<DelayedClientEvent['options']> = {};\n\n delayedClientFeatureEventsOverrides: Partial<DelayedClientFeatureEvent['options']> = {};\n\n private privacyAndSecurityPermissionEnricher: PrivacyAndSecurityPermissionEnricher;\n\n /**\n * Constructor\n * @param args\n * @constructor\n * @private\n * @returns\n */\n constructor(...args) {\n super(...args);\n\n this.privacyAndSecurityPermissionEnricher = new PrivacyAndSecurityPermissionEnricher(\n (error) => {\n // @ts-ignore\n this.webex.logger.error(\n 'NewMetrics: @submitClientEvent. Privacy and security permission enrichment failed.',\n error\n );\n }\n );\n // @ts-ignore\n this.callDiagnosticLatencies = new CallDiagnosticLatencies({}, {parent: this.webex});\n // @ts-ignore\n this.callDiagnosticMetrics = new CallDiagnosticMetrics({}, {parent: this.webex});\n this.onReady();\n }\n\n /**\n * On Ready\n */\n private onReady() {\n // @ts-ignore\n this.webex.once('ready', () => {\n this.preLoginMetrics = new PreLoginMetrics(\n // @ts-ignore\n new PreLoginMetricsBatcher({}, {parent: this.webex}),\n {},\n // @ts-ignore\n {parent: this.webex}\n );\n this.isReady = true;\n this.setDelaySubmitClientEvents({\n shouldDelay: this.delaySubmitClientEvents,\n overrides: this.delayedClientEventsOverrides,\n });\n });\n }\n\n /**\n * Used for internal purposes only\n * @param args\n */\n submitInternalEvent({\n name,\n payload,\n options,\n }: {\n name: InternalEvent['name'];\n payload?: RecursivePartial<InternalEvent['payload']>;\n options?: any;\n }) {\n if (name === 'internal.reset.join.latencies') {\n this.callDiagnosticLatencies.clearTimestamps();\n } else {\n this.callDiagnosticLatencies.saveTimestamp({key: name});\n }\n }\n\n /**\n * if webex metrics is ready, build behavioral metric backend if not already done.\n */\n private lazyBuildBehavioralMetrics() {\n if (this.isReady && !this.behavioralMetrics) {\n // @ts-ignore\n this.behavioralMetrics = new BehavioralMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * if webex metrics is ready, build operational metric backend if not already done.\n */\n private lazyBuildOperationalMetrics() {\n if (this.isReady && !this.operationalMetrics) {\n // @ts-ignore\n this.operationalMetrics = new OperationalMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * if webex metrics is ready, build business metric backend if not already done.\n */\n private lazyBuildBusinessMetrics() {\n if (this.isReady && !this.businessMetrics) {\n // @ts-ignore\n this.businessMetrics = new BusinessMetrics({}, {parent: this.webex});\n }\n }\n\n /**\n * @returns true once we have the deviceId we need to submit behavioral events to Amplitude\n */\n isReadyToSubmitBehavioralEvents() {\n this.lazyBuildBehavioralMetrics();\n\n return this.behavioralMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * @returns true once we have the deviceId we need to submit operational events\n */\n isReadyToSubmitOperationalEvents() {\n this.lazyBuildOperationalMetrics();\n\n return this.operationalMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * @returns true once we have the deviceId we need to submit business events\n */\n isReadyToSubmitBusinessEvents() {\n this.lazyBuildBusinessMetrics();\n\n return this.businessMetrics?.isReadyToSubmitEvents() ?? false;\n }\n\n /**\n * @returns whether the current user agent belongs to an automated user\n */\n isAutomatedUser() {\n return detectAutomatedUser();\n }\n\n /**\n * Behavioral event\n * @param args\n */\n submitBehavioralEvent({\n product,\n agent,\n target,\n verb,\n payload,\n }: {\n product: MetricEventProduct;\n agent: MetricEventAgent;\n target: string;\n verb: MetricEventVerb;\n payload?: EventPayload;\n }) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitBehavioralEvent. Attempted to submit before webex.ready: ${product}.${agent}.${target}.${verb}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildBehavioralMetrics();\n\n return this.behavioralMetrics.submitBehavioralEvent({product, agent, target, verb, payload});\n }\n\n /**\n * Operational event\n * @param args\n */\n submitOperationalEvent({name, payload}: {name: string; payload?: EventPayload}) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitOperationalEvent. Attempted to submit before webex.ready: ${name}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildOperationalMetrics();\n\n return this.operationalMetrics.submitOperationalEvent({name, payload});\n }\n\n /**\n * Business event\n * @param args\n */\n submitBusinessEvent({\n name,\n payload,\n table,\n metadata,\n }: {\n name: string;\n payload: EventPayload;\n table?: Table;\n metadata?: EventPayload;\n }) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitBusinessEvent. Attempted to submit before webex.ready: ${name}`\n );\n\n return Promise.resolve();\n }\n\n this.lazyBuildBusinessMetrics();\n\n return this.businessMetrics.submitBusinessEvent({name, payload, table, metadata});\n }\n\n /**\n * Call Analyzer: Pre-Login Event\n * @param args\n */\n submitPreLoginEvent({\n name,\n preLoginId,\n payload,\n metadata,\n }: {\n name: string;\n preLoginId: string;\n payload: EventPayload;\n metadata?: EventPayload;\n }): Promise<void> {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitPreLoginEvent. Attempted to submit before webex.ready: ${name}`\n );\n\n return Promise.resolve();\n }\n\n return this.preLoginMetrics.submitPreLoginEvent({\n name,\n preLoginId,\n payload,\n metadata,\n });\n }\n\n /**\n * Call Analyzer: Media Quality Event\n * @param args\n */\n submitMQE({\n name,\n payload,\n options,\n }: {\n name: MediaQualityEvent['name'];\n payload: RecursivePartial<MediaQualityEvent['payload']> & {\n intervals: MediaQualityEvent['payload']['intervals'];\n };\n options: any;\n }) {\n this.callDiagnosticLatencies.saveTimestamp({key: name});\n this.callDiagnosticMetrics.submitMQE({name, payload, options});\n }\n\n /**\n * Call Analyzer: Feature Usage Event\n * @param args\n */\n submitFeatureEvent({\n name,\n payload,\n options,\n }: {\n name: FeatureEvent['name'];\n payload?: RecursivePartial<FeatureEvent['payload']>;\n options: any;\n }) {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitFeatureEvent. Attempted to submit before webex.ready. Event name: ${name}`\n );\n\n return Promise.resolve();\n }\n this.callDiagnosticLatencies.saveTimestamp({\n key: name,\n options: {meetingId: options?.meetingId},\n });\n\n return this.callDiagnosticMetrics.submitFeatureEvent({\n name,\n payload,\n options,\n delaySubmitEvent: this.delaySubmitClientFeatureEvents,\n });\n }\n\n /**\n * Call Analyzer: Client Event\n * @public\n * @param args\n */\n public submitClientEvent({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n }): Promise<any> {\n if (!this.isReady) {\n // @ts-ignore\n this.webex.logger.log(\n `NewMetrics: @submitClientEvent. Attempted to submit before webex.ready. Event name: ${name}`\n );\n\n return Promise.resolve();\n }\n this.callDiagnosticLatencies.saveTimestamp({\n key: name,\n options: {meetingId: options?.meetingId},\n });\n\n const enrichedPayload = this.privacyAndSecurityPermissionEnricher.enrich({\n name,\n payload,\n scope: this.getPermissionScope(options),\n });\n\n return this.callDiagnosticMetrics.submitClientEvent({\n name,\n payload: enrichedPayload,\n options,\n delaySubmitEvent: this.delaySubmitClientEvents,\n });\n }\n\n /**\n * Stores the latest browser permission state supplied by the client.\n * @param permission latest normalized permission snapshot\n */\n public setPrivacyAndSecurityPermission(permission: PrivacyAndSecurityPermission): void {\n this.privacyAndSecurityPermissionEnricher.setPermission(permission);\n }\n\n /**\n * Resolves event options to the call identity used by Call Diagnostic where possible.\n * @param options client event options\n * @returns the permission history scope\n */\n private getPermissionScope(options?: SubmitClientEventOptions): string {\n const meeting = options?.meetingId\n ? (this as any).webex.meetings?.getBasicMeetingInformation?.(options.meetingId)\n : undefined;\n\n return options?.correlationId ?? meeting?.correlationId ?? 'default';\n }\n\n /**\n * Issue request to alias a user's pre-login ID with their CI UUID\n * @param {string} preLoginId\n * @returns {Object} HttpResponse object\n */\n public clientMetricsAliasUser(preLoginId: string) {\n // @ts-ignore\n return this.webex\n .request({\n method: 'POST',\n api: 'metrics',\n resource: 'clientmetrics',\n headers: {\n 'x-prelogin-userid': preLoginId,\n },\n body: {},\n qs: {\n alias: true,\n },\n })\n .then((res) => {\n // @ts-ignore\n this.webex.logger.log(`NewMetrics: @clientMetricsAliasUser. Request successful.`);\n\n return res;\n })\n .catch((err) => {\n // @ts-ignore\n this.logger.error(\n `NewMetrics: @clientMetricsAliasUser. Request failed:`,\n `err: ${generateCommonErrorMetadata(err)}`\n );\n\n return Promise.reject(err);\n });\n }\n\n /**\n * Returns a promise that will resolve to fetch options for submitting a metric.\n *\n * This is to support quickly submitting metrics when the browser/tab is closing.\n * Calling submitClientEvent will not work because there some async steps that will\n * not complete before the browser is closed. Instead, we pre-gather all the\n * information/options needed for the request(s), and then simply and quickly\n * fire the fetch(es) when beforeUnload is triggered.\n *\n * We must use fetch instead of request because fetch has a keepalive option that\n * allows the request it to outlive the page.\n *\n * Note: the timings values will be wrong, but setMetricTimingsAndFetch() will\n * properly adjust them before submitting.\n *\n * @public\n * @param {Object} arg\n * @param {String} arg.name - event name\n * @param {Object} arg.payload - event payload\n * @param {Object} arg.options - other options\n * @returns {Promise} promise that resolves to options to be used with fetch\n */\n public async buildClientEventFetchRequestOptions({\n name,\n payload,\n options,\n }: {\n name: ClientEvent['name'];\n payload?: RecursivePartial<ClientEvent['payload']>;\n options?: SubmitClientEventOptions;\n }): Promise<any> {\n return this.callDiagnosticMetrics.buildClientEventFetchRequestOptions({\n name,\n payload,\n options,\n });\n }\n\n /**\n * Submits a metric from pre-built request options via the fetch API. Updates\n * the \"$timings\" and \"originTime\" values to Date.now() since the existing times\n * were set when the options were built (not submitted).\n\n * @param {any} options - the pre-built request options for submitting a metric\n * @returns {Promise} promise that resolves to the response object\n */\n public setMetricTimingsAndFetch(options: any): Promise<any> {\n // @ts-ignore\n return this.webex.setTimingsAndFetch(setMetricTimings(options));\n }\n\n /**\n * Returns true if the specified serviceErrorCode maps to an expected error.\n * @param {number} serviceErrorCode the service error code\n * @returns {boolean}\n */\n public isServiceErrorExpected(serviceErrorCode: number): boolean {\n return this.callDiagnosticMetrics.isServiceErrorExpected(serviceErrorCode);\n }\n\n /**\n * Sets the value of delaySubmitClientEvents. If set to true, client events will be delayed until submitDelayedClientEvents is called. If\n * set to false, delayed client events will be submitted.\n *\n * @param {object} options - {shouldDelay: A boolean value indicating whether to delay the submission of client events, overrides: An object containing overrides for the client events}\n */\n public setDelaySubmitClientEvents({\n shouldDelay,\n overrides,\n }: {\n shouldDelay: boolean;\n overrides?: Partial<DelayedClientEvent['options']>;\n }) {\n this.delaySubmitClientEvents = shouldDelay;\n this.delayedClientEventsOverrides = overrides || {};\n\n if (this.isReady && !shouldDelay) {\n return this.callDiagnosticMetrics.submitDelayedClientEvents(overrides);\n }\n\n return Promise.resolve();\n }\n\n /**\n * Sets the value of setDelaySubmitClientFeatureEvents.\n * If set to true, feature events will be delayed until submitDelayedClientFeatureEvents is called.\n * If set to false, delayed feature events will be submitted.\n *\n * @param {object} options - {shouldDelay: A boolean value indicating whether to delay the submission of feature events,\n * overrides: An object containing overrides for the feature events}\n */\n public setDelaySubmitClientFeatureEvents({\n shouldDelay,\n overrides,\n }: {\n shouldDelay: boolean;\n overrides?: Partial<DelayedClientFeatureEvent['options']>;\n }) {\n this.delaySubmitClientFeatureEvents = shouldDelay;\n this.delayedClientFeatureEventsOverrides = overrides || {};\n\n if (this.isReady && !shouldDelay) {\n return this.callDiagnosticMetrics.submitDelayedClientFeatureEvents(overrides);\n }\n\n return Promise.resolve();\n }\n}\n\nexport default Metrics;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.NO_PERMISSION_ENRICHMENT = exports.MEDIA_TX_PERMISSION_EVENTS = exports.FINAL_PERMISSION_EVENTS = exports.CONTENT_SHARE_PERMISSION_EVENTS = exports.CAMERA_AND_MICROPHONE_PERMISSION_EVENTS = void 0;
9
+ var _set = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/set"));
10
+ var CAMERA_AND_MICROPHONE_PERMISSION_EVENTS = exports.CAMERA_AND_MICROPHONE_PERMISSION_EVENTS = new _set.default(['client.call.initiated', 'client.media.capabilities', 'client.ice.end', 'client.locus.join.request', 'client.locus.join.response', 'client.media-engine.ready']);
11
+ var MEDIA_TX_PERMISSION_EVENTS = exports.MEDIA_TX_PERMISSION_EVENTS = new _set.default(['client.media.tx.start', 'client.media.tx.stop']);
12
+ var CONTENT_SHARE_PERMISSION_EVENTS = exports.CONTENT_SHARE_PERMISSION_EVENTS = new _set.default(['client.share.initiated', 'client.share.floor-grant.request', 'client.share.floor-granted.local']);
13
+ var FINAL_PERMISSION_EVENTS = exports.FINAL_PERMISSION_EVENTS = new _set.default(['client.call.leave', 'client.call.remote-ended', 'client.call.aborted']);
14
+ var NO_PERMISSION_ENRICHMENT = exports.NO_PERMISSION_ENRICHMENT = {
15
+ resources: [],
16
+ terminal: false
17
+ };
18
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CAMERA_AND_MICROPHONE_PERMISSION_EVENTS","exports","_set","default","MEDIA_TX_PERMISSION_EVENTS","CONTENT_SHARE_PERMISSION_EVENTS","FINAL_PERMISSION_EVENTS","NO_PERMISSION_ENRICHMENT","resources","terminal"],"sources":["constants.ts"],"sourcesContent":["import type {ClientEvent} from '../metrics.types';\nimport type {PermissionEnrichmentPolicy} from './types';\n\nexport const CAMERA_AND_MICROPHONE_PERMISSION_EVENTS = new Set<ClientEvent['name']>([\n 'client.call.initiated',\n 'client.media.capabilities',\n 'client.ice.end',\n 'client.locus.join.request',\n 'client.locus.join.response',\n 'client.media-engine.ready',\n]);\n\nexport const MEDIA_TX_PERMISSION_EVENTS = new Set<ClientEvent['name']>([\n 'client.media.tx.start',\n 'client.media.tx.stop',\n]);\n\nexport const CONTENT_SHARE_PERMISSION_EVENTS = new Set<ClientEvent['name']>([\n 'client.share.initiated',\n 'client.share.floor-grant.request',\n 'client.share.floor-granted.local',\n]);\n\nexport const FINAL_PERMISSION_EVENTS = new Set<ClientEvent['name']>([\n 'client.call.leave',\n 'client.call.remote-ended',\n 'client.call.aborted',\n]);\n\nexport const NO_PERMISSION_ENRICHMENT: PermissionEnrichmentPolicy = {\n resources: [],\n terminal: false,\n};\n"],"mappings":";;;;;;;;;AAGO,IAAMA,uCAAuC,GAAAC,OAAA,CAAAD,uCAAA,GAAG,IAAAE,IAAA,CAAAC,OAAA,CAA6B,CAClF,uBAAuB,EACvB,2BAA2B,EAC3B,gBAAgB,EAChB,2BAA2B,EAC3B,4BAA4B,EAC5B,2BAA2B,CAC5B,CAAC;AAEK,IAAMC,0BAA0B,GAAAH,OAAA,CAAAG,0BAAA,GAAG,IAAAF,IAAA,CAAAC,OAAA,CAA6B,CACrE,uBAAuB,EACvB,sBAAsB,CACvB,CAAC;AAEK,IAAME,+BAA+B,GAAAJ,OAAA,CAAAI,+BAAA,GAAG,IAAAH,IAAA,CAAAC,OAAA,CAA6B,CAC1E,wBAAwB,EACxB,kCAAkC,EAClC,kCAAkC,CACnC,CAAC;AAEK,IAAMG,uBAAuB,GAAAL,OAAA,CAAAK,uBAAA,GAAG,IAAAJ,IAAA,CAAAC,OAAA,CAA6B,CAClE,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,CACtB,CAAC;AAEK,IAAMI,wBAAoD,GAAAN,OAAA,CAAAM,wBAAA,GAAG;EAClEC,SAAS,EAAE,EAAE;EACbC,QAAQ,EAAE;AACZ,CAAC","ignoreList":[]}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+
3
+ var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
4
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
5
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
6
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
7
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
8
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
9
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
10
+ _Object$defineProperty(exports, "__esModule", {
11
+ value: true
12
+ });
13
+ exports.default = exports.PERMISSION_ENRICHMENT_RULES = void 0;
14
+ var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
15
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
17
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
18
+ var _constants = require("./constants");
19
+ var _utils = require("./utils");
20
+ function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
21
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
22
+ var PERMISSION_ENRICHMENT_RULES = exports.PERMISSION_ENRICHMENT_RULES = [{
23
+ events: _constants.CAMERA_AND_MICROPHONE_PERMISSION_EVENTS,
24
+ resolve: function resolve() {
25
+ return {
26
+ resources: ['camera', 'microphone'],
27
+ terminal: false
28
+ };
29
+ }
30
+ }, {
31
+ events: _constants.MEDIA_TX_PERMISSION_EVENTS,
32
+ resolve: function resolve(payload) {
33
+ return {
34
+ resources: (0, _utils.resolveMediaResources)(payload),
35
+ terminal: false
36
+ };
37
+ }
38
+ }, {
39
+ events: _constants.CONTENT_SHARE_PERMISSION_EVENTS,
40
+ resolve: function resolve(payload) {
41
+ return {
42
+ resources: (0, _utils.resolveContentShareResources)(payload),
43
+ terminal: false
44
+ };
45
+ }
46
+ }, {
47
+ events: _constants.FINAL_PERMISSION_EVENTS,
48
+ resolve: function resolve() {
49
+ return {
50
+ resources: ['camera', 'microphone', 'contentShare'],
51
+ terminal: true
52
+ };
53
+ }
54
+ }];
55
+ var resolvePermissionEnrichmentPolicy = function resolvePermissionEnrichmentPolicy(name, payload) {
56
+ var _PERMISSION_ENRICHMEN, _PERMISSION_ENRICHMEN2;
57
+ return (_PERMISSION_ENRICHMEN = (_PERMISSION_ENRICHMEN2 = PERMISSION_ENRICHMENT_RULES.find(function (_ref) {
58
+ var events = _ref.events;
59
+ return events.has(name);
60
+ })) === null || _PERMISSION_ENRICHMEN2 === void 0 ? void 0 : _PERMISSION_ENRICHMEN2.resolve(payload)) !== null && _PERMISSION_ENRICHMEN !== void 0 ? _PERMISSION_ENRICHMEN : _constants.NO_PERMISSION_ENRICHMENT;
61
+ };
62
+
63
+ /**
64
+ * Enriches eligible client events with relevant browser permission changes.
65
+ */
66
+ var PrivacyAndSecurityPermissionEnricher = exports.default = /*#__PURE__*/function () {
67
+ /**
68
+ * Creates a permission enricher.
69
+ * @param {Function} onEnrichmentError permission enrichment error handler
70
+ */
71
+ function PrivacyAndSecurityPermissionEnricher(onEnrichmentError) {
72
+ (0, _classCallCheck2.default)(this, PrivacyAndSecurityPermissionEnricher);
73
+ (0, _defineProperty2.default)(this, "permission", void 0);
74
+ (0, _defineProperty2.default)(this, "lastReported", new _map.default());
75
+ (0, _defineProperty2.default)(this, "onEnrichmentError", void 0);
76
+ this.onEnrichmentError = onEnrichmentError;
77
+ }
78
+
79
+ /**
80
+ * Stores the latest normalized browser permission state.
81
+ * @param {PrivacyAndSecurityPermission} permission permission snapshot
82
+ * @returns {void}
83
+ */
84
+ return (0, _createClass2.default)(PrivacyAndSecurityPermissionEnricher, [{
85
+ key: "setPermission",
86
+ value: function setPermission(permission) {
87
+ this.permission = (0, _utils.projectPrivacyAndSecurityPermission)(permission, ['camera', 'microphone', 'contentShare']);
88
+ }
89
+
90
+ /**
91
+ * Returns the original payload or a copy enriched with relevant permission changes.
92
+ * @param {PermissionEnrichmentContext} context event context and permission history scope
93
+ * @returns {ClientEventPayload | undefined}
94
+ */
95
+ }, {
96
+ key: "enrich",
97
+ value: function enrich(_ref2) {
98
+ var name = _ref2.name,
99
+ payload = _ref2.payload,
100
+ scope = _ref2.scope;
101
+ var policy = resolvePermissionEnrichmentPolicy(name, payload);
102
+ try {
103
+ var _this$lastReported$ge;
104
+ if ((payload === null || payload === void 0 ? void 0 : payload.privacyAndSecurityPermission) !== undefined) {
105
+ // An explicitly supplied permission payload is authoritative for this event.
106
+ if (!policy.terminal) {
107
+ this.lastReported.set(scope, _objectSpread(_objectSpread({}, this.lastReported.get(scope)), payload.privacyAndSecurityPermission));
108
+ }
109
+ return payload;
110
+ }
111
+ if (policy.resources.length === 0) {
112
+ return payload;
113
+ }
114
+ var projectedPermission = this.permission ? (0, _utils.projectPrivacyAndSecurityPermission)(this.permission, policy.resources) : undefined;
115
+ if (!projectedPermission) {
116
+ return payload;
117
+ }
118
+ if (policy.terminal) {
119
+ return _objectSpread(_objectSpread({}, payload), {}, {
120
+ privacyAndSecurityPermission: projectedPermission
121
+ });
122
+ }
123
+ var lastReported = (_this$lastReported$ge = this.lastReported.get(scope)) !== null && _this$lastReported$ge !== void 0 ? _this$lastReported$ge : {};
124
+ var changedPermission = (0, _utils.getChangedPermission)(projectedPermission, lastReported);
125
+ if (!changedPermission) {
126
+ return payload;
127
+ }
128
+ this.lastReported.set(scope, _objectSpread(_objectSpread({}, lastReported), changedPermission));
129
+ return _objectSpread(_objectSpread({}, payload), {}, {
130
+ privacyAndSecurityPermission: changedPermission
131
+ });
132
+ } catch (error) {
133
+ this.onEnrichmentError(error);
134
+ return payload;
135
+ } finally {
136
+ if (policy.terminal) {
137
+ this.lastReported.delete(scope);
138
+ }
139
+ }
140
+ }
141
+ }]);
142
+ }();
143
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_constants","require","_utils","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","PERMISSION_ENRICHMENT_RULES","exports","events","CAMERA_AND_MICROPHONE_PERMISSION_EVENTS","resolve","resources","terminal","MEDIA_TX_PERMISSION_EVENTS","payload","resolveMediaResources","CONTENT_SHARE_PERMISSION_EVENTS","resolveContentShareResources","FINAL_PERMISSION_EVENTS","resolvePermissionEnrichmentPolicy","name","_PERMISSION_ENRICHMEN","_PERMISSION_ENRICHMEN2","find","_ref","has","NO_PERMISSION_ENRICHMENT","PrivacyAndSecurityPermissionEnricher","onEnrichmentError","_classCallCheck2","_map","_createClass2","key","value","setPermission","permission","projectPrivacyAndSecurityPermission","enrich","_ref2","scope","policy","_this$lastReported$ge","privacyAndSecurityPermission","undefined","lastReported","set","get","projectedPermission","changedPermission","getChangedPermission","error","delete"],"sources":["index.ts"],"sourcesContent":["import type {ClientEventPayload, PrivacyAndSecurityPermission} from '../metrics.types';\nimport {\n CAMERA_AND_MICROPHONE_PERMISSION_EVENTS,\n CONTENT_SHARE_PERMISSION_EVENTS,\n FINAL_PERMISSION_EVENTS,\n MEDIA_TX_PERMISSION_EVENTS,\n NO_PERMISSION_ENRICHMENT,\n} from './constants';\nimport type {\n PermissionEnrichmentContext,\n PermissionEnrichmentPolicy,\n PermissionEnrichmentRule,\n} from './types';\nimport {\n getChangedPermission,\n projectPrivacyAndSecurityPermission,\n resolveContentShareResources,\n resolveMediaResources,\n} from './utils';\n\nexport const PERMISSION_ENRICHMENT_RULES = [\n {\n events: CAMERA_AND_MICROPHONE_PERMISSION_EVENTS,\n resolve: () => ({resources: ['camera', 'microphone'], terminal: false}),\n },\n {\n events: MEDIA_TX_PERMISSION_EVENTS,\n resolve: (payload) => ({resources: resolveMediaResources(payload), terminal: false}),\n },\n {\n events: CONTENT_SHARE_PERMISSION_EVENTS,\n resolve: (payload) => ({\n resources: resolveContentShareResources(payload),\n terminal: false,\n }),\n },\n {\n events: FINAL_PERMISSION_EVENTS,\n resolve: () => ({resources: ['camera', 'microphone', 'contentShare'], terminal: true}),\n },\n] satisfies readonly PermissionEnrichmentRule[];\n\nconst resolvePermissionEnrichmentPolicy = (\n name: PermissionEnrichmentContext['name'],\n payload?: ClientEventPayload\n): PermissionEnrichmentPolicy =>\n PERMISSION_ENRICHMENT_RULES.find(({events}) => events.has(name))?.resolve(payload) ??\n NO_PERMISSION_ENRICHMENT;\n\n/**\n * Enriches eligible client events with relevant browser permission changes.\n */\nexport default class PrivacyAndSecurityPermissionEnricher {\n private permission?: PrivacyAndSecurityPermission;\n\n private lastReported = new Map<string, PrivacyAndSecurityPermission>();\n\n private readonly onEnrichmentError: (error: unknown) => void;\n\n /**\n * Creates a permission enricher.\n * @param {Function} onEnrichmentError permission enrichment error handler\n */\n constructor(onEnrichmentError: (error: unknown) => void) {\n this.onEnrichmentError = onEnrichmentError;\n }\n\n /**\n * Stores the latest normalized browser permission state.\n * @param {PrivacyAndSecurityPermission} permission permission snapshot\n * @returns {void}\n */\n public setPermission(permission: PrivacyAndSecurityPermission): void {\n this.permission = projectPrivacyAndSecurityPermission(permission, [\n 'camera',\n 'microphone',\n 'contentShare',\n ]);\n }\n\n /**\n * Returns the original payload or a copy enriched with relevant permission changes.\n * @param {PermissionEnrichmentContext} context event context and permission history scope\n * @returns {ClientEventPayload | undefined}\n */\n public enrich({\n name,\n payload,\n scope,\n }: PermissionEnrichmentContext): ClientEventPayload | undefined {\n const policy = resolvePermissionEnrichmentPolicy(name, payload);\n\n try {\n if (payload?.privacyAndSecurityPermission !== undefined) {\n // An explicitly supplied permission payload is authoritative for this event.\n if (!policy.terminal) {\n this.lastReported.set(scope, {\n ...this.lastReported.get(scope),\n ...(payload.privacyAndSecurityPermission as PrivacyAndSecurityPermission),\n });\n }\n\n return payload;\n }\n\n if (policy.resources.length === 0) {\n return payload;\n }\n\n const projectedPermission = this.permission\n ? projectPrivacyAndSecurityPermission(this.permission, policy.resources)\n : undefined;\n\n if (!projectedPermission) {\n return payload;\n }\n\n if (policy.terminal) {\n return {...payload, privacyAndSecurityPermission: projectedPermission};\n }\n\n const lastReported = this.lastReported.get(scope) ?? {};\n const changedPermission = getChangedPermission(projectedPermission, lastReported);\n\n if (!changedPermission) {\n return payload;\n }\n\n this.lastReported.set(scope, {...lastReported, ...changedPermission});\n\n return {...payload, privacyAndSecurityPermission: changedPermission};\n } catch (error) {\n this.onEnrichmentError(error);\n\n return payload;\n } finally {\n if (policy.terminal) {\n this.lastReported.delete(scope);\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type {\n ClientEvent,\n ClientEventPayload,\n PrivacyAndSecurityPermissionResource,\n} from '../metrics.types';\n\nexport type PermissionEnrichmentPolicy = {\n resources: readonly PrivacyAndSecurityPermissionResource[];\n terminal: boolean;\n};\n\nexport type PermissionEnrichmentRule = {\n events: ReadonlySet<ClientEvent['name']>;\n resolve: (payload?: ClientEventPayload) => PermissionEnrichmentPolicy;\n};\n\nexport type PermissionEnrichmentContext = {\n name: ClientEvent['name'];\n payload?: ClientEventPayload;\n scope: string;\n};\n"],"mappings":"","ignoreList":[]}