@interfere/node 0.1.0-canary.9 → 0.1.1

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.
@@ -1,5 +1,4 @@
1
1
  import { CaptureErrorContext } from "./internal/types.cjs";
2
-
3
2
  //#region src/capture.d.ts
4
3
  /**
5
4
  * Reports an error to Interfere. Safe to call from anywhere — no-op when the
@@ -1,5 +1,4 @@
1
1
  import { CaptureErrorContext } from "./internal/types.mjs";
2
-
3
2
  //#region src/capture.d.ts
4
3
  /**
5
4
  * Reports an error to Interfere. Safe to call from anywhere — no-op when the
package/dist/init.cjs CHANGED
@@ -1,3 +1,3 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const require_internal_env=require("./internal/env.cjs"),require_internal_global_handlers=require("./internal/global-handlers.cjs"),require_internal_release_slug=require("./internal/release-slug.cjs"),require_internal_url=require("./internal/url.cjs"),require_internal_version=require("./internal/version.cjs");let _interfere_constants_api=require("@interfere/constants/api"),_interfere_types_releases_slug=require("@interfere/types/releases/slug"),_interfere_types_sdk_runtime=require("@interfere/types/sdk/runtime"),_opentelemetry_context_async_hooks=require("@opentelemetry/context-async-hooks"),_opentelemetry_exporter_trace_otlp_http=require("@opentelemetry/exporter-trace-otlp-http"),_opentelemetry_resources=require("@opentelemetry/resources"),_opentelemetry_sdk_trace_base=require("@opentelemetry/sdk-trace-base"),_opentelemetry_sdk_trace_node=require("@opentelemetry/sdk-trace-node"),provider=null;function init(options={}){if(provider)return;let debug=options.debug??process.env.INTERFERE_DEBUG===`1`,env=require_internal_env.readInterfereEnv();if(!env.publicKey){console.warn(`[interfere] INTERFERE_PUBLIC_KEY not set; SDK disabled`);return}let environment=(0,_interfere_types_sdk_runtime.resolveEnvironment)({explicit:options.environment,env:process.env}),releaseSlug=env.forceEnable?_interfere_types_releases_slug.LOCAL_DEV_RELEASE_SLUG:require_internal_release_slug.resolveReleaseSlug().slug;releaseSlug||console.warn(`[interfere] No release slug resolved — the collector will reject spans. Add a postbuild script to your package.json:
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const require_internal_global_handlers=require("./internal/global-handlers.cjs"),require_internal_version=require("./internal/version.cjs"),require_otel_config=require("./otel-config.cjs");let _opentelemetry_context_async_hooks=require("@opentelemetry/context-async-hooks"),_opentelemetry_sdk_trace_node=require("@opentelemetry/sdk-trace-node"),provider=null;function init(options={}){if(provider)return;let debug=options.debug??process.env.INTERFERE_DEBUG===`1`,serviceName=options.serviceName??process.env.OTEL_SERVICE_NAME??`node-app`,config=require_otel_config.resolveOtelConfig({serviceName,serviceNamespace:options.serviceNamespace,environment:options.environment,sdkName:`@interfere/node`,producerVersion:require_internal_version.PRODUCER_VERSION,debug});if(!config){console.warn(`[interfere] INTERFERE_PUBLIC_KEY not set; SDK disabled`);return}config.releaseSlug||console.warn(`[interfere] No release slug resolved — the collector will reject spans. Add a postbuild script to your package.json:
2
2
  "postbuild": "interfere sourcemaps upload ./dist"
3
- and set INTERFERE_API_KEY in your CI environment. See https://interfere.com/docs/nest#releases`);let serviceName=options.serviceName??process.env.OTEL_SERVICE_NAME??`node-app`,resource=(0,_opentelemetry_resources.resourceFromAttributes)({"service.name":serviceName,...options.serviceNamespace?{"service.namespace":options.serviceNamespace}:{},"deployment.environment.name":environment,"telemetry.sdk.language":`nodejs`,"interfere.sdk.name":`@interfere/node`,"interfere.sdk.version":require_internal_version.PRODUCER_VERSION,...releaseSlug?{"release.slug":releaseSlug}:{}}),exporter=new _opentelemetry_exporter_trace_otlp_http.OTLPTraceExporter({url:require_internal_url.withPublicKey(`${env.apiUrl}${_interfere_constants_api.API_PATHS.SINK}`,env.publicKey),headers:{"user-agent":require_internal_version.PRODUCER_VERSION,"x-interfere-producer-version":require_internal_version.PRODUCER_VERSION,...env.forceEnable?{"x-interfere-force-enable":`1`}:{}}});if(debug){let orig=exporter.export.bind(exporter);exporter.export=(spans,cb)=>{let t=Date.now();orig(spans,result=>{let ms=Date.now()-t;if(result.code===0)console.log(`[interfere] export: ${spans.length} spans (${ms}ms)`);else{let err=result.error,status=err?.code?` ${err.code}`:``,body=err?.data??err?.message??`unknown error`;console.warn(`[interfere] export failed:${status} ${body} (${ms}ms, ${spans.length} spans dropped)`)}cb(result)})}}if(provider=new _opentelemetry_sdk_trace_node.NodeTracerProvider({resource,spanProcessors:[new _opentelemetry_sdk_trace_base.BatchSpanProcessor(exporter)]}),provider.register({contextManager:new _opentelemetry_context_async_hooks.AsyncLocalStorageContextManager().enable()}),require_internal_global_handlers.installGlobalHandlers({captureUncaughtException:options.captureUncaughtException??!0,captureUnhandledRejection:options.captureUnhandledRejection??!0,flush}),debug){let endpoint=require_internal_url.withPublicKey(`${env.apiUrl}${_interfere_constants_api.API_PATHS.SINK}`,env.publicKey);console.log(`[interfere] init: service=${serviceName}, env=${environment}, endpoint=${endpoint}`),releaseSlug&&console.log(`[interfere] release.slug=${releaseSlug}`)}}async function close(){provider&&=(require_internal_global_handlers.uninstallGlobalHandlers(),await provider.shutdown(),null)}async function flush(){provider&&await provider.forceFlush()}exports.close=close,exports.flush=flush,exports.init=init;
3
+ and set INTERFERE_API_KEY in your CI environment. See https://interfere.com/docs/nest#releases`),provider=new _opentelemetry_sdk_trace_node.NodeTracerProvider({resource:config.resource,spanProcessors:config.spanProcessors}),provider.register({contextManager:new _opentelemetry_context_async_hooks.AsyncLocalStorageContextManager().enable()}),require_internal_global_handlers.installGlobalHandlers({captureUncaughtException:options.captureUncaughtException??!0,captureUnhandledRejection:options.captureUnhandledRejection??!0,flush}),debug&&(console.log(`[interfere] init: service=${serviceName}, env=${config.environment}, endpoint=${config.endpoint}`),config.releaseSlug&&console.log(`[interfere] release.slug=${config.releaseSlug}`))}async function close(){provider&&=(require_internal_global_handlers.uninstallGlobalHandlers(),await provider.shutdown(),null)}async function flush(){provider&&await provider.forceFlush()}exports.close=close,exports.flush=flush,exports.init=init;
package/dist/init.mjs CHANGED
@@ -1,3 +1,3 @@
1
- import{readInterfereEnv}from"./internal/env.mjs";import{installGlobalHandlers,uninstallGlobalHandlers}from"./internal/global-handlers.mjs";import{resolveReleaseSlug}from"./internal/release-slug.mjs";import{withPublicKey}from"./internal/url.mjs";import{PRODUCER_VERSION}from"./internal/version.mjs";import{API_PATHS}from"@interfere/constants/api";import{LOCAL_DEV_RELEASE_SLUG}from"@interfere/types/releases/slug";import{resolveEnvironment}from"@interfere/types/sdk/runtime";import{AsyncLocalStorageContextManager}from"@opentelemetry/context-async-hooks";import{OTLPTraceExporter}from"@opentelemetry/exporter-trace-otlp-http";import{resourceFromAttributes}from"@opentelemetry/resources";import{BatchSpanProcessor}from"@opentelemetry/sdk-trace-base";import{NodeTracerProvider}from"@opentelemetry/sdk-trace-node";let provider=null;function init(options={}){if(provider)return;let debug=options.debug??process.env.INTERFERE_DEBUG===`1`,env=readInterfereEnv();if(!env.publicKey){console.warn(`[interfere] INTERFERE_PUBLIC_KEY not set; SDK disabled`);return}let environment=resolveEnvironment({explicit:options.environment,env:process.env}),releaseSlug=env.forceEnable?LOCAL_DEV_RELEASE_SLUG:resolveReleaseSlug().slug;releaseSlug||console.warn(`[interfere] No release slug resolved — the collector will reject spans. Add a postbuild script to your package.json:
1
+ import{installGlobalHandlers,uninstallGlobalHandlers}from"./internal/global-handlers.mjs";import{PRODUCER_VERSION}from"./internal/version.mjs";import{resolveOtelConfig}from"./otel-config.mjs";import{AsyncLocalStorageContextManager}from"@opentelemetry/context-async-hooks";import{NodeTracerProvider}from"@opentelemetry/sdk-trace-node";let provider=null;function init(options={}){if(provider)return;let debug=options.debug??process.env.INTERFERE_DEBUG===`1`,serviceName=options.serviceName??process.env.OTEL_SERVICE_NAME??`node-app`,config=resolveOtelConfig({serviceName,serviceNamespace:options.serviceNamespace,environment:options.environment,sdkName:`@interfere/node`,producerVersion:PRODUCER_VERSION,debug});if(!config){console.warn(`[interfere] INTERFERE_PUBLIC_KEY not set; SDK disabled`);return}config.releaseSlug||console.warn(`[interfere] No release slug resolved — the collector will reject spans. Add a postbuild script to your package.json:
2
2
  "postbuild": "interfere sourcemaps upload ./dist"
3
- and set INTERFERE_API_KEY in your CI environment. See https://interfere.com/docs/nest#releases`);let serviceName=options.serviceName??process.env.OTEL_SERVICE_NAME??`node-app`,resource=resourceFromAttributes({"service.name":serviceName,...options.serviceNamespace?{"service.namespace":options.serviceNamespace}:{},"deployment.environment.name":environment,"telemetry.sdk.language":`nodejs`,"interfere.sdk.name":`@interfere/node`,"interfere.sdk.version":PRODUCER_VERSION,...releaseSlug?{"release.slug":releaseSlug}:{}}),exporter=new OTLPTraceExporter({url:withPublicKey(`${env.apiUrl}${API_PATHS.SINK}`,env.publicKey),headers:{"user-agent":PRODUCER_VERSION,"x-interfere-producer-version":PRODUCER_VERSION,...env.forceEnable?{"x-interfere-force-enable":`1`}:{}}});if(debug){let orig=exporter.export.bind(exporter);exporter.export=(spans,cb)=>{let t=Date.now();orig(spans,result=>{let ms=Date.now()-t;if(result.code===0)console.log(`[interfere] export: ${spans.length} spans (${ms}ms)`);else{let err=result.error,status=err?.code?` ${err.code}`:``,body=err?.data??err?.message??`unknown error`;console.warn(`[interfere] export failed:${status} ${body} (${ms}ms, ${spans.length} spans dropped)`)}cb(result)})}}if(provider=new NodeTracerProvider({resource,spanProcessors:[new BatchSpanProcessor(exporter)]}),provider.register({contextManager:new AsyncLocalStorageContextManager().enable()}),installGlobalHandlers({captureUncaughtException:options.captureUncaughtException??!0,captureUnhandledRejection:options.captureUnhandledRejection??!0,flush}),debug){let endpoint=withPublicKey(`${env.apiUrl}${API_PATHS.SINK}`,env.publicKey);console.log(`[interfere] init: service=${serviceName}, env=${environment}, endpoint=${endpoint}`),releaseSlug&&console.log(`[interfere] release.slug=${releaseSlug}`)}}async function close(){provider&&=(uninstallGlobalHandlers(),await provider.shutdown(),null)}async function flush(){provider&&await provider.forceFlush()}export{close,flush,init};
3
+ and set INTERFERE_API_KEY in your CI environment. See https://interfere.com/docs/nest#releases`),provider=new NodeTracerProvider({resource:config.resource,spanProcessors:config.spanProcessors}),provider.register({contextManager:new AsyncLocalStorageContextManager().enable()}),installGlobalHandlers({captureUncaughtException:options.captureUncaughtException??!0,captureUnhandledRejection:options.captureUnhandledRejection??!0,flush}),debug&&(console.log(`[interfere] init: service=${serviceName}, env=${config.environment}, endpoint=${config.endpoint}`),config.releaseSlug&&console.log(`[interfere] release.slug=${config.releaseSlug}`))}async function close(){provider&&=(uninstallGlobalHandlers(),await provider.shutdown(),null)}async function flush(){provider&&await provider.forceFlush()}export{close,flush,init};
@@ -1,5 +1,4 @@
1
1
  import { NormalizedRequest } from "./types.cjs";
2
-
3
2
  //#region src/internal/normalize-request.d.ts
4
3
  declare const TRACEPARENT_HEADER = "traceparent";
5
4
  /**
@@ -1,5 +1,4 @@
1
1
  import { NormalizedRequest } from "./types.mjs";
2
-
3
2
  //#region src/internal/normalize-request.d.ts
4
3
  declare const TRACEPARENT_HEADER = "traceparent";
5
4
  /**
@@ -1,6 +1,5 @@
1
1
  import { NodeContext } from "@interfere/types/sdk/plugins/context/node";
2
2
  import { ErrorMechanism } from "@interfere/types/sdk/plugins/payload/errors";
3
-
4
3
  //#region src/internal/types.d.ts
5
4
  interface CaptureErrorContext {
6
5
  readonly mechanism?: ErrorMechanism;
@@ -1,6 +1,5 @@
1
1
  import { NodeContext } from "@interfere/types/sdk/plugins/context/node";
2
2
  import { ErrorMechanism } from "@interfere/types/sdk/plugins/payload/errors";
3
-
4
3
  //#region src/internal/types.d.ts
5
4
  interface CaptureErrorContext {
6
5
  readonly mechanism?: ErrorMechanism;
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const require_internal_env=require("./internal/env.cjs"),require_internal_global_handlers=require("./internal/global-handlers.cjs"),require_internal_release_slug=require("./internal/release-slug.cjs"),require_internal_url=require("./internal/url.cjs");let _interfere_constants_api=require("@interfere/constants/api"),_interfere_types_releases_slug=require("@interfere/types/releases/slug"),_interfere_types_sdk_runtime=require("@interfere/types/sdk/runtime"),_opentelemetry_exporter_trace_otlp_http=require("@opentelemetry/exporter-trace-otlp-http"),_opentelemetry_resources=require("@opentelemetry/resources"),_opentelemetry_sdk_trace_base=require("@opentelemetry/sdk-trace-base");function resolveOtelConfig(options){let env=require_internal_env.readInterfereEnv();if(!env.publicKey)return null;let environment=(0,_interfere_types_sdk_runtime.resolveEnvironment)({explicit:options.environment,env:process.env}),releaseSlug=env.forceEnable?_interfere_types_releases_slug.LOCAL_DEV_RELEASE_SLUG:require_internal_release_slug.resolveReleaseSlug().slug,endpoint=require_internal_url.withPublicKey(`${env.apiUrl}${_interfere_constants_api.API_PATHS.SINK}`,env.publicKey),exporter=new _opentelemetry_exporter_trace_otlp_http.OTLPTraceExporter({url:endpoint,headers:{"user-agent":options.producerVersion,"x-interfere-producer-version":options.producerVersion,...env.forceEnable?{"x-interfere-force-enable":`1`}:{}}});return options.debug&&instrumentExporterLogging(exporter),{endpoint,environment,releaseSlug,resource:(0,_opentelemetry_resources.resourceFromAttributes)({"service.name":options.serviceName,...options.serviceNamespace?{"service.namespace":options.serviceNamespace}:{},"deployment.environment.name":environment,"telemetry.sdk.language":`nodejs`,"interfere.sdk.name":options.sdkName,"interfere.sdk.version":options.producerVersion,...releaseSlug?{"release.slug":releaseSlug}:{}}),spanProcessors:[new _opentelemetry_sdk_trace_base.BatchSpanProcessor(exporter)]}}function instrumentExporterLogging(exporter){let orig=exporter.export.bind(exporter);exporter.export=(spans,cb)=>{let t=Date.now();orig(spans,result=>{let ms=Date.now()-t;if(result.code===0)console.log(`[interfere] export: ${spans.length} spans (${ms}ms)`);else{let err=result.error,status=err?.code?` ${err.code}`:``,body=err?.data??err?.message??`unknown error`;console.warn(`[interfere] export failed:${status} ${body} (${ms}ms, ${spans.length} spans dropped)`)}cb(result)})}}exports.installGlobalHandlers=require_internal_global_handlers.installGlobalHandlers,exports.resolveOtelConfig=resolveOtelConfig,exports.uninstallGlobalHandlers=require_internal_global_handlers.uninstallGlobalHandlers;
@@ -0,0 +1,57 @@
1
+ import { installGlobalHandlers, uninstallGlobalHandlers } from "./internal/global-handlers.cjs";
2
+ import { Resource } from "@opentelemetry/resources";
3
+ import { SpanProcessor } from "@opentelemetry/sdk-trace-base";
4
+ //#region src/otel-config.d.ts
5
+ interface OtelConfigOptions {
6
+ /**
7
+ * Log exporter results to `stdout`. Also activatable via
8
+ * `INTERFERE_DEBUG=1` upstream.
9
+ */
10
+ readonly debug?: boolean;
11
+ /**
12
+ * Deployment environment label. Falls back through `INTERFERE_ENVIRONMENT`,
13
+ * `VERCEL_ENV`, `NODE_ENV`, then `development` when unset.
14
+ */
15
+ readonly environment?: string | undefined;
16
+ /**
17
+ * The producer version string (`name@version`) sent as the
18
+ * `x-interfere-producer-version` header and recorded as
19
+ * `interfere.sdk.version`.
20
+ */
21
+ readonly producerVersion: string;
22
+ /**
23
+ * The `interfere.sdk.name` resource attribute — the npm name of the SDK
24
+ * building this config (e.g. `@interfere/node`).
25
+ */
26
+ readonly sdkName: string;
27
+ /**
28
+ * OTel `service.name` resource attribute — the identity spans are grouped
29
+ * by in the dashboard.
30
+ */
31
+ readonly serviceName: string;
32
+ /**
33
+ * Optional OTel `service.namespace` resource attribute for grouping
34
+ * several services under one logical product surface.
35
+ */
36
+ readonly serviceNamespace?: string | undefined;
37
+ }
38
+ interface ResolvedOtelConfig {
39
+ readonly endpoint: string;
40
+ readonly environment: string;
41
+ readonly releaseSlug: string | null;
42
+ readonly resource: Resource;
43
+ readonly spanProcessors: SpanProcessor[];
44
+ }
45
+ /**
46
+ * Builds the OpenTelemetry exporter, resource, and span processors that ship
47
+ * traces to the Interfere collector. Returns `null` when
48
+ * `INTERFERE_PUBLIC_KEY` is unset so callers can disable themselves cleanly.
49
+ *
50
+ * Centralizes the collector contract — OTLP/HTTP JSON transport, the public
51
+ * key query param, the producer-version header, and the required
52
+ * `service.name` / `release.slug` / `deployment.environment.name` resource
53
+ * attributes — so every server SDK reports identically.
54
+ */
55
+ declare function resolveOtelConfig(options: OtelConfigOptions): ResolvedOtelConfig | null;
56
+ //#endregion
57
+ export { OtelConfigOptions, ResolvedOtelConfig, installGlobalHandlers, resolveOtelConfig, uninstallGlobalHandlers };
@@ -0,0 +1,57 @@
1
+ import { installGlobalHandlers, uninstallGlobalHandlers } from "./internal/global-handlers.mjs";
2
+ import { Resource } from "@opentelemetry/resources";
3
+ import { SpanProcessor } from "@opentelemetry/sdk-trace-base";
4
+ //#region src/otel-config.d.ts
5
+ interface OtelConfigOptions {
6
+ /**
7
+ * Log exporter results to `stdout`. Also activatable via
8
+ * `INTERFERE_DEBUG=1` upstream.
9
+ */
10
+ readonly debug?: boolean;
11
+ /**
12
+ * Deployment environment label. Falls back through `INTERFERE_ENVIRONMENT`,
13
+ * `VERCEL_ENV`, `NODE_ENV`, then `development` when unset.
14
+ */
15
+ readonly environment?: string | undefined;
16
+ /**
17
+ * The producer version string (`name@version`) sent as the
18
+ * `x-interfere-producer-version` header and recorded as
19
+ * `interfere.sdk.version`.
20
+ */
21
+ readonly producerVersion: string;
22
+ /**
23
+ * The `interfere.sdk.name` resource attribute — the npm name of the SDK
24
+ * building this config (e.g. `@interfere/node`).
25
+ */
26
+ readonly sdkName: string;
27
+ /**
28
+ * OTel `service.name` resource attribute — the identity spans are grouped
29
+ * by in the dashboard.
30
+ */
31
+ readonly serviceName: string;
32
+ /**
33
+ * Optional OTel `service.namespace` resource attribute for grouping
34
+ * several services under one logical product surface.
35
+ */
36
+ readonly serviceNamespace?: string | undefined;
37
+ }
38
+ interface ResolvedOtelConfig {
39
+ readonly endpoint: string;
40
+ readonly environment: string;
41
+ readonly releaseSlug: string | null;
42
+ readonly resource: Resource;
43
+ readonly spanProcessors: SpanProcessor[];
44
+ }
45
+ /**
46
+ * Builds the OpenTelemetry exporter, resource, and span processors that ship
47
+ * traces to the Interfere collector. Returns `null` when
48
+ * `INTERFERE_PUBLIC_KEY` is unset so callers can disable themselves cleanly.
49
+ *
50
+ * Centralizes the collector contract — OTLP/HTTP JSON transport, the public
51
+ * key query param, the producer-version header, and the required
52
+ * `service.name` / `release.slug` / `deployment.environment.name` resource
53
+ * attributes — so every server SDK reports identically.
54
+ */
55
+ declare function resolveOtelConfig(options: OtelConfigOptions): ResolvedOtelConfig | null;
56
+ //#endregion
57
+ export { OtelConfigOptions, ResolvedOtelConfig, installGlobalHandlers, resolveOtelConfig, uninstallGlobalHandlers };
@@ -0,0 +1 @@
1
+ import{readInterfereEnv}from"./internal/env.mjs";import{installGlobalHandlers,uninstallGlobalHandlers}from"./internal/global-handlers.mjs";import{resolveReleaseSlug}from"./internal/release-slug.mjs";import{withPublicKey}from"./internal/url.mjs";import{API_PATHS}from"@interfere/constants/api";import{LOCAL_DEV_RELEASE_SLUG}from"@interfere/types/releases/slug";import{resolveEnvironment}from"@interfere/types/sdk/runtime";import{OTLPTraceExporter}from"@opentelemetry/exporter-trace-otlp-http";import{resourceFromAttributes}from"@opentelemetry/resources";import{BatchSpanProcessor}from"@opentelemetry/sdk-trace-base";function resolveOtelConfig(options){let env=readInterfereEnv();if(!env.publicKey)return null;let environment=resolveEnvironment({explicit:options.environment,env:process.env}),releaseSlug=env.forceEnable?LOCAL_DEV_RELEASE_SLUG:resolveReleaseSlug().slug,endpoint=withPublicKey(`${env.apiUrl}${API_PATHS.SINK}`,env.publicKey),exporter=new OTLPTraceExporter({url:endpoint,headers:{"user-agent":options.producerVersion,"x-interfere-producer-version":options.producerVersion,...env.forceEnable?{"x-interfere-force-enable":`1`}:{}}});return options.debug&&instrumentExporterLogging(exporter),{endpoint,environment,releaseSlug,resource:resourceFromAttributes({"service.name":options.serviceName,...options.serviceNamespace?{"service.namespace":options.serviceNamespace}:{},"deployment.environment.name":environment,"telemetry.sdk.language":`nodejs`,"interfere.sdk.name":options.sdkName,"interfere.sdk.version":options.producerVersion,...releaseSlug?{"release.slug":releaseSlug}:{}}),spanProcessors:[new BatchSpanProcessor(exporter)]}}function instrumentExporterLogging(exporter){let orig=exporter.export.bind(exporter);exporter.export=(spans,cb)=>{let t=Date.now();orig(spans,result=>{let ms=Date.now()-t;if(result.code===0)console.log(`[interfere] export: ${spans.length} spans (${ms}ms)`);else{let err=result.error,status=err?.code?` ${err.code}`:``,body=err?.data??err?.message??`unknown error`;console.warn(`[interfere] export failed:${status} ${body} (${ms}ms, ${spans.length} spans dropped)`)}cb(result)})}}export{installGlobalHandlers,resolveOtelConfig,uninstallGlobalHandlers};
package/dist/package.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,"name",{enumerable:!0,get:function(){return`@interfere/node`}}),Object.defineProperty(exports,"version",{enumerable:!0,get:function(){return`0.1.0-canary.9`}});
1
+ Object.defineProperty(exports,"name",{enumerable:!0,get:function(){return`@interfere/node`}}),Object.defineProperty(exports,"version",{enumerable:!0,get:function(){return`0.1.1`}});
package/dist/package.mjs CHANGED
@@ -1 +1 @@
1
- var name=`@interfere/node`,version=`0.1.0-canary.9`;export{name,version};
1
+ var name=`@interfere/node`,version=`0.1.1`;export{name,version};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interfere/node",
3
- "version": "0.1.0-canary.9",
3
+ "version": "0.1.1",
4
4
  "license": "MIT",
5
5
  "description": "Node.js SDK for Interfere. Error tracking and OTel instrumentation for any Node server.",
6
6
  "keywords": [
@@ -64,6 +64,17 @@
64
64
  "types": "./dist/capture.d.cts",
65
65
  "default": "./dist/capture.cjs"
66
66
  }
67
+ },
68
+ "./otel-config": {
69
+ "monorepo": "./src/otel-config.ts",
70
+ "import": {
71
+ "types": "./dist/otel-config.d.mts",
72
+ "default": "./dist/otel-config.mjs"
73
+ },
74
+ "require": {
75
+ "types": "./dist/otel-config.d.cts",
76
+ "default": "./dist/otel-config.cjs"
77
+ }
67
78
  }
68
79
  },
69
80
  "sideEffects": false,
@@ -76,8 +87,8 @@
76
87
  "typecheck": "tsc --noEmit"
77
88
  },
78
89
  "dependencies": {
79
- "@interfere/constants": "^9.0.2-canary.2",
80
- "@interfere/types": "^10.0.0-canary.5",
90
+ "@interfere/constants": "^9.0.3",
91
+ "@interfere/types": "^10.0.1",
81
92
  "@opentelemetry/api": "^1.9.1",
82
93
  "@opentelemetry/context-async-hooks": "^2.7.1",
83
94
  "@opentelemetry/exporter-trace-otlp-http": "^0.219.0",
@@ -86,9 +97,9 @@
86
97
  "@opentelemetry/sdk-trace-node": "^2.7.1"
87
98
  },
88
99
  "devDependencies": {
89
- "@interfere/test-utils": "^9.0.1-canary.0",
90
- "@interfere/typescript-config": "^9.0.1-canary.0",
91
- "@types/node": "^26.0.0",
100
+ "@interfere/test-utils": "^9.0.4",
101
+ "@interfere/typescript-config": "^9.0.1",
102
+ "@types/node": "^26.1.0",
92
103
  "@vitest/coverage-v8": "4.1.9",
93
104
  "tsdown": "^0.22.2",
94
105
  "typescript": "^6.0.3",