@grafana/faro-transport-otlp-http 1.7.2 → 1.7.3
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.
- package/dist/bundle/faro-transport-otlp-http.iife.js +1 -1
- package/dist/bundle/types/transport.d.ts +1 -1
- package/dist/cjs/payload/transform/transform.js +2 -0
- package/dist/cjs/payload/transform/transform.js.map +1 -1
- package/dist/esm/payload/transform/transform.js +2 -0
- package/dist/esm/payload/transform/transform.js.map +1 -1
- package/dist/types/transport.d.ts +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
var GrafanaFaroTransportOtlpHttp=function(e){"use strict";function t(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r}function r(e,t){return typeof e===t}"function"==typeof SuppressedError&&SuppressedError;const n=e=>r(e,"number")&&!isNaN(e)||r(e,"bigint"),o=e=>!(e=>r(e,"null"))(e)&&r(e,"object"),s=e=>function(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}(e,"Array");var i,a,l;function u(){}!function(e){e.TRACE="trace",e.DEBUG="debug",e.INFO="info",e.LOG="log",e.WARN="warn",e.ERROR="error"}(i||(i={})),i.LOG,i.TRACE,i.DEBUG,i.INFO,i.LOG,i.WARN,i.ERROR,function(e){e.EXCEPTION="exception",e.LOG="log",e.MEASUREMENT="measurement",e.TRACE="trace",e.EVENT="event"}(a||(a={})),a.EXCEPTION,a.LOG,a.MEASUREMENT,a.TRACE,a.EVENT,function(e){e[e.OFF=0]="OFF",e[e.ERROR=1]="ERROR",e[e.WARN=2]="WARN",e[e.INFO=3]="INFO",e[e.VERBOSE=4]="VERBOSE"}(l||(l={}));const c={debug:u,error:u,info:u,prefix:"Faro",warn:u};l.ERROR;const d=Object.assign({},console);class g{constructor(){this.unpatchedConsole=d,this.internalLogger=c,this.config={},this.metas={}}logDebug(...e){this.internalLogger.debug(`${this.name}\n`,...e)}logInfo(...e){this.internalLogger.info(`${this.name}\n`,...e)}logWarn(...e){this.internalLogger.warn(`${this.name}\n`,...e)}logError(...e){this.internalLogger.error(`${this.name}\n`,...e)}}class v extends g{isBatched(){return!1}getIgnoreUrls(){return[]}}const p="1.7.
|
|
1
|
+
var GrafanaFaroTransportOtlpHttp=function(e){"use strict";function t(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r}function r(e,t){return typeof e===t}"function"==typeof SuppressedError&&SuppressedError;const n=e=>r(e,"number")&&!isNaN(e)||r(e,"bigint"),o=e=>!(e=>r(e,"null"))(e)&&r(e,"object"),s=e=>function(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}(e,"Array");var i,a,l;function u(){}!function(e){e.TRACE="trace",e.DEBUG="debug",e.INFO="info",e.LOG="log",e.WARN="warn",e.ERROR="error"}(i||(i={})),i.LOG,i.TRACE,i.DEBUG,i.INFO,i.LOG,i.WARN,i.ERROR,function(e){e.EXCEPTION="exception",e.LOG="log",e.MEASUREMENT="measurement",e.TRACE="trace",e.EVENT="event"}(a||(a={})),a.EXCEPTION,a.LOG,a.MEASUREMENT,a.TRACE,a.EVENT,function(e){e[e.OFF=0]="OFF",e[e.ERROR=1]="ERROR",e[e.WARN=2]="WARN",e[e.INFO=3]="INFO",e[e.VERBOSE=4]="VERBOSE"}(l||(l={}));const c={debug:u,error:u,info:u,prefix:"Faro",warn:u};l.ERROR;const d=Object.assign({},console);class g{constructor(){this.unpatchedConsole=d,this.internalLogger=c,this.config={},this.metas={}}logDebug(...e){this.internalLogger.debug(`${this.name}\n`,...e)}logInfo(...e){this.internalLogger.info(`${this.name}\n`,...e)}logWarn(...e){this.internalLogger.warn(`${this.name}\n`,...e)}logError(...e){this.internalLogger.error(`${this.name}\n`,...e)}}class v extends g{isBatched(){return!1}getIgnoreUrls(){return[]}}const p="1.7.3";var f="exception.type",m="exception.message",h="enduser.id",b="http.url",y="deployment.environment",O="service.name",E="service.version",R="telemetry.sdk.name",L="telemetry.sdk.language",T="telemetry.sdk.version",N="webjs";function w(e){return(e=>r(e,"string"))(e)?{stringValue:e}:(e=>n(e)&&Number.isInteger(e))(e)?{intValue:e}:n(e)?{doubleValue:e}:(e=>r(e,"boolean"))(e)?{boolValue:e}:s(e)?{arrayValue:{values:e.map(w)}}:e instanceof Uint8Array?{bytesValue:e}:o(e)?{kvlistValue:{values:Object.entries(e).map((([e,t])=>I(e,t))).filter(U)}}:{}}function I(e,t){if(null!=t&&""!==t)return{key:e,value:w(t)}}function U(e){return Boolean(e)&&"string"==typeof(null==e?void 0:e.key)&&void 0!==(null==e?void 0:e.value)}const S="browser.brands",x="browser.mobile",j="browser.user_agent",k="browser.language";function D(e,t){function r(e){return{scope:{name:"@grafana/faro-web-sdk",version:p},logRecords:[n(e)]}}function n(r){const{type:n}=r;switch(n){case a.LOG:return function(e){var t,r;const{meta:n,payload:a}=e,l=s(a.timestamp),u=w(a.message);function c(e){switch(e){case i.TRACE:return{severityNumber:1,severityText:"TRACE"};case i.DEBUG:return{severityNumber:5,severityText:"DEBUG"};case i.INFO:return{severityNumber:9,severityText:"INFO"};case i.LOG:return{severityNumber:10,severityText:"INFO2"};case i.WARN:return{severityNumber:13,severityText:"WARN"};case i.ERROR:return{severityNumber:17,severityText:"ERROR"}}}return Object.assign(Object.assign({timeUnixNano:l},c(a.level)),{body:u,attributes:[...o(n),I("faro.log.context",a.context)].filter(U),traceId:null===(t=a.trace)||void 0===t?void 0:t.trace_id,spanId:null===(r=a.trace)||void 0===r?void 0:r.span_id})}(r);case a.EXCEPTION:return function(e){var r,n;const{meta:i,payload:a}=e,l=s(a.timestamp),u=B(e,null==t?void 0:t.createErrorLogBody);return Object.assign(Object.assign({timeUnixNano:l},u?{body:u}:{}),{attributes:[...o(i),I(f,a.type),I(m,a.value),I("faro.error.stacktrace",a.stacktrace),I("faro.error.context",a.context)].filter(U),traceId:null===(r=a.trace)||void 0===r?void 0:r.trace_id,spanId:null===(n=a.trace)||void 0===n?void 0:n.span_id})}(r);case a.EVENT:return function(e){var t,r;const{meta:n,payload:i}=e,a=s(i.timestamp),l=w(i.name);return{timeUnixNano:a,body:l,attributes:[...o(n),I("event.name",i.name),I("event.domain",i.domain),I("event.attributes",i.attributes)].filter(U),traceId:null===(t=i.trace)||void 0===t?void 0:t.trace_id,spanId:null===(r=i.trace)||void 0===r?void 0:r.span_id}}(r);case a.MEASUREMENT:return function(e){var r,n;const{meta:i,payload:a}=e,l=s(a.timestamp),[u,c]=Object.entries(a.values).flat(),d=B(e,null==t?void 0:t.createMeasurementLogBody);return Object.assign(Object.assign({timeUnixNano:l},d?{body:d}:{}),{attributes:[...o(i),I("measurement.type",a.type),I("measurement.name",u),I("measurement.value",c),I("faro.measurement.context",a.context)].filter(U),traceId:null===(r=a.trace)||void 0===r?void 0:r.trace_id,spanId:null===(n=a.trace)||void 0===n?void 0:n.span_id})}(r);default:return null==e||e.error(`Unknown TransportItemType: ${n}`),{}}}function o(e){const{view:t,page:r,session:n,user:o}=e;return[I("view.name",null==t?void 0:t.name),I(b,null==r?void 0:r.url),I("page.id",null==r?void 0:r.id),I("page.attributes",null==r?void 0:r.attributes),I("session.id",null==n?void 0:n.id),I("session.attributes",null==n?void 0:n.attributes),I(h,null==o?void 0:o.id),I("enduser.name",null==o?void 0:o.username),I("enduser.email",null==o?void 0:o.email),I("enduser.attributes",null==o?void 0:o.attributes)].filter(U)}function s(e){return 1e6*Date.parse(e)}return{toResourceLog:function(e){return{resource:A(e),scopeLogs:[r(e)]}},toScopeLog:r,toLogRecord:n}}function A(e){const{browser:t,sdk:r,app:n}=e.meta;return{attributes:[I(x,null==t?void 0:t.mobile),I(j,null==t?void 0:t.userAgent),I(k,null==t?void 0:t.language),I(S,null==t?void 0:t.brands),I("browser.os",null==t?void 0:t.os),I("browser.name",null==t?void 0:t.name),I("browser.version",null==t?void 0:t.version),I("browser.screen_width",null==t?void 0:t.viewportWidth),I("browser.screen_height",null==t?void 0:t.viewportHeight),I(R,null==r?void 0:r.name),I(T,null==r?void 0:r.version),Boolean(r)?I(L,N):void 0,I(O,null==n?void 0:n.name),I(E,null==n?void 0:n.version),I(y,null==n?void 0:n.environment)].filter(U)}}function B(e,t){return"function"==typeof t?w(t(e)):void 0}class F{constructor({internalLogger:e,customOtlpTransform:t,transportItem:r}){this.resourceSpans=[],this.internalLogger=e,this.resourceLogs=[],this.getLogTransforms=D(this.internalLogger,t),this.getTraceTransforms=(this.internalLogger,{toResourceSpan:function(e){var t,r;const n=A(e),o=null===(r=null===(t=e.payload.resourceSpans)||void 0===t?void 0:t[0])||void 0===r?void 0:r.scopeSpans;return{resource:n,scopeSpans:null!=o?o:[]}}}),r&&this.addResourceItem(r)}getPayload(){return{resourceLogs:this.resourceLogs,resourceSpans:this.resourceSpans}}addResourceItem(e){var t,r,n,o;const{type:s}=e;try{switch(s){case a.LOG:case a.EXCEPTION:case a.EVENT:case a.MEASUREMENT:const{toLogRecord:o,toResourceLog:i}=this.getLogTransforms;0===this.resourceLogs.length?this.resourceLogs=[i(e)]:null===(r=null===(t=this.resourceLogs[0])||void 0===t?void 0:t.scopeLogs[0])||void 0===r||r.logRecords.push(o(e));break;case a.TRACE:const{toResourceSpan:l}=this.getTraceTransforms;this.resourceSpans.push(l(e));break;default:null===(n=this.internalLogger)||void 0===n||n.error(`Unknown TransportItemType: ${s}`)}}catch(e){null===(o=this.internalLogger)||void 0===o||o.error(e)}}}return e.OtlpHttpTransport=class extends v{constructor(e){var t,r,n;super(),this.options=e,this.name="@grafana/faro-web-sdk:transport-otlp-http",this.version=p,this.sendingTracesDisabledUntil=new Date,this.sendingLogsDisabledUntil=new Date,this.rateLimitBackoffMs=null!==(t=e.defaultRateLimitBackoffMs)&&void 0!==t?t:5e3,this.promiseBuffer=function(e){const{size:t,concurrency:r}=e,n=[];let o=0;const s=()=>{if(o<r&&n.length){const{producer:e,resolve:t,reject:r}=n.shift();o++,e().then((e=>{o--,s(),t(e)}),(e=>{o--,s(),r(e)}))}};return{add:e=>{if(n.length+o>=t)throw new Error("Task buffer full");return new Promise(((t,r)=>{n.push({producer:e,resolve:t,reject:r}),s()}))}}}({size:null!==(r=null==e?void 0:e.bufferSize)&&void 0!==r?r:30,concurrency:null!==(n=null==e?void 0:e.concurrency)&&void 0!==n?n:5})}getIgnoreUrls(){var e;const{tracesURL:t="",logsURL:r=""}=this.options;return[t,r].filter(Boolean).concat(null!==(e=this.config.ignoreUrls)&&void 0!==e?e:[])}isBatched(){return!0}send(e){const t=new F({internalLogger:this.internalLogger,customOtlpTransform:this.options.otlpTransform});e.forEach((e=>t.addResourceItem(e))),this.sendPayload(t.getPayload())}sendPayload(e){try{const{tracesURL:r="",logsURL:n=""}=this.options;for(const[o,i]of Object.entries(e)){if(!(s(i)&&i.length>0))continue;let e,a=e=>{},l="";switch(o){case"resourceSpans":l=r,e=this.sendingTracesDisabledUntil,a=e=>{this.sendingTracesDisabledUntil=e};break;case"resourceLogs":l=n,e=this.sendingLogsDisabledUntil,a=e=>{this.sendingLogsDisabledUntil=e}}if(e&&e>new Date(Date.now()))return void this.logWarn(`Dropping transport item due to too many requests. Backoff until ${e}`);const u=JSON.stringify({[o]:i}),{requestOptions:c,apiKey:d}=this.options,g=null!=c?c:{},{headers:v}=g,p=t(g,["headers"]);this.promiseBuffer.add((()=>fetch(l,Object.assign({method:"POST",headers:Object.assign(Object.assign({"Content-Type":"application/json"},null!=v?v:{}),d?{"x-api-key":d}:{}),body:u,keepalive:u.length<=6e4},null!=p?p:{})).then((t=>(429===t.status&&(a(this.getRetryAfterDate(t)),this.logWarn(`Too many requests, backing off until ${e}`)),t))).catch((e=>{this.logError("Failed sending payload to the receiver\n",JSON.parse(u),e)}))))}}catch(e){this.logError(e)}}getRetryAfterDate(e){const t=Date.now(),r=e.headers.get("Retry-After");if(r){const e=Number(r);if(!isNaN(e))return new Date(1e3*e+t);const n=Date.parse(r);if(!isNaN(n))return new Date(n)}return new Date(t+this.rateLimitBackoffMs)}},e}({});
|
|
@@ -4,7 +4,7 @@ import type { OtlpHttpTransportOptions } from './types';
|
|
|
4
4
|
export declare class OtlpHttpTransport extends BaseTransport {
|
|
5
5
|
private options;
|
|
6
6
|
readonly name = "@grafana/faro-web-sdk:transport-otlp-http";
|
|
7
|
-
readonly version = "1.7.
|
|
7
|
+
readonly version = "1.7.3";
|
|
8
8
|
private readonly promiseBuffer;
|
|
9
9
|
private readonly rateLimitBackoffMs;
|
|
10
10
|
private sendingTracesDisabledUntil;
|
|
@@ -187,6 +187,8 @@ function toResource(transportItem) {
|
|
|
187
187
|
(0, attribute_1.toAttribute)('browser.os', browser === null || browser === void 0 ? void 0 : browser.os),
|
|
188
188
|
(0, attribute_1.toAttribute)('browser.name', browser === null || browser === void 0 ? void 0 : browser.name),
|
|
189
189
|
(0, attribute_1.toAttribute)('browser.version', browser === null || browser === void 0 ? void 0 : browser.version),
|
|
190
|
+
(0, attribute_1.toAttribute)('browser.screen_width', browser === null || browser === void 0 ? void 0 : browser.viewportWidth),
|
|
191
|
+
(0, attribute_1.toAttribute)('browser.screen_height', browser === null || browser === void 0 ? void 0 : browser.viewportHeight),
|
|
190
192
|
(0, attribute_1.toAttribute)(semantic_conventions_1.SemanticResourceAttributes.TELEMETRY_SDK_NAME, sdk === null || sdk === void 0 ? void 0 : sdk.name),
|
|
191
193
|
(0, attribute_1.toAttribute)(semantic_conventions_1.SemanticResourceAttributes.TELEMETRY_SDK_VERSION, sdk === null || sdk === void 0 ? void 0 : sdk.version),
|
|
192
194
|
Boolean(sdk)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../src/payload/transform/transform.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IKeyValue } from '@opentelemetry/otlp-transformer';\nimport {\n SemanticAttributes,\n SemanticResourceAttributes,\n TelemetrySdkLanguageValues,\n} from '@opentelemetry/semantic-conventions';\n\nimport {\n EventEvent,\n ExceptionEvent,\n LogEvent,\n LogLevel,\n MeasurementEvent,\n Meta,\n TransportItem,\n TransportItemType,\n VERSION,\n} from '@grafana/faro-core';\nimport type { InternalLogger, TraceEvent } from '@grafana/faro-core';\n\nimport type { OtlpHttpTransportOptions } from '../../types';\nimport { isAttribute, toAttribute, toAttributeValue } from '../attribute';\n\nimport type {\n LogRecord,\n LogsTransform,\n LogTransportItem,\n Resource,\n ResourceLog,\n ResourceMeta,\n ResourceSpan,\n ScopeLog,\n StringValueNonNullable,\n TraceTransform,\n} from './types';\n\n/**\n * Seems currently to be missing in the semantic-conventions npm package.\n * See: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#todos\n *\n * Attributes are as defined by the Otel docs\n */\nconst SemanticBrowserAttributes = {\n BROWSER_BRANDS: 'browser.brands',\n BROWSER_PLATFORM: 'browser.platform',\n BROWSER_MOBILE: 'browser.mobile',\n BROWSER_USER_AGENT: 'browser.user_agent',\n BROWSER_LANGUAGE: 'browser.language',\n} as const;\n\nexport function getLogTransforms(\n internalLogger: InternalLogger,\n customOtlpTransform?: OtlpHttpTransportOptions['otlpTransform']\n): LogsTransform {\n function toResourceLog(transportItem: LogTransportItem): ResourceLog {\n const resource = toResource(transportItem);\n\n return {\n resource,\n scopeLogs: [toScopeLog(transportItem)],\n };\n }\n\n function toScopeLog(transportItem: LogTransportItem): ScopeLog {\n return {\n scope: {\n name: '@grafana/faro-web-sdk',\n version: VERSION,\n },\n logRecords: [toLogRecord(transportItem)],\n };\n }\n\n function toLogRecord(transportItem: LogTransportItem): LogRecord {\n const { type } = transportItem;\n\n switch (type) {\n case TransportItemType.LOG:\n return toLogLogRecord(transportItem as TransportItem<LogEvent>);\n case TransportItemType.EXCEPTION:\n return toErrorLogRecord(transportItem as TransportItem<ExceptionEvent>);\n case TransportItemType.EVENT:\n return toEventLogRecord(transportItem as TransportItem<EventEvent>);\n case TransportItemType.MEASUREMENT:\n return toMeasurementLogRecord(transportItem as TransportItem<MeasurementEvent>);\n default:\n internalLogger?.error(`Unknown TransportItemType: ${type}`);\n return {};\n }\n }\n\n function toLogLogRecord(transportItem: TransportItem<LogEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const body = toAttributeValue(payload.message) as StringValueNonNullable;\n\n function getSeverityProperties(logLevel: LogLevel) {\n switch (logLevel) {\n case LogLevel.TRACE:\n return { severityNumber: 1, severityText: 'TRACE' };\n case LogLevel.DEBUG:\n return { severityNumber: 5, severityText: 'DEBUG' };\n case LogLevel.INFO:\n return { severityNumber: 9, severityText: 'INFO' };\n case LogLevel.LOG:\n return { severityNumber: 10, severityText: 'INFO2' };\n case LogLevel.WARN:\n return { severityNumber: 13, severityText: 'WARN' };\n case LogLevel.ERROR:\n return { severityNumber: 17, severityText: 'ERROR' };\n }\n }\n\n return {\n timeUnixNano,\n ...getSeverityProperties(payload.level),\n body,\n attributes: [...getCommonLogAttributes(meta), toAttribute('faro.log.context', payload.context)].filter(\n isAttribute\n ),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function toEventLogRecord(transportItem: TransportItem<EventEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const body = toAttributeValue(payload.name) as StringValueNonNullable;\n\n return {\n timeUnixNano,\n body,\n attributes: [\n ...getCommonLogAttributes(meta),\n toAttribute('event.name', payload.name), // This is a semantic attribute. But event.name constant is currently missing in sematic-conventions npm package\n toAttribute('event.domain', payload.domain), // This is a semantic attribute. But event.domain constant is currently missing in sematic-conventions npm package\n toAttribute('event.attributes', payload.attributes),\n ].filter(isAttribute),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function toErrorLogRecord(transportItem: TransportItem<ExceptionEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const body = getCustomLogBody(transportItem, customOtlpTransform?.createErrorLogBody);\n\n return {\n timeUnixNano,\n ...(body ? { body } : {}),\n attributes: [\n ...getCommonLogAttributes(meta),\n toAttribute(SemanticAttributes.EXCEPTION_TYPE, payload.type),\n toAttribute(SemanticAttributes.EXCEPTION_MESSAGE, payload.value),\n // toAttribute(SemanticAttributes.EXCEPTION_STACKTRACE, undefined),\n toAttribute('faro.error.stacktrace', payload.stacktrace),\n toAttribute('faro.error.context', payload.context),\n ].filter(isAttribute),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function toMeasurementLogRecord(transportItem: TransportItem<MeasurementEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const [measurementName, measurementValue] = Object.entries(payload.values).flat();\n\n const body = getCustomLogBody(transportItem, customOtlpTransform?.createMeasurementLogBody);\n\n return {\n timeUnixNano,\n ...(body ? { body } : {}),\n attributes: [\n ...getCommonLogAttributes(meta),\n toAttribute('measurement.type', payload.type),\n toAttribute('measurement.name', measurementName),\n toAttribute('measurement.value', measurementValue),\n toAttribute('faro.measurement.context', payload.context),\n ].filter(isAttribute),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function getCommonLogAttributes(meta: Meta): IKeyValue[] {\n const { view, page, session, user } = meta;\n\n return [\n toAttribute('view.name', view?.name),\n toAttribute(SemanticAttributes.HTTP_URL, page?.url),\n toAttribute('page.id', page?.id),\n toAttribute('page.attributes', page?.attributes),\n toAttribute('session.id', session?.id),\n toAttribute('session.attributes', session?.attributes),\n toAttribute(SemanticAttributes.ENDUSER_ID, user?.id),\n toAttribute('enduser.name', user?.username),\n toAttribute('enduser.email', user?.email),\n toAttribute('enduser.attributes', user?.attributes),\n ].filter(isAttribute);\n }\n\n function toTimeUnixNano(timestamp: string): number {\n return Date.parse(timestamp) * 1e6;\n }\n\n return {\n toResourceLog,\n toScopeLog,\n toLogRecord,\n };\n}\n\nexport function getTraceTransforms(_internalLogger?: InternalLogger): TraceTransform {\n function toResourceSpan(transportItem: TransportItem<TraceEvent>): ResourceSpan {\n const resource = toResource(transportItem);\n const scopeSpans = transportItem.payload.resourceSpans?.[0]?.scopeSpans;\n\n return {\n resource,\n scopeSpans: scopeSpans ?? [],\n };\n }\n\n return {\n toResourceSpan,\n };\n}\n\nfunction toResource(transportItem: TransportItem): Readonly<Resource> {\n const { browser, sdk, app }: ResourceMeta = transportItem.meta;\n\n return {\n attributes: [\n toAttribute(SemanticBrowserAttributes.BROWSER_MOBILE, browser?.mobile),\n toAttribute(SemanticBrowserAttributes.BROWSER_USER_AGENT, browser?.userAgent),\n toAttribute(SemanticBrowserAttributes.BROWSER_LANGUAGE, browser?.language),\n toAttribute(SemanticBrowserAttributes.BROWSER_BRANDS, browser?.brands),\n toAttribute('browser.os', browser?.os),\n toAttribute('browser.name', browser?.name),\n toAttribute('browser.version', browser?.version),\n\n toAttribute(SemanticResourceAttributes.TELEMETRY_SDK_NAME, sdk?.name),\n toAttribute(SemanticResourceAttributes.TELEMETRY_SDK_VERSION, sdk?.version),\n Boolean(sdk)\n ? toAttribute(SemanticResourceAttributes.TELEMETRY_SDK_LANGUAGE, TelemetrySdkLanguageValues.WEBJS)\n : undefined,\n\n toAttribute(SemanticResourceAttributes.SERVICE_NAME, app?.name),\n toAttribute(SemanticResourceAttributes.SERVICE_VERSION, app?.version),\n toAttribute(SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT, app?.environment),\n ].filter(isAttribute),\n };\n}\n\nfunction getCustomLogBody<T>(\n transportItem: T,\n createCustomLogBody?: (item: T) => string\n): StringValueNonNullable | undefined {\n return typeof createCustomLogBody === 'function'\n ? (toAttributeValue(createCustomLogBody(transportItem)) as StringValueNonNullable)\n : undefined;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../src/payload/transform/transform.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IKeyValue } from '@opentelemetry/otlp-transformer';\nimport {\n SemanticAttributes,\n SemanticResourceAttributes,\n TelemetrySdkLanguageValues,\n} from '@opentelemetry/semantic-conventions';\n\nimport {\n EventEvent,\n ExceptionEvent,\n LogEvent,\n LogLevel,\n MeasurementEvent,\n Meta,\n TransportItem,\n TransportItemType,\n VERSION,\n} from '@grafana/faro-core';\nimport type { InternalLogger, TraceEvent } from '@grafana/faro-core';\n\nimport type { OtlpHttpTransportOptions } from '../../types';\nimport { isAttribute, toAttribute, toAttributeValue } from '../attribute';\n\nimport type {\n LogRecord,\n LogsTransform,\n LogTransportItem,\n Resource,\n ResourceLog,\n ResourceMeta,\n ResourceSpan,\n ScopeLog,\n StringValueNonNullable,\n TraceTransform,\n} from './types';\n\n/**\n * Seems currently to be missing in the semantic-conventions npm package.\n * See: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#todos\n *\n * Attributes are as defined by the Otel docs\n */\nconst SemanticBrowserAttributes = {\n BROWSER_BRANDS: 'browser.brands',\n BROWSER_PLATFORM: 'browser.platform',\n BROWSER_MOBILE: 'browser.mobile',\n BROWSER_USER_AGENT: 'browser.user_agent',\n BROWSER_LANGUAGE: 'browser.language',\n} as const;\n\nexport function getLogTransforms(\n internalLogger: InternalLogger,\n customOtlpTransform?: OtlpHttpTransportOptions['otlpTransform']\n): LogsTransform {\n function toResourceLog(transportItem: LogTransportItem): ResourceLog {\n const resource = toResource(transportItem);\n\n return {\n resource,\n scopeLogs: [toScopeLog(transportItem)],\n };\n }\n\n function toScopeLog(transportItem: LogTransportItem): ScopeLog {\n return {\n scope: {\n name: '@grafana/faro-web-sdk',\n version: VERSION,\n },\n logRecords: [toLogRecord(transportItem)],\n };\n }\n\n function toLogRecord(transportItem: LogTransportItem): LogRecord {\n const { type } = transportItem;\n\n switch (type) {\n case TransportItemType.LOG:\n return toLogLogRecord(transportItem as TransportItem<LogEvent>);\n case TransportItemType.EXCEPTION:\n return toErrorLogRecord(transportItem as TransportItem<ExceptionEvent>);\n case TransportItemType.EVENT:\n return toEventLogRecord(transportItem as TransportItem<EventEvent>);\n case TransportItemType.MEASUREMENT:\n return toMeasurementLogRecord(transportItem as TransportItem<MeasurementEvent>);\n default:\n internalLogger?.error(`Unknown TransportItemType: ${type}`);\n return {};\n }\n }\n\n function toLogLogRecord(transportItem: TransportItem<LogEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const body = toAttributeValue(payload.message) as StringValueNonNullable;\n\n function getSeverityProperties(logLevel: LogLevel) {\n switch (logLevel) {\n case LogLevel.TRACE:\n return { severityNumber: 1, severityText: 'TRACE' };\n case LogLevel.DEBUG:\n return { severityNumber: 5, severityText: 'DEBUG' };\n case LogLevel.INFO:\n return { severityNumber: 9, severityText: 'INFO' };\n case LogLevel.LOG:\n return { severityNumber: 10, severityText: 'INFO2' };\n case LogLevel.WARN:\n return { severityNumber: 13, severityText: 'WARN' };\n case LogLevel.ERROR:\n return { severityNumber: 17, severityText: 'ERROR' };\n }\n }\n\n return {\n timeUnixNano,\n ...getSeverityProperties(payload.level),\n body,\n attributes: [...getCommonLogAttributes(meta), toAttribute('faro.log.context', payload.context)].filter(\n isAttribute\n ),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function toEventLogRecord(transportItem: TransportItem<EventEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const body = toAttributeValue(payload.name) as StringValueNonNullable;\n\n return {\n timeUnixNano,\n body,\n attributes: [\n ...getCommonLogAttributes(meta),\n toAttribute('event.name', payload.name), // This is a semantic attribute. But event.name constant is currently missing in sematic-conventions npm package\n toAttribute('event.domain', payload.domain), // This is a semantic attribute. But event.domain constant is currently missing in sematic-conventions npm package\n toAttribute('event.attributes', payload.attributes),\n ].filter(isAttribute),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function toErrorLogRecord(transportItem: TransportItem<ExceptionEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const body = getCustomLogBody(transportItem, customOtlpTransform?.createErrorLogBody);\n\n return {\n timeUnixNano,\n ...(body ? { body } : {}),\n attributes: [\n ...getCommonLogAttributes(meta),\n toAttribute(SemanticAttributes.EXCEPTION_TYPE, payload.type),\n toAttribute(SemanticAttributes.EXCEPTION_MESSAGE, payload.value),\n // toAttribute(SemanticAttributes.EXCEPTION_STACKTRACE, undefined),\n toAttribute('faro.error.stacktrace', payload.stacktrace),\n toAttribute('faro.error.context', payload.context),\n ].filter(isAttribute),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function toMeasurementLogRecord(transportItem: TransportItem<MeasurementEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const [measurementName, measurementValue] = Object.entries(payload.values).flat();\n\n const body = getCustomLogBody(transportItem, customOtlpTransform?.createMeasurementLogBody);\n\n return {\n timeUnixNano,\n ...(body ? { body } : {}),\n attributes: [\n ...getCommonLogAttributes(meta),\n toAttribute('measurement.type', payload.type),\n toAttribute('measurement.name', measurementName),\n toAttribute('measurement.value', measurementValue),\n toAttribute('faro.measurement.context', payload.context),\n ].filter(isAttribute),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function getCommonLogAttributes(meta: Meta): IKeyValue[] {\n const { view, page, session, user } = meta;\n\n return [\n toAttribute('view.name', view?.name),\n toAttribute(SemanticAttributes.HTTP_URL, page?.url),\n toAttribute('page.id', page?.id),\n toAttribute('page.attributes', page?.attributes),\n toAttribute('session.id', session?.id),\n toAttribute('session.attributes', session?.attributes),\n toAttribute(SemanticAttributes.ENDUSER_ID, user?.id),\n toAttribute('enduser.name', user?.username),\n toAttribute('enduser.email', user?.email),\n toAttribute('enduser.attributes', user?.attributes),\n ].filter(isAttribute);\n }\n\n function toTimeUnixNano(timestamp: string): number {\n return Date.parse(timestamp) * 1e6;\n }\n\n return {\n toResourceLog,\n toScopeLog,\n toLogRecord,\n };\n}\n\nexport function getTraceTransforms(_internalLogger?: InternalLogger): TraceTransform {\n function toResourceSpan(transportItem: TransportItem<TraceEvent>): ResourceSpan {\n const resource = toResource(transportItem);\n const scopeSpans = transportItem.payload.resourceSpans?.[0]?.scopeSpans;\n\n return {\n resource,\n scopeSpans: scopeSpans ?? [],\n };\n }\n\n return {\n toResourceSpan,\n };\n}\n\nfunction toResource(transportItem: TransportItem): Readonly<Resource> {\n const { browser, sdk, app }: ResourceMeta = transportItem.meta;\n\n return {\n attributes: [\n toAttribute(SemanticBrowserAttributes.BROWSER_MOBILE, browser?.mobile),\n toAttribute(SemanticBrowserAttributes.BROWSER_USER_AGENT, browser?.userAgent),\n toAttribute(SemanticBrowserAttributes.BROWSER_LANGUAGE, browser?.language),\n toAttribute(SemanticBrowserAttributes.BROWSER_BRANDS, browser?.brands),\n toAttribute('browser.os', browser?.os),\n toAttribute('browser.name', browser?.name),\n toAttribute('browser.version', browser?.version),\n toAttribute('browser.screen_width', browser?.viewportWidth),\n toAttribute('browser.screen_height', browser?.viewportHeight),\n\n toAttribute(SemanticResourceAttributes.TELEMETRY_SDK_NAME, sdk?.name),\n toAttribute(SemanticResourceAttributes.TELEMETRY_SDK_VERSION, sdk?.version),\n Boolean(sdk)\n ? toAttribute(SemanticResourceAttributes.TELEMETRY_SDK_LANGUAGE, TelemetrySdkLanguageValues.WEBJS)\n : undefined,\n\n toAttribute(SemanticResourceAttributes.SERVICE_NAME, app?.name),\n toAttribute(SemanticResourceAttributes.SERVICE_VERSION, app?.version),\n toAttribute(SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT, app?.environment),\n ].filter(isAttribute),\n };\n}\n\nfunction getCustomLogBody<T>(\n transportItem: T,\n createCustomLogBody?: (item: T) => string\n): StringValueNonNullable | undefined {\n return typeof createCustomLogBody === 'function'\n ? (toAttributeValue(createCustomLogBody(transportItem)) as StringValueNonNullable)\n : undefined;\n}\n"]}
|
|
@@ -165,6 +165,8 @@ function toResource(transportItem) {
|
|
|
165
165
|
toAttribute('browser.os', browser === null || browser === void 0 ? void 0 : browser.os),
|
|
166
166
|
toAttribute('browser.name', browser === null || browser === void 0 ? void 0 : browser.name),
|
|
167
167
|
toAttribute('browser.version', browser === null || browser === void 0 ? void 0 : browser.version),
|
|
168
|
+
toAttribute('browser.screen_width', browser === null || browser === void 0 ? void 0 : browser.viewportWidth),
|
|
169
|
+
toAttribute('browser.screen_height', browser === null || browser === void 0 ? void 0 : browser.viewportHeight),
|
|
168
170
|
toAttribute(SemanticResourceAttributes.TELEMETRY_SDK_NAME, sdk === null || sdk === void 0 ? void 0 : sdk.name),
|
|
169
171
|
toAttribute(SemanticResourceAttributes.TELEMETRY_SDK_VERSION, sdk === null || sdk === void 0 ? void 0 : sdk.version),
|
|
170
172
|
Boolean(sdk)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../src/payload/transform/transform.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IKeyValue } from '@opentelemetry/otlp-transformer';\nimport {\n SemanticAttributes,\n SemanticResourceAttributes,\n TelemetrySdkLanguageValues,\n} from '@opentelemetry/semantic-conventions';\n\nimport {\n EventEvent,\n ExceptionEvent,\n LogEvent,\n LogLevel,\n MeasurementEvent,\n Meta,\n TransportItem,\n TransportItemType,\n VERSION,\n} from '@grafana/faro-core';\nimport type { InternalLogger, TraceEvent } from '@grafana/faro-core';\n\nimport type { OtlpHttpTransportOptions } from '../../types';\nimport { isAttribute, toAttribute, toAttributeValue } from '../attribute';\n\nimport type {\n LogRecord,\n LogsTransform,\n LogTransportItem,\n Resource,\n ResourceLog,\n ResourceMeta,\n ResourceSpan,\n ScopeLog,\n StringValueNonNullable,\n TraceTransform,\n} from './types';\n\n/**\n * Seems currently to be missing in the semantic-conventions npm package.\n * See: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#todos\n *\n * Attributes are as defined by the Otel docs\n */\nconst SemanticBrowserAttributes = {\n BROWSER_BRANDS: 'browser.brands',\n BROWSER_PLATFORM: 'browser.platform',\n BROWSER_MOBILE: 'browser.mobile',\n BROWSER_USER_AGENT: 'browser.user_agent',\n BROWSER_LANGUAGE: 'browser.language',\n} as const;\n\nexport function getLogTransforms(\n internalLogger: InternalLogger,\n customOtlpTransform?: OtlpHttpTransportOptions['otlpTransform']\n): LogsTransform {\n function toResourceLog(transportItem: LogTransportItem): ResourceLog {\n const resource = toResource(transportItem);\n\n return {\n resource,\n scopeLogs: [toScopeLog(transportItem)],\n };\n }\n\n function toScopeLog(transportItem: LogTransportItem): ScopeLog {\n return {\n scope: {\n name: '@grafana/faro-web-sdk',\n version: VERSION,\n },\n logRecords: [toLogRecord(transportItem)],\n };\n }\n\n function toLogRecord(transportItem: LogTransportItem): LogRecord {\n const { type } = transportItem;\n\n switch (type) {\n case TransportItemType.LOG:\n return toLogLogRecord(transportItem as TransportItem<LogEvent>);\n case TransportItemType.EXCEPTION:\n return toErrorLogRecord(transportItem as TransportItem<ExceptionEvent>);\n case TransportItemType.EVENT:\n return toEventLogRecord(transportItem as TransportItem<EventEvent>);\n case TransportItemType.MEASUREMENT:\n return toMeasurementLogRecord(transportItem as TransportItem<MeasurementEvent>);\n default:\n internalLogger?.error(`Unknown TransportItemType: ${type}`);\n return {};\n }\n }\n\n function toLogLogRecord(transportItem: TransportItem<LogEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const body = toAttributeValue(payload.message) as StringValueNonNullable;\n\n function getSeverityProperties(logLevel: LogLevel) {\n switch (logLevel) {\n case LogLevel.TRACE:\n return { severityNumber: 1, severityText: 'TRACE' };\n case LogLevel.DEBUG:\n return { severityNumber: 5, severityText: 'DEBUG' };\n case LogLevel.INFO:\n return { severityNumber: 9, severityText: 'INFO' };\n case LogLevel.LOG:\n return { severityNumber: 10, severityText: 'INFO2' };\n case LogLevel.WARN:\n return { severityNumber: 13, severityText: 'WARN' };\n case LogLevel.ERROR:\n return { severityNumber: 17, severityText: 'ERROR' };\n }\n }\n\n return {\n timeUnixNano,\n ...getSeverityProperties(payload.level),\n body,\n attributes: [...getCommonLogAttributes(meta), toAttribute('faro.log.context', payload.context)].filter(\n isAttribute\n ),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function toEventLogRecord(transportItem: TransportItem<EventEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const body = toAttributeValue(payload.name) as StringValueNonNullable;\n\n return {\n timeUnixNano,\n body,\n attributes: [\n ...getCommonLogAttributes(meta),\n toAttribute('event.name', payload.name), // This is a semantic attribute. But event.name constant is currently missing in sematic-conventions npm package\n toAttribute('event.domain', payload.domain), // This is a semantic attribute. But event.domain constant is currently missing in sematic-conventions npm package\n toAttribute('event.attributes', payload.attributes),\n ].filter(isAttribute),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function toErrorLogRecord(transportItem: TransportItem<ExceptionEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const body = getCustomLogBody(transportItem, customOtlpTransform?.createErrorLogBody);\n\n return {\n timeUnixNano,\n ...(body ? { body } : {}),\n attributes: [\n ...getCommonLogAttributes(meta),\n toAttribute(SemanticAttributes.EXCEPTION_TYPE, payload.type),\n toAttribute(SemanticAttributes.EXCEPTION_MESSAGE, payload.value),\n // toAttribute(SemanticAttributes.EXCEPTION_STACKTRACE, undefined),\n toAttribute('faro.error.stacktrace', payload.stacktrace),\n toAttribute('faro.error.context', payload.context),\n ].filter(isAttribute),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function toMeasurementLogRecord(transportItem: TransportItem<MeasurementEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const [measurementName, measurementValue] = Object.entries(payload.values).flat();\n\n const body = getCustomLogBody(transportItem, customOtlpTransform?.createMeasurementLogBody);\n\n return {\n timeUnixNano,\n ...(body ? { body } : {}),\n attributes: [\n ...getCommonLogAttributes(meta),\n toAttribute('measurement.type', payload.type),\n toAttribute('measurement.name', measurementName),\n toAttribute('measurement.value', measurementValue),\n toAttribute('faro.measurement.context', payload.context),\n ].filter(isAttribute),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function getCommonLogAttributes(meta: Meta): IKeyValue[] {\n const { view, page, session, user } = meta;\n\n return [\n toAttribute('view.name', view?.name),\n toAttribute(SemanticAttributes.HTTP_URL, page?.url),\n toAttribute('page.id', page?.id),\n toAttribute('page.attributes', page?.attributes),\n toAttribute('session.id', session?.id),\n toAttribute('session.attributes', session?.attributes),\n toAttribute(SemanticAttributes.ENDUSER_ID, user?.id),\n toAttribute('enduser.name', user?.username),\n toAttribute('enduser.email', user?.email),\n toAttribute('enduser.attributes', user?.attributes),\n ].filter(isAttribute);\n }\n\n function toTimeUnixNano(timestamp: string): number {\n return Date.parse(timestamp) * 1e6;\n }\n\n return {\n toResourceLog,\n toScopeLog,\n toLogRecord,\n };\n}\n\nexport function getTraceTransforms(_internalLogger?: InternalLogger): TraceTransform {\n function toResourceSpan(transportItem: TransportItem<TraceEvent>): ResourceSpan {\n const resource = toResource(transportItem);\n const scopeSpans = transportItem.payload.resourceSpans?.[0]?.scopeSpans;\n\n return {\n resource,\n scopeSpans: scopeSpans ?? [],\n };\n }\n\n return {\n toResourceSpan,\n };\n}\n\nfunction toResource(transportItem: TransportItem): Readonly<Resource> {\n const { browser, sdk, app }: ResourceMeta = transportItem.meta;\n\n return {\n attributes: [\n toAttribute(SemanticBrowserAttributes.BROWSER_MOBILE, browser?.mobile),\n toAttribute(SemanticBrowserAttributes.BROWSER_USER_AGENT, browser?.userAgent),\n toAttribute(SemanticBrowserAttributes.BROWSER_LANGUAGE, browser?.language),\n toAttribute(SemanticBrowserAttributes.BROWSER_BRANDS, browser?.brands),\n toAttribute('browser.os', browser?.os),\n toAttribute('browser.name', browser?.name),\n toAttribute('browser.version', browser?.version),\n\n toAttribute(SemanticResourceAttributes.TELEMETRY_SDK_NAME, sdk?.name),\n toAttribute(SemanticResourceAttributes.TELEMETRY_SDK_VERSION, sdk?.version),\n Boolean(sdk)\n ? toAttribute(SemanticResourceAttributes.TELEMETRY_SDK_LANGUAGE, TelemetrySdkLanguageValues.WEBJS)\n : undefined,\n\n toAttribute(SemanticResourceAttributes.SERVICE_NAME, app?.name),\n toAttribute(SemanticResourceAttributes.SERVICE_VERSION, app?.version),\n toAttribute(SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT, app?.environment),\n ].filter(isAttribute),\n };\n}\n\nfunction getCustomLogBody<T>(\n transportItem: T,\n createCustomLogBody?: (item: T) => string\n): StringValueNonNullable | undefined {\n return typeof createCustomLogBody === 'function'\n ? (toAttributeValue(createCustomLogBody(transportItem)) as StringValueNonNullable)\n : undefined;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../src/payload/transform/transform.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IKeyValue } from '@opentelemetry/otlp-transformer';\nimport {\n SemanticAttributes,\n SemanticResourceAttributes,\n TelemetrySdkLanguageValues,\n} from '@opentelemetry/semantic-conventions';\n\nimport {\n EventEvent,\n ExceptionEvent,\n LogEvent,\n LogLevel,\n MeasurementEvent,\n Meta,\n TransportItem,\n TransportItemType,\n VERSION,\n} from '@grafana/faro-core';\nimport type { InternalLogger, TraceEvent } from '@grafana/faro-core';\n\nimport type { OtlpHttpTransportOptions } from '../../types';\nimport { isAttribute, toAttribute, toAttributeValue } from '../attribute';\n\nimport type {\n LogRecord,\n LogsTransform,\n LogTransportItem,\n Resource,\n ResourceLog,\n ResourceMeta,\n ResourceSpan,\n ScopeLog,\n StringValueNonNullable,\n TraceTransform,\n} from './types';\n\n/**\n * Seems currently to be missing in the semantic-conventions npm package.\n * See: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md#todos\n *\n * Attributes are as defined by the Otel docs\n */\nconst SemanticBrowserAttributes = {\n BROWSER_BRANDS: 'browser.brands',\n BROWSER_PLATFORM: 'browser.platform',\n BROWSER_MOBILE: 'browser.mobile',\n BROWSER_USER_AGENT: 'browser.user_agent',\n BROWSER_LANGUAGE: 'browser.language',\n} as const;\n\nexport function getLogTransforms(\n internalLogger: InternalLogger,\n customOtlpTransform?: OtlpHttpTransportOptions['otlpTransform']\n): LogsTransform {\n function toResourceLog(transportItem: LogTransportItem): ResourceLog {\n const resource = toResource(transportItem);\n\n return {\n resource,\n scopeLogs: [toScopeLog(transportItem)],\n };\n }\n\n function toScopeLog(transportItem: LogTransportItem): ScopeLog {\n return {\n scope: {\n name: '@grafana/faro-web-sdk',\n version: VERSION,\n },\n logRecords: [toLogRecord(transportItem)],\n };\n }\n\n function toLogRecord(transportItem: LogTransportItem): LogRecord {\n const { type } = transportItem;\n\n switch (type) {\n case TransportItemType.LOG:\n return toLogLogRecord(transportItem as TransportItem<LogEvent>);\n case TransportItemType.EXCEPTION:\n return toErrorLogRecord(transportItem as TransportItem<ExceptionEvent>);\n case TransportItemType.EVENT:\n return toEventLogRecord(transportItem as TransportItem<EventEvent>);\n case TransportItemType.MEASUREMENT:\n return toMeasurementLogRecord(transportItem as TransportItem<MeasurementEvent>);\n default:\n internalLogger?.error(`Unknown TransportItemType: ${type}`);\n return {};\n }\n }\n\n function toLogLogRecord(transportItem: TransportItem<LogEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const body = toAttributeValue(payload.message) as StringValueNonNullable;\n\n function getSeverityProperties(logLevel: LogLevel) {\n switch (logLevel) {\n case LogLevel.TRACE:\n return { severityNumber: 1, severityText: 'TRACE' };\n case LogLevel.DEBUG:\n return { severityNumber: 5, severityText: 'DEBUG' };\n case LogLevel.INFO:\n return { severityNumber: 9, severityText: 'INFO' };\n case LogLevel.LOG:\n return { severityNumber: 10, severityText: 'INFO2' };\n case LogLevel.WARN:\n return { severityNumber: 13, severityText: 'WARN' };\n case LogLevel.ERROR:\n return { severityNumber: 17, severityText: 'ERROR' };\n }\n }\n\n return {\n timeUnixNano,\n ...getSeverityProperties(payload.level),\n body,\n attributes: [...getCommonLogAttributes(meta), toAttribute('faro.log.context', payload.context)].filter(\n isAttribute\n ),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function toEventLogRecord(transportItem: TransportItem<EventEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const body = toAttributeValue(payload.name) as StringValueNonNullable;\n\n return {\n timeUnixNano,\n body,\n attributes: [\n ...getCommonLogAttributes(meta),\n toAttribute('event.name', payload.name), // This is a semantic attribute. But event.name constant is currently missing in sematic-conventions npm package\n toAttribute('event.domain', payload.domain), // This is a semantic attribute. But event.domain constant is currently missing in sematic-conventions npm package\n toAttribute('event.attributes', payload.attributes),\n ].filter(isAttribute),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function toErrorLogRecord(transportItem: TransportItem<ExceptionEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const body = getCustomLogBody(transportItem, customOtlpTransform?.createErrorLogBody);\n\n return {\n timeUnixNano,\n ...(body ? { body } : {}),\n attributes: [\n ...getCommonLogAttributes(meta),\n toAttribute(SemanticAttributes.EXCEPTION_TYPE, payload.type),\n toAttribute(SemanticAttributes.EXCEPTION_MESSAGE, payload.value),\n // toAttribute(SemanticAttributes.EXCEPTION_STACKTRACE, undefined),\n toAttribute('faro.error.stacktrace', payload.stacktrace),\n toAttribute('faro.error.context', payload.context),\n ].filter(isAttribute),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function toMeasurementLogRecord(transportItem: TransportItem<MeasurementEvent>): LogRecord {\n const { meta, payload } = transportItem;\n const timeUnixNano = toTimeUnixNano(payload.timestamp);\n const [measurementName, measurementValue] = Object.entries(payload.values).flat();\n\n const body = getCustomLogBody(transportItem, customOtlpTransform?.createMeasurementLogBody);\n\n return {\n timeUnixNano,\n ...(body ? { body } : {}),\n attributes: [\n ...getCommonLogAttributes(meta),\n toAttribute('measurement.type', payload.type),\n toAttribute('measurement.name', measurementName),\n toAttribute('measurement.value', measurementValue),\n toAttribute('faro.measurement.context', payload.context),\n ].filter(isAttribute),\n traceId: payload.trace?.trace_id,\n spanId: payload.trace?.span_id,\n } as const;\n }\n\n function getCommonLogAttributes(meta: Meta): IKeyValue[] {\n const { view, page, session, user } = meta;\n\n return [\n toAttribute('view.name', view?.name),\n toAttribute(SemanticAttributes.HTTP_URL, page?.url),\n toAttribute('page.id', page?.id),\n toAttribute('page.attributes', page?.attributes),\n toAttribute('session.id', session?.id),\n toAttribute('session.attributes', session?.attributes),\n toAttribute(SemanticAttributes.ENDUSER_ID, user?.id),\n toAttribute('enduser.name', user?.username),\n toAttribute('enduser.email', user?.email),\n toAttribute('enduser.attributes', user?.attributes),\n ].filter(isAttribute);\n }\n\n function toTimeUnixNano(timestamp: string): number {\n return Date.parse(timestamp) * 1e6;\n }\n\n return {\n toResourceLog,\n toScopeLog,\n toLogRecord,\n };\n}\n\nexport function getTraceTransforms(_internalLogger?: InternalLogger): TraceTransform {\n function toResourceSpan(transportItem: TransportItem<TraceEvent>): ResourceSpan {\n const resource = toResource(transportItem);\n const scopeSpans = transportItem.payload.resourceSpans?.[0]?.scopeSpans;\n\n return {\n resource,\n scopeSpans: scopeSpans ?? [],\n };\n }\n\n return {\n toResourceSpan,\n };\n}\n\nfunction toResource(transportItem: TransportItem): Readonly<Resource> {\n const { browser, sdk, app }: ResourceMeta = transportItem.meta;\n\n return {\n attributes: [\n toAttribute(SemanticBrowserAttributes.BROWSER_MOBILE, browser?.mobile),\n toAttribute(SemanticBrowserAttributes.BROWSER_USER_AGENT, browser?.userAgent),\n toAttribute(SemanticBrowserAttributes.BROWSER_LANGUAGE, browser?.language),\n toAttribute(SemanticBrowserAttributes.BROWSER_BRANDS, browser?.brands),\n toAttribute('browser.os', browser?.os),\n toAttribute('browser.name', browser?.name),\n toAttribute('browser.version', browser?.version),\n toAttribute('browser.screen_width', browser?.viewportWidth),\n toAttribute('browser.screen_height', browser?.viewportHeight),\n\n toAttribute(SemanticResourceAttributes.TELEMETRY_SDK_NAME, sdk?.name),\n toAttribute(SemanticResourceAttributes.TELEMETRY_SDK_VERSION, sdk?.version),\n Boolean(sdk)\n ? toAttribute(SemanticResourceAttributes.TELEMETRY_SDK_LANGUAGE, TelemetrySdkLanguageValues.WEBJS)\n : undefined,\n\n toAttribute(SemanticResourceAttributes.SERVICE_NAME, app?.name),\n toAttribute(SemanticResourceAttributes.SERVICE_VERSION, app?.version),\n toAttribute(SemanticResourceAttributes.DEPLOYMENT_ENVIRONMENT, app?.environment),\n ].filter(isAttribute),\n };\n}\n\nfunction getCustomLogBody<T>(\n transportItem: T,\n createCustomLogBody?: (item: T) => string\n): StringValueNonNullable | undefined {\n return typeof createCustomLogBody === 'function'\n ? (toAttributeValue(createCustomLogBody(transportItem)) as StringValueNonNullable)\n : undefined;\n}\n"]}
|
|
@@ -4,7 +4,7 @@ import type { OtlpHttpTransportOptions } from './types';
|
|
|
4
4
|
export declare class OtlpHttpTransport extends BaseTransport {
|
|
5
5
|
private options;
|
|
6
6
|
readonly name = "@grafana/faro-web-sdk:transport-otlp-http";
|
|
7
|
-
readonly version = "1.7.
|
|
7
|
+
readonly version = "1.7.3";
|
|
8
8
|
private readonly promiseBuffer;
|
|
9
9
|
private readonly rateLimitBackoffMs;
|
|
10
10
|
private sendingTracesDisabledUntil;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grafana/faro-transport-otlp-http",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.3",
|
|
4
4
|
"description": "Faro transport which converts the Faro data model to the Otlp data model.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"observability",
|
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
"quality:circular-deps": "madge --circular ."
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@grafana/faro-core": "^1.7.
|
|
53
|
+
"@grafana/faro-core": "^1.7.3"
|
|
54
54
|
},
|
|
55
55
|
"publishConfig": {
|
|
56
56
|
"access": "public"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "d2c5a7293a9bfc4ae9bb70292f14115ee3a923a4"
|
|
59
59
|
}
|