@microsoft/agents-telemetry 1.5.0-beta.23.g2277c6f0ab
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 +342 -0
- package/dist/cjs/package.json +73 -0
- package/dist/cjs/src/index.cjs +14 -0
- package/dist/cjs/src/index.cjs.map +1 -0
- package/dist/cjs/src/index.d.cts +93 -0
- package/dist/cjs/src/index.d.ts +13 -0
- package/dist/cjs/src/index.js +54 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/loggers/base.d.ts +21 -0
- package/dist/cjs/src/loggers/base.js +12 -0
- package/dist/cjs/src/loggers/base.js.map +1 -0
- package/dist/cjs/src/loggers/debug.d.ts +19 -0
- package/dist/cjs/src/loggers/debug.js +70 -0
- package/dist/cjs/src/loggers/debug.js.map +1 -0
- package/dist/cjs/src/loggers/otel.d.ts +10 -0
- package/dist/cjs/src/loggers/otel.js +77 -0
- package/dist/cjs/src/loggers/otel.js.map +1 -0
- package/dist/cjs/src/observability/category.d.ts +11 -0
- package/dist/cjs/src/observability/category.js +67 -0
- package/dist/cjs/src/observability/category.js.map +1 -0
- package/dist/cjs/src/observability/constants.d.ts +111 -0
- package/dist/cjs/src/observability/constants.js +136 -0
- package/dist/cjs/src/observability/constants.js.map +1 -0
- package/dist/cjs/src/observability/metric.d.ts +9 -0
- package/dist/cjs/src/observability/metric.js +18 -0
- package/dist/cjs/src/observability/metric.js.map +1 -0
- package/dist/cjs/src/observability/trace.d.ts +13 -0
- package/dist/cjs/src/observability/trace.js +135 -0
- package/dist/cjs/src/observability/trace.js.map +1 -0
- package/dist/cjs/src/types.d.ts +150 -0
- package/dist/cjs/src/types.js +7 -0
- package/dist/cjs/src/types.js.map +1 -0
- package/dist/cjs/src/utils/attempt.d.ts +30 -0
- package/dist/cjs/src/utils/attempt.js +53 -0
- package/dist/cjs/src/utils/attempt.js.map +1 -0
- package/dist/cjs/src/utils/noop.d.ts +18 -0
- package/dist/cjs/src/utils/noop.js +46 -0
- package/dist/cjs/src/utils/noop.js.map +1 -0
- package/dist/cjs/src/utils/platform.d.ts +8 -0
- package/dist/cjs/src/utils/platform.js +12 -0
- package/dist/cjs/src/utils/platform.js.map +1 -0
- package/dist/cjs/src/utils/setting.d.ts +11 -0
- package/dist/cjs/src/utils/setting.js +30 -0
- package/dist/cjs/src/utils/setting.js.map +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/src/index.d.mts +93 -0
- package/dist/esm/src/index.d.ts +13 -0
- package/dist/esm/src/index.js +51 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/index.mjs +15 -0
- package/dist/esm/src/index.mjs.map +1 -0
- package/dist/esm/src/loggers/base.d.ts +21 -0
- package/dist/esm/src/loggers/base.js +9 -0
- package/dist/esm/src/loggers/base.js.map +1 -0
- package/dist/esm/src/loggers/debug.d.ts +19 -0
- package/dist/esm/src/loggers/debug.js +63 -0
- package/dist/esm/src/loggers/debug.js.map +1 -0
- package/dist/esm/src/loggers/otel.d.ts +10 -0
- package/dist/esm/src/loggers/otel.js +74 -0
- package/dist/esm/src/loggers/otel.js.map +1 -0
- package/dist/esm/src/observability/category.d.ts +11 -0
- package/dist/esm/src/observability/category.js +64 -0
- package/dist/esm/src/observability/category.js.map +1 -0
- package/dist/esm/src/observability/constants.d.ts +111 -0
- package/dist/esm/src/observability/constants.js +133 -0
- package/dist/esm/src/observability/constants.js.map +1 -0
- package/dist/esm/src/observability/metric.d.ts +9 -0
- package/dist/esm/src/observability/metric.js +15 -0
- package/dist/esm/src/observability/metric.js.map +1 -0
- package/dist/esm/src/observability/trace.d.ts +13 -0
- package/dist/esm/src/observability/trace.js +132 -0
- package/dist/esm/src/observability/trace.js.map +1 -0
- package/dist/esm/src/types.d.ts +150 -0
- package/dist/esm/src/types.js +6 -0
- package/dist/esm/src/types.js.map +1 -0
- package/dist/esm/src/utils/attempt.d.ts +30 -0
- package/dist/esm/src/utils/attempt.js +49 -0
- package/dist/esm/src/utils/attempt.js.map +1 -0
- package/dist/esm/src/utils/noop.d.ts +18 -0
- package/dist/esm/src/utils/noop.js +41 -0
- package/dist/esm/src/utils/noop.js.map +1 -0
- package/dist/esm/src/utils/platform.d.ts +8 -0
- package/dist/esm/src/utils/platform.js +9 -0
- package/dist/esm/src/utils/platform.js.map +1 -0
- package/dist/esm/src/utils/setting.d.ts +11 -0
- package/dist/esm/src/utils/setting.js +27 -0
- package/dist/esm/src/utils/setting.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.traceFactory = traceFactory;
|
|
8
|
+
const attempt_js_1 = require("../utils/attempt.js");
|
|
9
|
+
const category_js_1 = require("./category.js");
|
|
10
|
+
const constants_js_1 = require("./constants.js");
|
|
11
|
+
const noop_js_1 = require("../utils/noop.js");
|
|
12
|
+
/**
|
|
13
|
+
* Creates the trace helper bound to the package tracer.
|
|
14
|
+
*
|
|
15
|
+
* @remarks
|
|
16
|
+
* - Only span names declared in `SpanNames` are accepted.
|
|
17
|
+
* - Disabled span categories return a no-op context instead of creating a real span.
|
|
18
|
+
*/
|
|
19
|
+
function traceFactory(otel) {
|
|
20
|
+
const validSpanNames = new Set(Object.values(constants_js_1.SpanNames));
|
|
21
|
+
const tracer = otel.trace.getTracer('@microsoft/agents-telemetry');
|
|
22
|
+
const trace = function trace(target, callback) {
|
|
23
|
+
if (!target) {
|
|
24
|
+
throw new Error('Trace definition is required');
|
|
25
|
+
}
|
|
26
|
+
if (!validSpanNames.has(target.name)) {
|
|
27
|
+
throw new Error(`Unrecognized span name "${target.name}". See SpanNames constants.`);
|
|
28
|
+
}
|
|
29
|
+
if ((0, category_js_1.isSpanDisabled)(target.name)) {
|
|
30
|
+
return (0, noop_js_1.noopContext)(callback);
|
|
31
|
+
}
|
|
32
|
+
const record = createRecord(target);
|
|
33
|
+
if (!callback) {
|
|
34
|
+
// TODO: if parent/child span connections are needed, we could expose a 'child' function that internally connects them.
|
|
35
|
+
const span = tracer.startSpan(target.name);
|
|
36
|
+
const flow = start(otel, target, span, record);
|
|
37
|
+
return {
|
|
38
|
+
record: flow.record,
|
|
39
|
+
actions: flow.actions,
|
|
40
|
+
fail: flow.fail,
|
|
41
|
+
end: flow.end
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return tracer.startActiveSpan(target.name, span => {
|
|
45
|
+
const flow = start(otel, target, span, record);
|
|
46
|
+
return (0, attempt_js_1.attempt)({
|
|
47
|
+
try: () => callback({ record: flow.record, actions: flow.actions }),
|
|
48
|
+
catch: (error) => { throw flow.fail(error); },
|
|
49
|
+
finally: flow.end
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
trace.define = definition => definition;
|
|
54
|
+
return trace;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Creates the mutable record stored for a trace execution.
|
|
58
|
+
*
|
|
59
|
+
* @remarks
|
|
60
|
+
* - Updates use `Object.assign`, so nested objects are replaced rather than deeply merged.
|
|
61
|
+
*/
|
|
62
|
+
function createRecord(target) {
|
|
63
|
+
const state = target.record ? { ...target.record } : {};
|
|
64
|
+
return {
|
|
65
|
+
set(values) {
|
|
66
|
+
// TODO: use deep-merge strategy for Object and Array
|
|
67
|
+
Object.assign(state, values);
|
|
68
|
+
},
|
|
69
|
+
get() {
|
|
70
|
+
return state;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Initializes a trace execution and returns the action helpers plus end/fail controls.
|
|
76
|
+
*/
|
|
77
|
+
function start(otel, target, span, record) {
|
|
78
|
+
var _a, _b;
|
|
79
|
+
const start = performance.now();
|
|
80
|
+
let ended = false;
|
|
81
|
+
let _error;
|
|
82
|
+
return {
|
|
83
|
+
record: record.set,
|
|
84
|
+
actions: (_b = (_a = target.actions) === null || _a === void 0 ? void 0 : _a.call(target, { span })) !== null && _b !== void 0 ? _b : {},
|
|
85
|
+
fail(error) {
|
|
86
|
+
_error = error;
|
|
87
|
+
return error;
|
|
88
|
+
},
|
|
89
|
+
end() {
|
|
90
|
+
if (ended || !otel) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
ended = true;
|
|
94
|
+
if (_error === undefined) {
|
|
95
|
+
span.setStatus({ code: otel.SpanStatusCode.OK });
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
captureError(otel, span, _error);
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
target.end({
|
|
102
|
+
span,
|
|
103
|
+
record: record.get(),
|
|
104
|
+
duration: performance.now() - start,
|
|
105
|
+
error: _error,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
catch (endError) {
|
|
109
|
+
captureError(otel, span, endError);
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
span.end();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Records an error on the span and sets the span status to `ERROR`.
|
|
119
|
+
*
|
|
120
|
+
* @remarks
|
|
121
|
+
* - Non-`Error` values are stringified so thrown primitives are still captured.
|
|
122
|
+
*/
|
|
123
|
+
function captureError(otel, span, error) {
|
|
124
|
+
let message;
|
|
125
|
+
if (error instanceof Error) {
|
|
126
|
+
message = error.message;
|
|
127
|
+
span.recordException(error);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
message = String(error);
|
|
131
|
+
span.recordException({ name: String(typeof error), message });
|
|
132
|
+
}
|
|
133
|
+
span.setStatus({ code: otel.SpanStatusCode.ERROR, message });
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../../../src/observability/trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
import { Logger } from './loggers/base.js';
|
|
6
|
+
import { MetricNames, SpanNames } from './observability/constants.js';
|
|
7
|
+
import type { Span, Meter } from '@opentelemetry/api';
|
|
8
|
+
/**
|
|
9
|
+
* These type re-exports are intentional.
|
|
10
|
+
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* This package is primarily a shared telemetry layer for other Agents SDK packages, so its
|
|
13
|
+
* TypeScript surface may depend on OpenTelemetry types even when runtime loading falls back
|
|
14
|
+
* to noop behavior if the optional dependencies are absent.
|
|
15
|
+
*/
|
|
16
|
+
export type * from '@opentelemetry/api';
|
|
17
|
+
export type { Span, Meter } from '@opentelemetry/api';
|
|
18
|
+
export type * from '@opentelemetry/api-logs';
|
|
19
|
+
/**
|
|
20
|
+
* Runtime type for the optional OpenTelemetry API module.
|
|
21
|
+
*/
|
|
22
|
+
export type OTel = typeof import('@opentelemetry/api');
|
|
23
|
+
/**
|
|
24
|
+
* Runtime type for the optional OpenTelemetry logs module.
|
|
25
|
+
*/
|
|
26
|
+
export type OTelLogs = typeof import('@opentelemetry/api-logs');
|
|
27
|
+
/**
|
|
28
|
+
* Union of the supported span names exposed by the package constants.
|
|
29
|
+
*/
|
|
30
|
+
export type SpanName = typeof SpanNames[keyof typeof SpanNames];
|
|
31
|
+
/**
|
|
32
|
+
* Mutable state container used while a trace is active.
|
|
33
|
+
*
|
|
34
|
+
* @remarks
|
|
35
|
+
* - `set()` performs a shallow merge.
|
|
36
|
+
* - `get()` returns the latest snapshot stored for the span.
|
|
37
|
+
*/
|
|
38
|
+
export interface TraceRecord<TRecord extends object> {
|
|
39
|
+
set(values: Partial<TRecord>): void;
|
|
40
|
+
get(): Readonly<TRecord>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Context passed to traced callbacks.
|
|
44
|
+
*/
|
|
45
|
+
export interface TraceContext<TRecord extends object, TActions extends object> {
|
|
46
|
+
record(values: Partial<TRecord>): void;
|
|
47
|
+
actions: TActions;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Callback used by callback-based trace execution.
|
|
51
|
+
*/
|
|
52
|
+
export type TraceCallback<TRecord extends object, TActions extends object, TReturn = unknown> = (context: TraceContext<TRecord, TActions>) => TReturn;
|
|
53
|
+
/**
|
|
54
|
+
* Context used to create action helpers backed by the underlying span.
|
|
55
|
+
*/
|
|
56
|
+
export interface TraceActionsContext {
|
|
57
|
+
span: Span;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Data provided to the `end` hook when a trace finishes.
|
|
61
|
+
*/
|
|
62
|
+
export interface TraceEndContext<TRecord extends object> {
|
|
63
|
+
span: Span;
|
|
64
|
+
record: Readonly<TRecord>;
|
|
65
|
+
duration: number;
|
|
66
|
+
error?: unknown;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Handle returned when a trace is created without a callback.
|
|
70
|
+
*/
|
|
71
|
+
export interface TraceManagedContext<TRecord extends object, TActions extends object> extends TraceContext<TRecord, TActions> {
|
|
72
|
+
end(): void;
|
|
73
|
+
fail<T extends unknown>(error: T): T;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Declares how a span should be created, enriched, and finalized.
|
|
77
|
+
*
|
|
78
|
+
* @remarks
|
|
79
|
+
* - `name` must come from `SpanNames`.
|
|
80
|
+
* - `record` provides the default shape for values collected during the span lifetime.
|
|
81
|
+
*/
|
|
82
|
+
export interface TraceDefinition<TRecord extends object = Record<string, never>, TActions extends object = Record<string, Function>> {
|
|
83
|
+
name: SpanName;
|
|
84
|
+
record: TRecord;
|
|
85
|
+
actions?(context: TraceActionsContext): TActions;
|
|
86
|
+
end(context: TraceEndContext<TRecord>): void;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Trace helper that supports both managed spans and callback-based spans.
|
|
90
|
+
*/
|
|
91
|
+
export interface TraceFunction {
|
|
92
|
+
define<TRecord extends object, TActions extends object>(definition: TraceDefinition<TRecord, TActions>): TraceDefinition<TRecord, TActions>;
|
|
93
|
+
<TRecord extends object, TActions extends object>(definition: TraceDefinition<TRecord, TActions>): TraceManagedContext<TRecord, TActions>;
|
|
94
|
+
<TRecord extends object, TActions extends object, TReturn>(definition: TraceDefinition<TRecord, TActions>, callback: TraceCallback<TRecord, TActions, TReturn>): TReturn;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Metric factory surface exposed by the package.
|
|
98
|
+
*/
|
|
99
|
+
export interface Metric {
|
|
100
|
+
histogram: Meter['createHistogram'];
|
|
101
|
+
counter: Meter['createCounter'];
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Loader interface for the index function, which conditionally loads OpenTelemetry dependencies at runtime.
|
|
105
|
+
*/
|
|
106
|
+
export interface Loader {
|
|
107
|
+
otel(): OTel | Promise<OTel>;
|
|
108
|
+
logs(): OTelLogs | Promise<OTelLogs>;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Conditional return type for the index loader function, based on whether the loader returns Promises.
|
|
112
|
+
*/
|
|
113
|
+
export type LoaderReturn<TLoader extends Loader> = Extract<ReturnType<TLoader['otel']> | ReturnType<TLoader['logs']>, PromiseLike<unknown>> extends never ? Factory : Promise<Factory>;
|
|
114
|
+
/**
|
|
115
|
+
* Public telemetry API exported by the package entrypoints.
|
|
116
|
+
*/
|
|
117
|
+
export interface Factory {
|
|
118
|
+
SpanNames: typeof SpanNames;
|
|
119
|
+
MetricNames: typeof MetricNames;
|
|
120
|
+
/**
|
|
121
|
+
* Creates a namespaced logger.
|
|
122
|
+
*
|
|
123
|
+
* @remarks
|
|
124
|
+
* - Debug output is always used.
|
|
125
|
+
* - When the OTel logs API is available, messages are mirrored to OpenTelemetry logs.
|
|
126
|
+
*/
|
|
127
|
+
debug(namespace: string): Logger;
|
|
128
|
+
/**
|
|
129
|
+
* Starts spans from a `TraceDefinition`.
|
|
130
|
+
*/
|
|
131
|
+
trace: TraceFunction;
|
|
132
|
+
/**
|
|
133
|
+
* Exposes histogram and counter creators from the package meter.
|
|
134
|
+
*/
|
|
135
|
+
metric: Metric;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Options used by the shared `attempt()` helper.
|
|
139
|
+
*
|
|
140
|
+
* @remarks
|
|
141
|
+
* - Omitting catch preserves the original error.
|
|
142
|
+
* - catch is for side effects only; recovery values are not used.
|
|
143
|
+
* - Declare catch as returning never when it always rethrows.
|
|
144
|
+
* - Declare catch as returning void when it may swallow the failure.
|
|
145
|
+
*/
|
|
146
|
+
export interface AttemptOptions<TResult, TCatch = never> {
|
|
147
|
+
try(): TResult;
|
|
148
|
+
catch?(error: unknown): TCatch;
|
|
149
|
+
finally?(): void;
|
|
150
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
import type { AttemptOptions } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Detects promise-like values returned by internal loaders and callbacks.
|
|
8
|
+
*/
|
|
9
|
+
export declare function isPromise<T>(value: T | Promise<T>): value is Promise<T>;
|
|
10
|
+
type SwallowingAttemptOptions<TResult> = AttemptOptions<TResult, void>;
|
|
11
|
+
type RethrowingAttemptOptions<TResult> = AttemptOptions<TResult, never>;
|
|
12
|
+
/**
|
|
13
|
+
* Runs a callback and normalizes sync and async error/finally handling.
|
|
14
|
+
*
|
|
15
|
+
* @remarks
|
|
16
|
+
* - If try succeeds, its result is returned.
|
|
17
|
+
* - If try fails and catch is omitted, the original error is propagated.
|
|
18
|
+
* - If try fails and catch throws, that error is propagated.
|
|
19
|
+
* - If try fails and catch completes normally, the failure is treated as swallowed
|
|
20
|
+
* and attempt returns or resolves to undefined.
|
|
21
|
+
* - catch is side-effect only; any value it returns is ignored.
|
|
22
|
+
* - Type narrowing is based on whether catch is omitted or its declared return type:
|
|
23
|
+
* omitted or never means the error is rethrown, void means the error may be swallowed.
|
|
24
|
+
* - finally runs once for both sync and async paths.
|
|
25
|
+
*/
|
|
26
|
+
export declare function attempt<TResult>(options: RethrowingAttemptOptions<TResult>): TResult;
|
|
27
|
+
export declare function attempt<TResult>(options: RethrowingAttemptOptions<Promise<TResult>>): Promise<TResult>;
|
|
28
|
+
export declare function attempt<TResult>(options: SwallowingAttemptOptions<TResult>): TResult | undefined;
|
|
29
|
+
export declare function attempt<TResult>(options: SwallowingAttemptOptions<Promise<TResult>>): Promise<TResult | undefined>;
|
|
30
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.isPromise = isPromise;
|
|
8
|
+
exports.attempt = attempt;
|
|
9
|
+
/**
|
|
10
|
+
* Detects promise-like values returned by internal loaders and callbacks.
|
|
11
|
+
*/
|
|
12
|
+
function isPromise(value) {
|
|
13
|
+
return ((typeof value === 'object' || typeof value === 'function') &&
|
|
14
|
+
value !== null &&
|
|
15
|
+
'then' in value &&
|
|
16
|
+
typeof value.then === 'function');
|
|
17
|
+
}
|
|
18
|
+
function attempt(options) {
|
|
19
|
+
var _a;
|
|
20
|
+
// Note: order of overloads ensures correct typing.
|
|
21
|
+
let isAsync = false;
|
|
22
|
+
try {
|
|
23
|
+
const result = options.try();
|
|
24
|
+
if (isPromise(result)) {
|
|
25
|
+
isAsync = true;
|
|
26
|
+
return result
|
|
27
|
+
.catch(error => {
|
|
28
|
+
var _a;
|
|
29
|
+
if (!options.catch) {
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
const result = (_a = options.catch) === null || _a === void 0 ? void 0 : _a.call(options, error);
|
|
33
|
+
if (isPromise(result)) {
|
|
34
|
+
return result.then(() => undefined);
|
|
35
|
+
}
|
|
36
|
+
return undefined;
|
|
37
|
+
})
|
|
38
|
+
.finally(options.finally);
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
if (!options.catch) {
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
options.catch(error);
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
!isAsync && ((_a = options.finally) === null || _a === void 0 ? void 0 : _a.call(options));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=attempt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attempt.js","sourceRoot":"","sources":["../../../../src/utils/attempt.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAOH,8BAOC;AAuBD,0BAgCC;AAjED;;GAEG;AACH,SAAgB,SAAS,CAAK,KAAqB;IACjD,OAAO,CACL,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC;QAC1D,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU,CACjC,CAAA;AACH,CAAC;AAuBD,SAAgB,OAAO,CAAW,OAA8C;;IAC9E,mDAAmD;IACnD,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QAE5B,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,OAAO,GAAG,IAAI,CAAA;YACd,OAAO,MAAM;iBACV,KAAK,CAAC,KAAK,CAAC,EAAE;;gBACb,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBACnB,MAAM,KAAK,CAAA;gBACb,CAAC;gBACD,MAAM,MAAM,GAAG,MAAA,OAAO,CAAC,KAAK,wDAAG,KAAK,CAAC,CAAA;gBACrC,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;oBACtB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;gBACrC,CAAC;gBACD,OAAO,SAAS,CAAA;YAClB,CAAC,CAAC;iBACD,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAC7B,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,KAAK,CAAA;QACb,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACpB,OAAO,SAAS,CAAA;IAClB,CAAC;YAAS,CAAC;QACT,CAAC,OAAO,KAAI,MAAA,OAAO,CAAC,OAAO,uDAAI,CAAA,CAAA;IACjC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
import type { Metric, TraceCallback, TraceFunction, TraceManagedContext } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* No-op trace implementation used when tracing is unavailable or disabled.
|
|
8
|
+
*/
|
|
9
|
+
export declare const noopTrace: TraceFunction;
|
|
10
|
+
/**
|
|
11
|
+
* No-op metric implementation used when the OTel metrics API is unavailable.
|
|
12
|
+
*/
|
|
13
|
+
export declare function noopMetric(): Metric;
|
|
14
|
+
/**
|
|
15
|
+
* Creates a callback/manually-managed trace context that safely does nothing.
|
|
16
|
+
*/
|
|
17
|
+
export declare function noopContext<TRecord extends object, TActions extends object>(): TraceManagedContext<TRecord, TActions>;
|
|
18
|
+
export declare function noopContext<TRecord extends object, TActions extends object, TReturn>(callback: TraceCallback<TRecord, TActions, TReturn>): TReturn;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.noopTrace = void 0;
|
|
8
|
+
exports.noopMetric = noopMetric;
|
|
9
|
+
exports.noopContext = noopContext;
|
|
10
|
+
const noopFn = () => { };
|
|
11
|
+
/**
|
|
12
|
+
* No-op trace implementation used when tracing is unavailable or disabled.
|
|
13
|
+
*/
|
|
14
|
+
exports.noopTrace = function (target, callback) {
|
|
15
|
+
return noopContext(callback);
|
|
16
|
+
};
|
|
17
|
+
exports.noopTrace.define = definition => definition;
|
|
18
|
+
/**
|
|
19
|
+
* No-op metric implementation used when the OTel metrics API is unavailable.
|
|
20
|
+
*/
|
|
21
|
+
function noopMetric() {
|
|
22
|
+
return {
|
|
23
|
+
histogram: () => ({ record: noopFn }),
|
|
24
|
+
counter: () => ({ add: noopFn }),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function noopContext(callback) {
|
|
28
|
+
const actions = new Proxy({}, { get: () => noopFn });
|
|
29
|
+
const context = {
|
|
30
|
+
record: noopFn,
|
|
31
|
+
actions,
|
|
32
|
+
};
|
|
33
|
+
if (callback) {
|
|
34
|
+
return callback(context);
|
|
35
|
+
}
|
|
36
|
+
const managedContext = {
|
|
37
|
+
record: context.record,
|
|
38
|
+
actions: context.actions,
|
|
39
|
+
end: noopFn,
|
|
40
|
+
fail(error) {
|
|
41
|
+
return error;
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
return managedContext;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=noop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noop.js","sourceRoot":"","sources":["../../../../src/utils/noop.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAkBH,gCAKC;AAOD,kCAqBC;AA/CD,MAAM,MAAM,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;AAEvB;;GAEG;AACU,QAAA,SAAS,GAAG,UAAU,MAAM,EAAE,QAAQ;IACjD,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAA;AAC9B,CAAkB,CAAA;AAElB,iBAAS,CAAC,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,UAAU,CAAA;AAE3C;;GAEG;AACH,SAAgB,UAAU;IACxB,OAAO;QACL,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;KACjC,CAAA;AACH,CAAC;AAOD,SAAgB,WAAW,CAA4D,QAAoD;IACzI,MAAM,OAAO,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAa,CAAA;IAChE,MAAM,OAAO,GAAoC;QAC/C,MAAM,EAAE,MAAM;QACd,OAAO;KACR,CAAA;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,cAAc,GAA2C;QAC7D,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,GAAG,EAAE,MAAM;QACX,IAAI,CAAqB,KAAQ;YAC/B,OAAO,KAAK,CAAA;QACd,CAAC;KACF,CAAA;IAED,OAAO,cAAc,CAAA;AACvB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.isBrowser = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* Indicates whether the current runtime looks like a browser with DOM access.
|
|
10
|
+
*/
|
|
11
|
+
exports.isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
|
|
12
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../../src/utils/platform.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;GAEG;AACU,QAAA,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,WAAW,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Reads a configuration setting from `localStorage` in the browser or `process.env` in Node.js.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* - Browser storage access failures are ignored and treated as an empty value.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getSetting(name: string): string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
* Licensed under the MIT License.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.getSetting = getSetting;
|
|
8
|
+
const platform_js_1 = require("./platform.js");
|
|
9
|
+
/**
|
|
10
|
+
* Reads a configuration setting from `localStorage` in the browser or `process.env` in Node.js.
|
|
11
|
+
*
|
|
12
|
+
* @remarks
|
|
13
|
+
* - Browser storage access failures are ignored and treated as an empty value.
|
|
14
|
+
*/
|
|
15
|
+
function getSetting(name) {
|
|
16
|
+
var _a, _b;
|
|
17
|
+
if (platform_js_1.isBrowser) {
|
|
18
|
+
try {
|
|
19
|
+
return (_a = window.localStorage.getItem(name)) !== null && _a !== void 0 ? _a : '';
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// no-op
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
return (_b = process.env[name]) !== null && _b !== void 0 ? _b : '';
|
|
27
|
+
}
|
|
28
|
+
return '';
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=setting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setting.js","sourceRoot":"","sources":["../../../../src/utils/setting.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAUH,gCAYC;AApBD,+CAAyC;AAEzC;;;;;GAKG;AACH,SAAgB,UAAU,CAAE,IAAW;;IACrC,IAAI,uBAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,OAAO,MAAA,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAA;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ;QACV,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,MAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAA;IAChC,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC"}
|