@interfere/vite 12.0.2 → 12.0.4

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.
@@ -35,9 +35,11 @@ export interface ServerInstrumentationOptions {
35
35
  */
36
36
  propagateContextUrls?: (string | RegExp)[];
37
37
  /**
38
- * Override the OTel `service.name` resource attribute. Defaults
39
- * to `"interfere-sdk-vite-server"`.
38
+ * Application service name. Defaults to `OTEL_SERVICE_NAME`, then OTel's
39
+ * `unknown_service:<executable>` or `unknown_service` when unavailable.
40
40
  */
41
41
  serviceName?: string;
42
+ /** Optional application namespace for grouping related services. */
43
+ serviceNamespace?: string;
42
44
  }
43
45
  //#endregion
@@ -1 +1 @@
1
- import{PRODUCER_VERSION}from"../../version.mjs";import{resolveReleaseSlug}from"../release-slug.mjs";import{readInterfereServerEnv}from"./env.mjs";import{fetchAndCacheRemoteConfig}from"./remote-config.mjs";import{bridgeConsoleToOtel}from"./console-bridge.mjs";import{FreshnessStampingPropagator}from"./freshness-propagator.mjs";import{drainUrl}from"@interfere/constants/api";import{omitUndefined}from"@interfere/helpers/omit-undefined";import{metrics,propagation}from"@opentelemetry/api";import{logSourcingModeSchema,readLogSourcingMode}from"@interfere/types/sdk/log-sourcing";import{readServerTracingMode,serverTracingModeSchema}from"@interfere/types/sdk/server-tracing";import{BaggageSpanProcessor}from"@opentelemetry/baggage-span-processor";import{AsyncLocalStorageContextManager}from"@opentelemetry/context-async-hooks";import{CompositePropagator,W3CBaggagePropagator,W3CTraceContextPropagator}from"@opentelemetry/core";import{OTLPLogExporter}from"@opentelemetry/exporter-logs-otlp-http";import{AggregationTemporalityPreference,OTLPMetricExporter}from"@opentelemetry/exporter-metrics-otlp-http";import{OTLPTraceExporter}from"@opentelemetry/exporter-trace-otlp-http";import{registerInstrumentations}from"@opentelemetry/instrumentation";import{UndiciInstrumentation}from"@opentelemetry/instrumentation-undici";import{resourceFromAttributes}from"@opentelemetry/resources";import{BatchLogRecordProcessor,LoggerProvider}from"@opentelemetry/sdk-logs";import{MeterProvider,PeriodicExportingMetricReader}from"@opentelemetry/sdk-metrics";import{BatchSpanProcessor}from"@opentelemetry/sdk-trace-base";import{NodeTracerProvider}from"@opentelemetry/sdk-trace-node";let registered=!1;function matchesAny(url,patterns){for(let pattern of patterns)if(pattern instanceof RegExp?pattern.test(url):url.includes(pattern))return!0;return!1}async function register(opts={}){if(registered)return;let env=readInterfereServerEnv();if(!env.publicKey)return;let{slug:releaseSlug}=resolveReleaseSlug();releaseSlug||console.warn("[interfere] No commit SHA available; server spans will ship without `release.slug`. Set `INTERFERE_SOURCE_ID` (or any of `VERCEL_GIT_COMMIT_SHA`, `GITHUB_SHA`) on the runtime env.");let{publicKey}=env,tracesUrl=drainUrl(env.apiUrl,`traces`,publicKey),logsUrl=drainUrl(env.apiUrl,`logs`,publicKey),metricsUrl=drainUrl(env.apiUrl,`metrics`,publicKey),ignoreUrls=[tracesUrl,logsUrl,metricsUrl,...opts.ignoreUrls??[]],propagateContextUrls=opts.propagateContextUrls??[],bakedTracing=serverTracingModeSchema.safeParse(import.meta.env?.VITE_INTERFERE_SERVER_TRACING),bakedLogs=logSourcingModeSchema.safeParse(import.meta.env?.VITE_INTERFERE_LOG_SOURCING),serverTracingMode=bakedTracing.success?bakedTracing.data:readServerTracingMode(),isLogDrainMode=(bakedLogs.success?bakedLogs.data:readLogSourcingMode())===`drain`,exporterHeaders={"x-interfere-producer-version":PRODUCER_VERSION},resourceAttributes=omitUndefined({"deployment.environment.name":env.nodeEnvironment,"interfere.sdk.name":`@interfere/vite`,"interfere.sdk.version":PRODUCER_VERSION,"service.name":opts.serviceName??`interfere-sdk-vite-server`,"service.namespace":`interfere`,"telemetry.sdk.language":`nodejs`,"release.slug":releaseSlug||void 0}),resource=resourceFromAttributes(resourceAttributes),isDrainMode=serverTracingMode===`drain`,tracerProvider=new NodeTracerProvider({resource,spanProcessors:[new BaggageSpanProcessor(()=>!0),...isDrainMode?[]:[new BatchSpanProcessor(new OTLPTraceExporter({headers:exporterHeaders,url:tracesUrl}))]]});if(propagation.fields().length===0&&propagation.setGlobalPropagator(new CompositePropagator({propagators:[new W3CTraceContextPropagator,new FreshnessStampingPropagator,new W3CBaggagePropagator]})),tracerProvider.register({contextManager:new AsyncLocalStorageContextManager().enable()}),!isLogDrainMode){let loggerProvider=new LoggerProvider({processors:[new BatchLogRecordProcessor({exporter:new OTLPLogExporter({url:logsUrl,headers:exporterHeaders})})],resource}),{logs:logsApi}=await import(`@opentelemetry/api-logs`);logsApi.setGlobalLoggerProvider(loggerProvider)}let meterProvider=new MeterProvider({readers:[new PeriodicExportingMetricReader({exporter:new OTLPMetricExporter({url:metricsUrl,headers:exporterHeaders,temporalityPreference:AggregationTemporalityPreference.DELTA}),exportIntervalMillis:3e4})],resource});metrics.setGlobalMeterProvider(meterProvider),isDrainMode?console.info(`[interfere] server tracing in drain mode; SDK trace exporter + outbound HTTP instrumentation disabled — server traces come from the platform trace drain.`):registerInstrumentations({instrumentations:[new UndiciInstrumentation({ignoreRequestHook:req=>matchesAny(`${req.origin}${req.path}`,ignoreUrls),requestHook:(span,req)=>{matchesAny(`${req.origin}${req.path}`,propagateContextUrls)&&span.setAttribute(`interfere.propagated`,!0)}})],meterProvider,tracerProvider}),!isLogDrainMode&&opts.consoleBridge!==!1&&bridgeConsoleToOtel(),registered=!0,await fetchAndCacheRemoteConfig()}export{register};
1
+ import{PRODUCER_VERSION}from"../../version.mjs";import{resolveReleaseSlug}from"../release-slug.mjs";import{readInterfereServerEnv}from"./env.mjs";import{fetchAndCacheRemoteConfig}from"./remote-config.mjs";import{bridgeConsoleToOtel}from"./console-bridge.mjs";import{FreshnessStampingPropagator}from"./freshness-propagator.mjs";import{drainUrl}from"@interfere/constants/api";import{omitUndefined}from"@interfere/helpers/omit-undefined";import{metrics,propagation}from"@opentelemetry/api";import{logSourcingModeSchema,readLogSourcingMode}from"@interfere/types/sdk/log-sourcing";import{readServerTracingMode,serverTracingModeSchema}from"@interfere/types/sdk/server-tracing";import{BaggageSpanProcessor}from"@opentelemetry/baggage-span-processor";import{AsyncLocalStorageContextManager}from"@opentelemetry/context-async-hooks";import{CompositePropagator,W3CBaggagePropagator,W3CTraceContextPropagator,getStringFromEnv}from"@opentelemetry/core";import{OTLPLogExporter}from"@opentelemetry/exporter-logs-otlp-http";import{AggregationTemporalityPreference,OTLPMetricExporter}from"@opentelemetry/exporter-metrics-otlp-http";import{OTLPTraceExporter}from"@opentelemetry/exporter-trace-otlp-http";import{registerInstrumentations}from"@opentelemetry/instrumentation";import{UndiciInstrumentation}from"@opentelemetry/instrumentation-undici";import{defaultServiceName,resourceFromAttributes}from"@opentelemetry/resources";import{BatchLogRecordProcessor,LoggerProvider}from"@opentelemetry/sdk-logs";import{MeterProvider,PeriodicExportingMetricReader}from"@opentelemetry/sdk-metrics";import{BatchSpanProcessor}from"@opentelemetry/sdk-trace-base";import{NodeTracerProvider}from"@opentelemetry/sdk-trace-node";let registered=!1;function matchesAny(url,patterns){for(let pattern of patterns)if(pattern instanceof RegExp?pattern.test(url):url.includes(pattern))return!0;return!1}async function register(opts={}){if(registered)return;let env=readInterfereServerEnv();if(!env.publicKey)return;let{slug:releaseSlug}=resolveReleaseSlug();releaseSlug||console.warn("[interfere] No commit SHA available; server spans will ship without `release.slug`. Set `INTERFERE_SOURCE_ID` (or any of `VERCEL_GIT_COMMIT_SHA`, `GITHUB_SHA`) on the runtime env.");let{publicKey}=env,tracesUrl=drainUrl(env.apiUrl,`traces`,publicKey),logsUrl=drainUrl(env.apiUrl,`logs`,publicKey),metricsUrl=drainUrl(env.apiUrl,`metrics`,publicKey),ignoreUrls=[tracesUrl,logsUrl,metricsUrl,...opts.ignoreUrls??[]],propagateContextUrls=opts.propagateContextUrls??[],bakedTracing=serverTracingModeSchema.safeParse(import.meta.env?.VITE_INTERFERE_SERVER_TRACING),bakedLogs=logSourcingModeSchema.safeParse(import.meta.env?.VITE_INTERFERE_LOG_SOURCING),serverTracingMode=bakedTracing.success?bakedTracing.data:readServerTracingMode(),isLogDrainMode=(bakedLogs.success?bakedLogs.data:readLogSourcingMode())===`drain`,exporterHeaders={"x-interfere-producer-version":PRODUCER_VERSION},resourceAttributes=omitUndefined({"deployment.environment.name":env.nodeEnvironment,"interfere.sdk.name":`@interfere/vite`,"interfere.sdk.version":PRODUCER_VERSION,"service.name":opts.serviceName||getStringFromEnv(`OTEL_SERVICE_NAME`)||defaultServiceName(),"service.namespace":opts.serviceNamespace,"telemetry.sdk.language":`nodejs`,"release.slug":releaseSlug||void 0}),resource=resourceFromAttributes(resourceAttributes),isDrainMode=serverTracingMode===`drain`,tracerProvider=new NodeTracerProvider({resource,spanProcessors:[new BaggageSpanProcessor(()=>!0),...isDrainMode?[]:[new BatchSpanProcessor(new OTLPTraceExporter({headers:exporterHeaders,url:tracesUrl}))]]});if(propagation.fields().length===0&&propagation.setGlobalPropagator(new CompositePropagator({propagators:[new W3CTraceContextPropagator,new FreshnessStampingPropagator,new W3CBaggagePropagator]})),tracerProvider.register({contextManager:new AsyncLocalStorageContextManager().enable()}),!isLogDrainMode){let loggerProvider=new LoggerProvider({processors:[new BatchLogRecordProcessor({exporter:new OTLPLogExporter({url:logsUrl,headers:exporterHeaders})})],resource}),{logs:logsApi}=await import(`@opentelemetry/api-logs`);logsApi.setGlobalLoggerProvider(loggerProvider)}let meterProvider=new MeterProvider({readers:[new PeriodicExportingMetricReader({exporter:new OTLPMetricExporter({url:metricsUrl,headers:exporterHeaders,temporalityPreference:AggregationTemporalityPreference.DELTA}),exportIntervalMillis:3e4})],resource});metrics.setGlobalMeterProvider(meterProvider),isDrainMode?console.info(`[interfere] server tracing in drain mode; SDK trace exporter + outbound HTTP instrumentation disabled — server traces come from the platform trace drain.`):registerInstrumentations({instrumentations:[new UndiciInstrumentation({ignoreRequestHook:req=>matchesAny(`${req.origin}${req.path}`,ignoreUrls),requestHook:(span,req)=>{matchesAny(`${req.origin}${req.path}`,propagateContextUrls)&&span.setAttribute(`interfere.propagated`,!0)}})],meterProvider,tracerProvider}),!isLogDrainMode&&opts.consoleBridge!==!1&&bridgeConsoleToOtel(),registered=!0,await fetchAndCacheRemoteConfig()}export{register};
package/dist/package.mjs CHANGED
@@ -1 +1 @@
1
- var name=`@interfere/vite`,version=`12.0.2`;export{name,version};
1
+ var name=`@interfere/vite`,version=`12.0.4`;export{name,version};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interfere/vite",
3
- "version": "12.0.2",
3
+ "version": "12.0.4",
4
4
  "description": "Vite build plugin and client + server initialization for Interfere.",
5
5
  "keywords": [
6
6
  "error-tracking",
@@ -63,10 +63,10 @@
63
63
  },
64
64
  "dependencies": {
65
65
  "@interfere/build": "^0.2.2",
66
- "@interfere/constants": "^9.1.0",
66
+ "@interfere/constants": "^9.2.0",
67
67
  "@interfere/helpers": "^9.2.0",
68
68
  "@interfere/javascript": "^0.2.1",
69
- "@interfere/react": "^12.0.2",
69
+ "@interfere/react": "^12.0.4",
70
70
  "@interfere/types": "^10.2.1",
71
71
  "@opentelemetry/api": "^1.9.1",
72
72
  "@opentelemetry/api-logs": "^0.222.0",