@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.cjs CHANGED
@@ -202,6 +202,7 @@ function resolveConfig(options) {
202
202
  const resolvedConfig = {
203
203
  ...options,
204
204
  appName: process.env["BRIZZ_APP_NAME"] || options.appName || "unknown-app",
205
+ appVersion: process.env["BRIZZ_APP_VERSION"] || options.appVersion,
205
206
  baseUrl: process.env["BRIZZ_BASE_URL"] || options.baseUrl || "https://telemetry.brizz.dev",
206
207
  headers: { ...options.headers },
207
208
  apiKey: process.env["BRIZZ_API_KEY"] || options.apiKey,
@@ -372,7 +373,7 @@ var import_sdk_logs2 = require("@opentelemetry/sdk-logs");
372
373
 
373
374
  // src/internal/version.ts
374
375
  function getSDKVersion() {
375
- return "0.1.17";
376
+ return "0.1.19";
376
377
  }
377
378
 
378
379
  // src/internal/log/processors/log-processor.ts
@@ -1174,6 +1175,7 @@ var LoggingModule = class _LoggingModule {
1174
1175
  serviceName: config.appName
1175
1176
  });
1176
1177
  const resourceAttributes = {
1178
+ ...config.resourceAttributes,
1177
1179
  "service.name": config.appName,
1178
1180
  [BRIZZ_SDK_VERSION]: getSDKVersion(),
1179
1181
  [BRIZZ_SDK_LANGUAGE]: SDK_LANGUAGE
@@ -1181,6 +1183,9 @@ var LoggingModule = class _LoggingModule {
1181
1183
  if (config.environment) {
1182
1184
  resourceAttributes["deployment.environment"] = config.environment;
1183
1185
  }
1186
+ if (config.appVersion) {
1187
+ resourceAttributes["service.version"] = config.appVersion;
1188
+ }
1184
1189
  const resource = (0, import_resources.resourceFromAttributes)(resourceAttributes);
1185
1190
  logger.debug("Creating logger provider with resource");
1186
1191
  this.loggerProvider = new import_sdk_logs2.LoggerProvider({
@@ -1364,13 +1369,16 @@ function getMetricsReader() {
1364
1369
  var import_exporter_trace_otlp_proto = require("@opentelemetry/exporter-trace-otlp-proto");
1365
1370
 
1366
1371
  // src/internal/trace/exporters/span-exporter.ts
1372
+ var import_core = require("@opentelemetry/core");
1367
1373
  var import_resources2 = require("@opentelemetry/resources");
1368
1374
  var BrizzSpanExporter = class {
1369
1375
  _delegate;
1370
1376
  _brizzResource;
1377
+ _beforeSendSpan;
1371
1378
  constructor(delegate, config) {
1372
1379
  this._delegate = delegate;
1373
1380
  const resourceAttrs = {
1381
+ ...config.resourceAttributes,
1374
1382
  "service.name": config.appName,
1375
1383
  [BRIZZ_SDK_VERSION]: getSDKVersion(),
1376
1384
  [BRIZZ_SDK_LANGUAGE]: SDK_LANGUAGE
@@ -1378,15 +1386,47 @@ var BrizzSpanExporter = class {
1378
1386
  if (config.environment) {
1379
1387
  resourceAttrs["deployment.environment"] = config.environment;
1380
1388
  }
1389
+ if (config.appVersion) {
1390
+ resourceAttrs["service.version"] = config.appVersion;
1391
+ }
1381
1392
  this._brizzResource = (0, import_resources2.resourceFromAttributes)(resourceAttrs);
1393
+ this._beforeSendSpan = config.beforeSendSpan;
1382
1394
  }
1383
1395
  export(spans, resultCallback) {
1396
+ if (spans.length === 0) {
1397
+ resultCallback({ code: import_core.ExportResultCode.SUCCESS });
1398
+ return;
1399
+ }
1384
1400
  const patchedSpans = spans.map((span) => ({
1385
1401
  ...span,
1386
1402
  resource: span.resource.merge(this._brizzResource),
1387
1403
  spanContext: span.spanContext.bind(span)
1388
1404
  }));
1389
- this._delegate.export(patchedSpans, resultCallback);
1405
+ const filter = this._beforeSendSpan;
1406
+ if (!filter) {
1407
+ this._delegate.export(patchedSpans, resultCallback);
1408
+ return;
1409
+ }
1410
+ const verdicts = patchedSpans.map((span) => {
1411
+ try {
1412
+ return Promise.resolve(filter(span));
1413
+ } catch (error) {
1414
+ logger.warn("beforeSendSpan threw; span will be kept", { error });
1415
+ return Promise.resolve(true);
1416
+ }
1417
+ });
1418
+ Promise.all(verdicts).then((keep) => {
1419
+ const filtered = patchedSpans.filter((_, i) => keep[i] !== false);
1420
+ if (filtered.length === 0) {
1421
+ resultCallback({ code: import_core.ExportResultCode.SUCCESS });
1422
+ return;
1423
+ }
1424
+ this._delegate.export(filtered, resultCallback);
1425
+ return;
1426
+ }).catch((error) => {
1427
+ logger.warn("beforeSendSpan rejected; all spans will be kept", { error });
1428
+ this._delegate.export(patchedSpans, resultCallback);
1429
+ });
1390
1430
  }
1391
1431
  async shutdown() {
1392
1432
  return this._delegate.shutdown();
@@ -1399,6 +1439,14 @@ var BrizzSpanExporter = class {
1399
1439
  // src/internal/trace/processors/span-processor.ts
1400
1440
  var import_api4 = require("@opentelemetry/api");
1401
1441
  var import_sdk_trace_base = require("@opentelemetry/sdk-trace-base");
1442
+ function applyContextAttributes(span) {
1443
+ const sessionProperties = import_api4.context.active().getValue(PROPERTIES_CONTEXT_KEY);
1444
+ if (sessionProperties) {
1445
+ for (const [key, value] of Object.entries(sessionProperties)) {
1446
+ span.setAttribute(`${BRIZZ}.${key}`, value);
1447
+ }
1448
+ }
1449
+ }
1402
1450
  var DEFAULT_MASKING_RULES = [
1403
1451
  {
1404
1452
  mode: "partial",
@@ -1433,12 +1481,7 @@ var BrizzSimpleSpanProcessor = class extends import_sdk_trace_base.SimpleSpanPro
1433
1481
  if (maskingConfig) {
1434
1482
  maskSpan(span, maskingConfig);
1435
1483
  }
1436
- const associationProperties = import_api4.context.active().getValue(PROPERTIES_CONTEXT_KEY);
1437
- if (associationProperties) {
1438
- for (const [key, value] of Object.entries(associationProperties)) {
1439
- span.setAttribute(`${BRIZZ}.${key}`, value);
1440
- }
1441
- }
1484
+ applyContextAttributes(span);
1442
1485
  super.onStart(span, parentContext);
1443
1486
  }
1444
1487
  };
@@ -1453,12 +1496,7 @@ var BrizzBatchSpanProcessor = class extends import_sdk_trace_base.BatchSpanProce
1453
1496
  if (maskingConfig) {
1454
1497
  maskSpan(span, maskingConfig);
1455
1498
  }
1456
- const associationProperties = import_api4.context.active().getValue(PROPERTIES_CONTEXT_KEY);
1457
- if (associationProperties) {
1458
- for (const [key, value] of Object.entries(associationProperties)) {
1459
- span.setAttribute(`${BRIZZ}.${key}`, value);
1460
- }
1461
- }
1499
+ applyContextAttributes(span);
1462
1500
  super.onStart(span, parentContext);
1463
1501
  }
1464
1502
  };
@@ -1672,6 +1710,7 @@ var _Brizz = class __Brizz {
1672
1710
  const registry = InstrumentationRegistry.getInstance();
1673
1711
  const manualInstrumentations = registry.getManualInstrumentations();
1674
1712
  const resourceAttributes = {
1713
+ ...resolvedConfig.resourceAttributes,
1675
1714
  "service.name": resolvedConfig.appName,
1676
1715
  [BRIZZ_SDK_VERSION]: getSDKVersion(),
1677
1716
  [BRIZZ_SDK_LANGUAGE]: SDK_LANGUAGE
@@ -1679,6 +1718,9 @@ var _Brizz = class __Brizz {
1679
1718
  if (resolvedConfig.environment) {
1680
1719
  resourceAttributes["deployment.environment"] = resolvedConfig.environment;
1681
1720
  }
1721
+ if (resolvedConfig.appVersion) {
1722
+ resourceAttributes["service.version"] = resolvedConfig.appVersion;
1723
+ }
1682
1724
  this._sdk = new import_sdk_node.NodeSDK({
1683
1725
  spanProcessors: resolvedConfig.disableSpanExporter ? [] : [getSpanProcessor()],
1684
1726
  metricReader: getMetricsReader(),