@brizz/sdk 0.1.17 → 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,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.18";
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();
@@ -1660,6 +1700,7 @@ var _Brizz = class __Brizz {
1660
1700
  const registry = InstrumentationRegistry.getInstance();
1661
1701
  const manualInstrumentations = registry.getManualInstrumentations();
1662
1702
  const resourceAttributes = {
1703
+ ...resolvedConfig.resourceAttributes,
1663
1704
  "service.name": resolvedConfig.appName,
1664
1705
  [BRIZZ_SDK_VERSION]: getSDKVersion(),
1665
1706
  [BRIZZ_SDK_LANGUAGE]: SDK_LANGUAGE
@@ -1667,6 +1708,9 @@ var _Brizz = class __Brizz {
1667
1708
  if (resolvedConfig.environment) {
1668
1709
  resourceAttributes["deployment.environment"] = resolvedConfig.environment;
1669
1710
  }
1711
+ if (resolvedConfig.appVersion) {
1712
+ resourceAttributes["service.version"] = resolvedConfig.appVersion;
1713
+ }
1670
1714
  this._sdk = new NodeSDK({
1671
1715
  spanProcessors: resolvedConfig.disableSpanExporter ? [] : [getSpanProcessor()],
1672
1716
  metricReader: getMetricsReader(),