@livestore/utils 0.0.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 (322) hide show
  1. package/dist/.tsbuildinfo.json +1 -0
  2. package/dist/Deferred.d.ts +10 -0
  3. package/dist/Deferred.d.ts.map +1 -0
  4. package/dist/Deferred.js +18 -0
  5. package/dist/Deferred.js.map +1 -0
  6. package/dist/NoopTracer.d.ts +9 -0
  7. package/dist/NoopTracer.d.ts.map +1 -0
  8. package/dist/NoopTracer.js +54 -0
  9. package/dist/NoopTracer.js.map +1 -0
  10. package/dist/base64.d.ts +12 -0
  11. package/dist/base64.d.ts.map +1 -0
  12. package/dist/base64.js +114 -0
  13. package/dist/base64.js.map +1 -0
  14. package/dist/binary.d.ts +4 -0
  15. package/dist/binary.d.ts.map +1 -0
  16. package/dist/binary.js +23 -0
  17. package/dist/binary.js.map +1 -0
  18. package/dist/browser.d.ts +3 -0
  19. package/dist/browser.d.ts.map +1 -0
  20. package/dist/browser.js +28 -0
  21. package/dist/browser.js.map +1 -0
  22. package/dist/effect/Debounce.d.ts +5 -0
  23. package/dist/effect/Debounce.d.ts.map +1 -0
  24. package/dist/effect/Debounce.js +33 -0
  25. package/dist/effect/Debounce.js.map +1 -0
  26. package/dist/effect/Effect.d.ts +7 -0
  27. package/dist/effect/Effect.d.ts.map +1 -0
  28. package/dist/effect/Effect.js +17 -0
  29. package/dist/effect/Effect.js.map +1 -0
  30. package/dist/effect/EndableQueue.d.ts +11 -0
  31. package/dist/effect/EndableQueue.d.ts.map +1 -0
  32. package/dist/effect/EndableQueue.js +22 -0
  33. package/dist/effect/EndableQueue.js.map +1 -0
  34. package/dist/effect/EnvVar.d.ts +16 -0
  35. package/dist/effect/EnvVar.d.ts.map +1 -0
  36. package/dist/effect/EnvVar.js +21 -0
  37. package/dist/effect/EnvVar.js.map +1 -0
  38. package/dist/effect/Error.d.ts +12 -0
  39. package/dist/effect/Error.d.ts.map +1 -0
  40. package/dist/effect/Error.js +13 -0
  41. package/dist/effect/Error.js.map +1 -0
  42. package/dist/effect/Gate.d.ts +14 -0
  43. package/dist/effect/Gate.d.ts.map +1 -0
  44. package/dist/effect/Gate.js +17 -0
  45. package/dist/effect/Gate.js.map +1 -0
  46. package/dist/effect/Layer.d.ts +6 -0
  47. package/dist/effect/Layer.d.ts.map +1 -0
  48. package/dist/effect/Layer.js +11 -0
  49. package/dist/effect/Layer.js.map +1 -0
  50. package/dist/effect/Otel/Dummy.d.ts +5 -0
  51. package/dist/effect/Otel/Dummy.d.ts.map +1 -0
  52. package/dist/effect/Otel/Dummy.js +22 -0
  53. package/dist/effect/Otel/Dummy.js.map +1 -0
  54. package/dist/effect/Otel/Meter.d.ts +20 -0
  55. package/dist/effect/Otel/Meter.d.ts.map +1 -0
  56. package/dist/effect/Otel/Meter.js +76 -0
  57. package/dist/effect/Otel/Meter.js.map +1 -0
  58. package/dist/effect/Otel/OtlpGrpc.d.ts +6 -0
  59. package/dist/effect/Otel/OtlpGrpc.d.ts.map +1 -0
  60. package/dist/effect/Otel/OtlpGrpc.js +42 -0
  61. package/dist/effect/Otel/OtlpGrpc.js.map +1 -0
  62. package/dist/effect/Otel/OtlpHttp.d.ts +6 -0
  63. package/dist/effect/Otel/OtlpHttp.d.ts.map +1 -0
  64. package/dist/effect/Otel/OtlpHttp.js +42 -0
  65. package/dist/effect/Otel/OtlpHttp.js.map +1 -0
  66. package/dist/effect/Otel/OtlpWebsocket.d.ts +6 -0
  67. package/dist/effect/Otel/OtlpWebsocket.d.ts.map +1 -0
  68. package/dist/effect/Otel/OtlpWebsocket.js +42 -0
  69. package/dist/effect/Otel/OtlpWebsocket.js.map +1 -0
  70. package/dist/effect/Otel/Span.d.ts +32 -0
  71. package/dist/effect/Otel/Span.d.ts.map +1 -0
  72. package/dist/effect/Otel/Span.js +97 -0
  73. package/dist/effect/Otel/Span.js.map +1 -0
  74. package/dist/effect/Otel/Tracer.d.ts +15 -0
  75. package/dist/effect/Otel/Tracer.d.ts.map +1 -0
  76. package/dist/effect/Otel/Tracer.js +17 -0
  77. package/dist/effect/Otel/Tracer.js.map +1 -0
  78. package/dist/effect/Otel/index.d.ts +8 -0
  79. package/dist/effect/Otel/index.d.ts.map +1 -0
  80. package/dist/effect/Otel/index.js +9 -0
  81. package/dist/effect/Otel/index.js.map +1 -0
  82. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.d.ts +14 -0
  83. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.d.ts.map +1 -0
  84. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.js +15 -0
  85. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.js.map +1 -0
  86. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.d.ts +14 -0
  87. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.d.ts.map +1 -0
  88. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.js +15 -0
  89. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.js.map +1 -0
  90. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.d.ts +19 -0
  91. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.d.ts.map +1 -0
  92. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.js +17 -0
  93. package/dist/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.js.map +1 -0
  94. package/dist/effect/Otel/lib-metrics/MetricsProvider.d.ts +10 -0
  95. package/dist/effect/Otel/lib-metrics/MetricsProvider.d.ts.map +1 -0
  96. package/dist/effect/Otel/lib-metrics/MetricsProvider.js +4 -0
  97. package/dist/effect/Otel/lib-metrics/MetricsProvider.js.map +1 -0
  98. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.d.ts +16 -0
  99. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.d.ts.map +1 -0
  100. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.js +39 -0
  101. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.js.map +1 -0
  102. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.d.ts +16 -0
  103. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.d.ts.map +1 -0
  104. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.js +39 -0
  105. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.js.map +1 -0
  106. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.d.ts +16 -0
  107. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.d.ts.map +1 -0
  108. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.js +39 -0
  109. package/dist/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.js.map +1 -0
  110. package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.d.ts +17 -0
  111. package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.d.ts.map +1 -0
  112. package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.js +27 -0
  113. package/dist/effect/Otel/lib-metrics/PeriodicMetricsProvider.js.map +1 -0
  114. package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.d.ts +18 -0
  115. package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.d.ts.map +1 -0
  116. package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.js +31 -0
  117. package/dist/effect/Otel/lib-tracer/BatchSpanProcessor.js.map +1 -0
  118. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.d.ts +19 -0
  119. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.d.ts.map +1 -0
  120. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.js +36 -0
  121. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.js.map +1 -0
  122. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.d.ts +19 -0
  123. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.d.ts.map +1 -0
  124. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.js +36 -0
  125. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.js.map +1 -0
  126. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.d.ts +9 -0
  127. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.d.ts.map +1 -0
  128. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.js +29 -0
  129. package/dist/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.js.map +1 -0
  130. package/dist/effect/Otel/lib-tracer/SimpleProcessor.d.ts +19 -0
  131. package/dist/effect/Otel/lib-tracer/SimpleProcessor.d.ts.map +1 -0
  132. package/dist/effect/Otel/lib-tracer/SimpleProcessor.js +25 -0
  133. package/dist/effect/Otel/lib-tracer/SimpleProcessor.js.map +1 -0
  134. package/dist/effect/Otel/lib-tracer/TracerProvider.d.ts +10 -0
  135. package/dist/effect/Otel/lib-tracer/TracerProvider.d.ts.map +1 -0
  136. package/dist/effect/Otel/lib-tracer/TracerProvider.js +7 -0
  137. package/dist/effect/Otel/lib-tracer/TracerProvider.js.map +1 -0
  138. package/dist/effect/Otel/lib-tracer/WebProvider.d.ts +18 -0
  139. package/dist/effect/Otel/lib-tracer/WebProvider.d.ts.map +1 -0
  140. package/dist/effect/Otel/lib-tracer/WebProvider.js +25 -0
  141. package/dist/effect/Otel/lib-tracer/WebProvider.js.map +1 -0
  142. package/dist/effect/ReadonlyArray.d.ts +4 -0
  143. package/dist/effect/ReadonlyArray.d.ts.map +1 -0
  144. package/dist/effect/ReadonlyArray.js +11 -0
  145. package/dist/effect/ReadonlyArray.js.map +1 -0
  146. package/dist/effect/RequestResolver.d.ts +11 -0
  147. package/dist/effect/RequestResolver.d.ts.map +1 -0
  148. package/dist/effect/RequestResolver.js +18 -0
  149. package/dist/effect/RequestResolver.js.map +1 -0
  150. package/dist/effect/STM.d.ts +3 -0
  151. package/dist/effect/STM.d.ts.map +1 -0
  152. package/dist/effect/STM.js +3 -0
  153. package/dist/effect/STM.js.map +1 -0
  154. package/dist/effect/Schedule.d.ts +5 -0
  155. package/dist/effect/Schedule.d.ts.map +1 -0
  156. package/dist/effect/Schedule.js +7 -0
  157. package/dist/effect/Schedule.js.map +1 -0
  158. package/dist/effect/Scheduler.d.ts +49 -0
  159. package/dist/effect/Scheduler.d.ts.map +1 -0
  160. package/dist/effect/Scheduler.js +168 -0
  161. package/dist/effect/Scheduler.js.map +1 -0
  162. package/dist/effect/Schema/SchemaHash.d.ts +3 -0
  163. package/dist/effect/Schema/SchemaHash.d.ts.map +1 -0
  164. package/dist/effect/Schema/SchemaHash.js +15 -0
  165. package/dist/effect/Schema/SchemaHash.js.map +1 -0
  166. package/dist/effect/Schema/SchemaHash.test.d.ts +2 -0
  167. package/dist/effect/Schema/SchemaHash.test.d.ts.map +1 -0
  168. package/dist/effect/Schema/SchemaHash.test.js +13 -0
  169. package/dist/effect/Schema/SchemaHash.test.js.map +1 -0
  170. package/dist/effect/Schema/SchemaJsonWrapper.d.ts +11 -0
  171. package/dist/effect/Schema/SchemaJsonWrapper.d.ts.map +1 -0
  172. package/dist/effect/Schema/SchemaJsonWrapper.js +38 -0
  173. package/dist/effect/Schema/SchemaJsonWrapper.js.map +1 -0
  174. package/dist/effect/Schema/SchemaJsonWrapper.test.d.ts +2 -0
  175. package/dist/effect/Schema/SchemaJsonWrapper.test.d.ts.map +1 -0
  176. package/dist/effect/Schema/SchemaJsonWrapper.test.js +42 -0
  177. package/dist/effect/Schema/SchemaJsonWrapper.test.js.map +1 -0
  178. package/dist/effect/Schema/index.d.ts +15 -0
  179. package/dist/effect/Schema/index.d.ts.map +1 -0
  180. package/dist/effect/Schema/index.js +14 -0
  181. package/dist/effect/Schema/index.js.map +1 -0
  182. package/dist/effect/ServiceContext.d.ts +39 -0
  183. package/dist/effect/ServiceContext.d.ts.map +1 -0
  184. package/dist/effect/ServiceContext.js +61 -0
  185. package/dist/effect/ServiceContext.js.map +1 -0
  186. package/dist/effect/SmartQueue.d.ts +38 -0
  187. package/dist/effect/SmartQueue.d.ts.map +1 -0
  188. package/dist/effect/SmartQueue.js +123 -0
  189. package/dist/effect/SmartQueue.js.map +1 -0
  190. package/dist/effect/Stream/chainSwitch.d.ts +3 -0
  191. package/dist/effect/Stream/chainSwitch.d.ts.map +1 -0
  192. package/dist/effect/Stream/chainSwitch.js +48 -0
  193. package/dist/effect/Stream/chainSwitch.js.map +1 -0
  194. package/dist/effect/Stream/index.d.ts +37 -0
  195. package/dist/effect/Stream/index.d.ts.map +1 -0
  196. package/dist/effect/Stream/index.js +82 -0
  197. package/dist/effect/Stream/index.js.map +1 -0
  198. package/dist/effect/SubscriptionRef.d.ts +10 -0
  199. package/dist/effect/SubscriptionRef.d.ts.map +1 -0
  200. package/dist/effect/SubscriptionRef.js +8 -0
  201. package/dist/effect/SubscriptionRef.js.map +1 -0
  202. package/dist/effect/TimeoutGate.d.ts +13 -0
  203. package/dist/effect/TimeoutGate.d.ts.map +1 -0
  204. package/dist/effect/TimeoutGate.js +41 -0
  205. package/dist/effect/TimeoutGate.js.map +1 -0
  206. package/dist/effect/WebCrypto.d.ts +18 -0
  207. package/dist/effect/WebCrypto.d.ts.map +1 -0
  208. package/dist/effect/WebCrypto.js +56 -0
  209. package/dist/effect/WebCrypto.js.map +1 -0
  210. package/dist/effect/WebLock.d.ts +5 -0
  211. package/dist/effect/WebLock.d.ts.map +1 -0
  212. package/dist/effect/WebLock.js +20 -0
  213. package/dist/effect/WebLock.js.map +1 -0
  214. package/dist/effect/browser.d.ts +19 -0
  215. package/dist/effect/browser.d.ts.map +1 -0
  216. package/dist/effect/browser.js +82 -0
  217. package/dist/effect/browser.js.map +1 -0
  218. package/dist/effect/fetch.d.ts +89 -0
  219. package/dist/effect/fetch.d.ts.map +1 -0
  220. package/dist/effect/fetch.js +142 -0
  221. package/dist/effect/fetch.js.map +1 -0
  222. package/dist/effect/index.d.ts +50 -0
  223. package/dist/effect/index.d.ts.map +1 -0
  224. package/dist/effect/index.js +58 -0
  225. package/dist/effect/index.js.map +1 -0
  226. package/dist/global.d.ts +5 -0
  227. package/dist/global.d.ts.map +1 -0
  228. package/dist/global.js +2 -0
  229. package/dist/global.js.map +1 -0
  230. package/dist/guards.d.ts +6 -0
  231. package/dist/guards.d.ts.map +1 -0
  232. package/dist/guards.js +6 -0
  233. package/dist/guards.js.map +1 -0
  234. package/dist/index.d.ts +69 -0
  235. package/dist/index.d.ts.map +1 -0
  236. package/dist/index.js +162 -0
  237. package/dist/index.js.map +1 -0
  238. package/dist/object/index.d.ts +10 -0
  239. package/dist/object/index.d.ts.map +1 -0
  240. package/dist/object/index.js +10 -0
  241. package/dist/object/index.js.map +1 -0
  242. package/dist/object/omit.d.ts +3 -0
  243. package/dist/object/omit.d.ts.map +1 -0
  244. package/dist/object/omit.js +14 -0
  245. package/dist/object/omit.js.map +1 -0
  246. package/dist/object/pick.d.ts +14 -0
  247. package/dist/object/pick.d.ts.map +1 -0
  248. package/dist/object/pick.js +17 -0
  249. package/dist/object/pick.js.map +1 -0
  250. package/dist/promise.d.ts +6 -0
  251. package/dist/promise.d.ts.map +1 -0
  252. package/dist/promise.js +27 -0
  253. package/dist/promise.js.map +1 -0
  254. package/dist/set.d.ts +2 -0
  255. package/dist/set.d.ts.map +1 -0
  256. package/dist/set.js +10 -0
  257. package/dist/set.js.map +1 -0
  258. package/dist/single-item.d.ts +8 -0
  259. package/dist/single-item.d.ts.map +1 -0
  260. package/dist/single-item.js +9 -0
  261. package/dist/single-item.js.map +1 -0
  262. package/dist/string.d.ts +3 -0
  263. package/dist/string.d.ts.map +1 -0
  264. package/dist/string.js +3 -0
  265. package/dist/string.js.map +1 -0
  266. package/dist/time.d.ts +12 -0
  267. package/dist/time.d.ts.map +1 -0
  268. package/dist/time.js +22 -0
  269. package/dist/time.js.map +1 -0
  270. package/dist/types/index.d.ts +2 -0
  271. package/dist/types/index.d.ts.map +1 -0
  272. package/dist/types/index.js +2 -0
  273. package/dist/types/index.js.map +1 -0
  274. package/dist/types/json.d.ts +27 -0
  275. package/dist/types/json.d.ts.map +1 -0
  276. package/dist/types/json.js +2 -0
  277. package/dist/types/json.js.map +1 -0
  278. package/package.json +58 -0
  279. package/src/Deferred.ts +24 -0
  280. package/src/NoopTracer.ts +75 -0
  281. package/src/base64.ts +118 -0
  282. package/src/browser.ts +32 -0
  283. package/src/effect/Effect.ts +27 -0
  284. package/src/effect/Error.ts +12 -0
  285. package/src/effect/Otel/Dummy.ts +32 -0
  286. package/src/effect/Otel/Meter.ts +145 -0
  287. package/src/effect/Otel/OtlpGrpc.ts +75 -0
  288. package/src/effect/Otel/OtlpHttp.ts +75 -0
  289. package/src/effect/Otel/OtlpWebsocket.ts +75 -0
  290. package/src/effect/Otel/Span.ts +222 -0
  291. package/src/effect/Otel/Tracer.ts +30 -0
  292. package/src/effect/Otel/index.ts +8 -0
  293. package/src/effect/Otel/lib-metrics/ExporterMetricsOltpGrpc.ts +39 -0
  294. package/src/effect/Otel/lib-metrics/ExporterMetricsOltpHttp.ts +39 -0
  295. package/src/effect/Otel/lib-metrics/ExporterMetricsOltpWebsocket.ts +47 -0
  296. package/src/effect/Otel/lib-metrics/MetricsProvider.ts +12 -0
  297. package/src/effect/Otel/lib-metrics/OTLPMetricsProviderGrpc.ts +77 -0
  298. package/src/effect/Otel/lib-metrics/OTLPMetricsProviderHttp.ts +77 -0
  299. package/src/effect/Otel/lib-metrics/OTLPMetricsProviderWebsocket.ts +80 -0
  300. package/src/effect/Otel/lib-metrics/PeriodicMetricsProvider.ts +55 -0
  301. package/src/effect/Otel/lib-tracer/BatchSpanProcessor.ts +58 -0
  302. package/src/effect/Otel/lib-tracer/ExporterTraceOtlpGrpc.ts +64 -0
  303. package/src/effect/Otel/lib-tracer/ExporterTraceOtlpHttp.ts +64 -0
  304. package/src/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.ts +38 -0
  305. package/src/effect/Otel/lib-tracer/README.md +1 -0
  306. package/src/effect/Otel/lib-tracer/SimpleProcessor.ts +46 -0
  307. package/src/effect/Otel/lib-tracer/TracerProvider.ts +16 -0
  308. package/src/effect/Otel/lib-tracer/WebProvider.ts +48 -0
  309. package/src/effect/Schedule.ts +12 -0
  310. package/src/effect/ServiceContext.ts +116 -0
  311. package/src/effect/index.ts +65 -0
  312. package/src/global.ts +5 -0
  313. package/src/guards.ts +8 -0
  314. package/src/index.ts +217 -0
  315. package/src/object/index.ts +24 -0
  316. package/src/object/omit.ts +17 -0
  317. package/src/object/pick.ts +27 -0
  318. package/src/promise.ts +43 -0
  319. package/src/set.ts +10 -0
  320. package/src/string.ts +2 -0
  321. package/src/time.ts +25 -0
  322. package/tsconfig.json +13 -0
@@ -0,0 +1,9 @@
1
+ import * as Context from '@effect/data/Context';
2
+ import * as Effect from '@effect/io/Effect';
3
+ import * as Layer from '@effect/io/Layer';
4
+ import type { OTLPExporterNodeConfigBase } from '@opentelemetry/otlp-exporter-base';
5
+ import { WebsocketTraceExporter } from 'otel-websocket-exporter';
6
+ export declare const OTLPTraceExporterConfig: Context.Tag<OTLPExporterNodeConfigBase, OTLPExporterNodeConfigBase>;
7
+ export declare const makeOTLPTraceExporterConfigLayer: (config: OTLPExporterNodeConfigBase) => Layer.Layer<never, never, OTLPExporterNodeConfigBase>;
8
+ export declare const makeTracingSpanExporter: Effect.Effect<import("@effect/io/Scope").Scope | OTLPExporterNodeConfigBase, never, WebsocketTraceExporter>;
9
+ //# sourceMappingURL=ExporterTraceOtlpWebsocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExporterTraceOtlpWebsocket.d.ts","sourceRoot":"","sources":["../../../../src/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAE/C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAA;AACnF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,eAAO,MAAM,uBAAuB,qEAAiF,CAAA;AAErH,eAAO,MAAM,gCAAgC,WAAY,0BAA0B,0DACnC,CAAA;AAEhD,eAAO,MAAM,uBAAuB,6GAyBlC,CAAA"}
@@ -0,0 +1,29 @@
1
+ import * as Context from '@effect/data/Context';
2
+ import * as Duration from '@effect/data/Duration';
3
+ import * as Effect from '@effect/io/Effect';
4
+ import * as Layer from '@effect/io/Layer';
5
+ import { WebsocketTraceExporter } from 'otel-websocket-exporter';
6
+ export const OTLPTraceExporterConfig = Context.Tag('effect-otel/OTLPTraceExporterConfig');
7
+ export const makeOTLPTraceExporterConfigLayer = (config) => Layer.succeed(OTLPTraceExporterConfig, config);
8
+ export const makeTracingSpanExporter = Effect.gen(function* ($) {
9
+ const config = yield* $(OTLPTraceExporterConfig);
10
+ const spanExporter = yield* $(Effect.sync(() => new WebsocketTraceExporter(config)),
11
+ // NOTE Unfortunately this workaround/"hack" is currently needed since Otel doesn't yet provide a graceful
12
+ // way to shutdown.
13
+ //
14
+ // Related issue: https://github.com/open-telemetry/opentelemetry-js/issues/987
15
+ Effect.acquireRelease((p) => Effect.gen(function* ($) {
16
+ while (1) {
17
+ yield* $(Effect.sleep(Duration.millis(0)));
18
+ const promises = p['_sendingPromises'];
19
+ if (promises.length > 0) {
20
+ yield* $(Effect.exit(Effect.promise(() => Promise.all(promises))));
21
+ }
22
+ else {
23
+ break;
24
+ }
25
+ }
26
+ })));
27
+ return spanExporter;
28
+ });
29
+ //# sourceMappingURL=ExporterTraceOtlpWebsocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExporterTraceOtlpWebsocket.js","sourceRoot":"","sources":["../../../../src/effect/Otel/lib-tracer/ExporterTraceOtlpWebsocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,QAAQ,MAAM,uBAAuB,CAAA;AACjD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAA6B,qCAAqC,CAAC,CAAA;AAErH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,MAAkC,EAAE,EAAE,CACrF,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAA;AAEhD,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAA;IAEhD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACrD,0GAA0G;IAC1G,mBAAmB;IACnB,EAAE;IACF,+EAA+E;IAC/E,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAC1B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,EAAE;YACR,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1C,MAAM,QAAQ,GAAG,CAAC,CAAC,kBAAkB,CAAU,CAAA;YAC/C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;aACnE;iBAAM;gBACL,MAAK;aACN;SACF;IACH,CAAC,CAAC,CACH,CACF,CAAA;IAED,OAAO,YAAY,CAAA;AACrB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,19 @@
1
+ import * as Context from '@effect/data/Context';
2
+ import * as Effect from '@effect/io/Effect';
3
+ import * as Layer from '@effect/io/Layer';
4
+ import type * as Scope from '@effect/io/Scope';
5
+ import type { SpanExporter } from '@opentelemetry/sdk-trace-base';
6
+ import { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
7
+ import { TracerProvider } from './TracerProvider.js';
8
+ export declare const SimpleProcessorSymbol: unique symbol;
9
+ export type SimpleProcessorSymbol = typeof SimpleProcessorSymbol;
10
+ export interface SimpleProcessor {
11
+ readonly [SimpleProcessorSymbol]: SimpleProcessorSymbol;
12
+ readonly spanExporter: SpanExporter;
13
+ readonly spanProcessor: SimpleSpanProcessor;
14
+ }
15
+ export declare const makeSimpleProcessor: <R, E, A extends SpanExporter>(exporter: Effect.Effect<Scope.Scope | R, E, A>) => Effect.Effect<Scope.Scope | TracerProvider | R, E, SimpleProcessor>;
16
+ export declare const SimpleProcessorTag: Context.Tag<SimpleProcessor, SimpleProcessor>;
17
+ export declare const SimpleProcessor: <R, E, A extends SpanExporter>(exporter: Effect.Effect<Scope.Scope | R, E, A>) => Layer.Layer<TracerProvider | Exclude<R, Scope.Scope>, E, SimpleProcessor>;
18
+ export declare const LiveConsoleSimple: Layer.Layer<TracerProvider, never, SimpleProcessor>;
19
+ //# sourceMappingURL=SimpleProcessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleProcessor.d.ts","sourceRoot":"","sources":["../../../../src/effect/Otel/lib-tracer/SimpleProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAE/C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAuB,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAExF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAMpD,eAAO,MAAM,qBAAqB,eAA4C,CAAA;AAC9E,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAA;AAEhE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,CAAC,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IACvD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAA;CAC5C;AAED,eAAO,MAAM,mBAAmB,uJAe5B,CAAA;AAEJ,eAAO,MAAM,kBAAkB,+CAAsD,CAAA;AAErF,eAAO,MAAM,eAAe,6JACqC,CAAA;AAEjE,eAAO,MAAM,iBAAiB,qDAAgE,CAAA"}
@@ -0,0 +1,25 @@
1
+ import * as Context from '@effect/data/Context';
2
+ import { identity } from '@effect/data/Function';
3
+ import * as Effect from '@effect/io/Effect';
4
+ import * as Layer from '@effect/io/Layer';
5
+ import { ConsoleSpanExporter, SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';
6
+ import { TracerProvider } from './TracerProvider.js';
7
+ //
8
+ // Span Processor
9
+ //
10
+ export const SimpleProcessorSymbol = Symbol.for('effect-otel/SimpleProcessor');
11
+ export const makeSimpleProcessor = (exporter) => Effect.gen(function* ($) {
12
+ const { tracerProvider } = yield* $(TracerProvider);
13
+ const spanExporter = yield* $(exporter);
14
+ const spanProcessor = yield* $(Effect.sync(() => new SimpleSpanProcessor(spanExporter)));
15
+ yield* $(Effect.sync(() => tracerProvider.addSpanProcessor(spanProcessor)));
16
+ return identity({
17
+ [SimpleProcessorSymbol]: SimpleProcessorSymbol,
18
+ spanExporter,
19
+ spanProcessor,
20
+ });
21
+ });
22
+ export const SimpleProcessorTag = Context.Tag(SimpleProcessorSymbol);
23
+ export const SimpleProcessor = (exporter) => Layer.scoped(SimpleProcessorTag, makeSimpleProcessor(exporter));
24
+ export const LiveConsoleSimple = SimpleProcessor(Effect.sync(() => new ConsoleSpanExporter()));
25
+ //# sourceMappingURL=SimpleProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleProcessor.js","sourceRoot":"","sources":["../../../../src/effect/Otel/lib-tracer/SimpleProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAChD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAGzC,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAExF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,EAAE;AACF,iBAAiB;AACjB,EAAE;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;AAS9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAA+B,QAA8C,EAAE,EAAE,CAClH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrB,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAA;IAEnD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;IAEvC,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAExF,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;IAE3E,OAAO,QAAQ,CAAkB;QAC/B,CAAC,qBAAqB,CAAC,EAAE,qBAAqB;QAC9C,YAAY;QACZ,aAAa;KACd,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAkB,qBAAqB,CAAC,CAAA;AAErF,MAAM,CAAC,MAAM,eAAe,GAAG,CAA+B,QAA8C,EAAE,EAAE,CAC9G,KAAK,CAAC,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAA;AAEjE,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import * as Context from '@effect/data/Context';
2
+ import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';
3
+ export declare const TracerProviderSymbol: unique symbol;
4
+ export type TracerProviderSymbol = typeof TracerProviderSymbol;
5
+ export interface TracerProvider {
6
+ readonly [TracerProviderSymbol]: TracerProviderSymbol;
7
+ readonly tracerProvider: BasicTracerProvider;
8
+ }
9
+ export declare const TracerProvider: Context.Tag<TracerProvider, TracerProvider>;
10
+ //# sourceMappingURL=TracerProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TracerProvider.d.ts","sourceRoot":"","sources":["../../../../src/effect/Otel/lib-tracer/TracerProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAMxE,eAAO,MAAM,oBAAoB,eAA2C,CAAA;AAC5E,MAAM,MAAM,oBAAoB,GAAG,OAAO,oBAAoB,CAAA;AAE9D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IACrD,QAAQ,CAAC,cAAc,EAAE,mBAAmB,CAAA;CAC7C;AAED,eAAO,MAAM,cAAc,6CAAoD,CAAA"}
@@ -0,0 +1,7 @@
1
+ import * as Context from '@effect/data/Context';
2
+ //
3
+ // ets_tracing Provider
4
+ //
5
+ export const TracerProviderSymbol = Symbol.for('effect-otel/TracerProvider');
6
+ export const TracerProvider = Context.Tag(TracerProviderSymbol);
7
+ //# sourceMappingURL=TracerProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TracerProvider.js","sourceRoot":"","sources":["../../../../src/effect/Otel/lib-tracer/TracerProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAG/C,EAAE;AACF,uBAAuB;AACvB,EAAE;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;AAQ5E,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAiB,oBAAoB,CAAC,CAAA"}
@@ -0,0 +1,18 @@
1
+ import * as Context from '@effect/data/Context';
2
+ import * as Effect from '@effect/io/Effect';
3
+ import * as Layer from '@effect/io/Layer';
4
+ import type { WebTracerConfig } from '@opentelemetry/sdk-trace-web';
5
+ import { TracerProvider } from './TracerProvider.js';
6
+ export declare const WebTracerProviderConfigSymbol: unique symbol;
7
+ type WebTracerProviderConfigSymbol = typeof WebTracerProviderConfigSymbol;
8
+ export interface WebTracerProviderConfig {
9
+ [WebTracerProviderConfigSymbol]: WebTracerProviderConfigSymbol;
10
+ readonly config: WebTracerConfig;
11
+ }
12
+ export declare const WebTracerProviderConfig: Context.Tag<WebTracerProviderConfig, WebTracerProviderConfig>;
13
+ export declare const LiveWebTracerProviderConfig: (config: WebTracerConfig) => Layer.Layer<never, never, WebTracerProviderConfig>;
14
+ export declare const makeWebTracingProvider: Effect.Effect<never, never, TracerProvider>;
15
+ export declare const WebProviderLayer: Layer.Layer<never, never, TracerProvider>;
16
+ export declare const WebProvider: (config?: WebTracerConfig) => Layer.Layer<never, never, TracerProvider>;
17
+ export {};
18
+ //# sourceMappingURL=WebProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebProvider.d.ts","sourceRoot":"","sources":["../../../../src/effect/Otel/lib-tracer/WebProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAG/C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAGnE,OAAO,EAAE,cAAc,EAAwB,MAAM,qBAAqB,CAAA;AAE1E,eAAO,MAAM,6BAA6B,eAAoD,CAAA;AAC9F,KAAK,6BAA6B,GAAG,OAAO,6BAA6B,CAAA;AAEzE,MAAM,WAAW,uBAAuB;IACtC,CAAC,6BAA6B,CAAC,EAAE,6BAA6B,CAAA;IAE9D,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAA;CACjC;AAED,eAAO,MAAM,uBAAuB,+DAAsE,CAAA;AAE1G,eAAO,MAAM,2BAA2B,WAAY,eAAe,uDAI/D,CAAA;AAEJ,eAAO,MAAM,sBAAsB,6CAejC,CAAA;AAEF,eAAO,MAAM,gBAAgB,2CAAuD,CAAA;AAEpF,eAAO,MAAM,WAAW,YAAa,eAAe,8CAC8C,CAAA"}
@@ -0,0 +1,25 @@
1
+ import * as Context from '@effect/data/Context';
2
+ import { identity, pipe } from '@effect/data/Function';
3
+ import * as Option from '@effect/data/Option';
4
+ import * as Effect from '@effect/io/Effect';
5
+ import * as Layer from '@effect/io/Layer';
6
+ import { WebTracerProvider } from '@opentelemetry/sdk-trace-web';
7
+ import { TracerProvider, TracerProviderSymbol } from './TracerProvider.js';
8
+ export const WebTracerProviderConfigSymbol = Symbol.for('effect-otel/WebTracerProviderConfig');
9
+ export const WebTracerProviderConfig = Context.Tag(WebTracerProviderConfigSymbol);
10
+ export const LiveWebTracerProviderConfig = (config) => Layer.succeed(WebTracerProviderConfig, {
11
+ [WebTracerProviderConfigSymbol]: WebTracerProviderConfigSymbol,
12
+ config,
13
+ });
14
+ export const makeWebTracingProvider = Effect.gen(function* ($) {
15
+ const ctx = yield* $(Effect.context());
16
+ const config = pipe(Context.getOption(ctx, WebTracerProviderConfig), Option.map((_) => _.config), Option.getOrUndefined);
17
+ const tracerProvider = yield* $(Effect.sync(() => new WebTracerProvider(config)));
18
+ return identity({
19
+ [TracerProviderSymbol]: TracerProviderSymbol,
20
+ tracerProvider,
21
+ });
22
+ });
23
+ export const WebProviderLayer = Layer.scoped(TracerProvider, makeWebTracingProvider);
24
+ export const WebProvider = (config) => config ? Layer.provide(LiveWebTracerProviderConfig(config), WebProviderLayer) : WebProviderLayer;
25
+ //# sourceMappingURL=WebProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebProvider.js","sourceRoot":"","sources":["../../../../src/effect/Otel/lib-tracer/WebProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAEhE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1E,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;AAS9F,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAA0B,6BAA6B,CAAC,CAAA;AAE1G,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,MAAuB,EAAE,EAAE,CACrE,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE;IACrC,CAAC,6BAA6B,CAAC,EAAE,6BAA6B;IAC9D,MAAM;CACP,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC3D,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAS,CAAC,CAAA;IAE7C,MAAM,MAAM,GAAG,IAAI,CACjB,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,uBAAuB,CAAC,EAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAC3B,MAAM,CAAC,cAAc,CACtB,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAEjF,OAAO,QAAQ,CAAiB;QAC9B,CAAC,oBAAoB,CAAC,EAAE,oBAAoB;QAC5C,cAAc;KACf,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAA;AAEpF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAE,EAAE,CACtD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,2BAA2B,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAA"}
@@ -0,0 +1,4 @@
1
+ import * as ReadonlyArray from '@effect/data/ReadonlyArray';
2
+ export * from '@effect/data/ReadonlyArray';
3
+ export declare const headUnsafe: <A>(as: readonly A[]) => A;
4
+ //# sourceMappingURL=ReadonlyArray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadonlyArray.d.ts","sourceRoot":"","sources":["../../src/effect/ReadonlyArray.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAE3D,cAAc,4BAA4B,CAAA;AAE1C,eAAO,MAAM,UAAU,4BAOnB,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { pipe } from '@effect/data/Function';
2
+ import * as Option from '@effect/data/Option';
3
+ import * as ReadonlyArray from '@effect/data/ReadonlyArray';
4
+ export * from '@effect/data/ReadonlyArray';
5
+ export const headUnsafe = (as) => pipe(as, ReadonlyArray.head, (_) => {
6
+ if (Option.isNone(_)) {
7
+ throw new Error('headUnsafe: empty array');
8
+ }
9
+ return _.value;
10
+ });
11
+ //# sourceMappingURL=ReadonlyArray.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadonlyArray.js","sourceRoot":"","sources":["../../src/effect/ReadonlyArray.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,aAAa,MAAM,4BAA4B,CAAA;AAE3D,cAAc,4BAA4B,CAAA;AAE1C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,EAAoB,EAAK,EAAE,CACvD,IAAI,CAAC,EAAE,EAAE,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;IACjC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;KAC3C;IAED,OAAO,CAAC,CAAC,KAAK,CAAA;AAChB,CAAC,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import type * as Duration from '@effect/data/Duration';
2
+ import type * as Request from '@effect/io/Request';
3
+ import * as RequestResolver from '@effect/io/RequestResolver';
4
+ import type * as Scope from '@effect/io/Scope';
5
+ import * as Effect from './Effect.js';
6
+ export * from '@effect/io/RequestResolver';
7
+ export declare const dataLoader: <A extends Request.Request<any, any>>(self: RequestResolver.RequestResolver<A, never>, options: {
8
+ readonly window: Duration.DurationInput;
9
+ readonly maxBatchSize?: number;
10
+ }) => Effect.Effect<Scope.Scope, never, RequestResolver.RequestResolver<A, never>>;
11
+ //# sourceMappingURL=RequestResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestResolver.d.ts","sourceRoot":"","sources":["../../src/effect/RequestResolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,QAAQ,MAAM,uBAAuB,CAAA;AAItD,OAAO,KAAK,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAClD,OAAO,KAAK,eAAe,MAAM,4BAA4B,CAAA;AAC7D,OAAO,KAAK,KAAK,KAAK,MAAM,kBAAkB,CAAA;AAE9C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,cAAc,4BAA4B,CAAA;AAS1C,eAAO,MAAM,UAAU,kGAEZ;IACP,QAAQ,SAAS,SAAS,aAAa,CAAA;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B,iFAuCC,CAAA"}
@@ -0,0 +1,18 @@
1
+ import * as Chunk from '@effect/data/Chunk';
2
+ import * as Deferred from '@effect/io/Deferred';
3
+ import * as Queue from '@effect/io/Queue';
4
+ import * as Ref from '@effect/io/Ref';
5
+ import * as RequestResolver from '@effect/io/RequestResolver';
6
+ import * as Effect from './Effect.js';
7
+ export * from '@effect/io/RequestResolver';
8
+ export const dataLoader = (self, options) => Effect.gen(function* (_) {
9
+ const queue = yield* _(Queue.unbounded());
10
+ const batch = yield* _(Ref.make(Chunk.empty()));
11
+ const takeOne = Effect.flatMap(Queue.take(queue), (item) => Ref.updateAndGet(batch, Chunk.append(item)));
12
+ const takeRest = takeOne.pipe(Effect.repeatUntil((items) => options.maxBatchSize !== undefined && items.length >= options.maxBatchSize), Effect.timeout(options.window), Effect.zipRight(Ref.getAndSet(batch, Chunk.empty())));
13
+ yield* _(takeOne, Effect.zipRight(takeRest), Effect.flatMap(Effect.filter(({ deferred }) => Deferred.isDone(deferred), {
14
+ negate: true,
15
+ })), Effect.flatMap(Effect.forEach(({ request, deferred }) => Effect.flatMap(Effect.exit(Effect.request(request, self)), (exit) => Deferred.complete(deferred, exit)), { batching: true, discard: true })), Effect.forever, Effect.forkScoped);
16
+ return RequestResolver.fromFunctionEffect((request) => Effect.flatMap(Deferred.make(), (deferred) => Queue.offer(queue, { request, deferred }).pipe(Effect.zipRight(Deferred.await(deferred)), Effect.onInterrupt(() => Deferred.interrupt(deferred)))));
17
+ });
18
+ //# sourceMappingURL=RequestResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestResolver.js","sourceRoot":"","sources":["../../src/effect/RequestResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAE3C,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAErC,OAAO,KAAK,eAAe,MAAM,4BAA4B,CAAA;AAG7D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,cAAc,4BAA4B,CAAA;AAS1C,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAA+C,EAC/C,OAGC,EAC6E,EAAE,CAChF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAqB,CAAC,CAAA;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAqB,CAAC,CAAC,CAAA;IAClE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACxG,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAC3B,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,EACzG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAC9B,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CACrD,CAAA;IAED,KAAK,CAAC,CAAC,CAAC,CACN,OAAO,EACP,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACzB,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;QACzD,MAAM,EAAE,IAAI;KACb,CAAC,CACH,EACD,MAAM,CAAC,OAAO,CACZ,MAAM,CAAC,OAAO,CACZ,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CACxB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EACzG,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAClC,CACF,EACD,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,UAAU,CAClB,CAAA;IAED,OAAO,eAAe,CAAC,kBAAkB,CAAC,CAAC,OAAU,EAAE,EAAE,CACvD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAwD,EAAE,CAAC,QAAQ,EAAE,EAAE,CACjG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAC5C,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EACzC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CACvD,CACF,CACF,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './Gate.js';
2
+ export * from '@effect/stm/STM';
3
+ //# sourceMappingURL=STM.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"STM.d.ts","sourceRoot":"","sources":["../../src/effect/STM.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './Gate.js';
2
+ export * from '@effect/stm/STM';
3
+ //# sourceMappingURL=STM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"STM.js","sourceRoot":"","sources":["../../src/effect/STM.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import * as Duration from '@effect/data/Duration';
2
+ import * as Schedule from '@effect/io/Schedule';
3
+ export * from '@effect/io/Schedule';
4
+ export declare const exponentialBackoff10Sec: Schedule.Schedule<never, unknown, Duration.DurationInput>;
5
+ //# sourceMappingURL=Schedule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schedule.d.ts","sourceRoot":"","sources":["../../src/effect/Schedule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,uBAAuB,CAAA;AAEjD,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAE/C,cAAc,qBAAqB,CAAA;AAEnC,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,aAAa,CAK7F,CAAA"}
@@ -0,0 +1,7 @@
1
+ import * as Duration from '@effect/data/Duration';
2
+ import { pipe } from '@effect/data/Function';
3
+ import * as Schedule from '@effect/io/Schedule';
4
+ export * from '@effect/io/Schedule';
5
+ export const exponentialBackoff10Sec = pipe(Schedule.exponential(Duration.millis(10), 4), // 10ms, 40ms, 160ms, 640ms, 2560ms, ...
6
+ Schedule.andThenEither(Schedule.spaced(Duration.seconds(1))), Schedule.compose(Schedule.elapsed), Schedule.whileOutput(Duration.lessThanOrEqualTo(Duration.seconds(10))));
7
+ //# sourceMappingURL=Schedule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schedule.js","sourceRoot":"","sources":["../../src/effect/Schedule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAA;AAE/C,cAAc,qBAAqB,CAAA;AAEnC,MAAM,CAAC,MAAM,uBAAuB,GAA8D,IAAI,CACpG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,wCAAwC;AACtF,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5D,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAClC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CACvE,CAAA"}
@@ -0,0 +1,49 @@
1
+ /// <reference no-default-lib="true"/>
2
+ /// <reference lib="esnext" />
3
+ /// <reference lib="dom" />
4
+ declare global {
5
+ interface Navigator {
6
+ scheduling: {
7
+ isInputPending: (() => boolean) | undefined;
8
+ } | undefined;
9
+ }
10
+ function cancelAnimationFrame(handle: number | undefined): void;
11
+ function cancelIdleCallback(handle: number | undefined): void;
12
+ }
13
+ export * from '@effect/io/Scheduler';
14
+ import * as Scheduler from '@effect/io/Scheduler';
15
+ export declare class ReactAwareScheduler implements Scheduler.Scheduler {
16
+ private maxNextTickBeforeTimer;
17
+ private running;
18
+ private tasks;
19
+ constructor(maxNextTickBeforeTimer: number);
20
+ scheduleTask(task: Scheduler.Task): void;
21
+ private starveInternal;
22
+ private starve;
23
+ /** NOTE We're also returning `starveStartedMs` to avoid having to call` Date.now()` twice */
24
+ private shouldYieldToNextFrame;
25
+ }
26
+ /** NOTE should only be used on Main Thread */
27
+ export declare class BackgroundScheduler implements Scheduler.Scheduler {
28
+ private running;
29
+ private taskBuckets;
30
+ scheduleTask(task: Scheduler.Task, priority: number): void;
31
+ private doWork;
32
+ private starve;
33
+ }
34
+ export declare class FallbackBackgroundScheduler implements Scheduler.Scheduler {
35
+ private systemFps;
36
+ private running;
37
+ private taskBuckets;
38
+ /** Timestamp in milli seconds */
39
+ private lastWitnessedFrame;
40
+ private timePerFrame;
41
+ constructor(systemFps?: number);
42
+ scheduleTask(task: Scheduler.Task, priority: number): void;
43
+ private loopRequestAnimationFrame;
44
+ private starve;
45
+ private getRemainingTimeMs;
46
+ }
47
+ export declare const reactAwareScheduler: () => Scheduler.Scheduler;
48
+ export declare const backgroundScheduler: () => Scheduler.Scheduler;
49
+ //# sourceMappingURL=Scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scheduler.d.ts","sourceRoot":"","sources":["../../src/effect/Scheduler.ts"],"names":[],"mappings":";;;AAIA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,SAAS;QACjB,UAAU,EACN;YACE,cAAc,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,SAAS,CAAA;SAC5C,GACD,SAAS,CAAA;KACd;IACD,SAAS,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;IAC/D,SAAS,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;CAC9D;AAGD,cAAc,sBAAsB,CAAA;AAEpC,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAA;AAGjD,qBAAa,mBAAoB,YAAW,SAAS,CAAC,SAAS;IAIjD,OAAO,CAAC,sBAAsB;IAH1C,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,KAAK,CAA8B;gBAEvB,sBAAsB,EAAE,MAAM;IAElD,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI;IASjC,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,MAAM;IAUd,6FAA6F;IAC7F,OAAO,CAAC,sBAAsB;CAgB/B;AAED,8CAA8C;AAC9C,qBAAa,mBAAoB,YAAW,SAAS,CAAC,SAAS;IAC7D,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAAkC;IAErD,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM;IASnD,OAAO,CAAC,MAAM;IAkBd,OAAO,CAAC,MAAM;CAKf;AAED,qBAAa,2BAA4B,YAAW,SAAS,CAAC,SAAS;IASzD,OAAO,CAAC,SAAS;IAR7B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,WAAW,CAAkC;IAErD,iCAAiC;IACjC,OAAO,CAAC,kBAAkB,CAAI;IAE9B,OAAO,CAAC,YAAY,CAAwB;gBAExB,SAAS,SAAK;IAMlC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM;IAUnD,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,MAAM;IAmBd,OAAO,CAAC,kBAAkB;CAK3B;AAaD,eAAO,MAAM,mBAAmB,QAAO,mBAAoD,CAAA;AAE3F,eAAO,MAAM,mBAAmB,QAAO,mBAYtC,CAAA"}
@@ -0,0 +1,168 @@
1
+ /// <reference no-default-lib="true" />
2
+ /// <reference lib="esnext" />
3
+ /// <reference lib="dom" />
4
+ /* eslint-disable prefer-arrow/prefer-arrow-functions */
5
+ export * from '@effect/io/Scheduler';
6
+ import * as Scheduler from '@effect/io/Scheduler';
7
+ // Based on https://github.com/Effect-TS/io/blob/main/src/Scheduler.ts#L63
8
+ export class ReactAwareScheduler {
9
+ constructor(maxNextTickBeforeTimer) {
10
+ this.maxNextTickBeforeTimer = maxNextTickBeforeTimer;
11
+ this.running = false;
12
+ this.tasks = new Array();
13
+ }
14
+ scheduleTask(task) {
15
+ this.tasks.push(task);
16
+ if (this.running === false) {
17
+ this.running = true;
18
+ this.starve(0, Date.now());
19
+ }
20
+ }
21
+ starveInternal(depth, starveStartedMs) {
22
+ const tasks = this.tasks;
23
+ this.tasks = [];
24
+ // TODO do some metering here to avoid frame drops
25
+ for (const task of tasks) {
26
+ task();
27
+ }
28
+ if (this.tasks.length === 0) {
29
+ this.running = false;
30
+ }
31
+ else {
32
+ this.starve(depth, starveStartedMs);
33
+ }
34
+ }
35
+ starve(executionDepth, starveStartedMs_) {
36
+ const { shouldYield, starveStartedMs } = this.shouldYieldToNextFrame(executionDepth, starveStartedMs_);
37
+ if (shouldYield) {
38
+ setTimeout(() => this.starveInternal(0, starveStartedMs), 0);
39
+ }
40
+ else {
41
+ // Schedules remaining work as a microtask (using `Promise.resolve()` instead of `queueMicrotask()` for better compatibility (e.g. React Native))
42
+ void Promise.resolve(void 0).then(() => this.starveInternal(executionDepth + 1, starveStartedMs));
43
+ }
44
+ }
45
+ /** NOTE We're also returning `starveStartedMs` to avoid having to call` Date.now()` twice */
46
+ shouldYieldToNextFrame(depth, starveStartedMs) {
47
+ // @ts-expect-error TODO improve this (at least the typing)
48
+ const reactRenderedThisFrame = window.__debugReactRenderedThisFrame;
49
+ if (reactRenderedThisFrame)
50
+ return { shouldYield: true, starveStartedMs };
51
+ if (depth >= this.maxNextTickBeforeTimer)
52
+ return { shouldYield: true, starveStartedMs };
53
+ const now = Date.now();
54
+ // TODO use actual FPS
55
+ if (now - starveStartedMs > 10)
56
+ return { shouldYield: true, starveStartedMs: now };
57
+ return { shouldYield: false, starveStartedMs };
58
+ }
59
+ }
60
+ /** NOTE should only be used on Main Thread */
61
+ export class BackgroundScheduler {
62
+ constructor() {
63
+ this.running = false;
64
+ this.taskBuckets = new Scheduler.PriorityBuckets();
65
+ }
66
+ scheduleTask(task, priority) {
67
+ this.taskBuckets.scheduleTask(task, priority);
68
+ if (this.running === false) {
69
+ this.running = true;
70
+ this.starve();
71
+ }
72
+ }
73
+ doWork(idleDeadline) {
74
+ while (true) {
75
+ const task = getNextTask(this.taskBuckets);
76
+ if (task === undefined) {
77
+ this.running = false;
78
+ return;
79
+ }
80
+ else {
81
+ task();
82
+ if (navigator.scheduling.isInputPending() || idleDeadline.timeRemaining() <= 0.5) {
83
+ this.starve();
84
+ return;
85
+ }
86
+ }
87
+ }
88
+ }
89
+ starve() {
90
+ requestIdleCallback((idleDeadline) => {
91
+ this.doWork(idleDeadline);
92
+ });
93
+ }
94
+ }
95
+ export class FallbackBackgroundScheduler {
96
+ constructor(systemFps = 60) {
97
+ this.systemFps = systemFps;
98
+ this.running = false;
99
+ this.taskBuckets = new Scheduler.PriorityBuckets();
100
+ /** Timestamp in milli seconds */
101
+ this.lastWitnessedFrame = 0;
102
+ this.timePerFrame = 1000 / this.systemFps;
103
+ // NOTE We keep this loop running (even if no tasks might be scheduled for a while)
104
+ // to optimize the latency for the next task that might be scheduled
105
+ this.loopRequestAnimationFrame();
106
+ }
107
+ scheduleTask(task, priority) {
108
+ this.taskBuckets.scheduleTask(task, priority);
109
+ if (this.running === false) {
110
+ this.running = true;
111
+ this.starve();
112
+ }
113
+ }
114
+ // TODO We should investigate a better implementation for Safari if possible
115
+ loopRequestAnimationFrame() {
116
+ // TODO use `_now` from requestAnimationFrame
117
+ requestAnimationFrame((_now) => {
118
+ // setInterval(() => {
119
+ this.lastWitnessedFrame = Date.now();
120
+ this.loopRequestAnimationFrame();
121
+ });
122
+ // }, this.timePerFrame)
123
+ }
124
+ starve() {
125
+ while (true) {
126
+ const task = getNextTask(this.taskBuckets);
127
+ if (task === undefined) {
128
+ this.running = false;
129
+ return;
130
+ }
131
+ else {
132
+ task();
133
+ if (this.getRemainingTimeMs() <= 0.5) {
134
+ this.starve();
135
+ return;
136
+ }
137
+ }
138
+ }
139
+ }
140
+ getRemainingTimeMs() {
141
+ const now = Date.now();
142
+ const timeSinceLastFrame = now - this.lastWitnessedFrame;
143
+ return this.timePerFrame - timeSinceLastFrame;
144
+ }
145
+ }
146
+ /**
147
+ * NOTE This implementation always prioritizes higher-priority tasks over lower priority tasks
148
+ * even if the lower priority task was scheduled first
149
+ */
150
+ const getNextTask = (taskBuckets) => {
151
+ for (const [_, tasks] of taskBuckets.buckets) {
152
+ const task = tasks.shift();
153
+ if (task !== undefined)
154
+ return task;
155
+ }
156
+ };
157
+ export const reactAwareScheduler = () => new ReactAwareScheduler(2048);
158
+ export const backgroundScheduler = () => {
159
+ // Safari doesn't yet support `requestIdleCallback` and `navigator.scheduling.isInputPending`
160
+ // So we're falling back to a timer based scheduler
161
+ if (typeof window === 'undefined' ||
162
+ window.requestIdleCallback === undefined ||
163
+ navigator.scheduling?.isInputPending === undefined) {
164
+ return new FallbackBackgroundScheduler();
165
+ }
166
+ return new BackgroundScheduler();
167
+ };
168
+ //# sourceMappingURL=Scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scheduler.js","sourceRoot":"","sources":["../../src/effect/Scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type * as Schema from '@effect/schema/Schema';
2
+ export declare const hash: (schema: Schema.Schema<any, any>) => number;
3
+ //# sourceMappingURL=SchemaHash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaHash.d.ts","sourceRoot":"","sources":["../../../src/effect/Schema/SchemaHash.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAEpD,eAAO,MAAM,IAAI,WAAY,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,KAAG,MAA0C,CAAA"}
@@ -0,0 +1,15 @@
1
+ export const hash = (schema) => hashCode(JSON.stringify(schema));
2
+ // Based on https://stackoverflow.com/a/7616484
3
+ const hashCode = (str) => {
4
+ let hash = 0, i, chr;
5
+ if (str.length === 0)
6
+ return hash;
7
+ for (i = 0; i < str.length; i++) {
8
+ // eslint-disable-next-line unicorn/prefer-code-point
9
+ chr = str.charCodeAt(i);
10
+ hash = (hash << 5) - hash + chr;
11
+ hash = Math.trunc(hash); // Convert to 32bit integer
12
+ }
13
+ return hash;
14
+ };
15
+ //# sourceMappingURL=SchemaHash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaHash.js","sourceRoot":"","sources":["../../../src/effect/Schema/SchemaHash.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAA+B,EAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;AAEjG,+CAA+C;AAC/C,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE;IAC/B,IAAI,IAAI,GAAG,CAAC,EACV,CAAC,EACD,GAAG,CAAA;IACL,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACjC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,qDAAqD;QACrD,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAA;QAC/B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA,CAAC,2BAA2B;KACpD;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SchemaHash.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaHash.test.d.ts","sourceRoot":"","sources":["../../../src/effect/Schema/SchemaHash.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import * as Schema from './index.js';
3
+ describe('SchemaHash', () => {
4
+ it('simple struct', () => {
5
+ const schema = Schema.struct({ a: Schema.number });
6
+ expect(Schema.hash(schema)).toMatchInlineSnapshot('-12736118826');
7
+ });
8
+ it('date transform', () => {
9
+ const schema = Schema.struct({ a: Schema.dateFromString });
10
+ expect(Schema.hash(schema)).toMatchInlineSnapshot('-25415217759');
11
+ });
12
+ });
13
+ //# sourceMappingURL=SchemaHash.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaHash.test.js","sourceRoot":"","sources":["../../../src/effect/Schema/SchemaHash.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,KAAK,MAAM,MAAM,YAAY,CAAA;AAEpC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;QACvB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;QAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;QACxB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAA;QAC1D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAA;IACnE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import * as Equal from '@effect/data/Equal';
2
+ import * as Hash from '@effect/data/Hash';
3
+ import * as Schema from '@effect/schema/Schema';
4
+ export declare class JsonWrapper<A> {
5
+ readonly value: A;
6
+ constructor(value: A);
7
+ [Hash.symbol](): number;
8
+ [Equal.symbol](that: Equal.Equal): boolean;
9
+ }
10
+ export declare const jsonWrapper: <I, A>(item: Schema.Schema<I, A>) => Schema.Schema<I, JsonWrapper<A>>;
11
+ //# sourceMappingURL=SchemaJsonWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaJsonWrapper.d.ts","sourceRoot":"","sources":["../../../src/effect/Schema/SchemaJsonWrapper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAC3C,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAA;AAQzC,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAG/C,qBAAa,WAAW,CAAC,CAAC;IACZ,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAAR,KAAK,EAAE,CAAC;IAC7B,CAAC,IAAI,CAAC,MAAM,CAAC;IAGb,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO;CAG3C;AAgCD,eAAO,MAAM,WAAW,uEAMrB,CAAA"}