@effect/opentelemetry 4.0.0-beta.99 → 4.0.0-rc.109

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.
Files changed (113) hide show
  1. package/AGENTS.md +395 -0
  2. package/CLAUDE.md +395 -0
  3. package/README.md +13 -2
  4. package/ai-docs/README.md +44 -0
  5. package/ai-docs/package.json +36 -0
  6. package/ai-docs/src/01_effect/01_basics/01_effect-gen.ts +30 -0
  7. package/ai-docs/src/01_effect/01_basics/02_effect-fn.ts +39 -0
  8. package/ai-docs/src/01_effect/01_basics/10_creating-effects.ts +74 -0
  9. package/ai-docs/src/01_effect/01_basics/index.md +5 -0
  10. package/ai-docs/src/01_effect/02_schema/10_schema-basics.ts +43 -0
  11. package/ai-docs/src/01_effect/02_schema/index.md +7 -0
  12. package/ai-docs/src/01_effect/03_services/01_service.ts +45 -0
  13. package/ai-docs/src/01_effect/03_services/10_reference.ts +10 -0
  14. package/ai-docs/src/01_effect/03_services/20_layer-composition.ts +70 -0
  15. package/ai-docs/src/01_effect/03_services/20_layer-unwrap.ts +66 -0
  16. package/ai-docs/src/01_effect/03_services/index.md +5 -0
  17. package/ai-docs/src/01_effect/04_errors/01_error-handling.ts +30 -0
  18. package/ai-docs/src/01_effect/04_errors/10_catch-tags.ts +24 -0
  19. package/ai-docs/src/01_effect/04_errors/20_reason-errors.ts +64 -0
  20. package/ai-docs/src/01_effect/04_errors/index.md +1 -0
  21. package/ai-docs/src/01_effect/05_resources/10_acquire-release.ts +105 -0
  22. package/ai-docs/src/01_effect/05_resources/20_layer-side-effects.ts +31 -0
  23. package/ai-docs/src/01_effect/05_resources/30_layer-map.ts +86 -0
  24. package/ai-docs/src/01_effect/05_resources/index.md +3 -0
  25. package/ai-docs/src/01_effect/06_running/10_run-main.ts +30 -0
  26. package/ai-docs/src/01_effect/06_running/20_layer-launch.ts +27 -0
  27. package/ai-docs/src/01_effect/06_running/index.md +1 -0
  28. package/ai-docs/src/01_effect/07_pubsub/10_pubsub.ts +56 -0
  29. package/ai-docs/src/01_effect/07_pubsub/index.md +3 -0
  30. package/ai-docs/src/03_stream/10_creating-streams.ts +103 -0
  31. package/ai-docs/src/03_stream/20_consuming-streams.ts +137 -0
  32. package/ai-docs/src/03_stream/30_encoding.ts +165 -0
  33. package/ai-docs/src/03_stream/index.md +4 -0
  34. package/ai-docs/src/04_integration/10_managed-runtime.ts +129 -0
  35. package/ai-docs/src/04_integration/index.md +5 -0
  36. package/ai-docs/src/05_batching/10_request-resolver.ts +89 -0
  37. package/ai-docs/src/05_batching/index.md +3 -0
  38. package/ai-docs/src/06_schedule/10_schedules.ts +110 -0
  39. package/ai-docs/src/06_schedule/index.md +3 -0
  40. package/ai-docs/src/07_datetime/10_creating-and-formatting.ts +30 -0
  41. package/ai-docs/src/07_datetime/20_time-zones.ts +44 -0
  42. package/ai-docs/src/07_datetime/index.md +5 -0
  43. package/ai-docs/src/08_observability/10_logging.ts +66 -0
  44. package/ai-docs/src/08_observability/20_otlp-tracing.ts +95 -0
  45. package/ai-docs/src/08_observability/index.md +7 -0
  46. package/ai-docs/src/09_testing/10_effect-tests.ts +55 -0
  47. package/ai-docs/src/09_testing/20_layer-tests.ts +138 -0
  48. package/ai-docs/src/09_testing/index.md +1 -0
  49. package/ai-docs/src/10_predicate/01_basics.ts +14 -0
  50. package/ai-docs/src/10_predicate/index.md +9 -0
  51. package/ai-docs/src/40_sql/10_basics.ts +175 -0
  52. package/ai-docs/src/40_sql/index.md +6 -0
  53. package/ai-docs/src/50_http-client/10_basics.ts +102 -0
  54. package/ai-docs/src/50_http-client/index.md +3 -0
  55. package/ai-docs/src/51_http-server/10_basics.ts +118 -0
  56. package/ai-docs/src/51_http-server/20_testing.ts +100 -0
  57. package/ai-docs/src/51_http-server/fixtures/api/Api.ts +14 -0
  58. package/ai-docs/src/51_http-server/fixtures/api/Authorization.ts +36 -0
  59. package/ai-docs/src/51_http-server/fixtures/api/System.ts +10 -0
  60. package/ai-docs/src/51_http-server/fixtures/api/Users.ts +107 -0
  61. package/ai-docs/src/51_http-server/fixtures/domain/User.ts +21 -0
  62. package/ai-docs/src/51_http-server/fixtures/domain/UserErrors.ts +22 -0
  63. package/ai-docs/src/51_http-server/fixtures/server/Authorization.ts +37 -0
  64. package/ai-docs/src/51_http-server/fixtures/server/Users/http.ts +80 -0
  65. package/ai-docs/src/51_http-server/fixtures/server/Users.ts +183 -0
  66. package/ai-docs/src/51_http-server/index.md +3 -0
  67. package/ai-docs/src/60_child-process/10_working-with-child-processes.ts +117 -0
  68. package/ai-docs/src/60_child-process/index.md +3 -0
  69. package/ai-docs/src/70_cli/10_basics.ts +160 -0
  70. package/ai-docs/src/70_cli/index.md +5 -0
  71. package/ai-docs/src/71_ai/10_language-model.ts +156 -0
  72. package/ai-docs/src/71_ai/20_tools.ts +226 -0
  73. package/ai-docs/src/71_ai/30_chat.ts +158 -0
  74. package/ai-docs/src/71_ai/fixtures/domain/LaunchPlan.ts +9 -0
  75. package/ai-docs/src/71_ai/index.md +5 -0
  76. package/ai-docs/src/80_cluster/10_entities.ts +97 -0
  77. package/ai-docs/src/80_cluster/index.md +4 -0
  78. package/ai-docs/src/index.md +10 -0
  79. package/ai-docs/tsconfig.json +24 -0
  80. package/dist/NodeSdk.js +6 -6
  81. package/dist/NodeSdk.js.map +1 -1
  82. package/dist/OtelLogger.d.ts.map +1 -1
  83. package/dist/OtelLogger.js +5 -4
  84. package/dist/OtelLogger.js.map +1 -1
  85. package/dist/OtelMetrics.d.ts +32 -21
  86. package/dist/OtelMetrics.d.ts.map +1 -1
  87. package/dist/OtelMetrics.js +31 -20
  88. package/dist/OtelMetrics.js.map +1 -1
  89. package/dist/OtelTracer.d.ts.map +1 -1
  90. package/dist/OtelTracer.js +28 -19
  91. package/dist/OtelTracer.js.map +1 -1
  92. package/dist/Resource.d.ts +1 -1
  93. package/dist/Resource.d.ts.map +1 -1
  94. package/dist/Resource.js +7 -6
  95. package/dist/Resource.js.map +1 -1
  96. package/dist/WebSdk.d.ts.map +1 -1
  97. package/dist/WebSdk.js +6 -6
  98. package/dist/WebSdk.js.map +1 -1
  99. package/dist/index.js.map +1 -1
  100. package/dist/internal/attributes.js +2 -1
  101. package/dist/internal/attributes.js.map +1 -1
  102. package/dist/internal/metrics.js +5 -1
  103. package/dist/internal/metrics.js.map +1 -1
  104. package/dist/internal/utilities.js.map +1 -1
  105. package/package.json +15 -13
  106. package/src/NodeSdk.ts +7 -7
  107. package/src/OtelLogger.ts +6 -4
  108. package/src/OtelMetrics.ts +33 -22
  109. package/src/OtelTracer.ts +32 -20
  110. package/src/Resource.ts +7 -6
  111. package/src/WebSdk.ts +9 -8
  112. package/src/internal/attributes.ts +2 -1
  113. package/src/internal/metrics.ts +6 -1
@@ -1 +1 @@
1
- {"version":3,"file":"WebSdk.js","names":["WebTracerProvider","Effect","constant","Layer","isNonEmpty","Logger","Metrics","Tracer","Resource","layerTracerProvider","processor","config","effect","OtelTracerProvider","gen","resource","acquireRelease","sync","provider","undefined","spanProcessors","Array","isArray","ignore","promise","forceFlush","then","shutdown","layer","evaluate","unwrap","isEffect","ResourceLive","TracerLive","spanProcessor","provide","tracerConfig","empty","LoggerLive","logRecordProcessor","mergeWithExisting","loggerMergeWithExisting","layerLoggerProvider","loggerProviderConfig","MetricsLive","metricReader","temporality","metricTemporality","mergeAll","pipe","provideMerge"],"sources":["../src/WebSdk.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"WebSdk.js","names":[],"sources":["../src/WebSdk.ts"],"sourcesContent":[null],"mappings":"AAeA,SAAS,iBAAiB,QAAQ,8BAA8B;AAEhE,OAAO,KAAK,MAAM,MAAM,eAAe;AACvC,SAAS,QAAQ,QAAsB,iBAAiB;AACxD,OAAO,KAAK,KAAK,MAAM,cAAc;AACrC,SAAS,UAAU,QAAQ,yBAAyB;AACpD,OAAO,KAAK,MAAM,MAAM,iBAAiB;AACzC,OAAO,KAAK,OAAO,MAAM,kBAAkB;AAC3C,OAAO,KAAK,MAAM,MAAM,iBAAiB;AACzC,OAAO,KAAK,QAAQ,MAAM,eAAe;AAuBzC;;;;;;AAMA,OAAO,MAAM,mBAAmB,GAAG,CACjC,SAA+D,EAC/D,MAAuC,KAEvC,KAAK,CAAC,MAAM,CACV,MAAM,CAAC,kBAAkB,EACzB,MAAM,CAAC,GAAG,CAAC,aAAS;EAClB,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,QAAQ;EACzC,OAAO,OAAO,MAAM,CAAC,cAAc,CACjC,MAAM,CAAC,IAAI,CAAC,MAAK;IACf,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC;MACrC,IAAI,MAAM,IAAI,SAAS,CAAC;MACxB,QAAQ;MACR,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,GAAI,SAAiB,GAAG,CAAC,SAAS;KAC3E,CAAC;IACF,OAAO,QAAQ;EACjB,CAAC,CAAC,EACD,QAAQ,IACP,MAAM,CAAC,OAAO,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAC9C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAC1D,MAAM,CAAC,MAAM,CACd,CACJ;AACH,CAAC,CAAC,CACH;AAEH;;;;;;;;;;;;;;;;;;;;;;;AAuBA,OAAO,MAAM,KAAK,GAkDhB,QAAyE,IAEzE,KAAK,CAAC,MAAM,CACV,MAAM,CAAC,GAAG,CAAC,aAAS;EAClB,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAC3C,QAAwC,GACxC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;EAEzB,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;EAErD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,GAChD,KAAK,CAAC,OAAO,CACb,MAAM,CAAC,KAAK,EACZ,mBAAmB,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,YAAY,CAAC,CAC/D,GACC,KAAK,CAAC,KAAK;EAEf,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,GACrD,KAAK,CAAC,OAAO,CACb,MAAM,CAAC,KAAK,CAAC;IAAE,iBAAiB,EAAE,MAAM,CAAC;EAAuB,CAAE,CAAC,EACnE,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC,CACnF,GACC,KAAK,CAAC,KAAK;EAEf,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,GAChD,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;IAC7C,WAAW,EAAE,MAAM,CAAC;GACrB,CAAC,GACA,KAAK,CAAC,KAAK;EAEf,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,IAAI,CAChE,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,CAClC;AACH,CAAC,CAAC,CACH","ignoreList":[]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["NodeSdk","OtelLogger","OtelMetrics","OtelTracer","Resource","WebSdk"],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,cAAc;AAEvC;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,WAAW,MAAM,kBAAkB;AAE/C;;;AAGA,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAKC,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAKC,MAAM,MAAM,aAAa","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAIA;AAEA;;;AAGA,OAAO,KAAK,OAAO,MAAM,cAAc;AAEvC;;;AAGA,OAAO,KAAK,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAK,WAAW,MAAM,kBAAkB;AAE/C;;;AAGA,OAAO,KAAK,UAAU,MAAM,iBAAiB;AAE7C;;;AAGA,OAAO,KAAK,QAAQ,MAAM,eAAe;AAEzC;;;AAGA,OAAO,KAAK,MAAM,MAAM,aAAa","ignoreList":[]}
@@ -1,4 +1,5 @@
1
1
  import * as Inspectable from "effect/Inspectable";
2
+ import * as Rec from "effect/Record";
2
3
  const bigint1e9 = /*#__PURE__*/BigInt(1_000_000_000);
3
4
  /** @internal */
4
5
  export const nanosToHrTime = timestamp => {
@@ -8,7 +9,7 @@ export const nanosToHrTime = timestamp => {
8
9
  export const recordToAttributes = record => {
9
10
  const attributes = {};
10
11
  for (const [key, value] of Object.entries(record)) {
11
- attributes[key] = unknownToAttributeValue(value);
12
+ Rec.assignProperty(attributes, key, unknownToAttributeValue(value));
12
13
  }
13
14
  return attributes;
14
15
  };
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.js","names":["Inspectable","bigint1e9","BigInt","nanosToHrTime","timestamp","Number","recordToAttributes","record","attributes","key","value","Object","entries","unknownToAttributeValue","toString","toStringUnknown"],"sources":["../../src/internal/attributes.ts"],"sourcesContent":[null],"mappings":"AACA,OAAO,KAAKA,WAAW,MAAM,oBAAoB;AAEjD,MAAMC,SAAS,gBAAGC,MAAM,CAAC,aAAa,CAAC;AAEvC;AACA,OAAO,MAAMC,aAAa,GAAIC,SAAiB,IAAiB;EAC9D,OAAO,CAACC,MAAM,CAACD,SAAS,GAAGH,SAAS,CAAC,EAAEI,MAAM,CAACD,SAAS,GAAGH,SAAS,CAAC,CAAC;AACvE,CAAC;AAED;AACA,OAAO,MAAMK,kBAAkB,GAAIC,MAA+B,IAAqB;EACrF,MAAMC,UAAU,GAAoB,EAAE;EACtC,KAAK,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,IAAIC,MAAM,CAACC,OAAO,CAACL,MAAM,CAAC,EAAE;IACjDC,UAAU,CAACC,GAAG,CAAC,GAAGI,uBAAuB,CAACH,KAAK,CAAC;EAClD;EACA,OAAOF,UAAU;AACnB,CAAC;AAED;AACA,OAAO,MAAMK,uBAAuB,GAAIH,KAAc,IAAyB;EAC7E,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,OAAOA,KAAK,KAAK,SAAS,EAAE;IACxF,OAAOA,KAAK;EACd,CAAC,MAAM,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;IACpC,OAAOA,KAAK,CAACI,QAAQ,EAAE;EACzB;EACA,OAAOd,WAAW,CAACe,eAAe,CAACL,KAAK,CAAC;AAC3C,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"attributes.js","names":[],"sources":["../../src/internal/attributes.ts"],"sourcesContent":[null],"mappings":"AACA,OAAO,KAAK,WAAW,MAAM,oBAAoB;AACjD,OAAO,KAAK,GAAG,MAAM,eAAe;AAEpC,MAAM,SAAS,gBAAG,MAAM,CAAC,aAAa,CAAC;AAEvC;AACA,OAAO,MAAM,aAAa,GAAI,SAAiB,IAAiB;EAC9D,OAAO,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;AACvE,CAAC;AAED;AACA,OAAO,MAAM,kBAAkB,GAAI,MAA+B,IAAqB;EACrF,MAAM,UAAU,GAAoB,EAAE;EACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IACjD,GAAG,CAAC,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC;EACrE;EACA,OAAO,UAAU;AACnB,CAAC;AAED;AACA,OAAO,MAAM,uBAAuB,GAAI,KAAc,IAAyB;EAC7E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;IACxF,OAAO,KAAK;EACd,CAAC,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IACpC,OAAO,KAAK,CAAC,QAAQ,EAAE;EACzB;EACA,OAAO,WAAW,CAAC,eAAe,CAAC,KAAK,CAAC;AAC3C,CAAC","ignoreList":[]}
@@ -2,6 +2,7 @@ import { ValueType } from "@opentelemetry/api";
2
2
  import { AggregationTemporality, DataPointType, InstrumentType } from "@opentelemetry/sdk-metrics";
3
3
  import * as Arr from "effect/Array";
4
4
  import * as Metric from "effect/Metric";
5
+ import * as Rec from "effect/Record";
5
6
  const sdkName = "@effect/opentelemetry/Metrics";
6
7
  /** @internal */
7
8
  export class MetricProducerImpl {
@@ -27,6 +28,9 @@ export class MetricProducerImpl {
27
28
  this.previousFrequencyState = new Map();
28
29
  this.previousSummaryState = new Map();
29
30
  }
31
+ fork() {
32
+ return new MetricProducerImpl(this.resource, this.context, this.temporality);
33
+ }
30
34
  startTimeFor(name, hrTime) {
31
35
  if (this.startTimes.has(name)) {
32
36
  return this.startTimes.get(name);
@@ -49,7 +53,7 @@ export class MetricProducerImpl {
49
53
  for (let i = 0, len = snapshot.length; i < len; i++) {
50
54
  const state = snapshot[i];
51
55
  const attributes = state.attributes ? Arr.reduce(Object.entries(state.attributes), {}, (acc, [key, value]) => {
52
- acc[key] = String(value);
56
+ Rec.assignProperty(acc, key, String(value));
53
57
  return acc;
54
58
  }) : {};
55
59
  const metricKey = makeMetricKey(state.id, state.attributes);
@@ -1 +1 @@
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":"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","ignoreList":[]}
1
+ {"version":3,"file":"metrics.js","names":[],"sources":["../../src/internal/metrics.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.js","names":["isNonEmpty","a","undefined","Array","isArray","length"],"sources":["../../src/internal/utilities.ts"],"sourcesContent":[null],"mappings":"AAEA;AACA,OAAO,MAAMA,UAAU,GAAOC,CAAmC,IAC/DA,CAAC,KAAKC,SAAS,IAAI,EAAEC,KAAK,CAACC,OAAO,CAACH,CAAC,CAAC,IAAIA,CAAC,CAACI,MAAM,KAAK,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"utilities.js","names":[],"sources":["../../src/internal/utilities.ts"],"sourcesContent":[null],"mappings":"AAEA;AACA,OAAO,MAAM,UAAU,GAAO,CAAmC,IAC/D,CAAC,KAAK,SAAS,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,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.99",
4
+ "version": "4.0.0-rc.109",
5
5
  "license": "MIT",
6
6
  "description": "OpenTelemetry integration for Effect",
7
7
  "homepage": "https://effect.website",
@@ -40,6 +40,7 @@
40
40
  ".": "./dist/index.js",
41
41
  "./*": "./dist/*.js",
42
42
  "./internal/*": null,
43
+ "./index": null,
43
44
  "./*/index": null
44
45
  },
45
46
  "files": [
@@ -47,23 +48,26 @@
47
48
  "dist/**/*.js",
48
49
  "dist/**/*.js.map",
49
50
  "dist/**/*.d.ts",
50
- "dist/**/*.d.ts.map"
51
+ "dist/**/*.d.ts.map",
52
+ "AGENTS.md",
53
+ "CLAUDE.md",
54
+ "ai-docs/**/*"
51
55
  ],
52
56
  "publishConfig": {
53
57
  "access": "public",
54
58
  "provenance": true
55
59
  },
56
60
  "peerDependencies": {
57
- "@opentelemetry/api": "^1.9",
61
+ "@opentelemetry/api": ">=1.9.0 <2.0.0",
58
62
  "@opentelemetry/api-logs": ">=0.203.0 <0.300.0",
59
- "@opentelemetry/resources": "^2.0.0",
63
+ "@opentelemetry/resources": ">=2.0.0 <3.0.0",
60
64
  "@opentelemetry/sdk-logs": ">=0.203.0 <0.300.0",
61
- "@opentelemetry/sdk-metrics": "^2.0.0",
62
- "@opentelemetry/sdk-trace-base": "^2.0.0",
63
- "@opentelemetry/sdk-trace-node": "^2.0.0",
64
- "@opentelemetry/sdk-trace-web": "^2.0.0",
65
- "@opentelemetry/semantic-conventions": "^1.33.0",
66
- "effect": "^4.0.0-beta.99"
65
+ "@opentelemetry/sdk-metrics": ">=2.0.0 <3.0.0",
66
+ "@opentelemetry/sdk-trace-base": ">=2.0.0 <3.0.0",
67
+ "@opentelemetry/sdk-trace-node": ">=2.0.0 <3.0.0",
68
+ "@opentelemetry/sdk-trace-web": ">=2.0.0 <3.0.0",
69
+ "@opentelemetry/semantic-conventions": ">=1.33.0 <2.0.0",
70
+ "effect": "^4.0.0-rc.109"
67
71
  },
68
72
  "peerDependenciesMeta": {
69
73
  "@opentelemetry/api": {
@@ -111,8 +115,6 @@
111
115
  "codegen": "effect-utils codegen",
112
116
  "build": "tsc -b tsconfig.json && pnpm babel",
113
117
  "babel": "babel dist --plugins annotate-pure-calls --out-dir dist --source-maps",
114
- "check": "tsc -b tsconfig.json",
115
- "test": "vitest",
116
- "coverage": "vitest --coverage"
118
+ "check": "tsc -b tsconfig.json"
117
119
  }
118
120
  }
package/src/NodeSdk.ts CHANGED
@@ -74,7 +74,7 @@ export const layerTracerProvider = (
74
74
  return provider
75
75
  }),
76
76
  (provider) =>
77
- Effect.promise(() => provider.forceFlush().then(() => provider.shutdown())).pipe(
77
+ Effect.promise(() => provider.forceFlush().finally(() => provider.shutdown())).pipe(
78
78
  Effect.ignore,
79
79
  Effect.interruptible,
80
80
  Effect.timeoutOption(config?.shutdownTimeout ?? 3000)
@@ -164,9 +164,9 @@ export const layer: {
164
164
  ? evaluate as Effect.Effect<Configuration>
165
165
  : Effect.sync(evaluate)
166
166
 
167
- const ResourceLive = Resource.layerFromEnv(config.resource && Resource.configToAttributes(config.resource))
167
+ const ResourceLayer = Resource.layerFromEnv(config.resource && Resource.configToAttributes(config.resource))
168
168
 
169
- const TracerLive = isNonEmpty(config.spanProcessor)
169
+ const TracerLayer = isNonEmpty(config.spanProcessor)
170
170
  ? Layer.provide(
171
171
  Tracer.layer,
172
172
  layerTracerProvider(config.spanProcessor, {
@@ -176,14 +176,14 @@ export const layer: {
176
176
  )
177
177
  : Layer.empty
178
178
 
179
- const MetricsLive = isNonEmpty(config.metricReader)
179
+ const MetricsLayer = isNonEmpty(config.metricReader)
180
180
  ? Metrics.layer(constant(config.metricReader), {
181
181
  shutdownTimeout: config.shutdownTimeout,
182
182
  temporality: config.metricTemporality
183
183
  })
184
184
  : Layer.empty
185
185
 
186
- const LoggerLive = isNonEmpty(config.logRecordProcessor)
186
+ const LoggerLayer = isNonEmpty(config.logRecordProcessor)
187
187
  ? Layer.provide(
188
188
  Logger.layer({ mergeWithExisting: config.loggerMergeWithExisting }),
189
189
  Logger.layerLoggerProvider(config.logRecordProcessor, {
@@ -193,8 +193,8 @@ export const layer: {
193
193
  )
194
194
  : Layer.empty
195
195
 
196
- return Layer.mergeAll(TracerLive, MetricsLive, LoggerLive).pipe(
197
- Layer.provideMerge(ResourceLive)
196
+ return Layer.mergeAll(TracerLayer, MetricsLayer, LoggerLayer).pipe(
197
+ Layer.provideMerge(ResourceLayer)
198
198
  )
199
199
  })
200
200
  )
package/src/OtelLogger.ts CHANGED
@@ -21,6 +21,7 @@ import * as Layer from "effect/Layer"
21
21
  import * as Logger from "effect/Logger"
22
22
  import type * as LogLevel from "effect/LogLevel"
23
23
  import * as Predicate from "effect/Predicate"
24
+ import * as Rec from "effect/Record"
24
25
  import * as References from "effect/References"
25
26
  import * as Tracer from "effect/Tracer"
26
27
  import { nanosToHrTime, unknownToAttributeValue } from "./internal/attributes.ts"
@@ -90,6 +91,10 @@ export const make: Effect.Effect<
90
91
  fiberId: options.fiber.id
91
92
  }
92
93
 
94
+ for (const [key, value] of Object.entries(options.fiber.getRef(References.CurrentLogAnnotations))) {
95
+ Rec.assignProperty(attributes, key, unknownToAttributeValue(value))
96
+ }
97
+
93
98
  const span = Context.getOrUndefined(options.fiber.context, Tracer.ParentSpan)
94
99
 
95
100
  if (Predicate.isNotUndefined(span)) {
@@ -97,9 +102,6 @@ export const make: Effect.Effect<
97
102
  attributes.traceId = span.traceId
98
103
  }
99
104
 
100
- for (const [key, value] of Object.entries(options.fiber.getRef(References.CurrentLogAnnotations))) {
101
- attributes[key] = unknownToAttributeValue(value)
102
- }
103
105
  const now = options.date.getTime()
104
106
  for (const [label, startTime] of options.fiber.getRef(References.CurrentLogSpans)) {
105
107
  attributes[`logSpan.${label}`] = `${now - startTime}ms`
@@ -183,7 +185,7 @@ export const layerLoggerProvider = (
183
185
  })
184
186
  ),
185
187
  (provider) =>
186
- Effect.promise(() => provider.forceFlush().then(() => provider.shutdown())).pipe(
188
+ Effect.promise(() => provider.forceFlush().finally(() => provider.shutdown())).pipe(
187
189
  Effect.ignore,
188
190
  Effect.interruptible,
189
191
  Effect.timeoutOption(config?.shutdownTimeout ?? 3000)
@@ -65,7 +65,7 @@ export const makeProducer = (temporality?: TemporalityPreference): Effect.Effect
65
65
  /**
66
66
  * Registers a metric producer with one or more metric readers.
67
67
  *
68
- * @category constructors
68
+ * @category resource management
69
69
  * @since 4.0.0
70
70
  */
71
71
  export const registerProducer = (
@@ -79,7 +79,7 @@ export const registerProducer = (
79
79
  Effect.sync(() => {
80
80
  const reader = metricReader()
81
81
  const readers: Array<MetricReader> = Array.isArray(reader) ? reader : [reader] as any
82
- readers.forEach((reader) => reader.setMetricProducer(self))
82
+ readers.forEach((reader) => reader.setMetricProducer(self instanceof MetricProducerImpl ? self.fork() : self))
83
83
  return readers
84
84
  }),
85
85
  (readers) =>
@@ -97,29 +97,40 @@ export const registerProducer = (
97
97
  /**
98
98
  * Creates a Layer that registers a metric producer with metric readers.
99
99
  *
100
- * **Example** (Creating a metrics layer with temporality)
101
- *
102
- * ```ts
103
- * import { OtelMetrics } from "@effect/opentelemetry"
104
- * import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics"
105
- * import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http"
106
- *
107
- * const metricExporter = new OTLPMetricExporter({ url: "<your-otel-url>" })
108
- *
109
- * // Use delta temporality for backends like Datadog or Dynatrace
110
- * const metricsLayer = OtelMetrics.layer(
111
- * () => new PeriodicExportingMetricReader({
112
- * exporter: metricExporter,
113
- * exportIntervalMillis: 10000
114
- * }),
115
- * { temporality: "delta" }
100
+ * **Example** (Exporting delta metrics)
101
+ *
102
+ * ```ts import.meta.vitest
103
+ * import { OtelMetrics, Resource } from "@effect/opentelemetry"
104
+ * import {
105
+ * AggregationTemporality,
106
+ * InMemoryMetricExporter,
107
+ * PeriodicExportingMetricReader
108
+ * } from "@opentelemetry/sdk-metrics"
109
+ * import { Effect, Layer, Metric } from "effect"
110
+ *
111
+ * const exporter = new InMemoryMetricExporter(AggregationTemporality.DELTA)
112
+ * const reader = new PeriodicExportingMetricReader({
113
+ * exporter,
114
+ * exportIntervalMillis: 60_000
115
+ * })
116
+ * const metricsLayer = OtelMetrics.layer(() => reader, { temporality: "delta" }).pipe(
117
+ * Layer.provide(Resource.layerEmpty)
116
118
  * )
117
119
  *
118
- * // Use cumulative temporality for backends like Prometheus (default)
119
- * const cumulativeLayer = OtelMetrics.layer(
120
- * () => new PeriodicExportingMetricReader({ exporter: metricExporter }),
121
- * { temporality: "cumulative" }
120
+ * const program = Effect.gen(function*() {
121
+ * yield* Metric.update(Metric.counter("docs.requests", { incremental: true }), 2)
122
+ * yield* Effect.promise(() => reader.forceFlush())
123
+ *
124
+ * const metric = exporter.getMetrics()[0]?.scopeMetrics[0]?.metrics.find(
125
+ * (metric) => metric.descriptor.name === "docs.requests"
126
+ * )
127
+ * return [metric?.descriptor.name, metric?.aggregationTemporality, metric?.dataPoints[0]?.value] as const
128
+ * }).pipe(
129
+ * Effect.provide(metricsLayer),
130
+ * Effect.provideService(Metric.MetricRegistry, new Map())
122
131
  * )
132
+ *
133
+ * await Effect.runPromise(program) // => ["docs.requests", AggregationTemporality.DELTA, 2]
123
134
  * ```
124
135
  *
125
136
  * @category layers
package/src/OtelTracer.ts CHANGED
@@ -130,24 +130,20 @@ export const makeExternalSpan = (options: {
130
130
  readonly traceFlags?: number | undefined
131
131
  readonly traceState?: string | Otel.TraceState | undefined
132
132
  }): Tracer.ExternalSpan => {
133
- const annotations = Context.mutate(Context.empty(), (annotations) => {
134
- let next = annotations
135
- if (options.traceFlags !== undefined) {
136
- next = Context.add(next, OtelTraceFlags, options.traceFlags)
137
- }
133
+ let annotations = Context.empty()
134
+ if (options.traceFlags !== undefined) {
135
+ annotations = Context.add(annotations, OtelTraceFlags, options.traceFlags)
136
+ }
138
137
 
139
- if (typeof options.traceState === "string") {
140
- try {
141
- next = Context.add(next, OtelTraceState, Otel.createTraceState(options.traceState))
142
- } catch {
143
- //
144
- }
145
- } else if (options.traceState) {
146
- next = Context.add(next, OtelTraceState, options.traceState)
138
+ if (typeof options.traceState === "string") {
139
+ try {
140
+ annotations = Context.add(annotations, OtelTraceState, Otel.createTraceState(options.traceState))
141
+ } catch {
142
+ //
147
143
  }
148
-
149
- return next
150
- })
144
+ } else if (options.traceState) {
145
+ annotations = Context.add(annotations, OtelTraceState, options.traceState)
146
+ }
151
147
 
152
148
  return {
153
149
  _tag: "ExternalSpan",
@@ -314,7 +310,7 @@ const makeOtelSpan = (span: Tracer.Span, clock: Clock.Clock): Otel.Span => {
314
310
  return self
315
311
  },
316
312
  setStatus(status) {
317
- exit = Otel.SpanStatusCode.ERROR
313
+ exit = status.code === Otel.SpanStatusCode.ERROR
318
314
  ? Exit.die(status.message ?? "Unknown error")
319
315
  : Exit.void
320
316
  return self
@@ -535,18 +531,23 @@ export class OtelSpan implements Tracer.Span {
535
531
  const isSampled = (traceFlags: Otel.TraceFlags): boolean =>
536
532
  (traceFlags & Otel.TraceFlags.SAMPLED) === Otel.TraceFlags.SAMPLED
537
533
 
534
+ class OtelParentSpanContext extends Context.Service<
535
+ OtelParentSpanContext,
536
+ Otel.SpanContext
537
+ >()("@effect/opentelemetry/Tracer/OtelParentSpanContext") {}
538
+
538
539
  const getOtelParent = (
539
540
  tracer: Otel.TraceAPI,
540
541
  context: Otel.Context,
541
542
  annotations: Context.Context<never>
542
543
  ): Option.Option<Tracer.AnySpan> => {
543
- const otelParent = tracer.getSpan(context)?.spanContext()
544
+ const otelParent = tracer.getSpanContext(context)
544
545
  if (!otelParent) return Option.none()
545
546
  return Option.some(Tracer.externalSpan({
546
547
  spanId: otelParent.spanId,
547
548
  traceId: otelParent.traceId,
548
- sampled: (otelParent.traceFlags & 1) === 1,
549
- annotations
549
+ sampled: isSampled(otelParent.traceFlags),
550
+ annotations: Context.add(annotations, OtelParentSpanContext, otelParent)
550
551
  }))
551
552
  }
552
553
 
@@ -554,6 +555,17 @@ const makeSpanContext = (
554
555
  span: Tracer.AnySpan,
555
556
  annotations?: Context.Context<never>
556
557
  ): Otel.SpanContext => {
558
+ const otelParent = Context.getOrUndefined(span.annotations, OtelParentSpanContext)
559
+ if (otelParent !== undefined) {
560
+ if (annotations === undefined) return otelParent
561
+ const traceFlags = extractTraceService(span, annotations, OtelTraceFlags)
562
+ const traceState = extractTraceService(span, annotations, OtelTraceState)
563
+ return {
564
+ ...otelParent,
565
+ traceFlags: traceFlags ?? otelParent.traceFlags,
566
+ traceState: traceState ?? otelParent.traceState!
567
+ }
568
+ }
557
569
  const traceFlags = makeTraceFlags(span, annotations)
558
570
  const traceState = makeTraceState(span, annotations)!
559
571
  return ({
package/src/Resource.ts CHANGED
@@ -18,6 +18,7 @@ import * as Config from "effect/Config"
18
18
  import * as Context from "effect/Context"
19
19
  import * as Effect from "effect/Effect"
20
20
  import * as Layer from "effect/Layer"
21
+ import * as Rec from "effect/Record"
21
22
 
22
23
  /**
23
24
  * Service tag for OpenTelemetry metadata attached to emitted telemetry.
@@ -74,7 +75,7 @@ export const layer = (config: {
74
75
  * @see {@link layer} for creating a `Resource` layer from explicit metadata
75
76
  * @see {@link layerFromEnv} for merging attributes with OpenTelemetry environment variables
76
77
  *
77
- * @category configuration
78
+ * @category converting
78
79
  * @since 4.0.0
79
80
  */
80
81
  export const configToAttributes = (options: {
@@ -120,7 +121,7 @@ export const layerFromEnv = (
120
121
  if (parts.length !== 2) {
121
122
  return acc
122
123
  }
123
- acc[parts[0].trim()] = parts[1].trim()
124
+ Rec.assignProperty(acc, parts[0].trim(), parts[1].trim())
124
125
  return acc
125
126
  })
126
127
  })
@@ -128,10 +129,10 @@ export const layerFromEnv = (
128
129
  if (serviceName._tag === "Some") {
129
130
  attributes[OtelSemConv.ATTR_SERVICE_NAME] = serviceName.value
130
131
  }
131
- if (additionalAttributes) {
132
- Object.assign(attributes, additionalAttributes)
133
- }
134
- return Resources.resourceFromAttributes(attributes)
132
+ return Resources.resourceFromAttributes({
133
+ ...attributes,
134
+ ...additionalAttributes
135
+ })
135
136
  }).pipe(Effect.orDie)
136
137
  )
137
138
 
package/src/WebSdk.ts CHANGED
@@ -69,8 +69,9 @@ export const layerTracerProvider = (
69
69
  return provider
70
70
  }),
71
71
  (provider) =>
72
- Effect.ignore(
73
- Effect.promise(() => provider.forceFlush().then(() => provider.shutdown()))
72
+ Effect.promise(() => provider.forceFlush()).pipe(
73
+ Effect.ensuring(Effect.promise(() => provider.shutdown())),
74
+ Effect.ignore
74
75
  )
75
76
  )
76
77
  })
@@ -157,30 +158,30 @@ export const layer: {
157
158
  ? evaluate as Effect.Effect<Configuration>
158
159
  : Effect.sync(evaluate)
159
160
 
160
- const ResourceLive = Resource.layer(config.resource)
161
+ const ResourceLayer = Resource.layer(config.resource)
161
162
 
162
- const TracerLive = isNonEmpty(config.spanProcessor)
163
+ const TracerLayer = isNonEmpty(config.spanProcessor)
163
164
  ? Layer.provide(
164
165
  Tracer.layer,
165
166
  layerTracerProvider(config.spanProcessor, config.tracerConfig)
166
167
  )
167
168
  : Layer.empty
168
169
 
169
- const LoggerLive = isNonEmpty(config.logRecordProcessor)
170
+ const LoggerLayer = isNonEmpty(config.logRecordProcessor)
170
171
  ? Layer.provide(
171
172
  Logger.layer({ mergeWithExisting: config.loggerMergeWithExisting }),
172
173
  Logger.layerLoggerProvider(config.logRecordProcessor, config.loggerProviderConfig)
173
174
  )
174
175
  : Layer.empty
175
176
 
176
- const MetricsLive = isNonEmpty(config.metricReader)
177
+ const MetricsLayer = isNonEmpty(config.metricReader)
177
178
  ? Metrics.layer(constant(config.metricReader), {
178
179
  temporality: config.metricTemporality
179
180
  })
180
181
  : Layer.empty
181
182
 
182
- return Layer.mergeAll(TracerLive, MetricsLive, LoggerLive).pipe(
183
- Layer.provideMerge(ResourceLive)
183
+ return Layer.mergeAll(TracerLayer, MetricsLayer, LoggerLayer).pipe(
184
+ Layer.provideMerge(ResourceLayer)
184
185
  )
185
186
  })
186
187
  )
@@ -1,5 +1,6 @@
1
1
  import type * as Otel from "@opentelemetry/api"
2
2
  import * as Inspectable from "effect/Inspectable"
3
+ import * as Rec from "effect/Record"
3
4
 
4
5
  const bigint1e9 = BigInt(1_000_000_000)
5
6
 
@@ -12,7 +13,7 @@ export const nanosToHrTime = (timestamp: bigint): Otel.HrTime => {
12
13
  export const recordToAttributes = (record: Record<string, unknown>): Otel.Attributes => {
13
14
  const attributes: Otel.Attributes = {}
14
15
  for (const [key, value] of Object.entries(record)) {
15
- attributes[key] = unknownToAttributeValue(value)
16
+ Rec.assignProperty(attributes, key, unknownToAttributeValue(value))
16
17
  }
17
18
  return attributes
18
19
  }
@@ -13,6 +13,7 @@ import type { InstrumentDescriptor } from "@opentelemetry/sdk-metrics/build/src/
13
13
  import * as Arr from "effect/Array"
14
14
  import type * as Context from "effect/Context"
15
15
  import * as Metric from "effect/Metric"
16
+ import * as Rec from "effect/Record"
16
17
  import type * as Metrics from "../OtelMetrics.ts"
17
18
 
18
19
  const sdkName = "@effect/opentelemetry/Metrics"
@@ -64,6 +65,10 @@ export class MetricProducerImpl implements MetricProducer {
64
65
  this.previousSummaryState = new Map()
65
66
  }
66
67
 
68
+ fork(): MetricProducerImpl {
69
+ return new MetricProducerImpl(this.resource, this.context, this.temporality)
70
+ }
71
+
67
72
  startTimeFor(name: string, hrTime: HrTime) {
68
73
  if (this.startTimes.has(name)) {
69
74
  return this.startTimes.get(name)!
@@ -94,7 +99,7 @@ export class MetricProducerImpl implements MetricProducer {
94
99
  const state = snapshot[i]
95
100
  const attributes = state.attributes
96
101
  ? Arr.reduce(Object.entries(state.attributes), {} as Record<string, string>, (acc, [key, value]) => {
97
- acc[key] = String(value)
102
+ Rec.assignProperty(acc, key, String(value))
98
103
  return acc
99
104
  })
100
105
  : {}