@livestore/utils 0.0.0 → 0.0.2

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 (246) hide show
  1. package/dist/.tsbuildinfo.json +1 -1
  2. package/dist/NoopTracer.d.ts +1 -0
  3. package/dist/NoopTracer.d.ts.map +1 -1
  4. package/dist/NoopTracer.js +1 -1
  5. package/dist/NoopTracer.js.map +1 -1
  6. package/dist/effect/Effect.d.ts +4 -0
  7. package/dist/effect/Effect.d.ts.map +1 -1
  8. package/dist/effect/Effect.js +8 -0
  9. package/dist/effect/Effect.js.map +1 -1
  10. package/dist/effect/Layer.d.ts +17 -3
  11. package/dist/effect/Layer.d.ts.map +1 -1
  12. package/dist/effect/Layer.js +8 -7
  13. package/dist/effect/Layer.js.map +1 -1
  14. package/dist/effect/ServiceContext.d.ts.map +1 -1
  15. package/dist/effect/ServiceContext.js +7 -7
  16. package/dist/effect/ServiceContext.js.map +1 -1
  17. package/dist/effect/index.d.ts +3 -2
  18. package/dist/effect/index.d.ts.map +1 -1
  19. package/dist/effect/index.js +3 -3
  20. package/dist/effect/index.js.map +1 -1
  21. package/package.json +12 -23
  22. package/src/NoopTracer.ts +1 -1
  23. package/src/effect/Effect.ts +18 -0
  24. package/src/effect/Layer.ts +42 -0
  25. package/src/effect/ServiceContext.ts +7 -9
  26. package/src/effect/index.ts +4 -4
  27. package/dist/binary.d.ts +0 -4
  28. package/dist/binary.d.ts.map +0 -1
  29. package/dist/binary.js +0 -23
  30. package/dist/binary.js.map +0 -1
  31. package/dist/effect/Debounce.d.ts +0 -5
  32. package/dist/effect/Debounce.d.ts.map +0 -1
  33. package/dist/effect/Debounce.js +0 -33
  34. package/dist/effect/Debounce.js.map +0 -1
  35. package/dist/effect/EndableQueue.d.ts +0 -11
  36. package/dist/effect/EndableQueue.d.ts.map +0 -1
  37. package/dist/effect/EndableQueue.js +0 -22
  38. package/dist/effect/EndableQueue.js.map +0 -1
  39. package/dist/effect/EnvVar.d.ts +0 -16
  40. package/dist/effect/EnvVar.d.ts.map +0 -1
  41. package/dist/effect/EnvVar.js +0 -21
  42. package/dist/effect/EnvVar.js.map +0 -1
  43. package/dist/effect/Gate.d.ts +0 -14
  44. package/dist/effect/Gate.d.ts.map +0 -1
  45. package/dist/effect/Gate.js +0 -17
  46. package/dist/effect/Gate.js.map +0 -1
  47. package/dist/effect/Otel/Dummy.d.ts +0 -5
  48. package/dist/effect/Otel/Dummy.d.ts.map +0 -1
  49. package/dist/effect/Otel/Dummy.js +0 -22
  50. package/dist/effect/Otel/Dummy.js.map +0 -1
  51. package/dist/effect/Otel/Meter.d.ts +0 -20
  52. package/dist/effect/Otel/Meter.d.ts.map +0 -1
  53. package/dist/effect/Otel/Meter.js +0 -76
  54. package/dist/effect/Otel/Meter.js.map +0 -1
  55. package/dist/effect/Otel/OtlpGrpc.d.ts +0 -6
  56. package/dist/effect/Otel/OtlpGrpc.d.ts.map +0 -1
  57. package/dist/effect/Otel/OtlpGrpc.js +0 -42
  58. package/dist/effect/Otel/OtlpGrpc.js.map +0 -1
  59. package/dist/effect/Otel/OtlpHttp.d.ts +0 -6
  60. package/dist/effect/Otel/OtlpHttp.d.ts.map +0 -1
  61. package/dist/effect/Otel/OtlpHttp.js +0 -42
  62. package/dist/effect/Otel/OtlpHttp.js.map +0 -1
  63. package/dist/effect/Otel/OtlpWebsocket.d.ts +0 -6
  64. package/dist/effect/Otel/OtlpWebsocket.d.ts.map +0 -1
  65. package/dist/effect/Otel/OtlpWebsocket.js +0 -42
  66. package/dist/effect/Otel/OtlpWebsocket.js.map +0 -1
  67. package/dist/effect/Otel/Span.d.ts +0 -32
  68. package/dist/effect/Otel/Span.d.ts.map +0 -1
  69. package/dist/effect/Otel/Span.js +0 -97
  70. package/dist/effect/Otel/Span.js.map +0 -1
  71. package/dist/effect/Otel/Tracer.d.ts +0 -15
  72. package/dist/effect/Otel/Tracer.d.ts.map +0 -1
  73. package/dist/effect/Otel/Tracer.js +0 -17
  74. package/dist/effect/Otel/Tracer.js.map +0 -1
  75. package/dist/effect/Otel/index.d.ts +0 -8
  76. package/dist/effect/Otel/index.d.ts.map +0 -1
  77. package/dist/effect/Otel/index.js +0 -9
  78. package/dist/effect/Otel/index.js.map +0 -1
  79. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.d.ts +0 -14
  80. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.d.ts.map +0 -1
  81. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.js +0 -15
  82. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.js.map +0 -1
  83. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.d.ts +0 -14
  84. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.d.ts.map +0 -1
  85. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.js +0 -15
  86. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.js.map +0 -1
  87. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.d.ts +0 -19
  88. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.d.ts.map +0 -1
  89. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.js +0 -17
  90. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.js.map +0 -1
  91. package/dist/effect/Otel/lib-metrics/MetricsProvider.d.ts +0 -10
  92. package/dist/effect/Otel/lib-metrics/MetricsProvider.d.ts.map +0 -1
  93. package/dist/effect/Otel/lib-metrics/MetricsProvider.js +0 -4
  94. package/dist/effect/Otel/lib-metrics/MetricsProvider.js.map +0 -1
  95. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.d.ts +0 -16
  96. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.d.ts.map +0 -1
  97. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.js +0 -39
  98. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.js.map +0 -1
  99. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.d.ts +0 -16
  100. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.d.ts.map +0 -1
  101. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.js +0 -39
  102. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.js.map +0 -1
  103. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.d.ts +0 -16
  104. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.d.ts.map +0 -1
  105. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.js +0 -39
  106. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.js.map +0 -1
  107. package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.d.ts +0 -17
  108. package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.d.ts.map +0 -1
  109. package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.js +0 -27
  110. package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.js.map +0 -1
  111. package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.d.ts +0 -18
  112. package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.d.ts.map +0 -1
  113. package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.js +0 -31
  114. package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.js.map +0 -1
  115. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.d.ts +0 -19
  116. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.d.ts.map +0 -1
  117. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.js +0 -36
  118. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.js.map +0 -1
  119. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.d.ts +0 -19
  120. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.d.ts.map +0 -1
  121. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.js +0 -36
  122. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.js.map +0 -1
  123. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.d.ts +0 -9
  124. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.d.ts.map +0 -1
  125. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.js +0 -29
  126. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.js.map +0 -1
  127. package/dist/effect/Otel/lib-tracer/SimpleProcessor.d.ts +0 -19
  128. package/dist/effect/Otel/lib-tracer/SimpleProcessor.d.ts.map +0 -1
  129. package/dist/effect/Otel/lib-tracer/SimpleProcessor.js +0 -25
  130. package/dist/effect/Otel/lib-tracer/SimpleProcessor.js.map +0 -1
  131. package/dist/effect/Otel/lib-tracer/TracerProvider.d.ts +0 -10
  132. package/dist/effect/Otel/lib-tracer/TracerProvider.d.ts.map +0 -1
  133. package/dist/effect/Otel/lib-tracer/TracerProvider.js +0 -7
  134. package/dist/effect/Otel/lib-tracer/TracerProvider.js.map +0 -1
  135. package/dist/effect/Otel/lib-tracer/WebProvider.d.ts +0 -18
  136. package/dist/effect/Otel/lib-tracer/WebProvider.d.ts.map +0 -1
  137. package/dist/effect/Otel/lib-tracer/WebProvider.js +0 -25
  138. package/dist/effect/Otel/lib-tracer/WebProvider.js.map +0 -1
  139. package/dist/effect/ReadonlyArray.d.ts +0 -4
  140. package/dist/effect/ReadonlyArray.d.ts.map +0 -1
  141. package/dist/effect/ReadonlyArray.js +0 -11
  142. package/dist/effect/ReadonlyArray.js.map +0 -1
  143. package/dist/effect/RequestResolver.d.ts +0 -11
  144. package/dist/effect/RequestResolver.d.ts.map +0 -1
  145. package/dist/effect/RequestResolver.js +0 -18
  146. package/dist/effect/RequestResolver.js.map +0 -1
  147. package/dist/effect/STM.d.ts +0 -3
  148. package/dist/effect/STM.d.ts.map +0 -1
  149. package/dist/effect/STM.js +0 -3
  150. package/dist/effect/STM.js.map +0 -1
  151. package/dist/effect/Scheduler.d.ts +0 -49
  152. package/dist/effect/Scheduler.d.ts.map +0 -1
  153. package/dist/effect/Scheduler.js +0 -168
  154. package/dist/effect/Scheduler.js.map +0 -1
  155. package/dist/effect/Schema/SchemaHash.d.ts +0 -3
  156. package/dist/effect/Schema/SchemaHash.d.ts.map +0 -1
  157. package/dist/effect/Schema/SchemaHash.js +0 -15
  158. package/dist/effect/Schema/SchemaHash.js.map +0 -1
  159. package/dist/effect/Schema/SchemaHash.test.d.ts +0 -2
  160. package/dist/effect/Schema/SchemaHash.test.d.ts.map +0 -1
  161. package/dist/effect/Schema/SchemaHash.test.js +0 -13
  162. package/dist/effect/Schema/SchemaHash.test.js.map +0 -1
  163. package/dist/effect/Schema/SchemaJsonWrapper.d.ts +0 -11
  164. package/dist/effect/Schema/SchemaJsonWrapper.d.ts.map +0 -1
  165. package/dist/effect/Schema/SchemaJsonWrapper.js +0 -38
  166. package/dist/effect/Schema/SchemaJsonWrapper.js.map +0 -1
  167. package/dist/effect/Schema/SchemaJsonWrapper.test.d.ts +0 -2
  168. package/dist/effect/Schema/SchemaJsonWrapper.test.d.ts.map +0 -1
  169. package/dist/effect/Schema/SchemaJsonWrapper.test.js +0 -42
  170. package/dist/effect/Schema/SchemaJsonWrapper.test.js.map +0 -1
  171. package/dist/effect/Schema/index.d.ts +0 -15
  172. package/dist/effect/Schema/index.d.ts.map +0 -1
  173. package/dist/effect/Schema/index.js +0 -14
  174. package/dist/effect/Schema/index.js.map +0 -1
  175. package/dist/effect/SmartQueue.d.ts +0 -38
  176. package/dist/effect/SmartQueue.d.ts.map +0 -1
  177. package/dist/effect/SmartQueue.js +0 -123
  178. package/dist/effect/SmartQueue.js.map +0 -1
  179. package/dist/effect/Stream/chainSwitch.d.ts +0 -3
  180. package/dist/effect/Stream/chainSwitch.d.ts.map +0 -1
  181. package/dist/effect/Stream/chainSwitch.js +0 -48
  182. package/dist/effect/Stream/chainSwitch.js.map +0 -1
  183. package/dist/effect/Stream/index.d.ts +0 -37
  184. package/dist/effect/Stream/index.d.ts.map +0 -1
  185. package/dist/effect/Stream/index.js +0 -82
  186. package/dist/effect/Stream/index.js.map +0 -1
  187. package/dist/effect/SubscriptionRef.d.ts +0 -10
  188. package/dist/effect/SubscriptionRef.d.ts.map +0 -1
  189. package/dist/effect/SubscriptionRef.js +0 -8
  190. package/dist/effect/SubscriptionRef.js.map +0 -1
  191. package/dist/effect/TimeoutGate.d.ts +0 -13
  192. package/dist/effect/TimeoutGate.d.ts.map +0 -1
  193. package/dist/effect/TimeoutGate.js +0 -41
  194. package/dist/effect/TimeoutGate.js.map +0 -1
  195. package/dist/effect/WebCrypto.d.ts +0 -18
  196. package/dist/effect/WebCrypto.d.ts.map +0 -1
  197. package/dist/effect/WebCrypto.js +0 -56
  198. package/dist/effect/WebCrypto.js.map +0 -1
  199. package/dist/effect/WebLock.d.ts +0 -5
  200. package/dist/effect/WebLock.d.ts.map +0 -1
  201. package/dist/effect/WebLock.js +0 -20
  202. package/dist/effect/WebLock.js.map +0 -1
  203. package/dist/effect/browser.d.ts +0 -19
  204. package/dist/effect/browser.d.ts.map +0 -1
  205. package/dist/effect/browser.js +0 -82
  206. package/dist/effect/browser.js.map +0 -1
  207. package/dist/effect/fetch.d.ts +0 -89
  208. package/dist/effect/fetch.d.ts.map +0 -1
  209. package/dist/effect/fetch.js +0 -142
  210. package/dist/effect/fetch.js.map +0 -1
  211. package/dist/single-item.d.ts +0 -8
  212. package/dist/single-item.d.ts.map +0 -1
  213. package/dist/single-item.js +0 -9
  214. package/dist/single-item.js.map +0 -1
  215. package/dist/types/index.d.ts +0 -2
  216. package/dist/types/index.d.ts.map +0 -1
  217. package/dist/types/index.js +0 -2
  218. package/dist/types/index.js.map +0 -1
  219. package/dist/types/json.d.ts +0 -27
  220. package/dist/types/json.d.ts.map +0 -1
  221. package/dist/types/json.js +0 -2
  222. package/dist/types/json.js.map +0 -1
  223. package/src/effect/Otel/Dummy.ts +0 -32
  224. package/src/effect/Otel/Meter.ts +0 -145
  225. package/src/effect/Otel/OtlpGrpc.ts +0 -75
  226. package/src/effect/Otel/OtlpHttp.ts +0 -75
  227. package/src/effect/Otel/OtlpWebsocket.ts +0 -75
  228. package/src/effect/Otel/Span.ts +0 -222
  229. package/src/effect/Otel/Tracer.ts +0 -30
  230. package/src/effect/Otel/index.ts +0 -8
  231. package/src/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.ts +0 -39
  232. package/src/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.ts +0 -39
  233. package/src/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.ts +0 -47
  234. package/src/effect/Otel/lib-metrics/MetricsProvider.ts +0 -12
  235. package/src/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.ts +0 -77
  236. package/src/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.ts +0 -77
  237. package/src/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.ts +0 -80
  238. package/src/effect/Otel/lib-metrics/PeriodicMetricsProvider.ts +0 -55
  239. package/src/effect/Otel/lib-tracer/BatchSpanProcessor.ts +0 -58
  240. package/src/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.ts +0 -64
  241. package/src/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.ts +0 -64
  242. package/src/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.ts +0 -38
  243. package/src/effect/Otel/lib-tracer/README.md +0 -1
  244. package/src/effect/Otel/lib-tracer/SimpleProcessor.ts +0 -46
  245. package/src/effect/Otel/lib-tracer/TracerProvider.ts +0 -16
  246. package/src/effect/Otel/lib-tracer/WebProvider.ts +0 -48
@@ -1,89 +0,0 @@
1
- import * as Data from '@effect/data/Data';
2
- import * as Effect from '@effect/io/Effect';
3
- import * as Otel from './Otel/index.js';
4
- export declare const fetchHead: (url: string | URL, headers?: HeadersInit) => Effect.Effect<Otel.Tracer, FetchHeadError, Response>;
5
- export declare const fetchText: (url: string | URL, headers?: HeadersInit) => Effect.Effect<Otel.Tracer, FetchTextError, string>;
6
- export declare const fetchPostMsgpack: <TIn, TOut>({ url, payload, headers, }: {
7
- url: string | URL;
8
- payload: TIn;
9
- headers?: HeadersInit | undefined;
10
- }) => Effect.Effect<Otel.Tracer, FetchMsgpackError, TOut>;
11
- export declare const fetchJSON: <T>(url: string | URL, headers?: HeadersInit) => Effect.Effect<Otel.Tracer, FetchJSONError, T>;
12
- export declare const fetchJSONPost: <T>(url: string | URL, headers?: HeadersInit) => Effect.Effect<Otel.Tracer, FetchJSONError, T>;
13
- export declare const fetchJSONPostWithBody: <TOut, TIn>({ url, body, headers, }: {
14
- url: string | URL;
15
- body: TIn;
16
- headers?: HeadersInit | undefined;
17
- }) => Effect.Effect<Otel.Tracer, FetchJSONError, TOut>;
18
- export declare const fetchArrayBuffer: (url: string | URL, headers?: HeadersInit) => Effect.Effect<Otel.Tracer, FetchArrayBufferError, ArrayBuffer>;
19
- export declare const fetchBlob: (url: string | URL) => Effect.Effect<Otel.Tracer, FetchBlobError, Blob>;
20
- declare const FetchHeadError_base: new <A extends Record<string, any>>(args: import("@effect/data/Types.js").Equals<Omit<A, keyof import("@effect/data/Equal.js").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal.js").Equal>) => Data.Data<A & {
21
- _tag: "FetchHeadError";
22
- }>;
23
- export declare class FetchHeadError extends FetchHeadError_base<{
24
- readonly url: string | URL;
25
- readonly error?: unknown;
26
- readonly status?: number;
27
- }> {
28
- readonly message: string;
29
- toString: () => string;
30
- }
31
- declare const FetchTextError_base: new <A extends Record<string, any>>(args: import("@effect/data/Types.js").Equals<Omit<A, keyof import("@effect/data/Equal.js").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal.js").Equal>) => Data.Data<A & {
32
- _tag: "FetchTextError";
33
- }>;
34
- export declare class FetchTextError extends FetchTextError_base<{
35
- readonly url: string | URL;
36
- readonly error?: unknown;
37
- readonly status?: number;
38
- }> {
39
- readonly message: string;
40
- toString: () => string;
41
- }
42
- declare const FetchMsgpackError_base: new <A extends Record<string, any>>(args: import("@effect/data/Types.js").Equals<Omit<A, keyof import("@effect/data/Equal.js").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal.js").Equal>) => Data.Data<A & {
43
- _tag: "FetchMsgpackError";
44
- }>;
45
- export declare class FetchMsgpackError extends FetchMsgpackError_base<{
46
- readonly url: string | URL;
47
- readonly error?: unknown;
48
- readonly status?: number;
49
- }> {
50
- readonly message: string;
51
- toString: () => string;
52
- }
53
- declare const FetchJSONError_base: new <A extends Record<string, any>>(args: import("@effect/data/Types.js").Equals<Omit<A, keyof import("@effect/data/Equal.js").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal.js").Equal>) => Data.Data<A & {
54
- _tag: "FetchJSONError";
55
- }>;
56
- export declare class FetchJSONError extends FetchJSONError_base<{
57
- readonly url: string | URL;
58
- readonly error?: unknown;
59
- readonly status?: number;
60
- readonly body?: any;
61
- readonly headers?: Record<string, string>;
62
- }> {
63
- readonly message: string;
64
- toString: () => string;
65
- }
66
- declare const FetchArrayBufferError_base: new <A extends Record<string, any>>(args: import("@effect/data/Types.js").Equals<Omit<A, keyof import("@effect/data/Equal.js").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal.js").Equal>) => Data.Data<A & {
67
- _tag: "FetchArrayBufferError";
68
- }>;
69
- export declare class FetchArrayBufferError extends FetchArrayBufferError_base<{
70
- readonly url: string | URL;
71
- readonly error?: unknown;
72
- readonly status?: number;
73
- }> {
74
- readonly message: string;
75
- toString: () => string;
76
- }
77
- declare const FetchBlobError_base: new <A extends Record<string, any>>(args: import("@effect/data/Types.js").Equals<Omit<A, keyof import("@effect/data/Equal.js").Equal>, {}> extends true ? void : Omit<A, keyof import("@effect/data/Equal.js").Equal>) => Data.Data<A & {
78
- _tag: "FetchBlobError";
79
- }>;
80
- export declare class FetchBlobError extends FetchBlobError_base<{
81
- readonly url: string | URL;
82
- readonly error?: unknown;
83
- readonly status?: number;
84
- }> {
85
- readonly message: string;
86
- toString: () => string;
87
- }
88
- export {};
89
- //# sourceMappingURL=fetch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/effect/fetch.ts"],"names":[],"mappings":"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"}
@@ -1,142 +0,0 @@
1
- import * as Data from '@effect/data/Data';
2
- import { pipe } from '@effect/data/Function';
3
- import * as Effect from '@effect/io/Effect';
4
- import * as msgpack from 'msgpackr';
5
- import * as Otel from './Otel/index.js';
6
- export const fetchHead = (url, headers) => pipe(Effect.tryPromise({
7
- try: () => fetch(url, { method: 'head', headers }),
8
- catch: (error) => new FetchHeadError({ url, error }),
9
- }), Effect.tap((res) => Otel.addAttribute('http.status', res.status)), Otel.withSpan('fetchHead', { attributes: { 'http.url': url.toString() } }));
10
- export const fetchText = (url, headers) => pipe(Effect.tryPromise({
11
- try: () => fetch(url, { headers }),
12
- catch: (error) => new FetchTextError({ url, error }),
13
- }), Effect.tap((res) => Otel.addAttribute('http.status', res.status)), Effect.flatMap((resp) => resp.ok
14
- ? Effect.tryPromise({
15
- try: () => resp.text(),
16
- catch: (error) => new FetchTextError({ url, error, status: resp.status }),
17
- })
18
- : Effect.fail(new FetchTextError({ url, status: resp.status }))), Otel.withSpan('fetchText', { attributes: { 'http.url': url.toString() } }));
19
- // TODO refactor
20
- export const fetchPostMsgpack = ({ url, payload, headers, }) => pipe(Effect.try(() => {
21
- const formData = new FormData();
22
- const payloadBuffer = msgpack.pack(payload);
23
- const payloadBlob = new Blob([payloadBuffer], { type: 'application/octet-stream' });
24
- formData.append('bytes', payloadBlob);
25
- return formData;
26
- }), Effect.flatMap((formData) => Effect.tryPromise(() => fetch(url, { headers, method: 'POST', body: formData }))), Effect.mapError((error) => new FetchMsgpackError({ url, error })), Effect.tap((res) => Otel.addAttribute('http.status', res.status)), Effect.flatMap((resp) => resp.ok
27
- ? Effect.tryPromise({
28
- try: () => resp.arrayBuffer(),
29
- catch: (error) => new FetchMsgpackError({ url, error, status: resp.status }),
30
- })
31
- : Effect.fail(new FetchMsgpackError({ url, status: resp.status }))), Effect.map((responseBuffer) => {
32
- // NOTE this is needed since otherwise `new Date(someBigInt)` will throw
33
- const packr = new msgpack.Packr({ useRecords: false, int64AsNumber: true });
34
- return packr.unpack(new Uint8Array(responseBuffer));
35
- }), Otel.withSpan('fetchPostMsgpack', { attributes: { 'http.url': url.toString() } }));
36
- export const fetchJSON = (url, headers) => pipe(Effect.tryPromise({
37
- try: () => fetch(url, { headers }),
38
- catch: (error) => new FetchJSONError({ url, error }),
39
- }), Effect.tap((res) => Otel.addAttribute('http.status', res.status)), Effect.flatMap((resp) => resp.ok
40
- ? Effect.tryPromise({
41
- try: () => resp.json(),
42
- catch: (error) => new FetchJSONError({
43
- url,
44
- error,
45
- status: resp.status,
46
- headers: Object.fromEntries(resp.headers.entries()),
47
- }),
48
- })
49
- : pipe(Effect.tryPromise({
50
- try: () => resp.json(),
51
- catch: (error) => new FetchJSONError({
52
- url,
53
- error,
54
- status: resp.status,
55
- headers: Object.fromEntries(resp.headers.entries()),
56
- }),
57
- }), Effect.flatMap((body) => Effect.fail(new FetchJSONError({
58
- url,
59
- status: resp.status,
60
- body,
61
- headers: Object.fromEntries(resp.headers.entries()),
62
- }))))), Otel.withSpan('fetchJSON', { attributes: { 'http.url': url.toString() } }));
63
- export const fetchJSONPost = (url, headers) => pipe(Effect.tryPromise({
64
- try: () => fetch(url, { headers, method: 'post' }),
65
- catch: (error) => new FetchJSONError({ url, error }),
66
- }), Effect.tap((res) => Otel.addAttribute('http.status', res.status)), Effect.flatMap((resp) => resp.ok
67
- ? Effect.tryPromise({
68
- try: () => resp.json(),
69
- catch: (error) => new FetchJSONError({ url, error, status: resp.status }),
70
- })
71
- : Effect.fail(new FetchJSONError({ url, status: resp.status }))), Otel.withSpan('fetchJSONPost', { attributes: { 'http.url': url.toString() } }));
72
- // TODO refactor to merge with `fetchJSONPost`
73
- export const fetchJSONPostWithBody = ({ url, body, headers, }) => pipe(Effect.tryPromise({
74
- try: () => fetch(url, { headers, method: 'post', body: JSON.stringify(body) }),
75
- catch: (error) => new FetchJSONError({ url, error }),
76
- }), Effect.tap((res) => Otel.addAttribute('http.status', res.status)), Effect.flatMap((resp) => resp.ok
77
- ? Effect.tryPromise({
78
- try: () => resp.json(),
79
- catch: (error) => new FetchJSONError({ url, error, status: resp.status }),
80
- })
81
- : pipe(Effect.tryPromise(() => resp.json()), Effect.mapError(() => new FetchJSONError({ url, status: resp.status })), Effect.flatMap((jsonError) => Effect.fail(new FetchJSONError({ url, status: resp.status, error: jsonError }))))), Otel.withSpan('fetchJSONPostWithBody', { attributes: { 'http.url': url.toString() } }));
82
- export const fetchArrayBuffer = (url, headers) => pipe(Effect.tryPromise({
83
- try: () => fetch(url, { headers }),
84
- catch: (error) => new FetchArrayBufferError({ url, error }),
85
- }), Effect.tap((res) => Otel.addAttribute('http.status', res.status)), Effect.flatMap((resp) => resp.ok
86
- ? Effect.tryPromise({
87
- try: () => resp.arrayBuffer(),
88
- catch: (error) => new FetchArrayBufferError({ url, error, status: resp.status }),
89
- })
90
- : Effect.fail(new FetchArrayBufferError({ url, status: resp.status }))), Otel.withSpan('fetchArrayBuffer', { attributes: { 'http.url': url.toString() } }));
91
- export const fetchBlob = (url) => pipe(Effect.tryPromise({
92
- try: () => fetch(url),
93
- catch: (error) => new FetchBlobError({ url, error }),
94
- }), Effect.tap((res) => Otel.addAttribute('http.status', res.status)), Effect.flatMap((resp) => resp.ok
95
- ? Effect.tryPromise({
96
- try: () => resp.blob(),
97
- catch: (error) => new FetchBlobError({ url, error, status: resp.status }),
98
- })
99
- : Effect.fail(new FetchBlobError({ url, status: resp.status }))), Otel.withSpan('fetchBlob', { attributes: { 'http.url': url.toString() } }));
100
- export class FetchHeadError extends Data.TaggedClass('FetchHeadError') {
101
- constructor() {
102
- super(...arguments);
103
- this.message = `Couldn't fetch URL "${this.url}". ${this.error}`;
104
- this.toString = () => `FetchHeadError: ${JSON.stringify(this)}`;
105
- }
106
- }
107
- export class FetchTextError extends Data.TaggedClass('FetchTextError') {
108
- constructor() {
109
- super(...arguments);
110
- this.message = `Couldn't fetch URL "${this.url}". ${this.error}`;
111
- this.toString = () => `FetchTextError: ${JSON.stringify(this)}`;
112
- }
113
- }
114
- export class FetchMsgpackError extends Data.TaggedClass('FetchMsgpackError') {
115
- constructor() {
116
- super(...arguments);
117
- this.message = `Couldn't fetch URL "${this.url}". ${this.error}`;
118
- this.toString = () => `FetchMsgpackError: ${JSON.stringify(this)}`;
119
- }
120
- }
121
- export class FetchJSONError extends Data.TaggedClass('FetchJSONError') {
122
- constructor() {
123
- super(...arguments);
124
- this.message = `Couldn't fetch URL "${this.url}". ${this.error}`;
125
- this.toString = () => `FetchJSONError: ${JSON.stringify(this)}`;
126
- }
127
- }
128
- export class FetchArrayBufferError extends Data.TaggedClass('FetchArrayBufferError') {
129
- constructor() {
130
- super(...arguments);
131
- this.message = `Couldn't fetch URL "${this.url}". ${this.error}`;
132
- this.toString = () => `FetchArrayBufferError: ${JSON.stringify(this)}`;
133
- }
134
- }
135
- export class FetchBlobError extends Data.TaggedClass('FetchBlobError') {
136
- constructor() {
137
- super(...arguments);
138
- this.message = `Couldn't fetch URL "${this.url}". ${this.error}`;
139
- this.toString = () => `FetchBlobError: ${JSON.stringify(this)}`;
140
- }
141
- }
142
- //# sourceMappingURL=fetch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../src/effect/fetch.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- export declare class SingleItem<T> {
2
- item: T;
3
- constructor(item: T);
4
- map: <U>(fn: (item: T) => U) => SingleItem<U>;
5
- filter: (fn: (item: T) => boolean) => SingleItem<T | undefined>;
6
- }
7
- export declare const singleItem: <T>(item: T) => SingleItem<T>;
8
- //# sourceMappingURL=single-item.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"single-item.d.ts","sourceRoot":"","sources":["../src/single-item.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU,CAAC,CAAC;IACJ,IAAI,EAAE,CAAC;gBAAP,IAAI,EAAE,CAAC;IAE1B,GAAG,iBAAkB,CAAC,yBAAuD;IAE7E,MAAM,cAAe,CAAC,KAAK,OAAO,KAAG,WAAW,CAAC,GAAG,SAAS,CAAC,CAAsD;CACrH;AAED,eAAO,MAAM,UAAU,+BAAuC,CAAA"}
@@ -1,9 +0,0 @@
1
- export class SingleItem {
2
- constructor(item) {
3
- this.item = item;
4
- this.map = (fn) => new SingleItem(fn(this.item));
5
- this.filter = (fn) => (fn(this.item) ? this : new SingleItem(undefined));
6
- }
7
- }
8
- export const singleItem = (item) => new SingleItem(item);
9
- //# sourceMappingURL=single-item.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"single-item.js","sourceRoot":"","sources":["../src/single-item.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IACrB,YAAmB,IAAO;QAAP,SAAI,GAAJ,IAAI,CAAG;QAE1B,QAAG,GAAG,CAAI,EAAkB,EAAiB,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAE7E,WAAM,GAAG,CAAC,EAAwB,EAA6B,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;IAJvF,CAAC;CAK/B;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,IAAO,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export * from './json.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
@@ -1,2 +0,0 @@
1
- export * from './json.js';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
@@ -1,27 +0,0 @@
1
- /**
2
- @category JSON
3
- */
4
- export type JsonObject = {
5
- [Key in string]?: JsonValue;
6
- };
7
- /**
8
- Matches a JSON array.
9
-
10
- @category JSON
11
- */
12
- export type JsonArray = JsonValue[];
13
- /**
14
- Matches any valid JSON primitive value.
15
-
16
- @category JSON
17
- */
18
- export type JsonPrimitive = string | number | boolean | null;
19
- /**
20
- Matches any valid JSON value.
21
-
22
- @see `Jsonify` if you need to transform a type to one that is assignable to `JsonValue`.
23
-
24
- @category JSON
25
- */
26
- export type JsonValue = JsonPrimitive | JsonObject | JsonArray;
27
- //# sourceMappingURL=json.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/types/json.ts"],"names":[],"mappings":"AAAA;;EAEE;AACF,MAAM,MAAM,UAAU,GAAG;KAAG,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,SAAS;CAAE,CAAA;AAExD;;;;EAIE;AACF,MAAM,MAAM,SAAS,GAAG,SAAS,EAAE,CAAA;AAEnC;;;;EAIE;AACF,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AAE5D;;;;;;EAME;AACF,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=json.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/types/json.ts"],"names":[],"mappings":""}
@@ -1,32 +0,0 @@
1
- import * as Layer from '@effect/io/Layer'
2
- import type * as otelMetrics from '@opentelemetry/api-metrics'
3
-
4
- import { NoopTracer } from '../../NoopTracer.js'
5
- import * as Otel from './index.js'
6
-
7
- //
8
- // Dummy Tracer
9
- //
10
-
11
- const DummyTracing = () =>
12
- ({
13
- [Otel.TracerSymbol]: Otel.TracerSymbol,
14
- tracer: new NoopTracer(),
15
- }) as const
16
-
17
- export const DummyTracingLive = Layer.sync(Otel.Tracer, () => DummyTracing())
18
-
19
- const NoopMeter = () =>
20
- ({
21
- createHistogram: () => ({ record: () => {} }),
22
- createCounter: () => ({ add: () => {} }),
23
- createUpDownCounter: () => ({ add: () => {} }),
24
- }) as unknown as otelMetrics.Meter
25
-
26
- const DummyMeter = () =>
27
- ({
28
- [Otel.MeterSymbol]: Otel.MeterSymbol,
29
- meter: NoopMeter(),
30
- }) as const
31
-
32
- export const DummyMeterLive = Layer.sync(Otel.Meter, () => DummyMeter())
@@ -1,145 +0,0 @@
1
- import * as Context from '@effect/data/Context'
2
- import { identity, pipe } from '@effect/data/Function'
3
- import * as Effect from '@effect/io/Effect'
4
- import * as Layer from '@effect/io/Layer'
5
- import type * as OTMetrics from '@opentelemetry/api-metrics'
6
-
7
- import { MetricsProvider } from './lib-metrics/MetricsProvider.js'
8
-
9
- export const MeterSymbol = Symbol.for('effect-otel/Meter')
10
- export type MeterSymbol = typeof MeterSymbol
11
-
12
- export interface Meter {
13
- readonly [MeterSymbol]: MeterSymbol
14
- readonly meter: OTMetrics.Meter
15
- }
16
-
17
- export const Meter = Context.Tag<Meter>(MeterSymbol)
18
-
19
- export const makeMeter = (name: string) =>
20
- Effect.gen(function* ($) {
21
- const { metricsProvider } = yield* $(MetricsProvider)
22
-
23
- const meter = yield* $(Effect.sync(() => metricsProvider.getMeter(name)))
24
-
25
- return identity<Meter>({
26
- [MeterSymbol]: MeterSymbol,
27
- meter,
28
- })
29
- })
30
-
31
- export const LiveMeter = Layer.scoped(Meter, makeMeter('@effect/otel/Meter'))
32
-
33
- type MetricCache = {
34
- histograms: Map<string, OTMetrics.Histogram>
35
- gauges: Map<string, { counter: OTMetrics.Counter; prevValue: number }>
36
- // gauges: Map<string, { observable: OTMetrics.ObservableGauge; currentCallback: OTMetrics.ObservableCallback }>
37
- upDownCounters: Map<string, OTMetrics.Counter>
38
- }
39
-
40
- const metricCache: MetricCache = {
41
- histograms: new Map(),
42
- gauges: new Map(),
43
- upDownCounters: new Map(),
44
- }
45
-
46
- export const histogram =
47
- (metricName: string, value: number, attributes?: OTMetrics.MetricAttributes) =>
48
- <R, E, A>(effect: Effect.Effect<R, E, A>) =>
49
- Effect.tap(effect, () =>
50
- pipe(
51
- Effect.map(Meter, ({ meter }) =>
52
- getOrCreate(metricCache.histograms, metricName, () => meter.createHistogram(metricName)),
53
- ),
54
- Effect.tap((histogram) => Effect.sync(() => histogram.record(value, attributes))),
55
- ),
56
- )
57
-
58
- export const histogramEff =
59
- <R2>(metricName: string, valueEff: Effect.Effect<R2, never, number>) =>
60
- <R, E, A>(effect: Effect.Effect<R, E, A>) =>
61
- Effect.tap(effect, () =>
62
- pipe(
63
- Effect.map(Meter, ({ meter }) =>
64
- getOrCreate(metricCache.histograms, metricName, () => meter.createHistogram(metricName)),
65
- ),
66
- Effect.tap((histogram) => Effect.map(valueEff, (value) => histogram.record(value))),
67
- ),
68
- )
69
-
70
- export const upDownCounter =
71
- (metricName: string, delta: number, attributes?: OTMetrics.MetricAttributes) =>
72
- <R, E, A>(effect: Effect.Effect<R, E, A>) =>
73
- Effect.tap(effect, () =>
74
- pipe(
75
- Effect.map(Meter, ({ meter }) =>
76
- getOrCreate(metricCache.upDownCounters, metricName, () => meter.createUpDownCounter(metricName)),
77
- ),
78
- Effect.tap((counter) => Effect.sync(() => counter.add(delta, attributes))),
79
- ),
80
- )
81
-
82
- /** NOTE we're using an up-down-counter here (which is push based) instead of an observable gauge (which is pull based) */
83
- export const gauge =
84
- (metricName: string, value: number, attributes?: OTMetrics.MetricAttributes) =>
85
- <R, E, A>(effect: Effect.Effect<R, E, A>) => {
86
- // NOTE this is currently used to keep separate gauges for each attribute value
87
- const metricCacheName = metricName + '_' + JSON.stringify(attributes)
88
- return Effect.tap(effect, () =>
89
- pipe(
90
- Effect.map(Meter, ({ meter }) =>
91
- getOrCreate(metricCache.gauges, metricCacheName, () => ({
92
- counter: meter.createUpDownCounter(metricName),
93
- prevValue: 0,
94
- })),
95
- ),
96
- Effect.tap(({ counter, prevValue }) =>
97
- Effect.sync(() => {
98
- const delta = value - prevValue
99
- counter.add(delta, attributes)
100
- metricCache.gauges.set(metricCacheName, { counter, prevValue: value })
101
- }),
102
- ),
103
- ),
104
- )
105
- }
106
-
107
- // export const gauge =
108
- // (metricName: string, value: number, attributes?: OTMetrics.MetricAttributes) =>
109
- // <R, E, A>(effect: Effect.Effect<R, E, A>) => {
110
- // // NOTE this is currently used to keep separate gauges for each attribute value
111
- // const metricCacheName = metricName + '_' + JSON.stringify(attributes)
112
- // return pipe(
113
- // effect,
114
- // Effect.tap(() =>
115
- // pipe(
116
- // withMeter((meter) =>
117
- // getOrCreate(metricCache.gauges, metricCacheName, () => ({
118
- // observable: meter.createObservableGauge(metricName),
119
- // currentCallback: () => {},
120
- // })),
121
- // ),
122
- // Effect.tap(({ observable, currentCallback }) =>
123
- // Effect.succeedWith(() => {
124
- // observable.removeCallback(currentCallback)
125
- // const newCallback: OTMetrics.ObservableCallback = (observableResult) => {
126
- // observableResult.observe(value, attributes)
127
- // }
128
- // observable.addCallback(newCallback)
129
- // metricCache.gauges.set(metricCacheName, { observable, currentCallback: newCallback })
130
- // }),
131
- // ),
132
- // ),
133
- // ),
134
- // )
135
- // }
136
-
137
- const getOrCreate = <T>(map: Map<string, T>, name: string, create: () => T) => {
138
- const cached = map.get(name)
139
- if (cached) {
140
- return cached
141
- }
142
- const created = create()
143
- map.set(name, created)
144
- return created
145
- }
@@ -1,75 +0,0 @@
1
- import * as Layer from '@effect/io/Layer'
2
- import type { ResourceAttributes } from '@opentelemetry/resources'
3
- import { Resource } from '@opentelemetry/resources'
4
- import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'
5
-
6
- import * as Otel from './index.js'
7
- import { makeOTLPMetricExporterConfigLayer } from './lib-metrics/ExporterMetricsOltpGrpc.js'
8
- import { OTLPMetricsProvider } from './lib-metrics/OTLPMetricsProviderGrpc.js'
9
- import { BatchProcessor } from './lib-tracer/BatchSpanProcessor.js'
10
- import * as GrpcExporter from './lib-tracer/ExporterTraceOtlpGrpc.js'
11
- import * as OTWeb from './lib-tracer/WebProvider.js'
12
- import { LiveMeter } from './Meter.js'
13
-
14
- //
15
- // TRACING
16
- //
17
-
18
- const makeWebTracingProvider = (serviceName: string, resourceAttributes?: ResourceAttributes) =>
19
- OTWeb.WebProvider({
20
- resource: new Resource({
21
- [SemanticResourceAttributes.SERVICE_NAME]: serviceName,
22
- ...resourceAttributes,
23
- }),
24
- })
25
-
26
- const TraceCollectorConfig = (exporterUrl?: string) =>
27
- GrpcExporter.makeOTLPTraceExporterConfigLayer({
28
- // empty headers makes sure to use XHR instead of `navigator.sendBeacon`
29
- headers: {},
30
- url: exporterUrl,
31
- })
32
-
33
- const LiveBatchGrpcProcessor = BatchProcessor(GrpcExporter.makeTracingSpanExporter)
34
-
35
- export const makeWebTracingLayer = (
36
- serviceName: string,
37
- exporterUrl?: string,
38
- resourceAttributes?: ResourceAttributes,
39
- ): Layer.Layer<never, never, Otel.Tracer> =>
40
- Layer.provideMerge(
41
- TraceCollectorConfig(exporterUrl),
42
- Layer.provide(
43
- Layer.provideMerge(makeWebTracingProvider(serviceName, resourceAttributes), LiveBatchGrpcProcessor),
44
- Otel.LiveTracer,
45
- ),
46
- )
47
-
48
- //
49
- // METRICS
50
- //
51
-
52
- const makeWebMetricProvider = (serviceName: string, resourceAttributes?: ResourceAttributes) =>
53
- OTLPMetricsProvider({
54
- resource: new Resource({
55
- [SemanticResourceAttributes.SERVICE_NAME]: serviceName,
56
- ...resourceAttributes,
57
- }),
58
- })
59
-
60
- const MetricCollectorConfig = (exporterUrl?: string) =>
61
- makeOTLPMetricExporterConfigLayer({
62
- // empty headers makes sure to use XHR instead of `navigator.sendBeacon`
63
- headers: {},
64
- url: exporterUrl,
65
- })
66
-
67
- export const makeWebMetricLayer = (
68
- serviceName: string,
69
- exporterUrl?: string,
70
- resourceAttributes?: ResourceAttributes,
71
- ): Layer.Layer<never, never, Otel.Meter> =>
72
- Layer.provide(
73
- Layer.provideMerge(MetricCollectorConfig(exporterUrl), makeWebMetricProvider(serviceName, resourceAttributes)),
74
- LiveMeter,
75
- )