@ms-cloudpack/telemetry 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/{AppInsightsTelemetryClient.d.ts → AppInsights/AppInsightsTelemetryClient.d.ts} +1 -1
- package/lib/AppInsights/AppInsightsTelemetryClient.js.map +1 -0
- package/lib/AppInsights/SpanEnrichingProcessor.js.map +1 -0
- package/lib/{convertLogLevel.d.ts → AppInsights/convertLogLevel.d.ts} +1 -1
- package/lib/AppInsights/convertLogLevel.js.map +1 -0
- package/lib/{getAppInsightsConfig.d.ts → AppInsights/getAppInsightsConfig.d.ts} +1 -1
- package/lib/AppInsights/getAppInsightsConfig.js.map +1 -0
- package/lib/AppInsights/getComputerName.js.map +1 -0
- package/lib/NoOp/NoOpSpan.d.ts +17 -0
- package/lib/NoOp/NoOpSpan.js +44 -0
- package/lib/NoOp/NoOpSpan.js.map +1 -0
- package/lib/NoOp/NoOpTelemetryClient.d.ts +12 -0
- package/lib/NoOp/NoOpTelemetryClient.js +22 -0
- package/lib/NoOp/NoOpTelemetryClient.js.map +1 -0
- package/lib/NoOp/NoOpTracer.d.ts +11 -0
- package/lib/NoOp/NoOpTracer.js +27 -0
- package/lib/NoOp/NoOpTracer.js.map +1 -0
- package/lib/createTelemetryClient.js +7 -1
- package/lib/createTelemetryClient.js.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/types.d.ts +1 -1
- package/lib/types.js.map +1 -1
- package/package.json +1 -1
- package/lib/AppInsightsTelemetryClient.js.map +0 -1
- package/lib/SpanEnrichingProcessor.js.map +0 -1
- package/lib/convertLogLevel.js.map +0 -1
- package/lib/getAppInsightsConfig.js.map +0 -1
- package/lib/getComputerName.js.map +0 -1
- /package/lib/{AppInsightsTelemetryClient.js → AppInsights/AppInsightsTelemetryClient.js} +0 -0
- /package/lib/{SpanEnrichingProcessor.d.ts → AppInsights/SpanEnrichingProcessor.d.ts} +0 -0
- /package/lib/{SpanEnrichingProcessor.js → AppInsights/SpanEnrichingProcessor.js} +0 -0
- /package/lib/{convertLogLevel.js → AppInsights/convertLogLevel.js} +0 -0
- /package/lib/{getAppInsightsConfig.js → AppInsights/getAppInsightsConfig.js} +0 -0
- /package/lib/{getComputerName.d.ts → AppInsights/getComputerName.d.ts} +0 -0
- /package/lib/{getComputerName.js → AppInsights/getComputerName.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Tracer } from '@opentelemetry/api';
|
|
2
|
-
import type { TelemetryClient, TelemetryOptions } from '
|
|
2
|
+
import type { TelemetryClient, TelemetryOptions } from '../types.js';
|
|
3
3
|
export declare class AppInsightsTelemetryClient implements TelemetryClient {
|
|
4
4
|
private readonly appInsightsClient;
|
|
5
5
|
private readonly sharedSpanAttributes;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppInsightsTelemetryClient.js","sourceRoot":"","sources":["../../src/AppInsights/AppInsightsTelemetryClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,MAAM,OAAO,0BAA0B;IAIrC,YAAY,OAAyB;QAFpB,yBAAoB,GAA2B,EAAE,CAAC;QAGjE,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC,iBAAiB,GAAG,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAE/D,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAErF,wBAAwB;QACxB,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAE/D,mEAAmE;QACnE,MAAM,iBAAiB,GAAuB,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAC3G,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,sBAAsB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAEhG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACI,sBAAsB,CAAC,GAAW,EAAE,KAAa;QACtD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACzC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC;QACtC,MAAM,IAAI,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACI,SAAS;QACd,OAAO,IAAI,CAAC,iBAAiB,EAAE,eAAe,EAAE,CAAC,SAAS,EAAE,CAAC;IAC/D,CAAC;CACF","sourcesContent":["import type { Tracer } from '@opentelemetry/api';\nimport type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';\nimport { ApplicationInsightsClient } from 'applicationinsights';\nimport { convertLogLevel } from './convertLogLevel.js';\nimport { getAppInsightsConfig } from './getAppInsightsConfig.js';\nimport { SpanEnrichingProcessor } from './SpanEnrichingProcessor.js';\nimport type { TelemetryClient, TelemetryOptions } from '../types.js';\n\nexport class AppInsightsTelemetryClient implements TelemetryClient {\n private readonly appInsightsClient: ApplicationInsightsClient;\n private readonly sharedSpanAttributes: Record<string, string> = {};\n\n constructor(options: TelemetryOptions) {\n const config = getAppInsightsConfig(options);\n\n this.appInsightsClient = new ApplicationInsightsClient(config);\n\n this.appInsightsClient.getLogger().updateLogLevel(convertLogLevel(options.logLevel));\n\n // Set shared attributes\n this.setSharedSpanAttribute('version', options.productVersion);\n\n // Set SpanEnrichingProcessor to add shared attributes to all spans\n const nodeTraceProvider = <NodeTracerProvider>this.appInsightsClient.getTraceHandler().getTracerProvider();\n nodeTraceProvider.addSpanProcessor(new SpanEnrichingProcessor(() => this.sharedSpanAttributes));\n\n this.appInsightsClient.start();\n }\n\n /**\n * Sets a shared attribute that will be added to all spans.\n * @param key - key of the attribute\n * @param value - value of the attribute\n */\n public setSharedSpanAttribute(key: string, value: string) {\n this.sharedSpanAttributes[key] = value;\n }\n\n /**\n * Flushes all telemetry and shuts down the telemetry client.\n */\n public async shutdown() {\n await this.appInsightsClient?.flush();\n await this.appInsightsClient?.shutdown();\n }\n\n /**\n * Gets the OpenTelemetry tracer.\n * @returns the OpenTelemetry tracer\n */\n public getTracer(): Tracer {\n return this.appInsightsClient?.getTraceHandler().getTracer();\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpanEnrichingProcessor.js","sourceRoot":"","sources":["../../src/AppInsights/SpanEnrichingProcessor.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACjC,YAAoB,uBAAqD;QAArD,4BAAuB,GAAvB,uBAAuB,CAA8B;IAAG,CAAC;IAE7E,UAAU;QACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,OAAO;IACT,CAAC;IAED,KAAK,CAAC,IAAkB;QACtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,EAAE;YACzE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SAC9B;IACH,CAAC;CACF","sourcesContent":["import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-base';\n\n/**\n * Span processor that adds shared attributes to all spans.\n */\nexport class SpanEnrichingProcessor implements SpanProcessor {\n constructor(private getSharedSpanAttributes: () => Record<string, string>) {}\n\n forceFlush(): Promise<void> {\n return Promise.resolve();\n }\n\n shutdown(): Promise<void> {\n return Promise.resolve();\n }\n\n onStart(): void {\n // noop\n }\n\n onEnd(span: ReadableSpan) {\n for (const [key, value] of Object.entries(this.getSharedSpanAttributes())) {\n span.attributes[key] = value;\n }\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertLogLevel.js","sourceRoot":"","sources":["../../src/AppInsights/convertLogLevel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,MAAM,UAAU,eAAe,CAAC,QAAmB;IACjD,QAAQ,QAAQ,EAAE;QAChB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC,KAAK,CAAC;QAC5B,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,OAAO,CAAC;QAC9B;YACE,OAAO,YAAY,CAAC,IAAI,CAAC;KAC5B;AACH,CAAC","sourcesContent":["import { DiagLogLevel } from '@opentelemetry/api';\nimport type { LogLevel } from '../types.js';\n\nexport function convertLogLevel(logLevel?: LogLevel): DiagLogLevel {\n switch (logLevel) {\n case 'debug':\n return DiagLogLevel.DEBUG;\n case 'verbose':\n return DiagLogLevel.VERBOSE;\n default:\n return DiagLogLevel.WARN;\n }\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { ApplicationInsightsConfig } from 'applicationinsights';
|
|
2
|
-
import type { TelemetryOptions } from '
|
|
2
|
+
import type { TelemetryOptions } from '../types.js';
|
|
3
3
|
export declare function getAppInsightsConfig(options: TelemetryOptions): ApplicationInsightsConfig;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAppInsightsConfig.js","sourceRoot":"","sources":["../../src/AppInsights/getAppInsightsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAyB;IAC5D,MAAM,MAAM,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAC/C,MAAM,CAAC,gBAAgB,GAAG,sBAAsB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAC7E,MAAM,CAAC,2BAA2B,GAAG,KAAK,CAAC;IAC3C,MAAM,CAAC,0BAA0B,GAAG,KAAK,CAAC;IAC1C,MAAM,CAAC,4BAA4B,GAAG,KAAK,CAAC;IAC5C,MAAM,CAAC,gCAAgC,GAAG,KAAK,CAAC;IAChD,MAAM,CAAC,gBAAgB,GAAG;QACxB,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK;SACf;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,KAAK;SACf;KACF,CAAC;IACF,MAAM,CAAC,mBAAmB,GAAG;QAC3B,MAAM,EAAE;YACN,OAAO,EAAE,KAAK;SACf;QACD,OAAO,EAAE;YACP,OAAO,EAAE,KAAK;SACf;QACD,OAAO,EAAE;YACP,OAAO,EAAE,KAAK;SACf;KACF,CAAC;IAEF,MAAM,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC7B,+CAA+C;QAC/C,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3E,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,WAAW;QAC9D,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,gBAAgB;KACzE,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { Resource } from '@opentelemetry/resources';\nimport { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions';\nimport { ApplicationInsightsConfig } from 'applicationinsights';\nimport { createHash } from 'crypto';\nimport { getComputerName } from './getComputerName.js';\nimport type { TelemetryOptions } from '../types.js';\n\nfunction sha256(input: string) {\n return createHash('sha256').update(input).digest('hex');\n}\n\nexport function getAppInsightsConfig(options: TelemetryOptions) {\n const config = new ApplicationInsightsConfig();\n config.connectionString = `InstrumentationKey=${options.instrumentationKey}`;\n config.enableAutoCollectExceptions = false;\n config.enableAutoCollectHeartbeat = false;\n config.enableAutoCollectPerformance = false;\n config.enableAutoCollectStandardMetrics = false;\n config.instrumentations = {\n http: {\n enabled: false,\n },\n azureSdk: {\n enabled: false,\n },\n };\n config.logInstrumentations = {\n bunyan: {\n enabled: false,\n },\n console: {\n enabled: false,\n },\n winston: {\n enabled: false,\n },\n };\n\n config.resource = new Resource({\n // Use a hash of the computer name to avoid PII\n [SemanticResourceAttributes.SERVICE_INSTANCE_ID]: sha256(getComputerName()),\n [SemanticResourceAttributes.SERVICE_NAME]: options.serviceName,\n [SemanticResourceAttributes.SERVICE_NAMESPACE]: options.serviceNamespace,\n });\n\n return config;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getComputerName.js","sourceRoot":"","sources":["../../src/AppInsights/getComputerName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI;QACF,MAAM,mBAAmB,GAA+D;YACtF,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY;YACrC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE;SAC/D,CAAC;QAEF,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,QAAQ,EAAE,CAAC;QAE7E,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,IAAI,CAAC,iFAAiF,EAAE,CAAC,CAAC,CAAC;QAEnG,OAAO,QAAQ,EAAE,CAAC;KACnB;AACH,CAAC","sourcesContent":["import { execSync } from 'child_process';\nimport { hostname } from 'os';\n\n/**\n * Each OS has a different way of getting the computer name.\n * @returns computer name for the current OS, or the hostname if it cannot be determined\n */\nexport function getComputerName() {\n try {\n const computerNameGetters: Partial<Record<NodeJS.Platform, () => string | undefined>> = {\n win32: () => process.env.COMPUTERNAME,\n darwin: () => execSync('scutil --get ComputerName').toString(),\n };\n\n const computerName = computerNameGetters[process.platform]?.() || hostname();\n\n return computerName.trim();\n } catch (e) {\n console.warn('Unable to get OS specific computer name for telemetry, falling back to hostname', e);\n\n return hostname();\n }\n}\n"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Span, SpanContext } from '@opentelemetry/api';
|
|
2
|
+
/**
|
|
3
|
+
* No-op implementation of {@link Span}.
|
|
4
|
+
* This class will be used when Telemetry is disabled.
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export declare class NoOpSpan implements Span {
|
|
8
|
+
spanContext(): SpanContext;
|
|
9
|
+
setAttribute(): this;
|
|
10
|
+
setAttributes(): this;
|
|
11
|
+
addEvent(): this;
|
|
12
|
+
setStatus(): this;
|
|
13
|
+
updateName(): this;
|
|
14
|
+
end(): void;
|
|
15
|
+
isRecording(): boolean;
|
|
16
|
+
recordException(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* No-op implementation of {@link Span}.
|
|
3
|
+
* This class will be used when Telemetry is disabled.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export class NoOpSpan {
|
|
7
|
+
spanContext() {
|
|
8
|
+
return {
|
|
9
|
+
spanId: '',
|
|
10
|
+
traceFlags: 0,
|
|
11
|
+
traceId: '',
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
setAttribute() {
|
|
15
|
+
// no-op
|
|
16
|
+
return this;
|
|
17
|
+
}
|
|
18
|
+
setAttributes() {
|
|
19
|
+
// no-op
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
22
|
+
addEvent() {
|
|
23
|
+
// no-op
|
|
24
|
+
return this;
|
|
25
|
+
}
|
|
26
|
+
setStatus() {
|
|
27
|
+
// no-op
|
|
28
|
+
return this;
|
|
29
|
+
}
|
|
30
|
+
updateName() {
|
|
31
|
+
// no-op
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
end() {
|
|
35
|
+
// no-op
|
|
36
|
+
}
|
|
37
|
+
isRecording() {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
recordException() {
|
|
41
|
+
// no-op
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=NoOpSpan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoOpSpan.js","sourceRoot":"","sources":["../../src/NoOp/NoOpSpan.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,QAAQ;IACnB,WAAW;QACT,OAAO;YACL,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,YAAY;QACV,QAAQ;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa;QACX,QAAQ;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,QAAQ;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,SAAS;QACP,QAAQ;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU;QACR,QAAQ;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,GAAG;QACD,QAAQ;IACV,CAAC;IAED,WAAW;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IAED,eAAe;QACb,QAAQ;IACV,CAAC;CACF","sourcesContent":["import type { Span, SpanContext } from '@opentelemetry/api';\n\n/**\n * No-op implementation of {@link Span}.\n * This class will be used when Telemetry is disabled.\n * @internal\n */\nexport class NoOpSpan implements Span {\n spanContext(): SpanContext {\n return {\n spanId: '',\n traceFlags: 0,\n traceId: '',\n };\n }\n\n setAttribute(): this {\n // no-op\n return this;\n }\n\n setAttributes(): this {\n // no-op\n return this;\n }\n\n addEvent(): this {\n // no-op\n return this;\n }\n\n setStatus(): this {\n // no-op\n return this;\n }\n\n updateName(): this {\n // no-op\n return this;\n }\n\n end(): void {\n // no-op\n }\n\n isRecording(): boolean {\n return false;\n }\n\n recordException(): void {\n // no-op\n }\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TelemetryClient } from '../types.js';
|
|
2
|
+
import { NoOpTracer } from './NoOpTracer.js';
|
|
3
|
+
/**
|
|
4
|
+
* No-op implementation of {@link TelemetryClient}.
|
|
5
|
+
* This class will be used when Telemetry is disabled.
|
|
6
|
+
*/
|
|
7
|
+
export declare class NoOpTelemetryClient implements TelemetryClient {
|
|
8
|
+
private tracer;
|
|
9
|
+
setSharedSpanAttribute(): TelemetryClient;
|
|
10
|
+
shutdown(): Promise<void>;
|
|
11
|
+
getTracer(): NoOpTracer;
|
|
12
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { NoOpTracer } from './NoOpTracer.js';
|
|
2
|
+
/**
|
|
3
|
+
* No-op implementation of {@link TelemetryClient}.
|
|
4
|
+
* This class will be used when Telemetry is disabled.
|
|
5
|
+
*/
|
|
6
|
+
export class NoOpTelemetryClient {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.tracer = new NoOpTracer();
|
|
9
|
+
}
|
|
10
|
+
setSharedSpanAttribute() {
|
|
11
|
+
// No-op
|
|
12
|
+
return this;
|
|
13
|
+
}
|
|
14
|
+
shutdown() {
|
|
15
|
+
// No-op
|
|
16
|
+
return Promise.resolve();
|
|
17
|
+
}
|
|
18
|
+
getTracer() {
|
|
19
|
+
return this.tracer;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=NoOpTelemetryClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoOpTelemetryClient.js","sourceRoot":"","sources":["../../src/NoOp/NoOpTelemetryClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IAAhC;QACU,WAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAepC,CAAC;IAbC,sBAAsB;QACpB,QAAQ;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ;QACN,QAAQ;QACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF","sourcesContent":["import type { TelemetryClient } from '../types.js';\nimport { NoOpTracer } from './NoOpTracer.js';\n\n/**\n * No-op implementation of {@link TelemetryClient}.\n * This class will be used when Telemetry is disabled.\n */\nexport class NoOpTelemetryClient implements TelemetryClient {\n private tracer = new NoOpTracer();\n\n setSharedSpanAttribute(): TelemetryClient {\n // No-op\n return this;\n }\n\n shutdown() {\n // No-op\n return Promise.resolve();\n }\n\n getTracer() {\n return this.tracer;\n }\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Context, Span, SpanOptions, Tracer } from '@opentelemetry/api';
|
|
2
|
+
/**
|
|
3
|
+
* No-op implementation of {@link Tracer}.
|
|
4
|
+
* This class will be used when Telemetry is disabled.
|
|
5
|
+
*/
|
|
6
|
+
export declare class NoOpTracer implements Tracer {
|
|
7
|
+
startSpan(): Span;
|
|
8
|
+
startActiveSpan<F extends (span: Span) => ReturnType<F>>(name: string, fn: F): ReturnType<F>;
|
|
9
|
+
startActiveSpan<F extends (span: Span) => ReturnType<F>>(name: string, _opts: SpanOptions, fn: F): ReturnType<F>;
|
|
10
|
+
startActiveSpan<F extends (span: Span) => ReturnType<F>>(name: string, opts: SpanOptions, ctx: Context, fn: F): ReturnType<F>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { NoOpSpan } from './NoOpSpan.js';
|
|
2
|
+
/**
|
|
3
|
+
* No-op implementation of {@link Tracer}.
|
|
4
|
+
* This class will be used when Telemetry is disabled.
|
|
5
|
+
*/
|
|
6
|
+
export class NoOpTracer {
|
|
7
|
+
startSpan() {
|
|
8
|
+
return new NoOpSpan();
|
|
9
|
+
}
|
|
10
|
+
startActiveSpan(_name, arg2, arg3, arg4) {
|
|
11
|
+
let fn;
|
|
12
|
+
if (arguments.length < 2) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
else if (arguments.length === 2) {
|
|
16
|
+
fn = arg2;
|
|
17
|
+
}
|
|
18
|
+
else if (arguments.length === 3) {
|
|
19
|
+
fn = arg3;
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
fn = arg4;
|
|
23
|
+
}
|
|
24
|
+
return fn(new NoOpSpan());
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=NoOpTracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NoOpTracer.js","sourceRoot":"","sources":["../../src/NoOp/NoOpTracer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC;;;GAGG;AACH,MAAM,OAAO,UAAU;IACrB,SAAS;QACP,OAAO,IAAI,QAAQ,EAAE,CAAC;IACxB,CAAC;IAUD,eAAe,CACb,KAAa,EACb,IAAsB,EACtB,IAAkB,EAClB,IAAQ;QAER,IAAI,EAAK,CAAC;QAEV,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACxB,OAAO;SACR;aAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,EAAE,GAAG,IAAS,CAAC;SAChB;aAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,EAAE,GAAG,IAAS,CAAC;SAChB;aAAM;YACL,EAAE,GAAG,IAAS,CAAC;SAChB;QAED,OAAO,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC5B,CAAC;CACF","sourcesContent":["import type { Context, Span, SpanOptions, Tracer } from '@opentelemetry/api';\nimport { NoOpSpan } from './NoOpSpan.js';\n\n/**\n * No-op implementation of {@link Tracer}.\n * This class will be used when Telemetry is disabled.\n */\nexport class NoOpTracer implements Tracer {\n startSpan(): Span {\n return new NoOpSpan();\n }\n\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(name: string, fn: F): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(name: string, _opts: SpanOptions, fn: F): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n name: string,\n opts: SpanOptions,\n ctx: Context,\n fn: F,\n ): ReturnType<F>;\n startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n _name: string,\n arg2?: F | SpanOptions,\n arg3?: F | Context,\n arg4?: F,\n ): ReturnType<F> | undefined {\n let fn: F;\n\n if (arguments.length < 2) {\n return;\n } else if (arguments.length === 2) {\n fn = arg2 as F;\n } else if (arguments.length === 3) {\n fn = arg3 as F;\n } else {\n fn = arg4 as F;\n }\n\n return fn(new NoOpSpan());\n }\n}\n"]}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
export async function createTelemetryClient(options) {
|
|
2
|
+
if (!options.instrumentationKey) {
|
|
3
|
+
console.debug('No connection string found. Telemetry will not be sent.');
|
|
4
|
+
// Create a no-op telemetry client if no instrumentation key is provided
|
|
5
|
+
const { NoOpTelemetryClient } = await import('./NoOp/NoOpTelemetryClient.js');
|
|
6
|
+
return new NoOpTelemetryClient();
|
|
7
|
+
}
|
|
2
8
|
// Set initial log level to WARN to avoid logging telemetry initialization
|
|
3
9
|
process.env.APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL = options.logLevel || 'WARN';
|
|
4
10
|
// Import TelemetryClient after setting initial log level
|
|
5
|
-
const { AppInsightsTelemetryClient } = await import('./AppInsightsTelemetryClient.js');
|
|
11
|
+
const { AppInsightsTelemetryClient } = await import('./AppInsights/AppInsightsTelemetryClient.js');
|
|
6
12
|
return new AppInsightsTelemetryClient(options);
|
|
7
13
|
}
|
|
8
14
|
//# sourceMappingURL=createTelemetryClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTelemetryClient.js","sourceRoot":"","sources":["../src/createTelemetryClient.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAyB;IACnE,0EAA0E;IAC1E,OAAO,CAAC,GAAG,CAAC,iDAAiD,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC;IAE3F,yDAAyD;IACzD,MAAM,EAAE,0BAA0B,EAAE,GAAG,MAAM,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"createTelemetryClient.js","sourceRoot":"","sources":["../src/createTelemetryClient.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAAyB;IACnE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;QAC/B,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAEzE,wEAAwE;QACxE,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAC9E,OAAO,IAAI,mBAAmB,EAAE,CAAC;KAClC;IAED,0EAA0E;IAC1E,OAAO,CAAC,GAAG,CAAC,iDAAiD,GAAG,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC;IAE3F,yDAAyD;IACzD,MAAM,EAAE,0BAA0B,EAAE,GAAG,MAAM,MAAM,CAAC,6CAA6C,CAAC,CAAC;IACnG,OAAO,IAAI,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC","sourcesContent":["import type { TelemetryClient, TelemetryOptions } from './types.js';\n\nexport async function createTelemetryClient(options: TelemetryOptions): Promise<TelemetryClient> {\n if (!options.instrumentationKey) {\n console.debug('No connection string found. Telemetry will not be sent.');\n\n // Create a no-op telemetry client if no instrumentation key is provided\n const { NoOpTelemetryClient } = await import('./NoOp/NoOpTelemetryClient.js');\n return new NoOpTelemetryClient();\n }\n\n // Set initial log level to WARN to avoid logging telemetry initialization\n process.env.APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL = options.logLevel || 'WARN';\n\n // Import TelemetryClient after setting initial log level\n const { AppInsightsTelemetryClient } = await import('./AppInsights/AppInsightsTelemetryClient.js');\n return new AppInsightsTelemetryClient(options);\n}\n"]}
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC","sourcesContent":["export type { Span, Tracer } from '@opentelemetry/api';\nexport { createTelemetryClient } from './createTelemetryClient.js';\nexport type { LogLevel, TelemetryClient, TelemetryOptions } from './types.js';\n"]}
|
package/lib/types.d.ts
CHANGED
package/lib/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 { Tracer } from '@opentelemetry/api';\n\nexport type LogLevel = 'debug' | 'verbose' | 'default';\n\nexport interface TelemetryClient {\n /**\n * Sets a shared attribute that will be added to all spans.\n * @param key - key of the attribute\n * @param value - value of the attribute\n */\n setSharedSpanAttribute(key: string, value: string): void;\n\n /**\n * Flushes all telemetry and shuts down the telemetry client.\n */\n shutdown(): Promise<void>;\n\n /**\n * Gets the OpenTelemetry tracer.\n * @returns the OpenTelemetry tracer\n */\n getTracer(): Tracer;\n}\n\nexport interface TelemetryOptions {\n /**\n * The instrumentation key for the Application Insights.\n */\n instrumentationKey?: string;\n\n /**\n * The log level for the telemetry client.\n */\n logLevel?: LogLevel;\n\n /**\n * The version of the product. This will be added as a shared attribute to all spans.\n */\n productVersion: string;\n\n /**\n * A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services.\n * Possible values: cloudpack, cloudpack.services, etc.\n */\n serviceNamespace: string;\n\n /**\n * Logic name of the service\n * Possible values: cli, bundler-service, etc.\n */\n serviceName: string;\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppInsightsTelemetryClient.js","sourceRoot":"","sources":["../src/AppInsightsTelemetryClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGrE,MAAM,OAAO,0BAA0B;IAIrC,YAAY,OAAyB;QAFpB,yBAAoB,GAA2B,EAAE,CAAC;QAGjE,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAE7C,IAAI,CAAC,iBAAiB,GAAG,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAE/D,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAErF,wBAAwB;QACxB,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAE/D,mEAAmE;QACnE,MAAM,iBAAiB,GAAuB,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,iBAAiB,EAAE,CAAC;QAC3G,iBAAiB,CAAC,gBAAgB,CAAC,IAAI,sBAAsB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAEhG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACI,sBAAsB,CAAC,GAAW,EAAE,KAAa;QACtD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACzC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ;QACnB,MAAM,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,CAAC;QACtC,MAAM,IAAI,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACI,SAAS;QACd,OAAO,IAAI,CAAC,iBAAiB,EAAE,eAAe,EAAE,CAAC,SAAS,EAAE,CAAC;IAC/D,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SpanEnrichingProcessor.js","sourceRoot":"","sources":["../src/SpanEnrichingProcessor.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACjC,YAAoB,uBAAqD;QAArD,4BAAuB,GAAvB,uBAAuB,CAA8B;IAAG,CAAC;IAE7E,UAAU;QACR,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,QAAQ;QACN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,OAAO;IACT,CAAC;IAED,KAAK,CAAC,IAAkB;QACtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,EAAE;YACzE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SAC9B;IACH,CAAC;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convertLogLevel.js","sourceRoot":"","sources":["../src/convertLogLevel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,MAAM,UAAU,eAAe,CAAC,QAAmB;IACjD,QAAQ,QAAQ,EAAE;QAChB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC,KAAK,CAAC;QAC5B,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,OAAO,CAAC;QAC9B;YACE,OAAO,YAAY,CAAC,IAAI,CAAC;KAC5B;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getAppInsightsConfig.js","sourceRoot":"","sources":["../src/getAppInsightsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAyB;IAC5D,MAAM,MAAM,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAC/C,MAAM,CAAC,gBAAgB,GAAG,sBAAsB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAC7E,MAAM,CAAC,2BAA2B,GAAG,KAAK,CAAC;IAC3C,MAAM,CAAC,0BAA0B,GAAG,KAAK,CAAC;IAC1C,MAAM,CAAC,4BAA4B,GAAG,KAAK,CAAC;IAC5C,MAAM,CAAC,gCAAgC,GAAG,KAAK,CAAC;IAChD,MAAM,CAAC,gBAAgB,GAAG;QACxB,IAAI,EAAE;YACJ,OAAO,EAAE,KAAK;SACf;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,KAAK;SACf;KACF,CAAC;IACF,MAAM,CAAC,mBAAmB,GAAG;QAC3B,MAAM,EAAE;YACN,OAAO,EAAE,KAAK;SACf;QACD,OAAO,EAAE;YACP,OAAO,EAAE,KAAK;SACf;QACD,OAAO,EAAE;YACP,OAAO,EAAE,KAAK;SACf;KACF,CAAC;IAEF,MAAM,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC7B,+CAA+C;QAC/C,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3E,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,WAAW;QAC9D,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,gBAAgB;KACzE,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getComputerName.js","sourceRoot":"","sources":["../src/getComputerName.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI;QACF,MAAM,mBAAmB,GAA+D;YACtF,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY;YACrC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,QAAQ,EAAE;SAC/D,CAAC;QAEF,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,QAAQ,EAAE,CAAC;QAE7E,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,CAAC,IAAI,CAAC,iFAAiF,EAAE,CAAC,CAAC,CAAC;QAEnG,OAAO,QAAQ,EAAE,CAAC;KACnB;AACH,CAAC"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|