@effect/opentelemetry 4.0.0-beta.5 → 4.0.0-beta.51

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.
@@ -6,7 +6,7 @@ const sdkName = "@effect/opentelemetry/Metrics";
6
6
  /** @internal */
7
7
  export class MetricProducerImpl {
8
8
  resource;
9
- services;
9
+ context;
10
10
  temporality;
11
11
  startTimes;
12
12
  startTimeNanos;
@@ -15,9 +15,9 @@ export class MetricProducerImpl {
15
15
  previousHistogramState;
16
16
  previousFrequencyState;
17
17
  previousSummaryState;
18
- constructor(resource, services, temporality = "cumulative") {
18
+ constructor(resource, context, temporality = "cumulative") {
19
19
  this.resource = resource;
20
- this.services = services;
20
+ this.context = context;
21
21
  this.temporality = temporality;
22
22
  this.startTimes = new Map();
23
23
  this.startTimeNanos = currentHrTime();
@@ -35,7 +35,7 @@ export class MetricProducerImpl {
35
35
  return hrTime;
36
36
  }
37
37
  collect(_options) {
38
- const snapshot = Metric.snapshotUnsafe(this.services);
38
+ const snapshot = Metric.snapshotUnsafe(this.context);
39
39
  const hrTimeNow = currentHrTime();
40
40
  const metricData = [];
41
41
  const metricDataByName = new Map();
@@ -64,7 +64,7 @@ export class MetricProducerImpl {
64
64
  if (typeof currentCount === "bigint" && typeof previousCount === "bigint") {
65
65
  reportValue = currentCount - previousCount;
66
66
  // Handle reset: if current < previous, report current value
67
- if (reportValue < 0n) {
67
+ if (reportValue < BigInt(0)) {
68
68
  reportValue = currentCount;
69
69
  }
70
70
  } else {
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","names":["ValueType","AggregationTemporality","DataPointType","InstrumentType","Arr","Metric","sdkName","MetricProducerImpl","resource","services","temporality","startTimes","startTimeNanos","previousExportTimeNanos","previousCounterState","previousHistogramState","previousFrequencyState","previousSummaryState","constructor","Map","currentHrTime","startTimeFor","name","hrTime","has","get","set","collect","_options","snapshot","snapshotUnsafe","hrTimeNow","metricData","metricDataByName","addMetricData","data","push","descriptor","isDelta","aggregationTemporality","DELTA","CUMULATIVE","intervalStartTime","i","len","length","state","attributes","reduce","Object","entries","acc","key","value","String","metricKey","makeMetricKey","id","type","currentCount","count","reportValue","previousCount","undefined","curr","Number","prev","descriptorFromState","startTime","dataPoint","endTime","dataPoints","dataPointType","SUM","isMonotonic","incremental","GAUGE","size","buckets","currentBuckets","boundaries","allocate","counts","idx","boundary","reportCount","reportSum","sum","reportBucketCounts","reportMin","min","reportMax","max","previousState","map","c","Math","bucketCounts","slice","HISTOGRAM","currentOccurrences","freqKey","occurrences","previousOccurrences","previousValue","quantile","quantiles","toString","countDataPoint","sumDataPoint","description","unit","COUNTER","valueType","INT","advice","DOUBLE","Promise","resolve","resourceMetrics","scopeMetrics","scope","metrics","errors","keys","sortedEntries","sort","a","b","localeCompare","JSON","stringify","now","Date","floor","time_unit","instrumentTypeFromSnapshot","determineValueType","OBSERVABLE_GAUGE","UP_DOWN_COUNTER"],"sources":["../../src/internal/metrics.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"metrics.js","names":["ValueType","AggregationTemporality","DataPointType","InstrumentType","Arr","Metric","sdkName","MetricProducerImpl","resource","context","temporality","startTimes","startTimeNanos","previousExportTimeNanos","previousCounterState","previousHistogramState","previousFrequencyState","previousSummaryState","constructor","Map","currentHrTime","startTimeFor","name","hrTime","has","get","set","collect","_options","snapshot","snapshotUnsafe","hrTimeNow","metricData","metricDataByName","addMetricData","data","push","descriptor","isDelta","aggregationTemporality","DELTA","CUMULATIVE","intervalStartTime","i","len","length","state","attributes","reduce","Object","entries","acc","key","value","String","metricKey","makeMetricKey","id","type","currentCount","count","reportValue","previousCount","undefined","BigInt","curr","Number","prev","descriptorFromState","startTime","dataPoint","endTime","dataPoints","dataPointType","SUM","isMonotonic","incremental","GAUGE","size","buckets","currentBuckets","boundaries","allocate","counts","idx","boundary","reportCount","reportSum","sum","reportBucketCounts","reportMin","min","reportMax","max","previousState","map","c","Math","bucketCounts","slice","HISTOGRAM","currentOccurrences","freqKey","occurrences","previousOccurrences","previousValue","quantile","quantiles","toString","countDataPoint","sumDataPoint","description","unit","COUNTER","valueType","INT","advice","DOUBLE","Promise","resolve","resourceMetrics","scopeMetrics","scope","metrics","errors","keys","sortedEntries","sort","a","b","localeCompare","JSON","stringify","now","Date","floor","time_unit","instrumentTypeFromSnapshot","determineValueType","OBSERVABLE_GAUGE","UP_DOWN_COUNTER"],"sources":["../../src/internal/metrics.ts"],"sourcesContent":[null],"mappings":"AAAA,SAAsBA,SAAS,QAAQ,oBAAoB;AAU3D,SAASC,sBAAsB,EAAEC,aAAa,EAAEC,cAAc,QAAQ,4BAA4B;AAElG,OAAO,KAAKC,GAAG,MAAM,cAAc;AAEnC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAGvC,MAAMC,OAAO,GAAG,+BAA+B;AAmB/C;AACA,OAAM,MAAOC,kBAAkB;EAC7BC,QAAQ;EACRC,OAAO;EACPC,WAAW;EACXC,UAAU;EACVC,cAAc;EACdC,uBAAuB;EACvBC,oBAAoB;EACpBC,sBAAsB;EACtBC,sBAAsB;EACtBC,oBAAoB;EAEpBC,YACEV,QAA4B,EAC5BC,OAA+B,EAC/BC,WAAA,GAA6C,YAAY;IAEzD,IAAI,CAACF,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,UAAU,GAAG,IAAIQ,GAAG,EAAE;IAC3B,IAAI,CAACP,cAAc,GAAGQ,aAAa,EAAE;IACrC,IAAI,CAACP,uBAAuB,GAAG,IAAI,CAACD,cAAc;IAClD,IAAI,CAACE,oBAAoB,GAAG,IAAIK,GAAG,EAAE;IACrC,IAAI,CAACJ,sBAAsB,GAAG,IAAII,GAAG,EAAE;IACvC,IAAI,CAACH,sBAAsB,GAAG,IAAIG,GAAG,EAAE;IACvC,IAAI,CAACF,oBAAoB,GAAG,IAAIE,GAAG,EAAE;EACvC;EAEAE,YAAYA,CAACC,IAAY,EAAEC,MAAc;IACvC,IAAI,IAAI,CAACZ,UAAU,CAACa,GAAG,CAACF,IAAI,CAAC,EAAE;MAC7B,OAAO,IAAI,CAACX,UAAU,CAACc,GAAG,CAACH,IAAI,CAAE;IACnC;IACA,IAAI,CAACX,UAAU,CAACe,GAAG,CAACJ,IAAI,EAAEC,MAAM,CAAC;IACjC,OAAOA,MAAM;EACf;EAEAI,OAAOA,CAACC,QAA+B;IACrC,MAAMC,QAAQ,GAAGxB,MAAM,CAACyB,cAAc,CAAC,IAAI,CAACrB,OAAO,CAAC;IACpD,MAAMsB,SAAS,GAAGX,aAAa,EAAE;IACjC,MAAMY,UAAU,GAAsB,EAAE;IACxC,MAAMC,gBAAgB,GAAG,IAAId,GAAG,EAAsB;IACtD,MAAMe,aAAa,GAAIC,IAAwC,IAAI;MACjEH,UAAU,CAACI,IAAI,CAACD,IAAI,CAAC;MACrBF,gBAAgB,CAACP,GAAG,CAACS,IAAI,CAACE,UAAU,CAACf,IAAI,EAAEa,IAAI,CAAC;IAClD,CAAC;IAED,MAAMG,OAAO,GAAG,IAAI,CAAC5B,WAAW,KAAK,OAAO;IAC5C,MAAM6B,sBAAsB,GAAGD,OAAO,GAClCrC,sBAAsB,CAACuC,KAAK,GAC5BvC,sBAAsB,CAACwC,UAAU;IACrC,MAAMC,iBAAiB,GAAGJ,OAAO,GAC7B,IAAI,CAACzB,uBAAuB,GAC5B,IAAI,CAACD,cAAc;IAEvB,KAAK,IAAI+B,CAAC,GAAG,CAAC,EAAEC,GAAG,GAAGf,QAAQ,CAACgB,MAAM,EAAEF,CAAC,GAAGC,GAAG,EAAED,CAAC,EAAE,EAAE;MACnD,MAAMG,KAAK,GAAGjB,QAAQ,CAACc,CAAC,CAAC;MACzB,MAAMI,UAAU,GAAGD,KAAK,CAACC,UAAU,GAC/B3C,GAAG,CAAC4C,MAAM,CAACC,MAAM,CAACC,OAAO,CAACJ,KAAK,CAACC,UAAU,CAAC,EAAE,EAA4B,EAAE,CAACI,GAAG,EAAE,CAACC,GAAG,EAAEC,KAAK,CAAC,KAAI;QACjGF,GAAG,CAACC,GAAG,CAAC,GAAGE,MAAM,CAACD,KAAK,CAAC;QACxB,OAAOF,GAAG;MACZ,CAAC,CAAC,GACA,EAAE;MACN,MAAMI,SAAS,GAAGC,aAAa,CAACV,KAAK,CAACW,EAAE,EAAEX,KAAK,CAACC,UAAU,CAAC;MAE3D,QAAQD,KAAK,CAACY,IAAI;QAChB,KAAK,SAAS;UAAE;YACd,MAAMC,YAAY,GAAGb,KAAK,CAACA,KAAK,CAACc,KAAK;YACtC,IAAIC,WAAW,GAAoBF,YAAY;YAE/C,IAAIrB,OAAO,EAAE;cACX,MAAMwB,aAAa,GAAG,IAAI,CAAChD,oBAAoB,CAACW,GAAG,CAAC8B,SAAS,CAAC;cAC9D,IAAIO,aAAa,KAAKC,SAAS,EAAE;gBAC/B,IAAI,OAAOJ,YAAY,KAAK,QAAQ,IAAI,OAAOG,aAAa,KAAK,QAAQ,EAAE;kBACzED,WAAW,GAAGF,YAAY,GAAGG,aAAa;kBAC1C;kBACA,IAAID,WAAW,GAAGG,MAAM,CAAC,CAAC,CAAC,EAAE;oBAC3BH,WAAW,GAAGF,YAAY;kBAC5B;gBACF,CAAC,MAAM;kBACL,MAAMM,IAAI,GAAGC,MAAM,CAACP,YAAY,CAAC;kBACjC,MAAMQ,IAAI,GAAGD,MAAM,CAACJ,aAAa,CAAC;kBAClCD,WAAW,GAAGI,IAAI,GAAGE,IAAI;kBACzB;kBACA,IAAIN,WAAW,GAAG,CAAC,EAAE;oBACnBA,WAAW,GAAGI,IAAI;kBACpB;gBACF;cACF;cACA,IAAI,CAACnD,oBAAoB,CAACY,GAAG,CAAC6B,SAAS,EAAEI,YAAY,CAAC;YACxD;YAEA,MAAMtB,UAAU,GAAG+B,mBAAmB,CAACtB,KAAK,EAAEC,UAAU,CAAC;YACzD,MAAMsB,SAAS,GAAG,IAAI,CAAChD,YAAY,CAACgB,UAAU,CAACf,IAAI,EAAEoB,iBAAiB,CAAC;YACvE,MAAM4B,SAAS,GAAsB;cACnCD,SAAS;cACTE,OAAO,EAAExC,SAAS;cAClBgB,UAAU;cACVM,KAAK,EAAEa,MAAM,CAACL,WAAW;aAC1B;YACD,IAAI5B,gBAAgB,CAACT,GAAG,CAACsB,KAAK,CAACW,EAAE,CAAC,EAAE;cAClCxB,gBAAgB,CAACR,GAAG,CAACqB,KAAK,CAACW,EAAE,CAAE,CAACe,UAAU,CAACpC,IAAI,CAACkC,SAAgB,CAAC;YACnE,CAAC,MAAM;cACLpC,aAAa,CAAC;gBACZuC,aAAa,EAAEvE,aAAa,CAACwE,GAAG;gBAChCrC,UAAU;gBACVsC,WAAW,EAAE7B,KAAK,CAACA,KAAK,CAAC8B,WAAW;gBACpCrC,sBAAsB;gBACtBiC,UAAU,EAAE,CAACF,SAAS;eACvB,CAAC;YACJ;YACA;UACF;QACA,KAAK,OAAO;UAAE;YACZ;YACA,MAAMjC,UAAU,GAAG+B,mBAAmB,CAACtB,KAAK,EAAEC,UAAU,CAAC;YACzD,MAAMsB,SAAS,GAAG,IAAI,CAAChD,YAAY,CAACgB,UAAU,CAACf,IAAI,EAAE,IAAI,CAACV,cAAc,CAAC;YACzE,MAAM0D,SAAS,GAAsB;cACnCD,SAAS;cACTE,OAAO,EAAExC,SAAS;cAClBgB,UAAU;cACVM,KAAK,EAAEa,MAAM,CAACpB,KAAK,CAACA,KAAK,CAACO,KAAK;aAChC;YACD,IAAIpB,gBAAgB,CAACT,GAAG,CAACsB,KAAK,CAACW,EAAE,CAAC,EAAE;cAClCxB,gBAAgB,CAACR,GAAG,CAACqB,KAAK,CAACW,EAAE,CAAE,CAACe,UAAU,CAACpC,IAAI,CAACkC,SAAgB,CAAC;YACnE,CAAC,MAAM;cACLpC,aAAa,CAAC;gBACZuC,aAAa,EAAEvE,aAAa,CAAC2E,KAAK;gBAClCxC,UAAU;gBACVE,sBAAsB,EAAEtC,sBAAsB,CAACwC,UAAU;gBACzD+B,UAAU,EAAE,CAACF,SAAS;eACvB,CAAC;YACJ;YACA;UACF;QACA,KAAK,WAAW;UAAE;YAChB,MAAMQ,IAAI,GAAGhC,KAAK,CAACA,KAAK,CAACiC,OAAO,CAAClC,MAAM;YACvC,MAAMmC,cAAc,GAAG;cACrBC,UAAU,EAAE7E,GAAG,CAAC8E,QAAQ,CAACJ,IAAI,GAAG,CAAC,CAAkB;cACnDK,MAAM,EAAE/E,GAAG,CAAC8E,QAAQ,CAACJ,IAAI;aAC1B;YACD,IAAIM,GAAG,GAAG,CAAC;YACX,IAAIjB,IAAI,GAAG,CAAC;YACZ,KAAK,MAAM,CAACkB,QAAQ,EAAEhC,KAAK,CAAC,IAAIP,KAAK,CAACA,KAAK,CAACiC,OAAO,EAAE;cACnD,IAAIK,GAAG,GAAGN,IAAI,GAAG,CAAC,EAAE;gBAClBE,cAAc,CAACC,UAAU,CAACG,GAAG,CAAC,GAAGC,QAAQ;cAC3C;cACAL,cAAc,CAACG,MAAM,CAACC,GAAG,CAAC,GAAG/B,KAAK,GAAGc,IAAI;cACzCA,IAAI,GAAGd,KAAK;cACZ+B,GAAG,EAAE;YACP;YAEA,IAAIE,WAAW,GAAGxC,KAAK,CAACA,KAAK,CAACc,KAAK;YACnC,IAAI2B,SAAS,GAAGzC,KAAK,CAACA,KAAK,CAAC0C,GAAG;YAC/B,IAAIC,kBAAkB,GAAGT,cAAc,CAACG,MAAM;YAC9C,MAAMO,SAAS,GAAG5C,KAAK,CAACA,KAAK,CAAC6C,GAAG;YACjC,MAAMC,SAAS,GAAG9C,KAAK,CAACA,KAAK,CAAC+C,GAAG;YAEjC,IAAIvD,OAAO,EAAE;cACX,MAAMwD,aAAa,GAAG,IAAI,CAAC/E,sBAAsB,CAACU,GAAG,CAAC8B,SAAS,CAAC;cAChE,IAAIuC,aAAa,KAAK/B,SAAS,EAAE;gBAC/BuB,WAAW,GAAGxC,KAAK,CAACA,KAAK,CAACc,KAAK,GAAGkC,aAAa,CAAClC,KAAK;gBACrD2B,SAAS,GAAGzC,KAAK,CAACA,KAAK,CAAC0C,GAAG,GAAGM,aAAa,CAACN,GAAG;gBAC/CC,kBAAkB,GAAGT,cAAc,CAACG,MAAM,CAACY,GAAG,CAAC,CAACC,CAAC,EAAErD,CAAC,KAClDsD,IAAI,CAACJ,GAAG,CAAC,CAAC,EAAEG,CAAC,IAAIF,aAAa,CAACI,YAAY,CAACvD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACtD;cACH;cACA,IAAI,CAAC5B,sBAAsB,CAACW,GAAG,CAAC6B,SAAS,EAAE;gBACzCK,KAAK,EAAEd,KAAK,CAACA,KAAK,CAACc,KAAK;gBACxB4B,GAAG,EAAE1C,KAAK,CAACA,KAAK,CAAC0C,GAAG;gBACpBU,YAAY,EAAElB,cAAc,CAACG,MAAM,CAACgB,KAAK,EAAE;gBAC3CR,GAAG,EAAE7C,KAAK,CAACA,KAAK,CAAC6C,GAAG;gBACpBE,GAAG,EAAE/C,KAAK,CAACA,KAAK,CAAC+C;eAClB,CAAC;YACJ;YAEA,MAAMxD,UAAU,GAAG+B,mBAAmB,CAACtB,KAAK,EAAEC,UAAU,CAAC;YACzD,MAAMsB,SAAS,GAAG,IAAI,CAAChD,YAAY,CAACgB,UAAU,CAACf,IAAI,EAAEoB,iBAAiB,CAAC;YACvE,MAAM4B,SAAS,GAAyB;cACtCD,SAAS;cACTE,OAAO,EAAExC,SAAS;cAClBgB,UAAU;cACVM,KAAK,EAAE;gBACL0B,OAAO,EAAE;kBACPE,UAAU,EAAED,cAAc,CAACC,UAAU;kBACrCE,MAAM,EAAEM;iBACT;gBACD7B,KAAK,EAAE0B,WAAW;gBAClBK,GAAG,EAAED,SAAS;gBACdG,GAAG,EAAED,SAAS;gBACdJ,GAAG,EAAED;;aAER;YAED,IAAItD,gBAAgB,CAACT,GAAG,CAACsB,KAAK,CAACW,EAAE,CAAC,EAAE;cAClCxB,gBAAgB,CAACR,GAAG,CAACqB,KAAK,CAACW,EAAE,CAAE,CAACe,UAAU,CAACpC,IAAI,CAACkC,SAAgB,CAAC;YACnE,CAAC,MAAM;cACLpC,aAAa,CAAC;gBACZuC,aAAa,EAAEvE,aAAa,CAACkG,SAAS;gBACtC/D,UAAU;gBACVE,sBAAsB;gBACtBiC,UAAU,EAAE,CAACF,SAAS;eACvB,CAAC;YACJ;YACA;UACF;QACA,KAAK,WAAW;UAAE;YAChB,MAAME,UAAU,GAA6B,EAAE;YAC/C,MAAM6B,kBAAkB,GAAG,IAAIlF,GAAG,EAAkB;YAEpD,KAAK,MAAM,CAACmF,OAAO,EAAEjD,KAAK,CAAC,IAAIP,KAAK,CAACA,KAAK,CAACyD,WAAW,EAAE;cACtDF,kBAAkB,CAAC3E,GAAG,CAAC4E,OAAO,EAAEjD,KAAK,CAAC;cACtC,IAAIQ,WAAW,GAAGR,KAAK;cAEvB,IAAIf,OAAO,EAAE;gBACX,MAAMkE,mBAAmB,GAAG,IAAI,CAACxF,sBAAsB,CAACS,GAAG,CAAC8B,SAAS,CAAC;gBACtE,IAAIiD,mBAAmB,KAAKzC,SAAS,EAAE;kBACrC,MAAM0C,aAAa,GAAGD,mBAAmB,CAAC/E,GAAG,CAAC6E,OAAO,CAAC,IAAI,CAAC;kBAC3DzC,WAAW,GAAGoC,IAAI,CAACJ,GAAG,CAAC,CAAC,EAAExC,KAAK,GAAGoD,aAAa,CAAC;gBAClD;cACF;cAEA,MAAMpE,UAAU,GAAG+B,mBAAmB,CAACtB,KAAK,EAAEC,UAAU,CAAC;cACzD,MAAMsB,SAAS,GAAG,IAAI,CAAChD,YAAY,CAACgB,UAAU,CAACf,IAAI,EAAEoB,iBAAiB,CAAC;cACvE8B,UAAU,CAACpC,IAAI,CAAC;gBACdiC,SAAS;gBACTE,OAAO,EAAExC,SAAS;gBAClBgB,UAAU,EAAE;kBACV,GAAGA,UAAU;kBACbK,GAAG,EAAEkD;iBACN;gBACDjD,KAAK,EAAEQ;eACR,CAAC;YACJ;YAEA,IAAIvB,OAAO,EAAE;cACX,IAAI,CAACtB,sBAAsB,CAACU,GAAG,CAAC6B,SAAS,EAAE8C,kBAAkB,CAAC;YAChE;YAEA,IAAIpE,gBAAgB,CAACT,GAAG,CAACsB,KAAK,CAACW,EAAE,CAAC,EAAE;cAClC;cACAxB,gBAAgB,CAACR,GAAG,CAACqB,KAAK,CAACW,EAAE,CAAE,CAACe,UAAU,CAACpC,IAAI,CAAC,GAAGoC,UAAiB,CAAC;YACvE,CAAC,MAAM;cACL,MAAMnC,UAAU,GAAG+B,mBAAmB,CAACtB,KAAK,EAAEC,UAAU,CAAC;cACzDb,aAAa,CAAC;gBACZuC,aAAa,EAAEvE,aAAa,CAACwE,GAAG;gBAChCrC,UAAU;gBACVE,sBAAsB;gBACtBoC,WAAW,EAAE,IAAI;gBACjBH;eACD,CAAC;YACJ;YACA;UACF;QACA,KAAK,SAAS;UAAE;YACd;YACA,MAAMA,UAAU,GAA6B,CAAC;cAC5CH,SAAS,EAAE3B,iBAAiB;cAC5B6B,OAAO,EAAExC,SAAS;cAClBgB,UAAU,EAAE;gBAAE,GAAGA,UAAU;gBAAE2D,QAAQ,EAAE;cAAK,CAAE;cAC9CrD,KAAK,EAAEP,KAAK,CAACA,KAAK,CAAC6C;aACpB,CAAC;YACF,KAAK,MAAM,CAACe,QAAQ,EAAErD,KAAK,CAAC,IAAIP,KAAK,CAACA,KAAK,CAAC6D,SAAS,EAAE;cACrDnC,UAAU,CAACpC,IAAI,CAAC;gBACdiC,SAAS,EAAE3B,iBAAiB;gBAC5B6B,OAAO,EAAExC,SAAS;gBAClBgB,UAAU,EAAE;kBAAE,GAAGA,UAAU;kBAAE2D,QAAQ,EAAEA,QAAQ,CAACE,QAAQ;gBAAE,CAAE;gBAC5DvD,KAAK,EAAEA,KAAK,IAAI;eACjB,CAAC;YACJ;YACAmB,UAAU,CAACpC,IAAI,CAAC;cACdiC,SAAS,EAAE3B,iBAAiB;cAC5B6B,OAAO,EAAExC,SAAS;cAClBgB,UAAU,EAAE;gBAAE,GAAGA,UAAU;gBAAE2D,QAAQ,EAAE;cAAK,CAAE;cAC9CrD,KAAK,EAAEP,KAAK,CAACA,KAAK,CAAC+C;aACpB,CAAC;YAEF,IAAIP,WAAW,GAAGxC,KAAK,CAACA,KAAK,CAACc,KAAK;YACnC,IAAI2B,SAAS,GAAGzC,KAAK,CAACA,KAAK,CAAC0C,GAAG;YAE/B,IAAIlD,OAAO,EAAE;cACX,MAAMwD,aAAa,GAAG,IAAI,CAAC7E,oBAAoB,CAACQ,GAAG,CAAC8B,SAAS,CAAC;cAC9D,IAAIuC,aAAa,KAAK/B,SAAS,EAAE;gBAC/BuB,WAAW,GAAGxC,KAAK,CAACA,KAAK,CAACc,KAAK,GAAGkC,aAAa,CAAClC,KAAK;gBACrD2B,SAAS,GAAGzC,KAAK,CAACA,KAAK,CAAC0C,GAAG,GAAGM,aAAa,CAACN,GAAG;cACjD;cACA,IAAI,CAACvE,oBAAoB,CAACS,GAAG,CAAC6B,SAAS,EAAE;gBACvCK,KAAK,EAAEd,KAAK,CAACA,KAAK,CAACc,KAAK;gBACxB4B,GAAG,EAAE1C,KAAK,CAACA,KAAK,CAAC0C;eAClB,CAAC;YACJ;YAEA,MAAMqB,cAAc,GAAsB;cACxCxC,SAAS,EAAE3B,iBAAiB;cAC5B6B,OAAO,EAAExC,SAAS;cAClBgB,UAAU;cACVM,KAAK,EAAEiC;aACR;YACD,MAAMwB,YAAY,GAAsB;cACtCzC,SAAS,EAAE3B,iBAAiB;cAC5B6B,OAAO,EAAExC,SAAS;cAClBgB,UAAU;cACVM,KAAK,EAAEkC;aACR;YAED,IAAItD,gBAAgB,CAACT,GAAG,CAAC,GAAGsB,KAAK,CAACW,EAAE,YAAY,CAAC,EAAE;cACjD;cACAxB,gBAAgB,CAACR,GAAG,CAAC,GAAGqB,KAAK,CAACW,EAAE,YAAY,CAAE,CAACe,UAAU,CAACpC,IAAI,CAAC,GAAGoC,UAAiB,CAAC;cACpFvC,gBAAgB,CAACR,GAAG,CAAC,GAAGqB,KAAK,CAACW,EAAE,QAAQ,CAAE,CAACe,UAAU,CAACpC,IAAI,CAACyE,cAAqB,CAAC;cACjF5E,gBAAgB,CAACR,GAAG,CAAC,GAAGqB,KAAK,CAACW,EAAE,MAAM,CAAE,CAACe,UAAU,CAACpC,IAAI,CAAC0E,YAAmB,CAAC;YAC/E,CAAC,MAAM;cACL,MAAMzE,UAAU,GAAG+B,mBAAmB,CAACtB,KAAK,EAAEC,UAAU,CAAC;cACzDb,aAAa,CAAC;gBACZuC,aAAa,EAAEvE,aAAa,CAACwE,GAAG;gBAChCrC,UAAU,EAAE;kBACV,GAAGA,UAAU;kBACbf,IAAI,EAAE,GAAGe,UAAU,CAACf,IAAI;iBACzB;gBACDiB,sBAAsB;gBACtBoC,WAAW,EAAE,KAAK;gBAClBH;eACD,CAAC;cACFtC,aAAa,CAAC;gBACZuC,aAAa,EAAEvE,aAAa,CAACwE,GAAG;gBAChCrC,UAAU,EAAE;kBACVf,IAAI,EAAE,GAAGwB,KAAK,CAACW,EAAE,QAAQ;kBACzBsD,WAAW,EAAEjE,KAAK,CAACiE,WAAW,IAAI,EAAE;kBACpCC,IAAI,EAAE,GAAG;kBACTtD,IAAI,EAAEvD,cAAc,CAAC8G,OAAO;kBAC5BC,SAAS,EAAElH,SAAS,CAACmH,GAAG;kBACxBC,MAAM,EAAE;iBACT;gBACD7E,sBAAsB;gBACtBoC,WAAW,EAAE,IAAI;gBACjBH,UAAU,EAAE,CAACqC,cAAc;eAC5B,CAAC;cACF3E,aAAa,CAAC;gBACZuC,aAAa,EAAEvE,aAAa,CAACwE,GAAG;gBAChCrC,UAAU,EAAE;kBACVf,IAAI,EAAE,GAAGwB,KAAK,CAACW,EAAE,MAAM;kBACvBsD,WAAW,EAAEjE,KAAK,CAACiE,WAAW,IAAI,EAAE;kBACpCC,IAAI,EAAE,GAAG;kBACTtD,IAAI,EAAEvD,cAAc,CAAC8G,OAAO;kBAC5BC,SAAS,EAAElH,SAAS,CAACqH,MAAM;kBAC3BD,MAAM,EAAE;iBACT;gBACD7E,sBAAsB;gBACtBoC,WAAW,EAAE,IAAI;gBACjBH,UAAU,EAAE,CAACsC,YAAY;eAC1B,CAAC;YACJ;YACA;UACF;MACF;IACF;IAEA;IACA,IAAIxE,OAAO,EAAE;MACX,IAAI,CAACzB,uBAAuB,GAAGkB,SAAS;IAC1C;IAEA,OAAOuF,OAAO,CAACC,OAAO,CAAC;MACrBC,eAAe,EAAE;QACfhH,QAAQ,EAAE,IAAI,CAACA,QAAQ;QACvBiH,YAAY,EAAE,CAAC;UACbC,KAAK,EAAE;YAAEpG,IAAI,EAAEhB;UAAO,CAAE;UACxBqH,OAAO,EAAE3F;SACV;OACF;MACD4F,MAAM,EAAE;KACT,CAAC;EACJ;;AAGF;AACA,MAAMpE,aAAa,GAAGA,CAACC,EAAU,EAAEV,UAAkD,KAAY;EAC/F,IAAIA,UAAU,KAAKgB,SAAS,IAAId,MAAM,CAAC4E,IAAI,CAAC9E,UAAU,CAAC,CAACF,MAAM,KAAK,CAAC,EAAE;IACpE,OAAOY,EAAE;EACX;EACA,MAAMqE,aAAa,GAAG7E,MAAM,CAACC,OAAO,CAACH,UAAU,CAAC,CAACgF,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAAC,CAAC,CAAC,CAACE,aAAa,CAACD,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;EACzF,OAAO,GAAGxE,EAAE,IAAI0E,IAAI,CAACC,SAAS,CAACN,aAAa,CAAC,EAAE;AACjD,CAAC;AAED,MAAM1G,aAAa,GAAGA,CAAA,KAAa;EACjC,MAAMiH,GAAG,GAAGC,IAAI,CAACD,GAAG,EAAE;EACtB,OAAO,CAACpC,IAAI,CAACsC,KAAK,CAACF,GAAG,GAAG,IAAI,CAAC,EAAGA,GAAG,GAAG,IAAI,GAAI,OAAO,CAAC;AACzD,CAAC;AAED,MAAMjE,mBAAmB,GAAGA,CAC1BtB,KAA6B,EAC7BC,UAAkC,KACV;EACxB,MAAMiE,IAAI,GAAGjE,UAAU,CAACiE,IAAI,IAAIjE,UAAU,CAACyF,SAAS,IAAI,GAAG;EAC3D,OAAO;IACLlH,IAAI,EAAEwB,KAAK,CAACW,EAAE;IACdsD,WAAW,EAAEjE,KAAK,CAACiE,WAAW,IAAI,EAAE;IACpCC,IAAI;IACJtD,IAAI,EAAE+E,0BAA0B,CAAC3F,KAAK,CAAC;IACvCoE,SAAS,EAAEwB,kBAAkB,CAAC5F,KAAK,CAAC;IACpCsE,MAAM,EAAE;GACT;AACH,CAAC;AAED,MAAMqB,0BAA0B,GAAI3F,KAA6B,IAAoB;EACnF,QAAQA,KAAK,CAACY,IAAI;IAChB,KAAK,WAAW;MACd,OAAOvD,cAAc,CAACiG,SAAS;IACjC,KAAK,OAAO;MACV,OAAOjG,cAAc,CAACwI,gBAAgB;IACxC,KAAK,WAAW;MACd,OAAOxI,cAAc,CAAC8G,OAAO;IAC/B,KAAK,SAAS;MACZ,OAAOnE,KAAK,CAACA,KAAK,CAAC8B,WAAW,GAAGzE,cAAc,CAAC8G,OAAO,GAAG9G,cAAc,CAACyI,eAAe;IAC1F,KAAK,SAAS;MACZ,OAAOzI,cAAc,CAAC8G,OAAO;EACjC;AACF,CAAC;AAED,MAAMyB,kBAAkB,GAAI5F,KAA6B,IAAe;EACtE,IAAIA,KAAK,CAACY,IAAI,KAAK,SAAS,EAAE;IAC5B,OAAO,OAAOZ,KAAK,CAACA,KAAK,CAACc,KAAK,KAAK,QAAQ,GAAG5D,SAAS,CAACmH,GAAG,GAAGnH,SAAS,CAACqH,MAAM;EACjF,CAAC,MAAM,IAAIvE,KAAK,CAACY,IAAI,KAAK,OAAO,EAAE;IACjC,OAAO,OAAOZ,KAAK,CAACA,KAAK,CAACO,KAAK,KAAK,QAAQ,GAAGrD,SAAS,CAACmH,GAAG,GAAGnH,SAAS,CAACqH,MAAM;EACjF;EACA,OAAOrH,SAAS,CAACqH,MAAM;AACzB,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@effect/opentelemetry",
3
3
  "type": "module",
4
- "version": "4.0.0-beta.5",
4
+ "version": "4.0.0-beta.51",
5
5
  "license": "MIT",
6
6
  "description": "OpenTelemetry integration for Effect",
7
7
  "homepage": "https://effect.website",
@@ -62,7 +62,7 @@
62
62
  "@opentelemetry/sdk-trace-node": "^2.0.0",
63
63
  "@opentelemetry/sdk-trace-web": "^2.0.0",
64
64
  "@opentelemetry/semantic-conventions": "^1.33.0",
65
- "effect": "^4.0.0-beta.5"
65
+ "effect": "^4.0.0-beta.51"
66
66
  },
67
67
  "peerDependenciesMeta": {
68
68
  "@opentelemetry/api": {
@@ -88,19 +88,19 @@
88
88
  }
89
89
  },
90
90
  "devDependencies": {
91
- "@opentelemetry/api": "^1.9.0",
92
- "@opentelemetry/context-async-hooks": "^2.5.0",
93
- "@opentelemetry/exporter-metrics-otlp-http": "0.211.0",
94
- "@opentelemetry/exporter-prometheus": "^0.211.0",
95
- "@opentelemetry/exporter-trace-otlp-http": "^0.211.0",
96
- "@opentelemetry/otlp-exporter-base": "^0.211.0",
97
- "@opentelemetry/resources": "^2.5.0",
98
- "@opentelemetry/sdk-logs": "^0.211.0",
99
- "@opentelemetry/sdk-metrics": "^2.5.0",
100
- "@opentelemetry/sdk-trace-base": "^2.5.0",
101
- "@opentelemetry/sdk-trace-node": "^2.5.0",
102
- "@opentelemetry/sdk-trace-web": "^2.5.0",
103
- "@opentelemetry/semantic-conventions": "^1.39.0"
91
+ "@opentelemetry/api": "^1.9.1",
92
+ "@opentelemetry/context-async-hooks": "^2.6.1",
93
+ "@opentelemetry/exporter-metrics-otlp-http": "0.214.0",
94
+ "@opentelemetry/exporter-prometheus": "^0.214.0",
95
+ "@opentelemetry/exporter-trace-otlp-http": "^0.214.0",
96
+ "@opentelemetry/otlp-exporter-base": "^0.214.0",
97
+ "@opentelemetry/resources": "^2.6.1",
98
+ "@opentelemetry/sdk-logs": "^0.214.0",
99
+ "@opentelemetry/sdk-metrics": "^2.6.1",
100
+ "@opentelemetry/sdk-trace-base": "^2.6.1",
101
+ "@opentelemetry/sdk-trace-node": "^2.6.1",
102
+ "@opentelemetry/sdk-trace-web": "^2.6.1",
103
+ "@opentelemetry/semantic-conventions": "^1.40.0"
104
104
  },
105
105
  "scripts": {
106
106
  "codegen": "effect-utils codegen",
package/src/Logger.ts CHANGED
@@ -5,22 +5,23 @@ import * as Otel from "@opentelemetry/sdk-logs"
5
5
  import type { NonEmptyReadonlyArray } from "effect/Array"
6
6
  import * as Arr from "effect/Array"
7
7
  import * as Clock from "effect/Clock"
8
- import type { DurationInput } from "effect/Duration"
8
+ import * as Context from "effect/Context"
9
+ import type * as Duration from "effect/Duration"
9
10
  import * as Effect from "effect/Effect"
10
11
  import * as Layer from "effect/Layer"
11
12
  import * as Logger from "effect/Logger"
12
13
  import * as LogLevel from "effect/LogLevel"
13
14
  import * as Predicate from "effect/Predicate"
14
- import * as ServiceMap from "effect/ServiceMap"
15
+ import * as References from "effect/References"
15
16
  import * as Tracer from "effect/Tracer"
16
- import { unknownToAttributeValue } from "./internal/attributes.ts"
17
+ import { nanosToHrTime, unknownToAttributeValue } from "./internal/attributes.ts"
17
18
  import { Resource } from "./Resource.ts"
18
19
 
19
20
  /**
20
21
  * @since 1.0.0
21
22
  * @category Services
22
23
  */
23
- export class OtelLoggerProvider extends ServiceMap.Service<
24
+ export class OtelLoggerProvider extends Context.Service<
24
25
  OtelLoggerProvider,
25
26
  Otel.LoggerProvider
26
27
  >()("@effect/opentelemetry/Logger/OtelLoggerProvider") {}
@@ -43,29 +44,29 @@ export const make: Effect.Effect<
43
44
  fiberId: options.fiber.id
44
45
  }
45
46
 
46
- const span = ServiceMap.getOrUndefined(options.fiber.services, Tracer.ParentSpan)
47
+ const span = Context.getOrUndefined(options.fiber.context, Tracer.ParentSpan)
47
48
 
48
49
  if (Predicate.isNotUndefined(span)) {
49
50
  attributes.spanId = span.spanId
50
51
  attributes.traceId = span.traceId
51
52
  }
52
53
 
53
- // TODO: add back after log spans / annotations
54
- // for (const [key, value] of options.annotations) {
55
- // attributes[key] = unknownToAttributeValue(value)
56
- // }
57
- // const now = options.date.getTime()
58
- // for (const span of options.spans) {
59
- // attributes[`logSpan.${span.label}`] = `${now - span.startTime}ms`
60
- // }
54
+ for (const [key, value] of Object.entries(options.fiber.getRef(References.CurrentLogAnnotations))) {
55
+ attributes[key] = unknownToAttributeValue(value)
56
+ }
57
+ const now = options.date.getTime()
58
+ for (const [label, startTime] of options.fiber.getRef(References.CurrentLogSpans)) {
59
+ attributes[`logSpan.${label}`] = `${now - startTime}ms`
60
+ }
61
61
 
62
62
  const message = Arr.ensure(options.message).map(unknownToAttributeValue)
63
+ const hrTime = nanosToHrTime(clock.currentTimeNanosUnsafe())
63
64
  otelLogger.emit({
64
65
  body: message.length === 1 ? message[0] : message,
65
66
  severityText: options.logLevel,
66
67
  severityNumber: LogLevel.getOrdinal(options.logLevel),
67
- timestamp: options.date,
68
- observedTimestamp: clock.currentTimeMillisUnsafe(),
68
+ timestamp: hrTime,
69
+ observedTimestamp: hrTime,
69
70
  attributes
70
71
  })
71
72
  })
@@ -98,7 +99,7 @@ export const layer = (options: {
98
99
  export const layerLoggerProvider = (
99
100
  processor: Otel.LogRecordProcessor | NonEmptyReadonlyArray<Otel.LogRecordProcessor>,
100
101
  config?: Omit<Otel.LoggerProviderConfig, "resource"> & {
101
- readonly shutdownTimeout?: DurationInput | undefined
102
+ readonly shutdownTimeout?: Duration.Input | undefined
102
103
  }
103
104
  ): Layer.Layer<OtelLoggerProvider, never, Resource> =>
104
105
  Layer.effect(
package/src/Metrics.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import type { MetricProducer, MetricReader } from "@opentelemetry/sdk-metrics"
5
5
  import type * as Arr from "effect/Array"
6
- import type { DurationInput } from "effect/Duration"
6
+ import type * as Duration from "effect/Duration"
7
7
  import * as Effect from "effect/Effect"
8
8
  import type { LazyArg } from "effect/Function"
9
9
  import * as Layer from "effect/Layer"
@@ -35,7 +35,7 @@ export type TemporalityPreference = "cumulative" | "delta"
35
35
  export const makeProducer = (temporality?: TemporalityPreference): Effect.Effect<MetricProducer, never, Resource> =>
36
36
  Effect.gen(function*() {
37
37
  const resource = yield* Resource
38
- const services = yield* Effect.services<never>()
38
+ const services = yield* Effect.context<never>()
39
39
  return new MetricProducerImpl(resource, services, temporality)
40
40
  })
41
41
 
@@ -49,7 +49,7 @@ export const registerProducer = (
49
49
  self: MetricProducer,
50
50
  metricReader: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader>>,
51
51
  options?: {
52
- readonly shutdownTimeout?: DurationInput | undefined
52
+ readonly shutdownTimeout?: Duration.Input | undefined
53
53
  }
54
54
  ): Effect.Effect<Array<any>, never, Scope.Scope> =>
55
55
  Effect.acquireRelease(
@@ -104,7 +104,7 @@ export const registerProducer = (
104
104
  export const layer = (
105
105
  evaluate: LazyArg<MetricReader | Arr.NonEmptyReadonlyArray<MetricReader>>,
106
106
  options?: {
107
- readonly shutdownTimeout?: DurationInput | undefined
107
+ readonly shutdownTimeout?: Duration.Input | undefined
108
108
  readonly temporality?: TemporalityPreference | undefined
109
109
  }
110
110
  ): Layer.Layer<never, never, Resource> =>
package/src/NodeSdk.ts CHANGED
@@ -7,7 +7,7 @@ import type { MetricReader } from "@opentelemetry/sdk-metrics"
7
7
  import type { SpanProcessor, TracerConfig } from "@opentelemetry/sdk-trace-base"
8
8
  import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node"
9
9
  import type { NonEmptyReadonlyArray } from "effect/Array"
10
- import type { DurationInput } from "effect/Duration"
10
+ import type * as Duration from "effect/Duration"
11
11
  import * as Effect from "effect/Effect"
12
12
  import { constant, type LazyArg } from "effect/Function"
13
13
  import * as Layer from "effect/Layer"
@@ -34,7 +34,7 @@ export interface Configuration {
34
34
  readonly serviceVersion?: string
35
35
  readonly attributes?: Otel.Attributes
36
36
  } | undefined
37
- readonly shutdownTimeout?: DurationInput | undefined
37
+ readonly shutdownTimeout?: Duration.Input | undefined
38
38
  }
39
39
 
40
40
  /**
@@ -44,7 +44,7 @@ export interface Configuration {
44
44
  export const layerTracerProvider = (
45
45
  processor: SpanProcessor | NonEmptyReadonlyArray<SpanProcessor>,
46
46
  config?: Omit<TracerConfig, "resource"> & {
47
- readonly shutdownTimeout?: DurationInput | undefined
47
+ readonly shutdownTimeout?: Duration.Input | undefined
48
48
  }
49
49
  ): Layer.Layer<Tracer.OtelTracerProvider, never, Resource.Resource> =>
50
50
  Layer.effect(
package/src/Resource.ts CHANGED
@@ -6,15 +6,15 @@ import * as Resources from "@opentelemetry/resources"
6
6
  import * as OtelSemConv from "@opentelemetry/semantic-conventions"
7
7
  import * as Arr from "effect/Array"
8
8
  import * as Config from "effect/Config"
9
+ import * as Context from "effect/Context"
9
10
  import * as Effect from "effect/Effect"
10
11
  import * as Layer from "effect/Layer"
11
- import * as ServiceMap from "effect/ServiceMap"
12
12
 
13
13
  /**
14
14
  * @since 1.0.0
15
15
  * @category Services
16
16
  */
17
- export class Resource extends ServiceMap.Service<
17
+ export class Resource extends Context.Service<
18
18
  Resource,
19
19
  Resources.Resource
20
20
  >()("@effect/opentelemetry/Resource") {}
@@ -70,7 +70,7 @@ export const layerFromEnv = (
70
70
  Effect.gen(function*() {
71
71
  const serviceName = yield* Config.option(Config.string("OTEL_SERVICE_NAME"))
72
72
  const attributes = yield* Config.string("OTEL_RESOURCE_ATTRIBUTES").pipe(
73
- Config.withDefault(() => ""),
73
+ Config.withDefault(""),
74
74
  Config.map((s) => {
75
75
  const attrs = s.split(",")
76
76
  return Arr.reduce(attrs, {} as OtelApi.Attributes, (acc, attr) => {
package/src/Tracer.ts CHANGED
@@ -5,14 +5,15 @@ import * as Otel from "@opentelemetry/api"
5
5
  import * as OtelSemConv from "@opentelemetry/semantic-conventions"
6
6
  import * as Cause from "effect/Cause"
7
7
  import type * as Clock from "effect/Clock"
8
+ import * as Context from "effect/Context"
8
9
  import * as Effect from "effect/Effect"
9
10
  import * as Exit from "effect/Exit"
10
11
  import { constTrue, dual } from "effect/Function"
11
12
  import * as Layer from "effect/Layer"
13
+ import * as Option from "effect/Option"
12
14
  import * as Predicate from "effect/Predicate"
13
- import * as ServiceMap from "effect/ServiceMap"
14
15
  import * as Tracer from "effect/Tracer"
15
- import { recordToAttributes, unknownToAttributeValue } from "./internal/attributes.ts"
16
+ import { nanosToHrTime, recordToAttributes, unknownToAttributeValue } from "./internal/attributes.ts"
16
17
  import { Resource } from "./Resource.ts"
17
18
 
18
19
  // =============================================================================
@@ -23,7 +24,7 @@ import { Resource } from "./Resource.ts"
23
24
  * @since 1.0.0
24
25
  * @category Services
25
26
  */
26
- export class OtelTracer extends ServiceMap.Service<
27
+ export class OtelTracer extends Context.Service<
27
28
  OtelTracer,
28
29
  Otel.Tracer
29
30
  >()("@effect/opentelemetry/Tracer") {}
@@ -32,7 +33,7 @@ export class OtelTracer extends ServiceMap.Service<
32
33
  * @since 1.0.0
33
34
  * @category Services
34
35
  */
35
- export class OtelTracerProvider extends ServiceMap.Service<
36
+ export class OtelTracerProvider extends Context.Service<
36
37
  OtelTracerProvider,
37
38
  Otel.TracerProvider
38
39
  >()("@effect/opentelemetry/Tracer/OtelTracerProvider") {}
@@ -41,7 +42,7 @@ export class OtelTracerProvider extends ServiceMap.Service<
41
42
  * @since 1.0.0
42
43
  * @category Services
43
44
  */
44
- export class OtelTraceFlags extends ServiceMap.Service<
45
+ export class OtelTraceFlags extends Context.Service<
45
46
  OtelTraceFlags,
46
47
  Otel.TraceFlags
47
48
  >()("@effect/opentelemetry/Tracer/OtelTraceFlags") {}
@@ -50,7 +51,7 @@ export class OtelTraceFlags extends ServiceMap.Service<
50
51
  * @since 1.0.0
51
52
  * @category Services
52
53
  */
53
- export class OtelTraceState extends ServiceMap.Service<
54
+ export class OtelTraceState extends Context.Service<
54
55
  OtelTraceState,
55
56
  Otel.TraceState
56
57
  >()("@effect/opentelemetry/Tracer/OtelTraceState") {}
@@ -100,22 +101,24 @@ export const makeExternalSpan = (options: {
100
101
  readonly traceFlags?: number | undefined
101
102
  readonly traceState?: string | Otel.TraceState | undefined
102
103
  }): Tracer.ExternalSpan => {
103
- let annotations = ServiceMap.empty()
104
-
105
- if (options.traceFlags !== undefined) {
106
- annotations = ServiceMap.add(annotations, OtelTraceFlags, options.traceFlags)
107
- }
104
+ const annotations = Context.mutate(Context.empty(), (annotations) => {
105
+ let next = annotations
106
+ if (options.traceFlags !== undefined) {
107
+ next = Context.add(next, OtelTraceFlags, options.traceFlags)
108
+ }
108
109
 
109
- if (typeof options.traceState === "string") {
110
- try {
111
- const traceState = Otel.createTraceState(options.traceState)
112
- annotations = ServiceMap.add(annotations, OtelTraceState, traceState)
113
- } catch {
114
- //
110
+ if (typeof options.traceState === "string") {
111
+ try {
112
+ next = Context.add(next, OtelTraceState, Otel.createTraceState(options.traceState))
113
+ } catch {
114
+ //
115
+ }
116
+ } else if (options.traceState) {
117
+ next = Context.add(next, OtelTraceState, options.traceState)
115
118
  }
116
- } else if (options.traceState) {
117
- annotations = ServiceMap.add(annotations, OtelTraceState, options.traceState)
118
- }
119
+
120
+ return next
121
+ })
119
122
 
120
123
  return {
121
124
  _tag: "ExternalSpan",
@@ -356,14 +359,14 @@ export class OtelSpan implements Tracer.Span {
356
359
 
357
360
  readonly name: string
358
361
  readonly kind: Tracer.SpanKind
359
- readonly annotations: ServiceMap.ServiceMap<never>
362
+ readonly annotations: Context.Context<never>
360
363
  readonly links: Array<Tracer.SpanLink>
361
364
  readonly span: Otel.Span
362
365
  readonly spanId: string
363
366
  readonly traceId: string
364
367
  readonly attributes = new Map<string, unknown>()
365
368
  readonly sampled: boolean
366
- readonly parent: Tracer.AnySpan | undefined
369
+ readonly parent: Option.Option<Tracer.AnySpan>
367
370
  status: Tracer.SpanStatus
368
371
 
369
372
  constructor(
@@ -378,9 +381,9 @@ export class OtelSpan implements Tracer.Span {
378
381
  this.links = options.links
379
382
  this.kind = options.kind
380
383
  const active = contextApi.active()
381
- this.parent = options.parent ?? (options?.root !== true) ?
382
- getOtelParent(traceApi, active, options.annotations) :
383
- undefined
384
+ this.parent = options.root !== true
385
+ ? Option.orElse(options.parent, () => getOtelParent(traceApi, active, options.annotations))
386
+ : options.parent
384
387
  this.span = tracer.startSpan(
385
388
  options.name,
386
389
  {
@@ -393,7 +396,9 @@ export class OtelSpan implements Tracer.Span {
393
396
  : undefined as any,
394
397
  kind: kindMap[this.kind]
395
398
  },
396
- this.parent ? populateContext(active, this.parent, options.annotations) : Otel.trace.deleteSpan(active)
399
+ Option.isSome(this.parent) ?
400
+ populateContext(active, this.parent.value, options.annotations) :
401
+ Otel.trace.deleteSpan(active)
397
402
  )
398
403
  const spanContext = this.span.spanContext()
399
404
  this.spanId = spanContext.spanId
@@ -469,30 +474,24 @@ export class OtelSpan implements Tracer.Span {
469
474
  const isSampled = (traceFlags: Otel.TraceFlags): boolean =>
470
475
  (traceFlags & Otel.TraceFlags.SAMPLED) === Otel.TraceFlags.SAMPLED
471
476
 
472
- const nanosToHrTime = (timestamp: bigint): Otel.HrTime => {
473
- return [Number(timestamp / bigint1e9), Number(timestamp % bigint1e9)]
474
- }
475
-
476
477
  const getOtelParent = (
477
478
  tracer: Otel.TraceAPI,
478
479
  context: Otel.Context,
479
- annotations: ServiceMap.ServiceMap<never>
480
- ): Tracer.AnySpan | undefined => {
481
- const active = tracer.getSpan(context)
482
- const otelParent = active ? active.spanContext() : undefined
483
- return otelParent
484
- ? Tracer.externalSpan({
485
- spanId: otelParent.spanId,
486
- traceId: otelParent.traceId,
487
- sampled: (otelParent.traceFlags & 1) === 1,
488
- annotations
489
- })
490
- : undefined
480
+ annotations: Context.Context<never>
481
+ ): Option.Option<Tracer.AnySpan> => {
482
+ const otelParent = tracer.getSpan(context)?.spanContext()
483
+ if (!otelParent) return Option.none()
484
+ return Option.some(Tracer.externalSpan({
485
+ spanId: otelParent.spanId,
486
+ traceId: otelParent.traceId,
487
+ sampled: (otelParent.traceFlags & 1) === 1,
488
+ annotations
489
+ }))
491
490
  }
492
491
 
493
492
  const makeSpanContext = (
494
493
  span: Tracer.AnySpan,
495
- annotations?: ServiceMap.ServiceMap<never>
494
+ annotations?: Context.Context<never>
496
495
  ): Otel.SpanContext => {
497
496
  const traceFlags = makeTraceFlags(span, annotations)
498
497
  const traceState = makeTraceState(span, annotations)!
@@ -507,13 +506,13 @@ const makeSpanContext = (
507
506
 
508
507
  const makeTraceFlags = (
509
508
  span: Tracer.AnySpan,
510
- annotations: ServiceMap.ServiceMap<never> | undefined
509
+ annotations: Context.Context<never> | undefined
511
510
  ): Otel.TraceFlags => {
512
511
  let traceFlags: Otel.TraceFlags | undefined
513
512
  if (Predicate.isNotUndefined(annotations)) {
514
513
  traceFlags = extractTraceService(span, annotations, OtelTraceFlags)
515
514
  if (Predicate.isUndefined(traceFlags)) {
516
- traceFlags = ServiceMap.getOrUndefined(span.annotations, OtelTraceFlags)
515
+ traceFlags = Context.getOrUndefined(span.annotations, OtelTraceFlags)
517
516
  }
518
517
  }
519
518
  return traceFlags ?? Otel.TraceFlags.SAMPLED
@@ -521,13 +520,13 @@ const makeTraceFlags = (
521
520
 
522
521
  const makeTraceState = (
523
522
  span: Tracer.AnySpan,
524
- annotations: ServiceMap.ServiceMap<never> | undefined
523
+ annotations: Context.Context<never> | undefined
525
524
  ): Otel.TraceState | undefined => {
526
525
  let traceState: Otel.TraceState | undefined
527
526
  if (Predicate.isNotUndefined(annotations)) {
528
527
  traceState = extractTraceService(span, annotations, OtelTraceState)
529
528
  if (Predicate.isUndefined(traceState)) {
530
- traceState = ServiceMap.getOrUndefined(span.annotations, OtelTraceState)
529
+ traceState = Context.getOrUndefined(span.annotations, OtelTraceState)
531
530
  }
532
531
  }
533
532
  return traceState
@@ -535,20 +534,20 @@ const makeTraceState = (
535
534
 
536
535
  const extractTraceService = <I, S>(
537
536
  parent: Tracer.AnySpan,
538
- annotations: ServiceMap.ServiceMap<never>,
539
- service: ServiceMap.Service<I, S>
537
+ annotations: Context.Context<never>,
538
+ service: Context.Service<I, S>
540
539
  ) => {
541
- const instance = ServiceMap.getOrUndefined(annotations, service)
540
+ const instance = Context.getOrUndefined(annotations, service)
542
541
  if (Predicate.isNotUndefined(instance)) {
543
542
  return instance
544
543
  }
545
- return ServiceMap.getOrUndefined(parent.annotations, service)
544
+ return Context.getOrUndefined(parent.annotations, service)
546
545
  }
547
546
 
548
547
  const populateContext = (
549
548
  context: Otel.Context,
550
549
  span: Tracer.AnySpan,
551
- annotations?: ServiceMap.ServiceMap<never> | undefined
550
+ annotations?: Context.Context<never> | undefined
552
551
  ): Otel.Context =>
553
552
  span instanceof OtelSpan ?
554
553
  Otel.trace.setSpan(context, span.span) :
@@ -1,6 +1,13 @@
1
1
  import type * as Otel from "@opentelemetry/api"
2
2
  import * as Inspectable from "effect/Inspectable"
3
3
 
4
+ const bigint1e9 = BigInt(1_000_000_000)
5
+
6
+ /** @internal */
7
+ export const nanosToHrTime = (timestamp: bigint): Otel.HrTime => {
8
+ return [Number(timestamp / bigint1e9), Number(timestamp % bigint1e9)]
9
+ }
10
+
4
11
  /** @internal */
5
12
  export const recordToAttributes = (record: Record<string, unknown>): Otel.Attributes => {
6
13
  const attributes: Otel.Attributes = {}
@@ -11,8 +11,8 @@ import type {
11
11
  import { AggregationTemporality, DataPointType, InstrumentType } from "@opentelemetry/sdk-metrics"
12
12
  import type { InstrumentDescriptor } from "@opentelemetry/sdk-metrics/build/src/InstrumentDescriptor.js"
13
13
  import * as Arr from "effect/Array"
14
+ import type * as Context from "effect/Context"
14
15
  import * as Metric from "effect/Metric"
15
- import type * as ServiceMap from "effect/ServiceMap"
16
16
  import type * as Metrics from "../Metrics.ts"
17
17
 
18
18
  const sdkName = "@effect/opentelemetry/Metrics"
@@ -37,7 +37,7 @@ interface PreviousSummaryState {
37
37
  /** @internal */
38
38
  export class MetricProducerImpl implements MetricProducer {
39
39
  resource: Resources.Resource
40
- services: ServiceMap.ServiceMap<never>
40
+ context: Context.Context<never>
41
41
  temporality: Metrics.TemporalityPreference
42
42
  startTimes: Map<string, HrTime>
43
43
  startTimeNanos: HrTime
@@ -49,11 +49,11 @@ export class MetricProducerImpl implements MetricProducer {
49
49
 
50
50
  constructor(
51
51
  resource: Resources.Resource,
52
- services: ServiceMap.ServiceMap<never>,
52
+ context: Context.Context<never>,
53
53
  temporality: Metrics.TemporalityPreference = "cumulative"
54
54
  ) {
55
55
  this.resource = resource
56
- this.services = services
56
+ this.context = context
57
57
  this.temporality = temporality
58
58
  this.startTimes = new Map()
59
59
  this.startTimeNanos = currentHrTime()
@@ -73,7 +73,7 @@ export class MetricProducerImpl implements MetricProducer {
73
73
  }
74
74
 
75
75
  collect(_options?: MetricCollectOptions): Promise<CollectionResult> {
76
- const snapshot = Metric.snapshotUnsafe(this.services)
76
+ const snapshot = Metric.snapshotUnsafe(this.context)
77
77
  const hrTimeNow = currentHrTime()
78
78
  const metricData: Array<MetricData> = []
79
79
  const metricDataByName = new Map<string, MetricData>()
@@ -111,7 +111,7 @@ export class MetricProducerImpl implements MetricProducer {
111
111
  if (typeof currentCount === "bigint" && typeof previousCount === "bigint") {
112
112
  reportValue = currentCount - previousCount
113
113
  // Handle reset: if current < previous, report current value
114
- if (reportValue < 0n) {
114
+ if (reportValue < BigInt(0)) {
115
115
  reportValue = currentCount
116
116
  }
117
117
  } else {