@grafana/faro-web-tracing 1.0.0-beta1 → 1.0.0-beta3
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/README.md +7 -3
- package/dist/cjs/faroTraceExporter.js +1 -34
- package/dist/cjs/faroTraceExporter.js.map +1 -1
- package/dist/cjs/getDefaultOTELInstrumentations.js.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/instrumentation.js.map +1 -1
- package/dist/cjs/sessionSpanProcessor.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/faroTraceExporter.js +1 -23
- package/dist/esm/faroTraceExporter.js.map +1 -1
- package/dist/esm/getDefaultOTELInstrumentations.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/instrumentation.js.map +1 -1
- package/dist/esm/sessionSpanProcessor.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/package.json +27 -17
package/README.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# @grafana/faro-web-tracing
|
|
2
2
|
|
|
3
|
-
This package provides tools for integrating [Open Telemetry](https://opentelemetry.io/docs/instrumentation/js/)
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
This package provides tools for integrating [Open Telemetry](https://opentelemetry.io/docs/instrumentation/js/) based
|
|
4
|
+
tracing with the [Faro for the web](https://github.com/grafana/faro-web-sdk/tree/main/packages/web).
|
|
5
|
+
|
|
6
|
+
See [quick start document](https://github.com/grafana/faro-web-sdk/blob/main/docs/sources/tutorials/quick-start-browser.md)
|
|
7
|
+
for instructions how to set up and use.
|
|
8
|
+
|
|
9
|
+
_Warning_: currently pre-release and subject to frequent breaking changes. Use at your own risk.
|
|
@@ -1,26 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
14
|
-
var t = {};
|
|
15
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
16
|
-
t[p] = s[p];
|
|
17
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
18
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
19
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
20
|
-
t[p[i]] = s[p[i]];
|
|
21
|
-
}
|
|
22
|
-
return t;
|
|
23
|
-
};
|
|
24
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
3
|
exports.FaroTraceExporter = void 0;
|
|
26
4
|
var core_1 = require("@opentelemetry/core");
|
|
@@ -30,7 +8,7 @@ var FaroTraceExporter = /** @class */ (function () {
|
|
|
30
8
|
this.config = config;
|
|
31
9
|
}
|
|
32
10
|
FaroTraceExporter.prototype.export = function (spans, resultCallback) {
|
|
33
|
-
var traceEvent =
|
|
11
|
+
var traceEvent = (0, otlp_transformer_1.createExportTraceServiceRequest)(spans, true);
|
|
34
12
|
this.config.faro.api.pushTraces(traceEvent);
|
|
35
13
|
resultCallback({ code: core_1.ExportResultCode.SUCCESS });
|
|
36
14
|
};
|
|
@@ -40,15 +18,4 @@ var FaroTraceExporter = /** @class */ (function () {
|
|
|
40
18
|
return FaroTraceExporter;
|
|
41
19
|
}());
|
|
42
20
|
exports.FaroTraceExporter = FaroTraceExporter;
|
|
43
|
-
// TODO: Revert temporary patching. See tracing/types for details
|
|
44
|
-
function exportTraceServiceRequestToTraceEvent(_a) {
|
|
45
|
-
var resourceSpans = _a.resourceSpans, rest = __rest(_a, ["resourceSpans"]);
|
|
46
|
-
return __assign(__assign({}, rest), { resourceSpans: resourceSpans === null || resourceSpans === void 0 ? void 0 : resourceSpans.map(function (_a) {
|
|
47
|
-
var scopeSpans = _a.scopeSpans, rest = __rest(_a, ["scopeSpans"]);
|
|
48
|
-
return (__assign(__assign({}, rest), { instrumentationLibrarySpans: scopeSpans === null || scopeSpans === void 0 ? void 0 : scopeSpans.map(function (_a) {
|
|
49
|
-
var scope = _a.scope, rest = __rest(_a, ["scope"]);
|
|
50
|
-
return (__assign(__assign({}, rest), { instrumentationLibrary: scope }));
|
|
51
|
-
}) }));
|
|
52
|
-
}) });
|
|
53
|
-
}
|
|
54
21
|
//# sourceMappingURL=faroTraceExporter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faroTraceExporter.js","sourceRoot":"","sources":["../../src/faroTraceExporter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"faroTraceExporter.js","sourceRoot":"","sources":["../../src/faroTraceExporter.ts"],"names":[],"mappings":";;;AAAA,4CAAuD;AAEvD,oEAAkF;AAKlF;IACE,2BAAoB,MAA+B;QAA/B,WAAM,GAAN,MAAM,CAAyB;IAAG,CAAC;IAEvD,kCAAM,GAAN,UAAO,KAAqB,EAAE,cAA8C;QAC1E,IAAM,UAAU,GAAG,IAAA,kDAA+B,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEhE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAE5C,cAAc,CAAC,EAAE,IAAI,EAAE,uBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,oCAAQ,GAAR;QACE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IACH,wBAAC;AAAD,CAAC,AAdD,IAcC;AAdY,8CAAiB","sourcesContent":["import { ExportResultCode } from '@opentelemetry/core';\nimport type { ExportResult } from '@opentelemetry/core';\nimport { createExportTraceServiceRequest } from '@opentelemetry/otlp-transformer';\nimport type { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';\n\nimport type { FaroTraceExporterConfig } from './types';\n\nexport class FaroTraceExporter implements SpanExporter {\n constructor(private config: FaroTraceExporterConfig) {}\n\n export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void {\n const traceEvent = createExportTraceServiceRequest(spans, true);\n\n this.config.faro.api.pushTraces(traceEvent);\n\n resultCallback({ code: ExportResultCode.SUCCESS });\n }\n\n shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDefaultOTELInstrumentations.js","sourceRoot":"","sources":["../../src/getDefaultOTELInstrumentations.ts"],"names":[],"mappings":";;;AACA,8FAA2F;AAC3F,8EAA4E;AAC5E,oGAAiG;AACjG,oGAAgG;AAEhG,SAAgB,8BAA8B,CAAC,UAAuC;IAAvC,2BAAA,EAAA,eAAuC;IACpF,OAAO;QACL,IAAI,2DAA2B,EAAE;QACjC,IAAI,4CAAoB,CAAC,EAAE,UAAU,YAAA,EAAE,CAAC;QACxC,IAAI,gEAA6B,CAAC,EAAE,UAAU,YAAA,EAAE,CAAC;QACjD,IAAI,iEAA8B,EAAE;KACrC,CAAC;AACJ,CAAC;AAPD,wEAOC"}
|
|
1
|
+
{"version":3,"file":"getDefaultOTELInstrumentations.js","sourceRoot":"","sources":["../../src/getDefaultOTELInstrumentations.ts"],"names":[],"mappings":";;;AACA,8FAA2F;AAC3F,8EAA4E;AAC5E,oGAAiG;AACjG,oGAAgG;AAEhG,SAAgB,8BAA8B,CAAC,UAAuC;IAAvC,2BAAA,EAAA,eAAuC;IACpF,OAAO;QACL,IAAI,2DAA2B,EAAE;QACjC,IAAI,4CAAoB,CAAC,EAAE,UAAU,YAAA,EAAE,CAAC;QACxC,IAAI,gEAA6B,CAAC,EAAE,UAAU,YAAA,EAAE,CAAC;QACjD,IAAI,iEAA8B,EAAE;KACrC,CAAC;AACJ,CAAC;AAPD,wEAOC","sourcesContent":["import type { InstrumentationOption } from '@opentelemetry/instrumentation';\nimport { DocumentLoadInstrumentation } from '@opentelemetry/instrumentation-document-load';\nimport { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch';\nimport { UserInteractionInstrumentation } from '@opentelemetry/instrumentation-user-interaction';\nimport { XMLHttpRequestInstrumentation } from '@opentelemetry/instrumentation-xml-http-request';\n\nexport function getDefaultOTELInstrumentations(ignoreUrls: Array<string | RegExp> = []): InstrumentationOption[] {\n return [\n new DocumentLoadInstrumentation(),\n new FetchInstrumentation({ ignoreUrls }),\n new XMLHttpRequestInstrumentation({ ignoreUrls }),\n new UserInteractionInstrumentation(),\n ];\n}\n"]}
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAE1B,+DAAkE;AAAzD,gIAAA,wBAAwB,OAAA;AAEjC,mFAAkF;AAAzE,gJAAA,8BAA8B,OAAA;AAEvC,qDAA2D;AAAlD,yHAAA,sBAAsB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAE1B,+DAAkE;AAAzD,gIAAA,wBAAwB,OAAA;AAEjC,mFAAkF;AAAzE,gJAAA,8BAA8B,OAAA;AAEvC,qDAA2D;AAAlD,yHAAA,sBAAsB,OAAA","sourcesContent":["export { FaroTraceExporter } from './faroTraceExporter';\n\nexport { FaroSessionSpanProcessor } from './sessionSpanProcessor';\n\nexport { getDefaultOTELInstrumentations } from './getDefaultOTELInstrumentations';\n\nexport { TracingInstrumentation } from './instrumentation';\n\nexport type { FaroTraceExporterConfig, TracingInstrumentationOptions } from './types';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,0CAAoD;AACpD,4DAAiE;AACjE,4CAAgE;AAChE,kEAA0E;AAC1E,sDAAwE;AACxE,gEAAmE;AACnE,8DAAiE;AACjE,4EAAiF;AAEjF,gDAAwE;AAExE,yDAAwD;AACxD,mFAAkF;AAClF,+DAAkE;AAGlE,8CAA8C;AAC9C,gEAAgE;AAChE,0BAA0B;AAE1B;IAA4C,0CAAmB;IAM7D,gCAAoB,OAA2C;QAA3C,wBAAA,EAAA,YAA2C;QAA/D,YACE,iBAAO,SACR;QAFmB,aAAO,GAAP,OAAO,CAAoC;QAL/D,UAAI,GAAG,2BAA2B,CAAC;QACnC,aAAO,GAAG,mBAAO,CAAC;;IAMlB,CAAC;IAED,2CAAU,GAAV;;QACE,IAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAM,UAAU,GAAuB,EAAE,CAAC;QAE1C,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;YACnB,UAAU,CAAC,iDAA0B,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;SACvE;QAED,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;YACtB,UAAU,CAAC,iDAA0B,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;SAC7E;QAED,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEtD,IAAM,QAAQ,GAAG,oBAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,oBAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAEpE,IAAM,QAAQ,GAAG,IAAI,iCAAiB,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;QAErD,QAAQ,CAAC,gBAAgB,CACvB,MAAA,OAAO,CAAC,aAAa,mCACnB,IAAI,+CAAwB,CAC1B,IAAI,mCAAkB,CAAC,IAAI,qCAAiB,CAAC,EAAE,IAAI,EAAE,gBAAI,EAAE,CAAC,EAAE;YAC5D,oBAAoB,EAAE,sBAAsB,CAAC,wBAAwB;YACrE,kBAAkB,EAAE,EAAE;SACvB,CAAC,CACH,CACJ,CAAC;QAEF,QAAQ,CAAC,QAAQ,CAAC;YAChB,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,IAAI,gCAAyB,EAAE;YACjE,cAAc,EAAE,MAAA,OAAO,CAAC,cAAc,mCAAI,IAAI,iCAAkB,EAAE;SACnE,CAAC,CAAC;QAEH,IAAA,0CAAwB,EAAC;YACvB,gBAAgB,EAAE,MAAA,OAAO,CAAC,gBAAgB,mCAAI,IAAA,+DAA8B,EAAC,IAAI,CAAC,aAAa,EAAE,CAAC;SACnG,CAAC,CAAC;QAEH,gBAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAK,EAAE,aAAO,CAAC,CAAC;IACpC,CAAC;IAEO,8CAAa,GAArB;QACE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,SAAS,IAAK,OAAA,SAAS,CAAC,aAAa,EAAE,EAAzB,CAAyB,CAAC,CAAC;IAC3F,CAAC;IAjDM,+CAAwB,GAAG,IAAI,CAAC;IAkDzC,6BAAC;CAAA,AAtDD,CAA4C,+BAAmB,GAsD9D;AAtDY,wDAAsB"}
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,0CAAoD;AACpD,4DAAiE;AACjE,4CAAgE;AAChE,kEAA0E;AAC1E,sDAAwE;AACxE,gEAAmE;AACnE,8DAAiE;AACjE,4EAAiF;AAEjF,gDAAwE;AAExE,yDAAwD;AACxD,mFAAkF;AAClF,+DAAkE;AAGlE,8CAA8C;AAC9C,gEAAgE;AAChE,0BAA0B;AAE1B;IAA4C,0CAAmB;IAM7D,gCAAoB,OAA2C;QAA3C,wBAAA,EAAA,YAA2C;QAA/D,YACE,iBAAO,SACR;QAFmB,aAAO,GAAP,OAAO,CAAoC;QAL/D,UAAI,GAAG,2BAA2B,CAAC;QACnC,aAAO,GAAG,mBAAO,CAAC;;IAMlB,CAAC;IAED,2CAAU,GAAV;;QACE,IAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,IAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAM,UAAU,GAAuB,EAAE,CAAC;QAE1C,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;YACnB,UAAU,CAAC,iDAA0B,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;SACvE;QAED,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE;YACtB,UAAU,CAAC,iDAA0B,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;SAC7E;QAED,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEtD,IAAM,QAAQ,GAAG,oBAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,oBAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAEpE,IAAM,QAAQ,GAAG,IAAI,iCAAiB,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;QAErD,QAAQ,CAAC,gBAAgB,CACvB,MAAA,OAAO,CAAC,aAAa,mCACnB,IAAI,+CAAwB,CAC1B,IAAI,mCAAkB,CAAC,IAAI,qCAAiB,CAAC,EAAE,IAAI,EAAE,gBAAI,EAAE,CAAC,EAAE;YAC5D,oBAAoB,EAAE,sBAAsB,CAAC,wBAAwB;YACrE,kBAAkB,EAAE,EAAE;SACvB,CAAC,CACH,CACJ,CAAC;QAEF,QAAQ,CAAC,QAAQ,CAAC;YAChB,UAAU,EAAE,MAAA,OAAO,CAAC,UAAU,mCAAI,IAAI,gCAAyB,EAAE;YACjE,cAAc,EAAE,MAAA,OAAO,CAAC,cAAc,mCAAI,IAAI,iCAAkB,EAAE;SACnE,CAAC,CAAC;QAEH,IAAA,0CAAwB,EAAC;YACvB,gBAAgB,EAAE,MAAA,OAAO,CAAC,gBAAgB,mCAAI,IAAA,+DAA8B,EAAC,IAAI,CAAC,aAAa,EAAE,CAAC;SACnG,CAAC,CAAC;QAEH,gBAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAK,EAAE,aAAO,CAAC,CAAC;IACpC,CAAC;IAEO,8CAAa,GAArB;QACE,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,SAAS,IAAK,OAAA,SAAS,CAAC,aAAa,EAAE,EAAzB,CAAyB,CAAC,CAAC;IAC3F,CAAC;IAjDM,+CAAwB,GAAG,IAAI,CAAC;IAkDzC,6BAAC;CAAA,AAtDD,CAA4C,+BAAmB,GAsD9D;AAtDY,wDAAsB","sourcesContent":["import { context, trace } from '@opentelemetry/api';\nimport { ZoneContextManager } from '@opentelemetry/context-zone';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { Resource, ResourceAttributes } from '@opentelemetry/resources';\nimport { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';\n\nimport { BaseInstrumentation, faro, VERSION } from '@grafana/faro-core';\n\nimport { FaroTraceExporter } from './faroTraceExporter';\nimport { getDefaultOTELInstrumentations } from './getDefaultOTELInstrumentations';\nimport { FaroSessionSpanProcessor } from './sessionSpanProcessor';\nimport type { TracingInstrumentationOptions } from './types';\n\n// the providing of app name here is not great\n// should delay initialization and provide the full Faro config,\n// taking app name from it\n\nexport class TracingInstrumentation extends BaseInstrumentation {\n name = '@grafana/faro-web-tracing';\n version = VERSION;\n\n static SCHEDULED_BATCH_DELAY_MS = 1000;\n\n constructor(private options: TracingInstrumentationOptions = {}) {\n super();\n }\n\n initialize(): void {\n const config = this.faro.config;\n const options = this.options;\n const attributes: ResourceAttributes = {};\n\n if (config.app.name) {\n attributes[SemanticResourceAttributes.SERVICE_NAME] = config.app.name;\n }\n\n if (config.app.version) {\n attributes[SemanticResourceAttributes.SERVICE_VERSION] = config.app.version;\n }\n\n Object.assign(attributes, options.resourceAttributes);\n\n const resource = Resource.default().merge(new Resource(attributes));\n\n const provider = new WebTracerProvider({ resource });\n\n provider.addSpanProcessor(\n options.spanProcessor ??\n new FaroSessionSpanProcessor(\n new BatchSpanProcessor(new FaroTraceExporter({ faro: faro }), {\n scheduledDelayMillis: TracingInstrumentation.SCHEDULED_BATCH_DELAY_MS,\n maxExportBatchSize: 30,\n })\n )\n );\n\n provider.register({\n propagator: options.propagator ?? new W3CTraceContextPropagator(),\n contextManager: options.contextManager ?? new ZoneContextManager(),\n });\n\n registerInstrumentations({\n instrumentations: options.instrumentations ?? getDefaultOTELInstrumentations(this.getIgnoreUrls()),\n });\n\n faro.api.initOTEL(trace, context);\n }\n\n private getIgnoreUrls(): Array<string | RegExp> {\n return this.faro.transports.transports.flatMap((transport) => transport.getIgnoreUrls());\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionSpanProcessor.js","sourceRoot":"","sources":["../../src/sessionSpanProcessor.ts"],"names":[],"mappings":";;;AAGA,gDAA0C;AAE1C,qCAAqC;AACrC;IAGE,kCAAY,SAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,6CAAU,GAAV;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;IAED,0CAAO,GAAP,UAAQ,IAAU,EAAE,aAAsB;QACxC,IAAM,OAAO,GAAG,gBAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;QAEzC,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,EAAE;YACf,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;SAC5C;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC9C,CAAC;IAED,wCAAK,GAAL,UAAM,IAAkB;QACtB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,2CAAQ,GAAR;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;IACH,+BAAC;AAAD,CAAC,AA5BD,IA4BC;AA5BY,4DAAwB"}
|
|
1
|
+
{"version":3,"file":"sessionSpanProcessor.js","sourceRoot":"","sources":["../../src/sessionSpanProcessor.ts"],"names":[],"mappings":";;;AAGA,gDAA0C;AAE1C,qCAAqC;AACrC;IAGE,kCAAY,SAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,6CAAU,GAAV;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;IAED,0CAAO,GAAP,UAAQ,IAAU,EAAE,aAAsB;QACxC,IAAM,OAAO,GAAG,gBAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;QAEzC,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,EAAE;YACf,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;SAC5C;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC9C,CAAC;IAED,wCAAK,GAAL,UAAM,IAAkB;QACtB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,2CAAQ,GAAR;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;IACH,+BAAC;AAAD,CAAC,AA5BD,IA4BC;AA5BY,4DAAwB","sourcesContent":["import type { Context } from '@opentelemetry/api';\nimport type { ReadableSpan, Span, SpanProcessor } from '@opentelemetry/sdk-trace-base';\n\nimport { faro } from '@grafana/faro-core';\n\n// adds Faro session id to every span\nexport class FaroSessionSpanProcessor implements SpanProcessor {\n private processor: SpanProcessor;\n\n constructor(processor: SpanProcessor) {\n this.processor = processor;\n }\n\n forceFlush(): Promise<void> {\n return this.processor.forceFlush();\n }\n\n onStart(span: Span, parentContext: Context): void {\n const session = faro.metas.value.session;\n\n if (session?.id) {\n span.attributes['session_id'] = session.id;\n }\n\n this.processor.onStart(span, parentContext);\n }\n\n onEnd(span: ReadableSpan): void {\n this.processor.onEnd(span);\n }\n\n shutdown(): Promise<void> {\n return this.processor.shutdown();\n }\n}\n"]}
|
package/dist/cjs/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ContextManager, TextMapPropagator } from '@opentelemetry/api';\nimport type { InstrumentationOption } from '@opentelemetry/instrumentation';\nimport type { ResourceAttributes } from '@opentelemetry/resources';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-base';\n\nimport type { Faro } from '@grafana/faro-core';\n\nexport interface FaroTraceExporterConfig {\n faro: Faro;\n}\n\nexport interface TracingInstrumentationOptions {\n resourceAttributes?: ResourceAttributes;\n propagator?: TextMapPropagator;\n contextManager?: ContextManager;\n instrumentations?: InstrumentationOption[];\n spanProcessor?: SpanProcessor;\n}\n"]}
|
|
@@ -1,14 +1,3 @@
|
|
|
1
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
-
var t = {};
|
|
3
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
-
t[p] = s[p];
|
|
5
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
-
t[p[i]] = s[p[i]];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
1
|
import { ExportResultCode } from '@opentelemetry/core';
|
|
13
2
|
import { createExportTraceServiceRequest } from '@opentelemetry/otlp-transformer';
|
|
14
3
|
export class FaroTraceExporter {
|
|
@@ -16,7 +5,7 @@ export class FaroTraceExporter {
|
|
|
16
5
|
this.config = config;
|
|
17
6
|
}
|
|
18
7
|
export(spans, resultCallback) {
|
|
19
|
-
const traceEvent =
|
|
8
|
+
const traceEvent = createExportTraceServiceRequest(spans, true);
|
|
20
9
|
this.config.faro.api.pushTraces(traceEvent);
|
|
21
10
|
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
22
11
|
}
|
|
@@ -24,15 +13,4 @@ export class FaroTraceExporter {
|
|
|
24
13
|
return Promise.resolve(undefined);
|
|
25
14
|
}
|
|
26
15
|
}
|
|
27
|
-
// TODO: Revert temporary patching. See tracing/types for details
|
|
28
|
-
function exportTraceServiceRequestToTraceEvent(_a) {
|
|
29
|
-
var { resourceSpans } = _a, rest = __rest(_a, ["resourceSpans"]);
|
|
30
|
-
return Object.assign(Object.assign({}, rest), { resourceSpans: resourceSpans === null || resourceSpans === void 0 ? void 0 : resourceSpans.map((_a) => {
|
|
31
|
-
var { scopeSpans } = _a, rest = __rest(_a, ["scopeSpans"]);
|
|
32
|
-
return (Object.assign(Object.assign({}, rest), { instrumentationLibrarySpans: scopeSpans === null || scopeSpans === void 0 ? void 0 : scopeSpans.map((_a) => {
|
|
33
|
-
var { scope } = _a, rest = __rest(_a, ["scope"]);
|
|
34
|
-
return (Object.assign(Object.assign({}, rest), { instrumentationLibrary: scope }));
|
|
35
|
-
}) }));
|
|
36
|
-
}) });
|
|
37
|
-
}
|
|
38
16
|
//# sourceMappingURL=faroTraceExporter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faroTraceExporter.js","sourceRoot":"","sources":["../../src/faroTraceExporter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"faroTraceExporter.js","sourceRoot":"","sources":["../../src/faroTraceExporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAKlF,MAAM,OAAO,iBAAiB;IAC5B,YAAoB,MAA+B;QAA/B,WAAM,GAAN,MAAM,CAAyB;IAAG,CAAC;IAEvD,MAAM,CAAC,KAAqB,EAAE,cAA8C;QAC1E,MAAM,UAAU,GAAG,+BAA+B,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEhE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAE5C,cAAc,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,QAAQ;QACN,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;CACF","sourcesContent":["import { ExportResultCode } from '@opentelemetry/core';\nimport type { ExportResult } from '@opentelemetry/core';\nimport { createExportTraceServiceRequest } from '@opentelemetry/otlp-transformer';\nimport type { ReadableSpan, SpanExporter } from '@opentelemetry/sdk-trace-base';\n\nimport type { FaroTraceExporterConfig } from './types';\n\nexport class FaroTraceExporter implements SpanExporter {\n constructor(private config: FaroTraceExporterConfig) {}\n\n export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void {\n const traceEvent = createExportTraceServiceRequest(spans, true);\n\n this.config.faro.api.pushTraces(traceEvent);\n\n resultCallback({ code: ExportResultCode.SUCCESS });\n }\n\n shutdown(): Promise<void> {\n return Promise.resolve(undefined);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getDefaultOTELInstrumentations.js","sourceRoot":"","sources":["../../src/getDefaultOTELInstrumentations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAEhG,MAAM,UAAU,8BAA8B,CAAC,aAAqC,EAAE;IACpF,OAAO;QACL,IAAI,2BAA2B,EAAE;QACjC,IAAI,oBAAoB,CAAC,EAAE,UAAU,EAAE,CAAC;QACxC,IAAI,6BAA6B,CAAC,EAAE,UAAU,EAAE,CAAC;QACjD,IAAI,8BAA8B,EAAE;KACrC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"getDefaultOTELInstrumentations.js","sourceRoot":"","sources":["../../src/getDefaultOTELInstrumentations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,8BAA8B,EAAE,MAAM,iDAAiD,CAAC;AACjG,OAAO,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAEhG,MAAM,UAAU,8BAA8B,CAAC,aAAqC,EAAE;IACpF,OAAO;QACL,IAAI,2BAA2B,EAAE;QACjC,IAAI,oBAAoB,CAAC,EAAE,UAAU,EAAE,CAAC;QACxC,IAAI,6BAA6B,CAAC,EAAE,UAAU,EAAE,CAAC;QACjD,IAAI,8BAA8B,EAAE;KACrC,CAAC;AACJ,CAAC","sourcesContent":["import type { InstrumentationOption } from '@opentelemetry/instrumentation';\nimport { DocumentLoadInstrumentation } from '@opentelemetry/instrumentation-document-load';\nimport { FetchInstrumentation } from '@opentelemetry/instrumentation-fetch';\nimport { UserInteractionInstrumentation } from '@opentelemetry/instrumentation-user-interaction';\nimport { XMLHttpRequestInstrumentation } from '@opentelemetry/instrumentation-xml-http-request';\n\nexport function getDefaultOTELInstrumentations(ignoreUrls: Array<string | RegExp> = []): InstrumentationOption[] {\n return [\n new DocumentLoadInstrumentation(),\n new FetchInstrumentation({ ignoreUrls }),\n new XMLHttpRequestInstrumentation({ ignoreUrls }),\n new UserInteractionInstrumentation(),\n ];\n}\n"]}
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAElF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAElE,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAElF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC","sourcesContent":["export { FaroTraceExporter } from './faroTraceExporter';\n\nexport { FaroSessionSpanProcessor } from './sessionSpanProcessor';\n\nexport { getDefaultOTELInstrumentations } from './getDefaultOTELInstrumentations';\n\nexport { TracingInstrumentation } from './instrumentation';\n\nexport type { FaroTraceExporterConfig, TracingInstrumentationOptions } from './types';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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","sourcesContent":["import { context, trace } from '@opentelemetry/api';\nimport { ZoneContextManager } from '@opentelemetry/context-zone';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { registerInstrumentations } from '@opentelemetry/instrumentation';\nimport { Resource, ResourceAttributes } from '@opentelemetry/resources';\nimport { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';\nimport { WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';\n\nimport { BaseInstrumentation, faro, VERSION } from '@grafana/faro-core';\n\nimport { FaroTraceExporter } from './faroTraceExporter';\nimport { getDefaultOTELInstrumentations } from './getDefaultOTELInstrumentations';\nimport { FaroSessionSpanProcessor } from './sessionSpanProcessor';\nimport type { TracingInstrumentationOptions } from './types';\n\n// the providing of app name here is not great\n// should delay initialization and provide the full Faro config,\n// taking app name from it\n\nexport class TracingInstrumentation extends BaseInstrumentation {\n name = '@grafana/faro-web-tracing';\n version = VERSION;\n\n static SCHEDULED_BATCH_DELAY_MS = 1000;\n\n constructor(private options: TracingInstrumentationOptions = {}) {\n super();\n }\n\n initialize(): void {\n const config = this.faro.config;\n const options = this.options;\n const attributes: ResourceAttributes = {};\n\n if (config.app.name) {\n attributes[SemanticResourceAttributes.SERVICE_NAME] = config.app.name;\n }\n\n if (config.app.version) {\n attributes[SemanticResourceAttributes.SERVICE_VERSION] = config.app.version;\n }\n\n Object.assign(attributes, options.resourceAttributes);\n\n const resource = Resource.default().merge(new Resource(attributes));\n\n const provider = new WebTracerProvider({ resource });\n\n provider.addSpanProcessor(\n options.spanProcessor ??\n new FaroSessionSpanProcessor(\n new BatchSpanProcessor(new FaroTraceExporter({ faro: faro }), {\n scheduledDelayMillis: TracingInstrumentation.SCHEDULED_BATCH_DELAY_MS,\n maxExportBatchSize: 30,\n })\n )\n );\n\n provider.register({\n propagator: options.propagator ?? new W3CTraceContextPropagator(),\n contextManager: options.contextManager ?? new ZoneContextManager(),\n });\n\n registerInstrumentations({\n instrumentations: options.instrumentations ?? getDefaultOTELInstrumentations(this.getIgnoreUrls()),\n });\n\n faro.api.initOTEL(trace, context);\n }\n\n private getIgnoreUrls(): Array<string | RegExp> {\n return this.faro.transports.transports.flatMap((transport) => transport.getIgnoreUrls());\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionSpanProcessor.js","sourceRoot":"","sources":["../../src/sessionSpanProcessor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,qCAAqC;AACrC,MAAM,OAAO,wBAAwB;IAGnC,YAAY,SAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,IAAU,EAAE,aAAsB;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;QAEzC,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,EAAE;YACf,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;SAC5C;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,IAAkB;QACtB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"sessionSpanProcessor.js","sourceRoot":"","sources":["../../src/sessionSpanProcessor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,qCAAqC;AACrC,MAAM,OAAO,wBAAwB;IAGnC,YAAY,SAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,IAAU,EAAE,aAAsB;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;QAEzC,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,EAAE;YACf,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;SAC5C;QAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,IAAkB;QACtB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;CACF","sourcesContent":["import type { Context } from '@opentelemetry/api';\nimport type { ReadableSpan, Span, SpanProcessor } from '@opentelemetry/sdk-trace-base';\n\nimport { faro } from '@grafana/faro-core';\n\n// adds Faro session id to every span\nexport class FaroSessionSpanProcessor implements SpanProcessor {\n private processor: SpanProcessor;\n\n constructor(processor: SpanProcessor) {\n this.processor = processor;\n }\n\n forceFlush(): Promise<void> {\n return this.processor.forceFlush();\n }\n\n onStart(span: Span, parentContext: Context): void {\n const session = faro.metas.value.session;\n\n if (session?.id) {\n span.attributes['session_id'] = session.id;\n }\n\n this.processor.onStart(span, parentContext);\n }\n\n onEnd(span: ReadableSpan): void {\n this.processor.onEnd(span);\n }\n\n shutdown(): Promise<void> {\n return this.processor.shutdown();\n }\n}\n"]}
|
package/dist/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ContextManager, TextMapPropagator } from '@opentelemetry/api';\nimport type { InstrumentationOption } from '@opentelemetry/instrumentation';\nimport type { ResourceAttributes } from '@opentelemetry/resources';\nimport type { SpanProcessor } from '@opentelemetry/sdk-trace-base';\n\nimport type { Faro } from '@grafana/faro-core';\n\nexport interface FaroTraceExporterConfig {\n faro: Faro;\n}\n\nexport interface TracingInstrumentationOptions {\n resourceAttributes?: ResourceAttributes;\n propagator?: TextMapPropagator;\n contextManager?: ContextManager;\n instrumentations?: InstrumentationOption[];\n spanProcessor?: SpanProcessor;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grafana/faro-web-tracing",
|
|
3
|
-
"version": "1.0.0-
|
|
3
|
+
"version": "1.0.0-beta3",
|
|
4
4
|
"description": "Faro web tracing implementation.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"observability",
|
|
7
|
+
"apm",
|
|
8
|
+
"rum",
|
|
9
|
+
"logs",
|
|
10
|
+
"traces",
|
|
11
|
+
"metrics",
|
|
12
|
+
"browser",
|
|
13
|
+
"opentelemetry"
|
|
14
|
+
],
|
|
5
15
|
"license": "Apache-2.0",
|
|
6
16
|
"author": "Grafana Labs",
|
|
7
17
|
"homepage": "https://github.com/grafana/faro-web-sdk",
|
|
@@ -33,21 +43,21 @@
|
|
|
33
43
|
"quality:circular-deps": "madge --circular ."
|
|
34
44
|
},
|
|
35
45
|
"dependencies": {
|
|
36
|
-
"@grafana/faro-core": "^1.0.0-
|
|
37
|
-
"@opentelemetry/api": "^1.
|
|
38
|
-
"@opentelemetry/context-zone": "^1.
|
|
39
|
-
"@opentelemetry/core": "^1.
|
|
40
|
-
"@opentelemetry/exporter-trace-otlp-http": "^0.
|
|
41
|
-
"@opentelemetry/instrumentation": "^0.
|
|
42
|
-
"@opentelemetry/instrumentation-document-load": "^0.
|
|
43
|
-
"@opentelemetry/instrumentation-fetch": "^0.
|
|
44
|
-
"@opentelemetry/instrumentation-user-interaction": "^0.
|
|
45
|
-
"@opentelemetry/instrumentation-xml-http-request": "^0.
|
|
46
|
-
"@opentelemetry/otlp-transformer": "^0.
|
|
47
|
-
"@opentelemetry/resources": "^1.
|
|
48
|
-
"@opentelemetry/sdk-trace-base": "^1.
|
|
49
|
-
"@opentelemetry/sdk-trace-web": "^1.
|
|
50
|
-
"@opentelemetry/semantic-conventions": "^1.
|
|
46
|
+
"@grafana/faro-core": "^1.0.0-beta3",
|
|
47
|
+
"@opentelemetry/api": "^1.3.0",
|
|
48
|
+
"@opentelemetry/context-zone": "^1.8.0",
|
|
49
|
+
"@opentelemetry/core": "^1.8.0",
|
|
50
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.34.0",
|
|
51
|
+
"@opentelemetry/instrumentation": "^0.34.0",
|
|
52
|
+
"@opentelemetry/instrumentation-document-load": "^0.31.0",
|
|
53
|
+
"@opentelemetry/instrumentation-fetch": "^0.34.0",
|
|
54
|
+
"@opentelemetry/instrumentation-user-interaction": "^0.32.0",
|
|
55
|
+
"@opentelemetry/instrumentation-xml-http-request": "^0.34.0",
|
|
56
|
+
"@opentelemetry/otlp-transformer": "^0.34.0",
|
|
57
|
+
"@opentelemetry/resources": "^1.8.0",
|
|
58
|
+
"@opentelemetry/sdk-trace-base": "^1.8.0",
|
|
59
|
+
"@opentelemetry/sdk-trace-web": "^1.8.0",
|
|
60
|
+
"@opentelemetry/semantic-conventions": "^1.8.0"
|
|
51
61
|
},
|
|
52
62
|
"resolutions": {
|
|
53
63
|
"@opentelemetry/api-metrics": "^0.29.1"
|
|
@@ -55,5 +65,5 @@
|
|
|
55
65
|
"publishConfig": {
|
|
56
66
|
"access": "public"
|
|
57
67
|
},
|
|
58
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "99cc29ee4c9bfece5697b016855f3a2ba96a9848"
|
|
59
69
|
}
|