aboutsummaryrefslogtreecommitdiffstats
path: root/vanilla/node_modules/vitest/dist/chunks/traces.CCmnQaNT.js
diff options
context:
space:
mode:
Diffstat (limited to 'vanilla/node_modules/vitest/dist/chunks/traces.CCmnQaNT.js')
-rw-r--r--vanilla/node_modules/vitest/dist/chunks/traces.CCmnQaNT.js217
1 files changed, 0 insertions, 217 deletions
diff --git a/vanilla/node_modules/vitest/dist/chunks/traces.CCmnQaNT.js b/vanilla/node_modules/vitest/dist/chunks/traces.CCmnQaNT.js
deleted file mode 100644
index b94a0c4..0000000
--- a/vanilla/node_modules/vitest/dist/chunks/traces.CCmnQaNT.js
+++ /dev/null
@@ -1,217 +0,0 @@
-class Traces {
- /**
- * otel stands for OpenTelemetry
- */
- #otel = null;
- #sdk = null;
- #init = null;
- #noopSpan = createNoopSpan();
- #noopContext = createNoopContext();
- #initStartTime = performance.now();
- #initEndTime = 0;
- #initRecorded = false;
- constructor(options) {
- if (options.enabled) {
- const apiInit = import('@opentelemetry/api').then((api) => {
- this.#otel = {
- tracer: api.trace.getTracer(options.tracerName || "vitest"),
- context: api.context,
- propagation: api.propagation,
- trace: api.trace,
- SpanKind: api.SpanKind,
- SpanStatusCode: api.SpanStatusCode
- };
- }).catch(() => {
- throw new Error(`"@opentelemetry/api" is not installed locally. Make sure you have setup OpenTelemetry instrumentation: https://vitest.dev/guide/open-telemetry`);
- });
- const sdkInit = (options.sdkPath ? import(
- /* @vite-ignore */
- options.sdkPath
-) : Promise.resolve()).catch((cause) => {
- throw new Error(`Failed to import custom OpenTelemetry SDK script (${options.sdkPath}): ${cause.message}`);
- });
- this.#init = Promise.all([sdkInit, apiInit]).then(([sdk]) => {
- if (sdk != null) {
- if (sdk.default != null && typeof sdk.default === "object" && typeof sdk.default.shutdown === "function") this.#sdk = sdk.default;
- else if (options.watchMode !== true && process.env.VITEST_MODE !== "watch") console.warn(`OpenTelemetry instrumentation module (${options.sdkPath}) does not have a default export with a "shutdown" method. Vitest won't be able to ensure that all traces are processed in time. Try running Vitest in watch mode instead.`);
- }
- }).finally(() => {
- this.#initEndTime = performance.now();
- this.#init = null;
- });
- }
- }
- isEnabled() {
- return !!this.#otel;
- }
- /**
- * @internal
- */
- async waitInit() {
- if (this.#init) await this.#init;
- return this;
- }
- /**
- * @internal
- */
- recordInitSpan(context) {
- if (this.#initRecorded) return;
- this.#initRecorded = true;
- this.startSpan("vitest.runtime.traces", { startTime: this.#initStartTime }, context).end(this.#initEndTime);
- }
- /**
- * @internal
- */
- startContextSpan(name, currentContext) {
- if (!this.#otel) return {
- span: this.#noopSpan,
- context: this.#noopContext
- };
- const activeContext = currentContext || this.#otel.context.active();
- const span = this.#otel.tracer.startSpan(name, {}, activeContext);
- return {
- span,
- context: this.#otel.trace.setSpan(activeContext, span)
- };
- }
- /**
- * @internal
- */
- getContextFromCarrier(carrier) {
- if (!this.#otel) return this.#noopContext;
- const activeContext = this.#otel.context.active();
- if (!carrier) return activeContext;
- return this.#otel.propagation.extract(activeContext, carrier);
- }
- /**
- * @internal
- */
- getContextFromEnv(env) {
- if (!this.#otel) return this.#noopContext;
- // https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/context/env-carriers.md
- // some tools sets only `TRACEPARENT` but not `TRACESTATE`
- const carrier = {};
- if (typeof env.TRACEPARENT === "string") carrier.traceparent = env.TRACEPARENT;
- if (typeof env.TRACESTATE === "string") carrier.tracestate = env.TRACESTATE;
- return this.getContextFromCarrier(carrier);
- }
- /**
- * @internal
- */
- getContextCarrier(context) {
- if (!this.#otel) return;
- const carrier = {};
- this.#otel.propagation.inject(context || this.#otel.context.active(), carrier);
- return carrier;
- }
- #callActiveSpan(span, callback) {
- const otel = this.#otel;
- let result;
- try {
- result = callback(span);
- if (result instanceof Promise) return result.catch((error) => {
- span.recordException({
- name: error.name,
- message: error.message,
- stack: error.stack
- });
- span.setStatus({ code: otel.SpanStatusCode.ERROR });
- throw error;
- }).finally(() => span.end());
- return result;
- } catch (error) {
- if (error instanceof Error) {
- span.recordException({
- name: error.name,
- message: error.message,
- stack: error.stack
- });
- span.setStatus({ code: otel.SpanStatusCode.ERROR });
- }
- throw error;
- } finally {
- // end sync callbcak
- if (!(result instanceof Promise)) span.end();
- }
- }
- /**
- * @internal
- */
- $(name, optionsOrFn, fn) {
- const callback = typeof optionsOrFn === "function" ? optionsOrFn : fn;
- if (!this.#otel) return callback(this.#noopSpan);
- const otel = this.#otel;
- const options = typeof optionsOrFn === "function" ? {} : optionsOrFn;
- const context = options.context;
- if (context) return otel.tracer.startActiveSpan(name, options, context, (span) => this.#callActiveSpan(span, callback));
- return otel.tracer.startActiveSpan(name, options, (span) => this.#callActiveSpan(span, callback));
- }
- /**
- * @internal
- */
- startSpan(name, options, context) {
- if (!this.#otel) return this.#noopSpan;
- const { tracer } = this.#otel;
- return tracer.startSpan(name, options, context);
- }
- // On browser mode, async context is not automatically propagated,
- // so we manually bind the `$` calls to the provided context.
- // TODO: this doesn't bind to user land's `@optelemetry/api` calls
- /**
- * @internal
- */
- bind(context) {
- if (!this.#otel) return;
- const original = this.$.__original ?? this.$;
- this.$ = this.#otel.context.bind(context, original);
- this.$.__original = original;
- }
- /**
- * @internal
- */
- async finish() {
- await this.#sdk?.shutdown();
- }
- /**
- * @internal
- */
- async flush() {
- await this.#sdk?.forceFlush?.();
- }
-}
-function noopSpan() {
- return this;
-}
-function createNoopSpan() {
- return {
- setAttribute: noopSpan,
- setStatus: noopSpan,
- addEvent: noopSpan,
- addLink: noopSpan,
- addLinks: noopSpan,
- setAttributes: noopSpan,
- updateName: noopSpan,
- end: () => {},
- isRecording: () => false,
- recordException: noopSpan,
- spanContext() {
- return {
- spanId: "",
- traceFlags: 0,
- traceId: ""
- };
- }
- };
-}
-function noopContext() {
- return this;
-}
-function createNoopContext() {
- return {
- getValue: noopContext,
- setValue: noopContext,
- deleteValue: noopContext
- };
-}
-
-export { Traces as T };