{"version":3,"sources":["../../../packages/core/diagnostics/sme-web-telemetry-models.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAE7E;;sCAEsC;AAEtC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACF,MAAM,WAAW,4BAA4B;IAC1C,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,UAAU,CAAC,EAAE,4BAA4B,CAAC;IAC1C,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,gBAAgB,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAC9C;AAED;;GAEG;AACH,oBAAY,eAAe;IACvB,MAAM,IAAA;IACN,QAAQ,IAAA;IACR,aAAa,IAAA;IACb,WAAW,IAAA;IACX,UAAU,IAAA;IACV,qBAAqB,IAAA;IACrB,YAAY,IAAA;CACf;AAED;;GAEG;AACF,oBAAY,oBAAoB;IAC7B,SAAS,MAAM;IACf,KAAK,OAAO;CACf;AAED;;GAEG;AACF,oBAAY,mBAAmB;IAC5B,aAAa,SAAS;IACtB,KAAK,UAAU;IACf,WAAW,gBAAgB;IAC3B,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,UAAU,eAAe;IACzB,YAAY,iBAAiB;CAChC;AAED;;GAEG;AACH,oBAAY,aAAa;IACrB,QAAQ,aAAa;IACrB,YAAY,aAAa;IACzB,gBAAgB,0BAA0B;IAC1C,SAAS,mBAAmB;IAC5B,gBAAgB,0BAA0B;IAC1C,KAAK,cAAc;IACnB,MAAM,WAAW;IACjB,WAAW,QAAQ;IACnB,WAAW,qBAAqB;IAChC,sBAAsB,iCAAiC;CAC1D;AAED;;GAEG;AACH,oBAAY,oBAAoB;IAC5B,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,KAAK,UAAU;IACf,MAAM,WAAW;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAC9B;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC;IAEf;;OAEG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ;;OAEG;IACH,SAAS,CAAC,EAAE,GAAG,CAAC;CACnB;AAED;;sCAEsC;AACrC,MAAM,WAAW,eAAe;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACF,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC7D;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAC9D;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC;IACd;;OAEG;IACH,WAAW,CAAC,EAAE,GAAG,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,eAAe;IACjE;;OAEG;IACH,OAAO,CAAC,EAAE,GAAG,CAAC;IACd;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,eAAe;IAC9D;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kCAAmC,SAAQ,eAAe;IACvE;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB","file":"sme-web-telemetry-models.d.ts","sourcesContent":["// 1DS documentation found at\r\n// https://1dsdocs.azurewebsites.net/getting-started/javascript-getting_started.html\r\n\r\n/**\r\n * This file contains override value interfaces from 1DS - we redefine these locally because we cannot take the npm package due to\r\n * it being from a private feed. Instead, we load the CDN and use our redefined interfaces to help everything mesh together.\r\n * Disable tslint interface prefix rule b/c these are 1DS libraries, avoid renaming to keep consistent.\r\n */\r\n\r\nimport { RpcNotification } from '../rpc/notification/rpc-notification-model';\r\n\r\n/************************************\r\n * WAC models\r\n ************************************/\r\n\r\n/**\r\n * Exposed class to hold sme performance data.\r\n */\r\nexport interface SmePerformanceData {\r\n    label?: string;\r\n    sme?: any;\r\n    resources?: any;\r\n    navigation?: any;\r\n    totalLoadTime: number;\r\n}\r\n\r\n/**\r\n * Holds lighthouse metrics to send via telemetry. See more details at https://web.dev/vitals/\r\n */\r\n export interface LighthousePerformanceMetrics {\r\n    CumulativeLayoutShift?: number;\r\n    LargestContentfulPaint?: number;\r\n    FirstContentfulPaint?: number;\r\n    FirstInputDelay?: number;\r\n    TimeToFirstByte?: number;\r\n    TotalBlockingTime?: number;\r\n    TimeToInteractive?: number;\r\n}\r\n\r\n/**\r\n * Class w/ all SME performance data to be sent via telemetry. Internal to SmeWebTelemetry.\r\n * Numbers are converted to strings because we use toFixed to truncate numbers to avoid triggering MSCOM scrubbed\r\n * stream personal data removal (eg with phone numbers)\r\n */\r\nexport interface CompleteSmePerformanceData {\r\n    extension: string;\r\n    entryPointName: string;\r\n    url: string;\r\n    moduleOpened: boolean;\r\n    label?: string;\r\n    sme?: any;\r\n    resources?: any;\r\n    navigation?: any;\r\n    totalLoadTime: string;\r\n}\r\n\r\n/**\r\n * Class to hold any kind of telemetry event parameters needed to fire an event.\r\n */\r\nexport interface TelemetryEventBody {\r\n    overrideValues?: IOverrideValues;\r\n    element?: Element;\r\n    performance?: SmePerformanceData;\r\n    lighthouse?: LighthousePerformanceMetrics;\r\n    notification?: RpcNotification;\r\n    custom?: any;\r\n    customProperties?: { [name: string]: any };\r\n}\r\n\r\n/**\r\n * Telemetry events supported.\r\n */\r\nexport enum TelemetryEvents {\r\n    Action,\r\n    PageView,\r\n    ContentUpdate,\r\n    Performance,\r\n    Lighthouse,\r\n    ModuleOpenPerformance,\r\n    Notification\r\n}\r\n\r\n/**\r\n * Telemetry action types supported - corresponds to awa jsll action type dictionary.\r\n */\r\n export enum TelemetryActionTypes {\r\n    Automatic = 'A',\r\n    Click = 'CL'\r\n}\r\n\r\n/**\r\n * Telemetry event types supported - labels type field in data dictionary within events.\r\n */\r\n export enum TelemetryEventTypes {\r\n    Informational = 'info',\r\n    Error = 'error',\r\n    Performance = 'performance',\r\n    Lighthouse = 'lighthouse',\r\n    Notification = 'notification',\r\n    Powershell = 'powershell',\r\n    StatusUpdate = 'statusUpdate'\r\n}\r\n\r\n/**\r\n * Labels for WAC metadata tags\r\n */\r\nexport enum SmeMetaLabels {\r\n    Language = 'wac-lang',\r\n    IsProduction = 'wac-prod',\r\n    ExtensionVersion = 'wac-extension-version',\r\n    SessionId = 'wac-session-id',\r\n    InstallationType = 'wac-installation-type',\r\n    Build = 'wac-build',\r\n    Market = 'market',\r\n    Environment = 'env',\r\n    GatewayMode = 'wac-gateway-mode',\r\n    GatewayOperationalMode = 'wac-gateway-operational-mode'\r\n}\r\n\r\n/**\r\n * Standard telemetry tracking event states\r\n */\r\nexport enum TelemetryEventStates {\r\n    Started = 'started',\r\n    Completed = 'completed',\r\n    Error = 'error',\r\n    Exited = 'exited'\r\n}\r\n\r\n/**\r\n * Include powershell details that may be helpful in telemetry, including response and psSessionId.\r\n * Data is kept as an optional any-helpful field kind of thing.\r\n */\r\nexport interface PowershellDetails {\r\n    /**\r\n     * Response object - this should be the response within the error if result is an AjaxError\r\n     */\r\n    response?: any;\r\n\r\n    /**\r\n     * Powershell session ID - used to map to PS command in telemetry\r\n     */\r\n    id?: string;\r\n\r\n    /**\r\n     * Any other miscellaneous data that would like to be sent.\r\n     */\r\n    otherData?: any;\r\n}\r\n\r\n/************************************\r\n * Override values interfaces\r\n ************************************/\r\n export interface IOverrideValues {\r\n    /**\r\n     * One of the awa.behavior values.\r\n     */\r\n    behavior?: number;\r\n    /**\r\n     * Page name\r\n     */\r\n    pageName?: string;\r\n    /**\r\n     * Page type\r\n     */\r\n    pageType?: string;\r\n    /**\r\n     * KVP to be added to the page tags collected\r\n     */\r\n    pageTags?: any;\r\n    /**\r\n     * Indicates if the event was fired automatically\r\n     */\r\n    isAuto?: boolean;\r\n}\r\n\r\n/**\r\n * Overrides for Page View event\r\n */\r\n export interface IPageViewOverrideValues extends IOverrideValues {\r\n    /**\r\n     * Uri of the referrer page\r\n     */\r\n    referrerUri?: string;\r\n}\r\n\r\n/**\r\n * Overrides for Page Action event\r\n */\r\nexport interface IPageActionOverrideValues extends IOverrideValues {\r\n    /**\r\n     * Uri of the referrer page\r\n     */\r\n    refUri?: string;\r\n    /**\r\n     *  One of the awa.actionType values\r\n     */\r\n    actionType?: string;\r\n    /**\r\n     * Target uri for PageAction events\r\n     */\r\n    targetUri?: string;\r\n    /**\r\n     * Click coordinates relative to the top left of the fully rendered content area in the browser\r\n     */\r\n    clickCoordinateX?: number;\r\n    /**\r\n     * Click coordinates relative to the top left of the fully rendered content area in the browser\r\n     */\r\n    clickCoordinateY?: number;\r\n    /**\r\n     * KVP of the content\r\n     */\r\n    content?: any;\r\n    /**\r\n     * KVPs to be added to the content tags collected on a Page Action event; extends the items in the Content blob in Page Action events\r\n     */\r\n    contentTags?: any;\r\n}\r\n\r\n/**\r\n * Overrides for Content Update event\r\n */\r\nexport interface IContentUpdateOverrideValues extends IOverrideValues {\r\n    /**\r\n     * KVP of the content\r\n     */\r\n    content?: any;\r\n    /**\r\n     * Indicates if the Contentupdate event is the first ContentUpdate event\r\n     */\r\n    isDomComplete?: boolean;\r\n    /**\r\n     *  One of the awa.actionType values\r\n     */\r\n    actionType?: string;\r\n}\r\n\r\n/**\r\n * Overrides for Page Unload event\r\n */\r\nexport interface IPageUnloadOverrideValues extends IOverrideValues {\r\n    /**\r\n     * Scroll depth override\r\n     */\r\n    scrollDepth?: string;\r\n    /**\r\n     * Vertical scroll position/offset when event was fired in pixels.\r\n     */\r\n    vScrollOffset?: number;\r\n}\r\n\r\n/**\r\n * Overrides for Page View Performance event\r\n */\r\nexport interface IPageViewPerformanceOverrideValues extends IOverrideValues {\r\n    /**\r\n     * Viewport height\r\n     */\r\n    vpHeight?: number;\r\n    /**\r\n     * Viewport width\r\n     */\r\n    vpWidth?: number;\r\n    /**\r\n     * Represents UX Framework name and version used.\r\n     */\r\n    framework?: string;\r\n    /**\r\n     * These are timings pulled from the browser/container.\r\n     * They are standards which are captured by the browser, like the navigationStart/End, LoadEventStart/End\r\n     */\r\n    systemTiming?: string;\r\n    /**\r\n     * These are user set timings\r\n     */\r\n    customTiming?: string;\r\n}\r\n"]}