@brizz/sdk 0.1.16 → 0.1.18

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/dist/preload.js CHANGED
@@ -185,10 +185,12 @@ function resolveConfig(options) {
185
185
  const resolvedConfig = {
186
186
  ...options,
187
187
  appName: process.env["BRIZZ_APP_NAME"] || options.appName || "unknown-app",
188
+ appVersion: process.env["BRIZZ_APP_VERSION"] || options.appVersion,
188
189
  baseUrl: process.env["BRIZZ_BASE_URL"] || options.baseUrl || "https://telemetry.brizz.dev",
189
190
  headers: { ...options.headers },
190
191
  apiKey: process.env["BRIZZ_API_KEY"] || options.apiKey,
191
192
  disableBatch: process.env["BRIZZ_DISABLE_BATCH"] === "true" || !!options.disableBatch,
193
+ disableSpanExporter: process.env["BRIZZ_DISABLE_SPAN_EXPORTER"] === "true" || !!options.disableSpanExporter,
192
194
  environment: process.env["BRIZZ_ENVIRONMENT"] || options.environment,
193
195
  logLevel: resolvedLogLevel,
194
196
  masking: resolvedMasking
@@ -356,7 +358,7 @@ import {
356
358
 
357
359
  // src/internal/version.ts
358
360
  function getSDKVersion() {
359
- return "0.1.16";
361
+ return "0.1.18";
360
362
  }
361
363
 
362
364
  // src/internal/log/processors/log-processor.ts
@@ -1158,6 +1160,7 @@ var LoggingModule = class _LoggingModule {
1158
1160
  serviceName: config.appName
1159
1161
  });
1160
1162
  const resourceAttributes = {
1163
+ ...config.resourceAttributes,
1161
1164
  "service.name": config.appName,
1162
1165
  [BRIZZ_SDK_VERSION]: getSDKVersion(),
1163
1166
  [BRIZZ_SDK_LANGUAGE]: SDK_LANGUAGE
@@ -1165,6 +1168,9 @@ var LoggingModule = class _LoggingModule {
1165
1168
  if (config.environment) {
1166
1169
  resourceAttributes["deployment.environment"] = config.environment;
1167
1170
  }
1171
+ if (config.appVersion) {
1172
+ resourceAttributes["service.version"] = config.appVersion;
1173
+ }
1168
1174
  const resource = resourceFromAttributes(resourceAttributes);
1169
1175
  logger.debug("Creating logger provider with resource");
1170
1176
  this.loggerProvider = new LoggerProvider({
@@ -1348,13 +1354,16 @@ function getMetricsReader() {
1348
1354
  import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
1349
1355
 
1350
1356
  // src/internal/trace/exporters/span-exporter.ts
1357
+ import { ExportResultCode } from "@opentelemetry/core";
1351
1358
  import { resourceFromAttributes as resourceFromAttributes2 } from "@opentelemetry/resources";
1352
1359
  var BrizzSpanExporter = class {
1353
1360
  _delegate;
1354
1361
  _brizzResource;
1362
+ _beforeSendSpan;
1355
1363
  constructor(delegate, config) {
1356
1364
  this._delegate = delegate;
1357
1365
  const resourceAttrs = {
1366
+ ...config.resourceAttributes,
1358
1367
  "service.name": config.appName,
1359
1368
  [BRIZZ_SDK_VERSION]: getSDKVersion(),
1360
1369
  [BRIZZ_SDK_LANGUAGE]: SDK_LANGUAGE
@@ -1362,15 +1371,47 @@ var BrizzSpanExporter = class {
1362
1371
  if (config.environment) {
1363
1372
  resourceAttrs["deployment.environment"] = config.environment;
1364
1373
  }
1374
+ if (config.appVersion) {
1375
+ resourceAttrs["service.version"] = config.appVersion;
1376
+ }
1365
1377
  this._brizzResource = resourceFromAttributes2(resourceAttrs);
1378
+ this._beforeSendSpan = config.beforeSendSpan;
1366
1379
  }
1367
1380
  export(spans, resultCallback) {
1381
+ if (spans.length === 0) {
1382
+ resultCallback({ code: ExportResultCode.SUCCESS });
1383
+ return;
1384
+ }
1368
1385
  const patchedSpans = spans.map((span) => ({
1369
1386
  ...span,
1370
1387
  resource: span.resource.merge(this._brizzResource),
1371
1388
  spanContext: span.spanContext.bind(span)
1372
1389
  }));
1373
- this._delegate.export(patchedSpans, resultCallback);
1390
+ const filter = this._beforeSendSpan;
1391
+ if (!filter) {
1392
+ this._delegate.export(patchedSpans, resultCallback);
1393
+ return;
1394
+ }
1395
+ const verdicts = patchedSpans.map((span) => {
1396
+ try {
1397
+ return Promise.resolve(filter(span));
1398
+ } catch (error) {
1399
+ logger.warn("beforeSendSpan threw; span will be kept", { error });
1400
+ return Promise.resolve(true);
1401
+ }
1402
+ });
1403
+ Promise.all(verdicts).then((keep) => {
1404
+ const filtered = patchedSpans.filter((_, i) => keep[i] !== false);
1405
+ if (filtered.length === 0) {
1406
+ resultCallback({ code: ExportResultCode.SUCCESS });
1407
+ return;
1408
+ }
1409
+ this._delegate.export(filtered, resultCallback);
1410
+ return;
1411
+ }).catch((error) => {
1412
+ logger.warn("beforeSendSpan rejected; all spans will be kept", { error });
1413
+ this._delegate.export(patchedSpans, resultCallback);
1414
+ });
1374
1415
  }
1375
1416
  async shutdown() {
1376
1417
  return this._delegate.shutdown();
@@ -1493,6 +1534,15 @@ var TracingModule = class _TracingModule {
1493
1534
  */
1494
1535
  setup(config) {
1495
1536
  logger.info("Setting up tracing module");
1537
+ if (config.disableSpanExporter) {
1538
+ logger.info(
1539
+ "Span exporter disabled via disableSpanExporter; skipping exporter and processor setup"
1540
+ );
1541
+ this.spanExporter = null;
1542
+ this.spanProcessor = null;
1543
+ _TracingModule.instance = this;
1544
+ return;
1545
+ }
1496
1546
  this.initSpanExporter(config);
1497
1547
  this.initSpanProcessor(config);
1498
1548
  _TracingModule.instance = this;
@@ -1650,6 +1700,7 @@ var _Brizz = class __Brizz {
1650
1700
  const registry = InstrumentationRegistry.getInstance();
1651
1701
  const manualInstrumentations = registry.getManualInstrumentations();
1652
1702
  const resourceAttributes = {
1703
+ ...resolvedConfig.resourceAttributes,
1653
1704
  "service.name": resolvedConfig.appName,
1654
1705
  [BRIZZ_SDK_VERSION]: getSDKVersion(),
1655
1706
  [BRIZZ_SDK_LANGUAGE]: SDK_LANGUAGE
@@ -1657,8 +1708,11 @@ var _Brizz = class __Brizz {
1657
1708
  if (resolvedConfig.environment) {
1658
1709
  resourceAttributes["deployment.environment"] = resolvedConfig.environment;
1659
1710
  }
1711
+ if (resolvedConfig.appVersion) {
1712
+ resourceAttributes["service.version"] = resolvedConfig.appVersion;
1713
+ }
1660
1714
  this._sdk = new NodeSDK({
1661
- spanProcessors: [getSpanProcessor()],
1715
+ spanProcessors: resolvedConfig.disableSpanExporter ? [] : [getSpanProcessor()],
1662
1716
  metricReader: getMetricsReader(),
1663
1717
  resource: resourceFromAttributes3(resourceAttributes),
1664
1718
  instrumentations: manualInstrumentations