@brizz/sdk 0.1.17 → 0.1.19

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,6 +185,7 @@ 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,
@@ -357,7 +358,7 @@ import {
357
358
 
358
359
  // src/internal/version.ts
359
360
  function getSDKVersion() {
360
- return "0.1.17";
361
+ return "0.1.19";
361
362
  }
362
363
 
363
364
  // src/internal/log/processors/log-processor.ts
@@ -1159,6 +1160,7 @@ var LoggingModule = class _LoggingModule {
1159
1160
  serviceName: config.appName
1160
1161
  });
1161
1162
  const resourceAttributes = {
1163
+ ...config.resourceAttributes,
1162
1164
  "service.name": config.appName,
1163
1165
  [BRIZZ_SDK_VERSION]: getSDKVersion(),
1164
1166
  [BRIZZ_SDK_LANGUAGE]: SDK_LANGUAGE
@@ -1166,6 +1168,9 @@ var LoggingModule = class _LoggingModule {
1166
1168
  if (config.environment) {
1167
1169
  resourceAttributes["deployment.environment"] = config.environment;
1168
1170
  }
1171
+ if (config.appVersion) {
1172
+ resourceAttributes["service.version"] = config.appVersion;
1173
+ }
1169
1174
  const resource = resourceFromAttributes(resourceAttributes);
1170
1175
  logger.debug("Creating logger provider with resource");
1171
1176
  this.loggerProvider = new LoggerProvider({
@@ -1349,13 +1354,16 @@ function getMetricsReader() {
1349
1354
  import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
1350
1355
 
1351
1356
  // src/internal/trace/exporters/span-exporter.ts
1357
+ import { ExportResultCode } from "@opentelemetry/core";
1352
1358
  import { resourceFromAttributes as resourceFromAttributes2 } from "@opentelemetry/resources";
1353
1359
  var BrizzSpanExporter = class {
1354
1360
  _delegate;
1355
1361
  _brizzResource;
1362
+ _beforeSendSpan;
1356
1363
  constructor(delegate, config) {
1357
1364
  this._delegate = delegate;
1358
1365
  const resourceAttrs = {
1366
+ ...config.resourceAttributes,
1359
1367
  "service.name": config.appName,
1360
1368
  [BRIZZ_SDK_VERSION]: getSDKVersion(),
1361
1369
  [BRIZZ_SDK_LANGUAGE]: SDK_LANGUAGE
@@ -1363,15 +1371,47 @@ var BrizzSpanExporter = class {
1363
1371
  if (config.environment) {
1364
1372
  resourceAttrs["deployment.environment"] = config.environment;
1365
1373
  }
1374
+ if (config.appVersion) {
1375
+ resourceAttrs["service.version"] = config.appVersion;
1376
+ }
1366
1377
  this._brizzResource = resourceFromAttributes2(resourceAttrs);
1378
+ this._beforeSendSpan = config.beforeSendSpan;
1367
1379
  }
1368
1380
  export(spans, resultCallback) {
1381
+ if (spans.length === 0) {
1382
+ resultCallback({ code: ExportResultCode.SUCCESS });
1383
+ return;
1384
+ }
1369
1385
  const patchedSpans = spans.map((span) => ({
1370
1386
  ...span,
1371
1387
  resource: span.resource.merge(this._brizzResource),
1372
1388
  spanContext: span.spanContext.bind(span)
1373
1389
  }));
1374
- 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
+ });
1375
1415
  }
1376
1416
  async shutdown() {
1377
1417
  return this._delegate.shutdown();
@@ -1387,6 +1427,14 @@ import {
1387
1427
  BatchSpanProcessor,
1388
1428
  SimpleSpanProcessor
1389
1429
  } from "@opentelemetry/sdk-trace-base";
1430
+ function applyContextAttributes(span) {
1431
+ const sessionProperties = context2.active().getValue(PROPERTIES_CONTEXT_KEY);
1432
+ if (sessionProperties) {
1433
+ for (const [key, value] of Object.entries(sessionProperties)) {
1434
+ span.setAttribute(`${BRIZZ}.${key}`, value);
1435
+ }
1436
+ }
1437
+ }
1390
1438
  var DEFAULT_MASKING_RULES = [
1391
1439
  {
1392
1440
  mode: "partial",
@@ -1421,12 +1469,7 @@ var BrizzSimpleSpanProcessor = class extends SimpleSpanProcessor {
1421
1469
  if (maskingConfig) {
1422
1470
  maskSpan(span, maskingConfig);
1423
1471
  }
1424
- const associationProperties = context2.active().getValue(PROPERTIES_CONTEXT_KEY);
1425
- if (associationProperties) {
1426
- for (const [key, value] of Object.entries(associationProperties)) {
1427
- span.setAttribute(`${BRIZZ}.${key}`, value);
1428
- }
1429
- }
1472
+ applyContextAttributes(span);
1430
1473
  super.onStart(span, parentContext);
1431
1474
  }
1432
1475
  };
@@ -1441,12 +1484,7 @@ var BrizzBatchSpanProcessor = class extends BatchSpanProcessor {
1441
1484
  if (maskingConfig) {
1442
1485
  maskSpan(span, maskingConfig);
1443
1486
  }
1444
- const associationProperties = context2.active().getValue(PROPERTIES_CONTEXT_KEY);
1445
- if (associationProperties) {
1446
- for (const [key, value] of Object.entries(associationProperties)) {
1447
- span.setAttribute(`${BRIZZ}.${key}`, value);
1448
- }
1449
- }
1487
+ applyContextAttributes(span);
1450
1488
  super.onStart(span, parentContext);
1451
1489
  }
1452
1490
  };
@@ -1660,6 +1698,7 @@ var _Brizz = class __Brizz {
1660
1698
  const registry = InstrumentationRegistry.getInstance();
1661
1699
  const manualInstrumentations = registry.getManualInstrumentations();
1662
1700
  const resourceAttributes = {
1701
+ ...resolvedConfig.resourceAttributes,
1663
1702
  "service.name": resolvedConfig.appName,
1664
1703
  [BRIZZ_SDK_VERSION]: getSDKVersion(),
1665
1704
  [BRIZZ_SDK_LANGUAGE]: SDK_LANGUAGE
@@ -1667,6 +1706,9 @@ var _Brizz = class __Brizz {
1667
1706
  if (resolvedConfig.environment) {
1668
1707
  resourceAttributes["deployment.environment"] = resolvedConfig.environment;
1669
1708
  }
1709
+ if (resolvedConfig.appVersion) {
1710
+ resourceAttributes["service.version"] = resolvedConfig.appVersion;
1711
+ }
1670
1712
  this._sdk = new NodeSDK({
1671
1713
  spanProcessors: resolvedConfig.disableSpanExporter ? [] : [getSpanProcessor()],
1672
1714
  metricReader: getMetricsReader(),