@effect/opentelemetry 0.13.1 → 0.15.0

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 (108) hide show
  1. package/Metrics/dist/effect-opentelemetry-Metrics.cjs.d.mts +2 -0
  2. package/Metrics/dist/effect-opentelemetry-Metrics.cjs.d.mts.map +1 -0
  3. package/Metrics/dist/effect-opentelemetry-Metrics.cjs.d.ts +2 -0
  4. package/Metrics/dist/effect-opentelemetry-Metrics.cjs.d.ts.map +1 -0
  5. package/Metrics/dist/effect-opentelemetry-Metrics.cjs.dev.js +293 -0
  6. package/Metrics/dist/effect-opentelemetry-Metrics.cjs.js +7 -0
  7. package/Metrics/dist/effect-opentelemetry-Metrics.cjs.mjs +5 -0
  8. package/Metrics/dist/effect-opentelemetry-Metrics.cjs.prod.js +293 -0
  9. package/Metrics/dist/effect-opentelemetry-Metrics.esm.js +24 -0
  10. package/Metrics/package.json +4 -0
  11. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.d.mts +2 -0
  12. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.d.mts.map +1 -0
  13. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.d.ts +2 -0
  14. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.d.ts.map +1 -0
  15. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.dev.js +63 -0
  16. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.js +7 -0
  17. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.mjs +4 -0
  18. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.cjs.prod.js +63 -0
  19. package/NodeSdk/dist/effect-opentelemetry-NodeSdk.esm.js +34 -0
  20. package/NodeSdk/package.json +4 -0
  21. package/Resource/dist/effect-opentelemetry-Resource.cjs.d.mts +2 -0
  22. package/Resource/dist/effect-opentelemetry-Resource.cjs.d.mts.map +1 -0
  23. package/Resource/dist/effect-opentelemetry-Resource.cjs.d.ts +2 -0
  24. package/Resource/dist/effect-opentelemetry-Resource.cjs.d.ts.map +1 -0
  25. package/Resource/dist/effect-opentelemetry-Resource.cjs.dev.js +64 -0
  26. package/Resource/dist/effect-opentelemetry-Resource.cjs.js +7 -0
  27. package/Resource/dist/effect-opentelemetry-Resource.cjs.mjs +4 -0
  28. package/Resource/dist/effect-opentelemetry-Resource.cjs.prod.js +64 -0
  29. package/{mjs/Resource.mjs → Resource/dist/effect-opentelemetry-Resource.esm.js} +16 -7
  30. package/Resource/package.json +4 -0
  31. package/Tracer/dist/effect-opentelemetry-Tracer.cjs.d.mts +2 -0
  32. package/Tracer/dist/effect-opentelemetry-Tracer.cjs.d.mts.map +1 -0
  33. package/Tracer/dist/effect-opentelemetry-Tracer.cjs.d.ts +2 -0
  34. package/Tracer/dist/effect-opentelemetry-Tracer.cjs.d.ts.map +1 -0
  35. package/Tracer/dist/effect-opentelemetry-Tracer.cjs.dev.js +243 -0
  36. package/Tracer/dist/effect-opentelemetry-Tracer.cjs.js +7 -0
  37. package/Tracer/dist/effect-opentelemetry-Tracer.cjs.mjs +10 -0
  38. package/Tracer/dist/effect-opentelemetry-Tracer.cjs.prod.js +243 -0
  39. package/Tracer/dist/effect-opentelemetry-Tracer.esm.js +54 -0
  40. package/Tracer/package.json +4 -0
  41. package/{Metrics.d.ts → dist/declarations/src/Metrics.d.ts} +4 -1
  42. package/dist/declarations/src/Metrics.d.ts.map +1 -0
  43. package/{NodeSdk.d.ts → dist/declarations/src/NodeSdk.d.ts} +1 -1
  44. package/dist/declarations/src/NodeSdk.d.ts.map +1 -0
  45. package/dist/declarations/src/Resource.d.ts.map +1 -0
  46. package/{Tracer.d.ts → dist/declarations/src/Tracer.d.ts} +4 -1
  47. package/dist/declarations/src/Tracer.d.ts.map +1 -0
  48. package/dist/declarations/src/index.d.ts +17 -0
  49. package/dist/declarations/src/index.d.ts.map +1 -0
  50. package/dist/effect-opentelemetry.cjs.d.mts +2 -0
  51. package/dist/effect-opentelemetry.cjs.d.mts.map +1 -0
  52. package/dist/effect-opentelemetry.cjs.d.ts +2 -0
  53. package/dist/effect-opentelemetry.cjs.d.ts.map +1 -0
  54. package/dist/effect-opentelemetry.cjs.dev.js +38 -0
  55. package/dist/effect-opentelemetry.cjs.js +7 -0
  56. package/dist/effect-opentelemetry.cjs.mjs +6 -0
  57. package/dist/effect-opentelemetry.cjs.prod.js +38 -0
  58. package/dist/effect-opentelemetry.esm.js +8 -0
  59. package/{mjs/internal/metrics.mjs → internal/metrics.esm.js} +26 -20
  60. package/{mjs/internal/tracer.mjs → internal/tracer.esm.js} +37 -24
  61. package/package.json +130 -30
  62. package/src/Metrics.ts +2 -2
  63. package/src/NodeSdk.ts +1 -1
  64. package/src/Tracer.ts +2 -2
  65. package/src/internal/metrics.ts +6 -6
  66. package/src/internal/tracer.ts +1 -1
  67. package/Metrics.d.ts.map +0 -1
  68. package/Metrics.js +0 -29
  69. package/Metrics.js.map +0 -1
  70. package/NodeSdk.d.ts.map +0 -1
  71. package/NodeSdk.js +0 -36
  72. package/NodeSdk.js.map +0 -1
  73. package/Resource.d.ts.map +0 -1
  74. package/Resource.js +0 -39
  75. package/Resource.js.map +0 -1
  76. package/Tracer.d.ts.map +0 -1
  77. package/Tracer.js +0 -54
  78. package/Tracer.js.map +0 -1
  79. package/index.d.ts +0 -17
  80. package/index.d.ts.map +0 -1
  81. package/index.js +0 -17
  82. package/index.js.map +0 -1
  83. package/internal/metrics.d.ts +0 -2
  84. package/internal/metrics.d.ts.map +0 -1
  85. package/internal/metrics.js +0 -242
  86. package/internal/metrics.js.map +0 -1
  87. package/internal/tracer.d.ts +0 -2
  88. package/internal/tracer.d.ts.map +0 -1
  89. package/internal/tracer.js +0 -147
  90. package/internal/tracer.js.map +0 -1
  91. package/mjs/Metrics.mjs +0 -20
  92. package/mjs/Metrics.mjs.map +0 -1
  93. package/mjs/NodeSdk.mjs +0 -25
  94. package/mjs/NodeSdk.mjs.map +0 -1
  95. package/mjs/Resource.mjs.map +0 -1
  96. package/mjs/Tracer.mjs +0 -45
  97. package/mjs/Tracer.mjs.map +0 -1
  98. package/mjs/index.mjs +0 -9
  99. package/mjs/index.mjs.map +0 -1
  100. package/mjs/internal/metrics.mjs.map +0 -1
  101. package/mjs/internal/tracer.mjs.map +0 -1
  102. package/tsconfig.base.json +0 -55
  103. package/tsconfig.build.json +0 -10
  104. package/tsconfig.examples.json +0 -11
  105. package/tsconfig.json +0 -8
  106. package/tsconfig.madge.json +0 -12
  107. package/tsconfig.test.json +0 -10
  108. /package/{Resource.d.ts → dist/declarations/src/Resource.d.ts} +0 -0
@@ -0,0 +1,2 @@
1
+ export * from "../../dist/declarations/src/Metrics.js";
2
+ //# sourceMappingURL=effect-opentelemetry-Metrics.cjs.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-opentelemetry-Metrics.cjs.d.mts","sourceRoot":"","sources":["../../dist/declarations/src/Metrics.d.ts"],"names":[],"mappings":"AAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "../../dist/declarations/src/Metrics";
2
+ //# sourceMappingURL=effect-opentelemetry-Metrics.cjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-opentelemetry-Metrics.cjs.d.ts","sourceRoot":"","sources":["../../dist/declarations/src/Metrics.d.ts"],"names":[],"mappings":"AAAA"}
@@ -0,0 +1,293 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var OtelApi = require('@opentelemetry/api');
6
+ var sdkMetrics = require('@opentelemetry/sdk-metrics');
7
+ var Effect = require('effect/Effect');
8
+ var HashSet = require('effect/HashSet');
9
+ var Layer = require('effect/Layer');
10
+ var Metric = require('effect/Metric');
11
+ var MetricKeyType = require('effect/MetricKeyType');
12
+ var MetricState = require('effect/MetricState');
13
+ var Option = require('effect/Option');
14
+ var Resource_dist_effectOpentelemetryResource = require('../../Resource/dist/effect-opentelemetry-Resource.cjs.dev.js');
15
+ require('@opentelemetry/resources');
16
+ require('@opentelemetry/semantic-conventions');
17
+ require('effect/Context');
18
+
19
+ function _interopNamespace(e) {
20
+ if (e && e.__esModule) return e;
21
+ var n = Object.create(null);
22
+ if (e) {
23
+ Object.keys(e).forEach(function (k) {
24
+ if (k !== 'default') {
25
+ var d = Object.getOwnPropertyDescriptor(e, k);
26
+ Object.defineProperty(n, k, d.get ? d : {
27
+ enumerable: true,
28
+ get: function () { return e[k]; }
29
+ });
30
+ }
31
+ });
32
+ }
33
+ n["default"] = e;
34
+ return Object.freeze(n);
35
+ }
36
+
37
+ var Effect__namespace = /*#__PURE__*/_interopNamespace(Effect);
38
+ var HashSet__namespace = /*#__PURE__*/_interopNamespace(HashSet);
39
+ var Layer__namespace = /*#__PURE__*/_interopNamespace(Layer);
40
+ var Metric__namespace = /*#__PURE__*/_interopNamespace(Metric);
41
+ var MetricKeyType__namespace = /*#__PURE__*/_interopNamespace(MetricKeyType);
42
+ var MetricState__namespace = /*#__PURE__*/_interopNamespace(MetricState);
43
+ var Option__namespace = /*#__PURE__*/_interopNamespace(Option);
44
+
45
+ const sdkName = "@effect/opentelemetry/Metrics";
46
+
47
+ /** @internal */
48
+ class MetricProducerImpl {
49
+ constructor(resource) {
50
+ this.resource = resource;
51
+ }
52
+ collect(_options) {
53
+ const snapshot = Metric__namespace.unsafeSnapshot();
54
+ const hrTimeNow = currentHrTime();
55
+ const metricData = [];
56
+ for (const {
57
+ metricKey,
58
+ metricState
59
+ } of snapshot) {
60
+ const attributes = HashSet__namespace.reduce(metricKey.tags, {}, (acc, label) => {
61
+ acc[label.key] = label.value;
62
+ return acc;
63
+ });
64
+ const descriptor = descriptorFromKey(metricKey, attributes);
65
+ if (MetricState__namespace.isCounterState(metricState)) {
66
+ metricData.push({
67
+ dataPointType: sdkMetrics.DataPointType.SUM,
68
+ descriptor,
69
+ isMonotonic: descriptor.type === sdkMetrics.InstrumentType.COUNTER,
70
+ aggregationTemporality: sdkMetrics.AggregationTemporality.CUMULATIVE,
71
+ dataPoints: [{
72
+ startTime: hrTimeNow,
73
+ endTime: hrTimeNow,
74
+ attributes,
75
+ value: Number(metricState.count)
76
+ }]
77
+ });
78
+ } else if (MetricState__namespace.isGaugeState(metricState)) {
79
+ metricData.push({
80
+ dataPointType: sdkMetrics.DataPointType.GAUGE,
81
+ descriptor,
82
+ aggregationTemporality: sdkMetrics.AggregationTemporality.CUMULATIVE,
83
+ dataPoints: [{
84
+ startTime: hrTimeNow,
85
+ endTime: hrTimeNow,
86
+ attributes,
87
+ value: Number(metricState.value)
88
+ }]
89
+ });
90
+ } else if (MetricState__namespace.isHistogramState(metricState)) {
91
+ const size = metricState.buckets.length;
92
+ const buckets = {
93
+ boundaries: Array(size - 1),
94
+ counts: Array(size)
95
+ };
96
+ let i = 0;
97
+ let prev = 0;
98
+ for (const [boundary, value] of metricState.buckets) {
99
+ if (i < size - 1) {
100
+ buckets.boundaries[i] = boundary;
101
+ }
102
+ buckets.counts[i] = value - prev;
103
+ prev = value;
104
+ i++;
105
+ }
106
+ metricData.push({
107
+ dataPointType: sdkMetrics.DataPointType.HISTOGRAM,
108
+ descriptor,
109
+ aggregationTemporality: sdkMetrics.AggregationTemporality.CUMULATIVE,
110
+ dataPoints: [{
111
+ startTime: hrTimeNow,
112
+ endTime: hrTimeNow,
113
+ attributes,
114
+ value: {
115
+ buckets,
116
+ count: metricState.count,
117
+ min: metricState.min,
118
+ max: metricState.max,
119
+ sum: metricState.sum
120
+ }
121
+ }]
122
+ });
123
+ } else if (MetricState__namespace.isFrequencyState(metricState)) {
124
+ const dataPoints = [];
125
+ for (const [freqKey, value] of metricState.occurrences) {
126
+ dataPoints.push({
127
+ startTime: hrTimeNow,
128
+ endTime: hrTimeNow,
129
+ attributes: {
130
+ ...attributes,
131
+ key: freqKey
132
+ },
133
+ value
134
+ });
135
+ }
136
+ metricData.push({
137
+ dataPointType: sdkMetrics.DataPointType.SUM,
138
+ descriptor: descriptorFromKey(metricKey, attributes),
139
+ aggregationTemporality: sdkMetrics.AggregationTemporality.CUMULATIVE,
140
+ isMonotonic: true,
141
+ dataPoints
142
+ });
143
+ } else if (MetricState__namespace.isSummaryState(metricState)) {
144
+ const dataPoints = [{
145
+ startTime: hrTimeNow,
146
+ endTime: hrTimeNow,
147
+ attributes: {
148
+ ...attributes,
149
+ quantile: "min"
150
+ },
151
+ value: metricState.min
152
+ }];
153
+ for (const [quantile, value] of metricState.quantiles) {
154
+ dataPoints.push({
155
+ startTime: hrTimeNow,
156
+ endTime: hrTimeNow,
157
+ attributes: {
158
+ ...attributes,
159
+ quantile: quantile.toString()
160
+ },
161
+ value: value._tag === "Some" ? value.value : 0
162
+ });
163
+ }
164
+ dataPoints.push({
165
+ startTime: hrTimeNow,
166
+ endTime: hrTimeNow,
167
+ attributes: {
168
+ ...attributes,
169
+ quantile: "max"
170
+ },
171
+ value: metricState.max
172
+ });
173
+ metricData.push({
174
+ dataPointType: sdkMetrics.DataPointType.SUM,
175
+ descriptor: descriptorFromKey(metricKey, attributes, "quantiles"),
176
+ aggregationTemporality: sdkMetrics.AggregationTemporality.CUMULATIVE,
177
+ isMonotonic: false,
178
+ dataPoints
179
+ });
180
+ metricData.push({
181
+ dataPointType: sdkMetrics.DataPointType.SUM,
182
+ descriptor: {
183
+ ...descriptorMeta(metricKey, "count"),
184
+ unit: "1",
185
+ type: sdkMetrics.InstrumentType.COUNTER,
186
+ valueType: OtelApi.ValueType.INT
187
+ },
188
+ aggregationTemporality: sdkMetrics.AggregationTemporality.CUMULATIVE,
189
+ isMonotonic: true,
190
+ dataPoints: [{
191
+ startTime: hrTimeNow,
192
+ endTime: hrTimeNow,
193
+ attributes,
194
+ value: metricState.count
195
+ }]
196
+ });
197
+ metricData.push({
198
+ dataPointType: sdkMetrics.DataPointType.SUM,
199
+ descriptor: {
200
+ ...descriptorMeta(metricKey, "sum"),
201
+ unit: "1",
202
+ type: sdkMetrics.InstrumentType.COUNTER,
203
+ valueType: OtelApi.ValueType.DOUBLE
204
+ },
205
+ aggregationTemporality: sdkMetrics.AggregationTemporality.CUMULATIVE,
206
+ isMonotonic: true,
207
+ dataPoints: [{
208
+ startTime: hrTimeNow,
209
+ endTime: hrTimeNow,
210
+ attributes,
211
+ value: metricState.sum
212
+ }]
213
+ });
214
+ }
215
+ }
216
+ return Promise.resolve({
217
+ resourceMetrics: {
218
+ resource: this.resource,
219
+ scopeMetrics: [{
220
+ scope: {
221
+ name: sdkName
222
+ },
223
+ metrics: metricData
224
+ }]
225
+ },
226
+ errors: []
227
+ });
228
+ }
229
+ }
230
+ const descriptorMeta = (metricKey, suffix) => ({
231
+ name: suffix ? `${metricKey.name}_${suffix}` : metricKey.name,
232
+ description: Option__namespace.getOrElse(metricKey.description, () => "")
233
+ });
234
+ const descriptorFromKey = (metricKey, tags, suffix) => ({
235
+ ...descriptorMeta(metricKey, suffix),
236
+ unit: tags.unit ?? tags.time_unit ?? "1",
237
+ type: instrumentTypeFromKey(metricKey),
238
+ valueType: "bigint" in metricKey.keyType && metricKey.keyType.bigint === true ? OtelApi.ValueType.INT : OtelApi.ValueType.DOUBLE
239
+ });
240
+ const instrumentTypeFromKey = key => {
241
+ if (MetricKeyType__namespace.isHistogramKey(key.keyType)) {
242
+ return sdkMetrics.InstrumentType.HISTOGRAM;
243
+ } else if (MetricKeyType__namespace.isGaugeKey(key.keyType)) {
244
+ return sdkMetrics.InstrumentType.OBSERVABLE_GAUGE;
245
+ } else if (MetricKeyType__namespace.isFrequencyKey(key.keyType)) {
246
+ return sdkMetrics.InstrumentType.COUNTER;
247
+ } else if (MetricKeyType__namespace.isCounterKey(key.keyType) && key.keyType.incremental) {
248
+ return sdkMetrics.InstrumentType.COUNTER;
249
+ }
250
+ return sdkMetrics.InstrumentType.UP_DOWN_COUNTER;
251
+ };
252
+ const currentHrTime = () => {
253
+ const now = Date.now();
254
+ return [Math.floor(now / 1000), now % 1000 * 1000000];
255
+ };
256
+
257
+ /** @internal */
258
+ const makeProducer$1 = /*#__PURE__*/Effect__namespace.map(Resource_dist_effectOpentelemetryResource.Resource, resource => new MetricProducerImpl(resource));
259
+
260
+ /** @internal */
261
+ const registerProducer$1 = (self, metricReader) => Effect__namespace.acquireRelease(Effect__namespace.sync(() => {
262
+ const reader = metricReader();
263
+ reader.setMetricProducer(self);
264
+ return reader;
265
+ }), reader => Effect__namespace.promise(() => reader.shutdown()));
266
+
267
+ /** @internal */
268
+ const layer$1 = evaluate => Layer__namespace.scopedDiscard(Effect__namespace.flatMap(makeProducer$1, producer => registerProducer$1(producer, evaluate)));
269
+
270
+ /**
271
+ * @since 1.0.0
272
+ */
273
+ /**
274
+ * @since 1.0.0
275
+ * @category producer
276
+ */
277
+ const makeProducer = makeProducer$1;
278
+
279
+ /**
280
+ * @since 1.0.0
281
+ * @category producer
282
+ */
283
+ const registerProducer = registerProducer$1;
284
+
285
+ /**
286
+ * @since 1.0.0
287
+ * @category layers
288
+ */
289
+ const layer = layer$1;
290
+
291
+ exports.layer = layer;
292
+ exports.makeProducer = makeProducer;
293
+ exports.registerProducer = registerProducer;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ if (process.env.NODE_ENV === "production") {
4
+ module.exports = require("./effect-opentelemetry-Metrics.cjs.prod.js");
5
+ } else {
6
+ module.exports = require("./effect-opentelemetry-Metrics.cjs.dev.js");
7
+ }
@@ -0,0 +1,5 @@
1
+ export {
2
+ layer,
3
+ makeProducer,
4
+ registerProducer
5
+ } from "./effect-opentelemetry-Metrics.cjs.js";
@@ -0,0 +1,293 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var OtelApi = require('@opentelemetry/api');
6
+ var sdkMetrics = require('@opentelemetry/sdk-metrics');
7
+ var Effect = require('effect/Effect');
8
+ var HashSet = require('effect/HashSet');
9
+ var Layer = require('effect/Layer');
10
+ var Metric = require('effect/Metric');
11
+ var MetricKeyType = require('effect/MetricKeyType');
12
+ var MetricState = require('effect/MetricState');
13
+ var Option = require('effect/Option');
14
+ var Resource_dist_effectOpentelemetryResource = require('../../Resource/dist/effect-opentelemetry-Resource.cjs.prod.js');
15
+ require('@opentelemetry/resources');
16
+ require('@opentelemetry/semantic-conventions');
17
+ require('effect/Context');
18
+
19
+ function _interopNamespace(e) {
20
+ if (e && e.__esModule) return e;
21
+ var n = Object.create(null);
22
+ if (e) {
23
+ Object.keys(e).forEach(function (k) {
24
+ if (k !== 'default') {
25
+ var d = Object.getOwnPropertyDescriptor(e, k);
26
+ Object.defineProperty(n, k, d.get ? d : {
27
+ enumerable: true,
28
+ get: function () { return e[k]; }
29
+ });
30
+ }
31
+ });
32
+ }
33
+ n["default"] = e;
34
+ return Object.freeze(n);
35
+ }
36
+
37
+ var Effect__namespace = /*#__PURE__*/_interopNamespace(Effect);
38
+ var HashSet__namespace = /*#__PURE__*/_interopNamespace(HashSet);
39
+ var Layer__namespace = /*#__PURE__*/_interopNamespace(Layer);
40
+ var Metric__namespace = /*#__PURE__*/_interopNamespace(Metric);
41
+ var MetricKeyType__namespace = /*#__PURE__*/_interopNamespace(MetricKeyType);
42
+ var MetricState__namespace = /*#__PURE__*/_interopNamespace(MetricState);
43
+ var Option__namespace = /*#__PURE__*/_interopNamespace(Option);
44
+
45
+ const sdkName = "@effect/opentelemetry/Metrics";
46
+
47
+ /** @internal */
48
+ class MetricProducerImpl {
49
+ constructor(resource) {
50
+ this.resource = resource;
51
+ }
52
+ collect(_options) {
53
+ const snapshot = Metric__namespace.unsafeSnapshot();
54
+ const hrTimeNow = currentHrTime();
55
+ const metricData = [];
56
+ for (const {
57
+ metricKey,
58
+ metricState
59
+ } of snapshot) {
60
+ const attributes = HashSet__namespace.reduce(metricKey.tags, {}, (acc, label) => {
61
+ acc[label.key] = label.value;
62
+ return acc;
63
+ });
64
+ const descriptor = descriptorFromKey(metricKey, attributes);
65
+ if (MetricState__namespace.isCounterState(metricState)) {
66
+ metricData.push({
67
+ dataPointType: sdkMetrics.DataPointType.SUM,
68
+ descriptor,
69
+ isMonotonic: descriptor.type === sdkMetrics.InstrumentType.COUNTER,
70
+ aggregationTemporality: sdkMetrics.AggregationTemporality.CUMULATIVE,
71
+ dataPoints: [{
72
+ startTime: hrTimeNow,
73
+ endTime: hrTimeNow,
74
+ attributes,
75
+ value: Number(metricState.count)
76
+ }]
77
+ });
78
+ } else if (MetricState__namespace.isGaugeState(metricState)) {
79
+ metricData.push({
80
+ dataPointType: sdkMetrics.DataPointType.GAUGE,
81
+ descriptor,
82
+ aggregationTemporality: sdkMetrics.AggregationTemporality.CUMULATIVE,
83
+ dataPoints: [{
84
+ startTime: hrTimeNow,
85
+ endTime: hrTimeNow,
86
+ attributes,
87
+ value: Number(metricState.value)
88
+ }]
89
+ });
90
+ } else if (MetricState__namespace.isHistogramState(metricState)) {
91
+ const size = metricState.buckets.length;
92
+ const buckets = {
93
+ boundaries: Array(size - 1),
94
+ counts: Array(size)
95
+ };
96
+ let i = 0;
97
+ let prev = 0;
98
+ for (const [boundary, value] of metricState.buckets) {
99
+ if (i < size - 1) {
100
+ buckets.boundaries[i] = boundary;
101
+ }
102
+ buckets.counts[i] = value - prev;
103
+ prev = value;
104
+ i++;
105
+ }
106
+ metricData.push({
107
+ dataPointType: sdkMetrics.DataPointType.HISTOGRAM,
108
+ descriptor,
109
+ aggregationTemporality: sdkMetrics.AggregationTemporality.CUMULATIVE,
110
+ dataPoints: [{
111
+ startTime: hrTimeNow,
112
+ endTime: hrTimeNow,
113
+ attributes,
114
+ value: {
115
+ buckets,
116
+ count: metricState.count,
117
+ min: metricState.min,
118
+ max: metricState.max,
119
+ sum: metricState.sum
120
+ }
121
+ }]
122
+ });
123
+ } else if (MetricState__namespace.isFrequencyState(metricState)) {
124
+ const dataPoints = [];
125
+ for (const [freqKey, value] of metricState.occurrences) {
126
+ dataPoints.push({
127
+ startTime: hrTimeNow,
128
+ endTime: hrTimeNow,
129
+ attributes: {
130
+ ...attributes,
131
+ key: freqKey
132
+ },
133
+ value
134
+ });
135
+ }
136
+ metricData.push({
137
+ dataPointType: sdkMetrics.DataPointType.SUM,
138
+ descriptor: descriptorFromKey(metricKey, attributes),
139
+ aggregationTemporality: sdkMetrics.AggregationTemporality.CUMULATIVE,
140
+ isMonotonic: true,
141
+ dataPoints
142
+ });
143
+ } else if (MetricState__namespace.isSummaryState(metricState)) {
144
+ const dataPoints = [{
145
+ startTime: hrTimeNow,
146
+ endTime: hrTimeNow,
147
+ attributes: {
148
+ ...attributes,
149
+ quantile: "min"
150
+ },
151
+ value: metricState.min
152
+ }];
153
+ for (const [quantile, value] of metricState.quantiles) {
154
+ dataPoints.push({
155
+ startTime: hrTimeNow,
156
+ endTime: hrTimeNow,
157
+ attributes: {
158
+ ...attributes,
159
+ quantile: quantile.toString()
160
+ },
161
+ value: value._tag === "Some" ? value.value : 0
162
+ });
163
+ }
164
+ dataPoints.push({
165
+ startTime: hrTimeNow,
166
+ endTime: hrTimeNow,
167
+ attributes: {
168
+ ...attributes,
169
+ quantile: "max"
170
+ },
171
+ value: metricState.max
172
+ });
173
+ metricData.push({
174
+ dataPointType: sdkMetrics.DataPointType.SUM,
175
+ descriptor: descriptorFromKey(metricKey, attributes, "quantiles"),
176
+ aggregationTemporality: sdkMetrics.AggregationTemporality.CUMULATIVE,
177
+ isMonotonic: false,
178
+ dataPoints
179
+ });
180
+ metricData.push({
181
+ dataPointType: sdkMetrics.DataPointType.SUM,
182
+ descriptor: {
183
+ ...descriptorMeta(metricKey, "count"),
184
+ unit: "1",
185
+ type: sdkMetrics.InstrumentType.COUNTER,
186
+ valueType: OtelApi.ValueType.INT
187
+ },
188
+ aggregationTemporality: sdkMetrics.AggregationTemporality.CUMULATIVE,
189
+ isMonotonic: true,
190
+ dataPoints: [{
191
+ startTime: hrTimeNow,
192
+ endTime: hrTimeNow,
193
+ attributes,
194
+ value: metricState.count
195
+ }]
196
+ });
197
+ metricData.push({
198
+ dataPointType: sdkMetrics.DataPointType.SUM,
199
+ descriptor: {
200
+ ...descriptorMeta(metricKey, "sum"),
201
+ unit: "1",
202
+ type: sdkMetrics.InstrumentType.COUNTER,
203
+ valueType: OtelApi.ValueType.DOUBLE
204
+ },
205
+ aggregationTemporality: sdkMetrics.AggregationTemporality.CUMULATIVE,
206
+ isMonotonic: true,
207
+ dataPoints: [{
208
+ startTime: hrTimeNow,
209
+ endTime: hrTimeNow,
210
+ attributes,
211
+ value: metricState.sum
212
+ }]
213
+ });
214
+ }
215
+ }
216
+ return Promise.resolve({
217
+ resourceMetrics: {
218
+ resource: this.resource,
219
+ scopeMetrics: [{
220
+ scope: {
221
+ name: sdkName
222
+ },
223
+ metrics: metricData
224
+ }]
225
+ },
226
+ errors: []
227
+ });
228
+ }
229
+ }
230
+ const descriptorMeta = (metricKey, suffix) => ({
231
+ name: suffix ? `${metricKey.name}_${suffix}` : metricKey.name,
232
+ description: Option__namespace.getOrElse(metricKey.description, () => "")
233
+ });
234
+ const descriptorFromKey = (metricKey, tags, suffix) => ({
235
+ ...descriptorMeta(metricKey, suffix),
236
+ unit: tags.unit ?? tags.time_unit ?? "1",
237
+ type: instrumentTypeFromKey(metricKey),
238
+ valueType: "bigint" in metricKey.keyType && metricKey.keyType.bigint === true ? OtelApi.ValueType.INT : OtelApi.ValueType.DOUBLE
239
+ });
240
+ const instrumentTypeFromKey = key => {
241
+ if (MetricKeyType__namespace.isHistogramKey(key.keyType)) {
242
+ return sdkMetrics.InstrumentType.HISTOGRAM;
243
+ } else if (MetricKeyType__namespace.isGaugeKey(key.keyType)) {
244
+ return sdkMetrics.InstrumentType.OBSERVABLE_GAUGE;
245
+ } else if (MetricKeyType__namespace.isFrequencyKey(key.keyType)) {
246
+ return sdkMetrics.InstrumentType.COUNTER;
247
+ } else if (MetricKeyType__namespace.isCounterKey(key.keyType) && key.keyType.incremental) {
248
+ return sdkMetrics.InstrumentType.COUNTER;
249
+ }
250
+ return sdkMetrics.InstrumentType.UP_DOWN_COUNTER;
251
+ };
252
+ const currentHrTime = () => {
253
+ const now = Date.now();
254
+ return [Math.floor(now / 1000), now % 1000 * 1000000];
255
+ };
256
+
257
+ /** @internal */
258
+ const makeProducer$1 = /*#__PURE__*/Effect__namespace.map(Resource_dist_effectOpentelemetryResource.Resource, resource => new MetricProducerImpl(resource));
259
+
260
+ /** @internal */
261
+ const registerProducer$1 = (self, metricReader) => Effect__namespace.acquireRelease(Effect__namespace.sync(() => {
262
+ const reader = metricReader();
263
+ reader.setMetricProducer(self);
264
+ return reader;
265
+ }), reader => Effect__namespace.promise(() => reader.shutdown()));
266
+
267
+ /** @internal */
268
+ const layer$1 = evaluate => Layer__namespace.scopedDiscard(Effect__namespace.flatMap(makeProducer$1, producer => registerProducer$1(producer, evaluate)));
269
+
270
+ /**
271
+ * @since 1.0.0
272
+ */
273
+ /**
274
+ * @since 1.0.0
275
+ * @category producer
276
+ */
277
+ const makeProducer = makeProducer$1;
278
+
279
+ /**
280
+ * @since 1.0.0
281
+ * @category producer
282
+ */
283
+ const registerProducer = registerProducer$1;
284
+
285
+ /**
286
+ * @since 1.0.0
287
+ * @category layers
288
+ */
289
+ const layer = layer$1;
290
+
291
+ exports.layer = layer;
292
+ exports.makeProducer = makeProducer;
293
+ exports.registerProducer = registerProducer;
@@ -0,0 +1,24 @@
1
+ import { makeProducer as makeProducer$1, registerProducer as registerProducer$1, layer as layer$1 } from '../../internal/metrics.esm.js';
2
+
3
+ /**
4
+ * @since 1.0.0
5
+ */
6
+ /**
7
+ * @since 1.0.0
8
+ * @category producer
9
+ */
10
+ const makeProducer = makeProducer$1;
11
+
12
+ /**
13
+ * @since 1.0.0
14
+ * @category producer
15
+ */
16
+ const registerProducer = registerProducer$1;
17
+
18
+ /**
19
+ * @since 1.0.0
20
+ * @category layers
21
+ */
22
+ const layer = layer$1;
23
+
24
+ export { layer, makeProducer, registerProducer };
@@ -0,0 +1,4 @@
1
+ {
2
+ "main": "dist/effect-opentelemetry-Metrics.cjs.js",
3
+ "module": "dist/effect-opentelemetry-Metrics.esm.js"
4
+ }
@@ -0,0 +1,2 @@
1
+ export * from "../../dist/declarations/src/NodeSdk.js";
2
+ //# sourceMappingURL=effect-opentelemetry-NodeSdk.cjs.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-opentelemetry-NodeSdk.cjs.d.mts","sourceRoot":"","sources":["../../dist/declarations/src/NodeSdk.d.ts"],"names":[],"mappings":"AAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "../../dist/declarations/src/NodeSdk";
2
+ //# sourceMappingURL=effect-opentelemetry-NodeSdk.cjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-opentelemetry-NodeSdk.cjs.d.ts","sourceRoot":"","sources":["../../dist/declarations/src/NodeSdk.d.ts"],"names":[],"mappings":"AAAA"}