@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,82 @@
1
+ import * as Chunk from '@effect/data/Chunk';
2
+ import * as Context from '@effect/data/Context';
3
+ import { dual, identity, pipe } from '@effect/data/Function';
4
+ import * as Option from '@effect/data/Option';
5
+ import * as Predicate from '@effect/data/Predicate';
6
+ import * as Cause from '@effect/io/Cause';
7
+ import * as Effect from '@effect/io/Effect';
8
+ import * as Ref from '@effect/io/Ref';
9
+ import * as Sink from '@effect/stream/Sink';
10
+ import * as Stream from '@effect/stream/Stream';
11
+ import { logError } from '../Effect.js';
12
+ import { chainSwitch } from './chainSwitch.js';
13
+ export * from '@effect/stream/Stream';
14
+ export * from './chainSwitch.js';
15
+ // export const filterNot: {
16
+ // <A, B extends A>(refinement: Predicate.Refinement<A, B>): <R, E>(self: Stream.Stream<R, E, A>) => Stream.Stream<R, E, B>;
17
+ // <A>(predicate: Predicate.Predicate<A>): <R, E>(self: Stream.Stream<R, E, A>) => Stream.Stream<R, E, A>;
18
+ // <R, E, A>(self: Stream.Stream<R, E, A>, predicate: Predicate.Predicate<A>): Stream.Stream<R, E, A>;
19
+ // <R, E, A, B extends A>(self: Stream.Stream<R, E, A>, refinement: Predicate.Refinement<A, B>): Stream.Stream<R, E, B>;
20
+ // } =
21
+ // TODO provide full API like above
22
+ export const filterNot = (predicate) => (stream) => Stream.filter(stream, Predicate.not(predicate));
23
+ export const tapSync = (tapFn) => (stream) => Stream.tap(stream, (a) => Effect.sync(() => tapFn(a)));
24
+ const isIdentity = (a1, a2) => a1 === a2;
25
+ export const skipRepeated = (isEqual = isIdentity) => (stream) => skipRepeated_(stream, isEqual);
26
+ export const skipRepeated_ = (stream, isEqual = isIdentity) => pipe(Ref.make(Option.none()), Stream.fromEffect, Stream.flatMap((ref) => pipe(stream, Stream.filterEffect((el) => pipe(Ref.get(ref), Effect.flatMap((prevEl) => {
27
+ if (prevEl._tag === 'None' || isEqual(prevEl.value, el) === false) {
28
+ return pipe(Ref.set(ref, Option.some(el)), Effect.map(() => true));
29
+ }
30
+ else {
31
+ return Effect.succeed(false);
32
+ }
33
+ }))))));
34
+ // TODO this currently seems to cause an infinite loop - should be fixed with the next release of Effect
35
+ export const aggregateLastValue = (stream) => pipe(stream,
36
+ // S.aggregateAsync(Sink.last<E, A>()),
37
+ Stream.aggregate(Sink.foldLeft(Option.none(), (_, in_) => Option.some(in_))), Stream.filterMap(identity));
38
+ // export const chainSwitch = <R1, E1, A, B>(f: (a: A) => S.Stream<R1, E1, B>) => S.flatMapParSwitch(f, 1, 1)
39
+ export const mapEffectSwitch = (mapEffect) => chainSwitch((a) => Stream.fromEffect(mapEffect(a)));
40
+ export const tapChunk = (f) => (self) => Stream.mapChunksEffect(self, (chunks) => pipe(f(chunks), Effect.map(() => chunks)));
41
+ export const tapChunkArray = (f) => (self) => Stream.mapChunksEffect(self, (chunks) => pipe(f(Chunk.toReadonlyArray(chunks)), Effect.map(() => chunks)));
42
+ export const runCollectArray = (stream) => pipe(stream, Stream.runCollect, Effect.map(Chunk.toReadonlyArray));
43
+ export const tapCauseLogPretty = (stream) => Stream.catchAllCause(stream, (cause) => pipe(logError(Cause.pretty(cause)), Effect.flatMap(() => Effect.failCause(cause)), Stream.fromEffect));
44
+ export const runHeadUnsafe = (stream) => pipe(stream, Stream.runHead, Effect.map(Option.getOrThrow));
45
+ export const provideSomeContext = (ctx) => (self) => Stream.contramapContext(self, (parentCtx) => Context.merge(parentCtx, ctx));
46
+ export const suspendUnify = (s) => pipe(Stream.succeed(0), Stream.flatMap(() => s()));
47
+ export const unify = identity;
48
+ /**
49
+ * Keeps none of the errors, and terminates the fiber with them, using
50
+ * the specified function to convert the `E` into a `unknown`.
51
+ */
52
+ export const tapLast = (f) => (stream) => Stream.suspend(() => {
53
+ let last = Option.none();
54
+ return pipe(stream, Stream.tap((a) => Effect.sync(() => {
55
+ last = Option.some(a);
56
+ })), Stream.ensuring(Effect.suspend(() => f(last))));
57
+ });
58
+ export const tapLastSome = (f) => (stream) => pipe(stream, tapLast((o) => Effect.suspend(() => (o._tag === 'Some' ? f(o.value) : Effect.unit))));
59
+ export const tapCollect = (f) =>
60
+ // TODO
61
+ // <R, E>(stream: Stream.Stream<R, E, A>): Stream.Stream<R | R1, E | E1, A> =>
62
+ (stream) => Stream.suspend(() => {
63
+ const collected = [];
64
+ return pipe(stream, Stream.tap((a) => Effect.sync(() => {
65
+ collected.push(a);
66
+ })),
67
+ // TODO remove `Effect.orDie`
68
+ Stream.ensuring(Effect.suspend(() => Effect.orDie(f(collected)))));
69
+ });
70
+ export const zipWithLatestArray_ = (streams, f) => {
71
+ if (streams.length === 0)
72
+ return Stream.empty;
73
+ let intermediateStream = Stream.make([]);
74
+ for (let i = 0; i < streams.length; i++) {
75
+ const nextStream = streams[i];
76
+ intermediateStream = Stream.zipLatestWith(intermediateStream, nextStream, (as, a) => [...as, a]);
77
+ }
78
+ return Stream.map(intermediateStream, f);
79
+ };
80
+ /** Combination of `Stream.chunks` + `Stream.map((arr) => ...)` */
81
+ export const mapChunksAsArray = dual(2, (self, f) => pipe(self, Stream.chunks, Stream.map((chunk) => f(Chunk.toReadonlyArray(chunk)))));
82
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/effect/Stream/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ import * as Stream from '@effect/stream/Stream';
3
+ import * as SubscriptionRef from '@effect/stream/SubscriptionRef';
4
+ export declare const getAndUpdateSync: {
5
+ <A>(f: (a: A) => A): (sref: SubscriptionRef.SubscriptionRef<A>) => Effect.Effect<never, never, A>;
6
+ <A>(sref: SubscriptionRef.SubscriptionRef<A>, f: (a: A) => A): Effect.Effect<never, never, A>;
7
+ };
8
+ export declare const changeStreamIncludingCurrent: <A>(sref: SubscriptionRef.SubscriptionRef<A>) => Stream.Stream<never, never, A>;
9
+ export * from '@effect/stream/SubscriptionRef';
10
+ //# sourceMappingURL=SubscriptionRef.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriptionRef.d.ts","sourceRoot":"","sources":["../../src/effect/SubscriptionRef.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,KAAK,eAAe,MAAM,gCAAgC,CAAA;AAEjE,eAAO,MAAM,gBAAgB,EAAE;IAC7B,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;IACjG,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAA;CAIJ,CAAA;AAE3F,eAAO,MAAM,4BAA4B,iFACwC,CAAA;AAEjF,cAAc,gCAAgC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { dual, pipe } from '@effect/data/Function';
2
+ import * as Effect from '@effect/io/Effect';
3
+ import * as Stream from '@effect/stream/Stream';
4
+ import * as SubscriptionRef from '@effect/stream/SubscriptionRef';
5
+ export const getAndUpdateSync = dual(2, (sref, f) => SubscriptionRef.getAndUpdateEffect(sref, (a) => Effect.sync(() => f(a))));
6
+ export const changeStreamIncludingCurrent = (sref) => pipe(Stream.fromEffect(SubscriptionRef.get(sref)), Stream.concat(sref.changes));
7
+ export * from '@effect/stream/SubscriptionRef';
8
+ //# sourceMappingURL=SubscriptionRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubscriptionRef.js","sourceRoot":"","sources":["../../src/effect/SubscriptionRef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,uBAAuB,CAAA;AAC/C,OAAO,KAAK,eAAe,MAAM,gCAAgC,CAAA;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAGzB,IAAI,CAGN,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAE3F,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAI,IAAwC,EAAE,EAAE,CAC1F,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;AAEjF,cAAc,gCAAgC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import * as Option from '@effect/data/Option';
2
+ import * as Effect from '@effect/io/Effect';
3
+ import * as Gate from './Gate.js';
4
+ import * as Otel from './Otel/index.js';
5
+ type TimeoutInMs = number;
6
+ export declare class TimeoutGate {
7
+ readonly gate: Gate.Gate;
8
+ private constructor();
9
+ static make: Effect.Effect<never, never, TimeoutGate>;
10
+ runWhenOpen: <E>(shouldClose: (error: E) => Option.Option<TimeoutInMs>) => <R, A>(eff: Effect.Effect<R, E, A>) => Effect.Effect<Otel.Meter | Otel.Tracer | R, E, A>;
11
+ }
12
+ export {};
13
+ //# sourceMappingURL=TimeoutGate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeoutGate.d.ts","sourceRoot":"","sources":["../../src/effect/TimeoutGate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AAEvC,KAAK,WAAW,GAAG,MAAM,CAAA;AAEzB,qBAAa,WAAW;IACF,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI;IAA5C,OAAO;IAEP,MAAM,CAAC,IAAI,2CAGV;IAED,WAAW,iCACsB,aAAa,CAAC,WAAW,CAAC,8FA2CxD;CACJ"}
@@ -0,0 +1,41 @@
1
+ import * as Duration from '@effect/data/Duration';
2
+ import { pipe } from '@effect/data/Function';
3
+ import * as Option from '@effect/data/Option';
4
+ import * as Effect from '@effect/io/Effect';
5
+ import * as Gate from './Gate.js';
6
+ import * as Otel from './Otel/index.js';
7
+ export class TimeoutGate {
8
+ constructor(gate) {
9
+ this.gate = gate;
10
+ this.runWhenOpen = (shouldClose) => (eff) => {
11
+ const x = pipe(this.gate.waitForOpen, Effect.flatMap(() => pipe(eff, Otel.withSpan('runIfOpen-eff'))), Effect.catchAll((error) => {
12
+ const timeoutOption = shouldClose(error);
13
+ if (Option.isSome(timeoutOption)) {
14
+ const timeoutMs = timeoutOption.value;
15
+ return pipe(this.gate.close, Effect.flatMap((previousIsOpen) => {
16
+ if (previousIsOpen) {
17
+ // if the gate was open before and now should be closed, this means
18
+ // the "current eff" was the trigger of the gate closing
19
+ return pipe(
20
+ // Effect.log(`Closing timeout gate for ${timeoutMs}ms`),
21
+ // Effect.flatMap(() =>
22
+ // pipe(
23
+ Effect.acquireUseRelease(pipe(Effect.unit, Otel.upDownCounter('timeoutgate_timeoutms', timeoutMs)), () => Effect.sleep(Duration.millis(timeoutMs)), () => pipe(Effect.unit, Otel.upDownCounter('timeoutgate_timeoutms', -timeoutMs))), Otel.withSpan('runIfOpen-sleep', { attributes: { timeoutMs } }),
24
+ // ),
25
+ // ),
26
+ Effect.flatMap(() => this.gate.open), Effect.flatMap(() => this.runWhenOpen(shouldClose)(eff)));
27
+ }
28
+ // retry once the gate is open
29
+ return this.runWhenOpen(shouldClose)(eff);
30
+ }));
31
+ }
32
+ else {
33
+ return Effect.fail(error);
34
+ }
35
+ }), Otel.withSpan('runIfOpen'));
36
+ return x;
37
+ };
38
+ }
39
+ }
40
+ TimeoutGate.make = pipe(Gate.makeGate(true), Effect.map((gate) => new TimeoutGate(gate)));
41
+ //# sourceMappingURL=TimeoutGate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimeoutGate.js","sourceRoot":"","sources":["../../src/effect/TimeoutGate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AAIvC,MAAM,OAAO,WAAW;IACtB,YAA6B,IAAe;QAAf,SAAI,GAAJ,IAAI,CAAW;QAO5C,gBAAW,GACT,CAAI,WAAqD,EAAE,EAAE,CAC7D,CAAO,GAA2B,EAAqD,EAAE;YACvF,MAAM,CAAC,GAAG,IAAI,CACZ,IAAI,CAAC,IAAI,CAAC,WAAW,EACrB,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,EAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;gBACxC,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;oBAChC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAA;oBACrC,OAAO,IAAI,CACT,IAAI,CAAC,IAAI,CAAC,KAAK,EACf,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE;wBAChC,IAAI,cAAc,EAAE;4BAClB,mEAAmE;4BACnE,wDAAwD;4BACxD,OAAO,IAAI;4BACT,yDAAyD;4BACzD,uBAAuB;4BACvB,UAAU;4BACV,MAAM,CAAC,iBAAiB,CACtB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC,EACzE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAC9C,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,CAAC,CACjF,EACD,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC;4BAC/D,OAAO;4BACP,KAAK;4BACL,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EACpC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CACzD,CAAA;yBACF;wBAED,8BAA8B;wBAC9B,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAA;oBAC3C,CAAC,CAAC,CACH,CAAA;iBACF;qBAAM;oBACL,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;iBAC1B;YACH,CAAC,CAAC,EACF,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC3B,CAAA;YACD,OAAO,CAAC,CAAA;QACV,CAAC,CAAA;IAnD4C,CAAC;;AAEzC,gBAAI,GAAG,IAAI,CAChB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EACnB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAC5C,AAHU,CAGV"}
@@ -0,0 +1,18 @@
1
+ import * as Data from '@effect/data/Data';
2
+ import * as Effect from '@effect/io/Effect';
3
+ export type Base64String = string;
4
+ export declare const encryptTextWithPassword: (text: string, password: string) => Effect.Effect<never, WebCryptoError, string>;
5
+ export declare const decryptTextWithPassword: (encryptedText: Base64String, password: string) => Effect.Effect<never, WebCryptoError, string>;
6
+ export declare const encryptAesGcm: (key: CryptoKey, data: Uint8Array, iv: Uint8Array) => Effect.Effect<never, WebCryptoError, ArrayBuffer>;
7
+ export declare const decryptAesGcm: (key: CryptoKey, data: Uint8Array, iv: Uint8Array) => Effect.Effect<never, WebCryptoError, ArrayBuffer>;
8
+ export declare const makePasswordKey: (password: string) => Effect.Effect<never, WebCryptoError, CryptoKey>;
9
+ export declare const deriveKey: (passwordKey: CryptoKey, salt: Uint8Array, keyUsage: KeyUsage[]) => Effect.Effect<never, WebCryptoError, CryptoKey>;
10
+ declare const WebCryptoError_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 & {
11
+ _tag: "WebCryptoError";
12
+ }>;
13
+ export declare class WebCryptoError extends WebCryptoError_base<{
14
+ readonly error: any;
15
+ }> {
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=WebCrypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebCrypto.d.ts","sourceRoot":"","sources":["../../src/effect/WebCrypto.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,mBAAmB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAU3C,MAAM,MAAM,YAAY,GAAG,MAAM,CAAA;AAEjC,eAAO,MAAM,uBAAuB,SAAU,MAAM,YAAY,MAAM,KAAG,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAsBhH,CAAA;AAEJ,eAAO,MAAM,uBAAuB,kBACnB,YAAY,YACjB,MAAM,KACf,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAa1C,CAAA;AAEJ,eAAO,MAAM,aAAa,QACnB,SAAS,QACR,UAAU,MACZ,UAAU,KACb,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,CAI/C,CAAA;AAEJ,eAAO,MAAM,aAAa,QACnB,SAAS,QACR,UAAU,MACZ,UAAU,KACb,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,WAAW,CAI/C,CAAA;AAEJ,eAAO,MAAM,eAAe,aAAc,MAAM,KAAG,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAI7F,CAAA;AAEJ,eAAO,MAAM,SAAS,gBACP,SAAS,QAChB,UAAU,YACN,QAAQ,EAAE,KACnB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAgB7C,CAAA;;;;AAEJ,qBAAa,cAAe,SAAQ,oBAAmC;IAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAA;CAAE,CAAC;CAAG"}
@@ -0,0 +1,56 @@
1
+ import * as Data from '@effect/data/Data';
2
+ import * as Effect from '@effect/io/Effect';
3
+ import * as base64 from '../base64.js';
4
+ // NOTE Requires `import '@livestore/utils/node/load-crypto'` for Node
5
+ const crypto = globalThis.crypto;
6
+ const enc = new TextEncoder();
7
+ const dec = new TextDecoder();
8
+ export const encryptTextWithPassword = (text, password) => Effect.gen(function* ($) {
9
+ const passwordKey = yield* $(makePasswordKey(password));
10
+ const encodedText = enc.encode(text);
11
+ const iv = crypto.getRandomValues(new Uint8Array(12));
12
+ const salt = crypto.getRandomValues(new Uint8Array(16));
13
+ const aesKey = yield* $(deriveKey(passwordKey, salt, ['encrypt']));
14
+ const encryptedData = yield* $(encryptAesGcm(aesKey, encodedText, iv));
15
+ const encryptedDataArr = new Uint8Array(encryptedData);
16
+ const buff = new Uint8Array(salt.byteLength + iv.byteLength + encryptedDataArr.byteLength);
17
+ buff.set(salt, 0);
18
+ buff.set(iv, salt.byteLength);
19
+ buff.set(encryptedDataArr, salt.byteLength + iv.byteLength);
20
+ const base64Buff = base64.encode(buff);
21
+ return base64Buff;
22
+ });
23
+ export const decryptTextWithPassword = (encryptedText, password) => Effect.gen(function* ($) {
24
+ const passwordKey = yield* $(makePasswordKey(password));
25
+ const encryptedDataBuff = base64.decode(encryptedText);
26
+ const salt = encryptedDataBuff.slice(0, 16);
27
+ const iv = encryptedDataBuff.slice(16, 16 + 12);
28
+ const data = encryptedDataBuff.slice(16 + 12);
29
+ const aesKey = yield* $(deriveKey(passwordKey, salt, ['decrypt']));
30
+ const decryptedData = yield* $(decryptAesGcm(aesKey, data, iv));
31
+ return dec.decode(decryptedData);
32
+ });
33
+ export const encryptAesGcm = (key, data, iv) => Effect.tryPromise({
34
+ try: () => crypto.subtle.encrypt({ name: 'AES-GCM', iv }, key, data),
35
+ catch: (error) => new WebCryptoError({ error }),
36
+ });
37
+ export const decryptAesGcm = (key, data, iv) => Effect.tryPromise({
38
+ try: () => crypto.subtle.decrypt({ name: 'AES-GCM', iv }, key, data),
39
+ catch: (error) => new WebCryptoError({ error }),
40
+ });
41
+ export const makePasswordKey = (password) => Effect.tryPromise({
42
+ try: () => crypto.subtle.importKey('raw', enc.encode(password), 'PBKDF2', false, ['deriveKey']),
43
+ catch: (error) => new WebCryptoError({ error }),
44
+ });
45
+ export const deriveKey = (passwordKey, salt, keyUsage) => Effect.tryPromise({
46
+ try: () => crypto.subtle.deriveKey({
47
+ name: 'PBKDF2',
48
+ salt: salt,
49
+ iterations: 250000,
50
+ hash: 'SHA-256',
51
+ }, passwordKey, { name: 'AES-GCM', length: 256 }, false, keyUsage),
52
+ catch: (error) => new WebCryptoError({ error }),
53
+ });
54
+ export class WebCryptoError extends Data.TaggedClass('WebCryptoError') {
55
+ }
56
+ //# sourceMappingURL=WebCrypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebCrypto.js","sourceRoot":"","sources":["../../src/effect/WebCrypto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ export declare const withLock: (lockName: string, options?: {
3
+ skipIfTaken: boolean;
4
+ }) => <Ctx, E, A>(eff: Effect.Effect<Ctx, E, A>) => Effect.Effect<Ctx, E, void | A>;
5
+ //# sourceMappingURL=WebLock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebLock.d.ts","sourceRoot":"","sources":["../../src/effect/WebLock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAK3C,eAAO,MAAM,QAAQ,aACR,MAAM,YAAY;IAAE,WAAW,EAAE,OAAO,CAAA;CAAE,kFAoBjD,CAAA"}
@@ -0,0 +1,20 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ import * as Runtime from '@effect/io/Runtime';
3
+ // See https://developer.mozilla.org/en-US/docs/Web/API/Web_Locks_API
4
+ export const withLock = (lockName, options) => (eff) => Effect.gen(function* ($) {
5
+ const runtime = yield* $(Effect.runtime());
6
+ return yield* $(Effect.tryPromise({
7
+ try: (signal) => {
8
+ // NOTE The 'signal' and 'ifAvailable' options cannot be used together.
9
+ const requestOptions = options?.skipIfTaken === true ? { ifAvailable: true } : { signal };
10
+ return navigator.locks.request(lockName, requestOptions, async (lock) => {
11
+ if (lock === null)
12
+ return;
13
+ // TODO also propagate Effect interruption to the execution
14
+ return Runtime.runPromise(runtime)(eff);
15
+ });
16
+ },
17
+ catch: (err) => err,
18
+ }));
19
+ });
20
+ //# sourceMappingURL=WebLock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebLock.js","sourceRoot":"","sources":["../../src/effect/WebLock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAE7C,qEAAqE;AAErE,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAC,QAAgB,EAAE,OAAkC,EAAE,EAAE,CACzD,CAAY,GAA6B,EAAmC,EAAE,CAC5E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAO,CAAC,CAAA;IAE/C,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,MAAM,CAAC,UAAU,CAAO;QACtB,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;YACd,uEAAuE;YACvE,MAAM,cAAc,GAAG,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAA;YACzF,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtE,IAAI,IAAI,KAAK,IAAI;oBAAE,OAAM;gBAEzB,2DAA2D;gBAC3D,OAAO,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAA;YACzC,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAe;KAChC,CAAC,CACH,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -0,0 +1,19 @@
1
+ import * as Effect from '@effect/io/Effect';
2
+ /** Sleeps the specified duration depending on whether the document is hidden or not */
3
+ export declare const sleepBasedOnVisibility: ({ durationHiddenMs, durationVisibleMs, }: {
4
+ durationHiddenMs: number;
5
+ durationVisibleMs: number;
6
+ }) => Effect.Effect<never, never, void>;
7
+ export declare const fileReaderAsText: (data: Blob) => Effect.Effect<never, FileReaderError, string>;
8
+ export declare const fileReaderAsDataUrl: (data: Blob) => Effect.Effect<never, FileReaderError, string>;
9
+ export declare const fileReaderAsArrayBuffer: (data: Blob) => Effect.Effect<never, FileReaderError, ArrayBuffer>;
10
+ declare const FileReaderError_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>) => import("@effect/data/Data").Data<A & {
11
+ _tag: "FileReaderError";
12
+ }>;
13
+ export declare class FileReaderError extends FileReaderError_base<{
14
+ readonly error: DOMException;
15
+ }> {
16
+ toString: () => string;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/effect/browser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAI3C,uFAAuF;AACvF,eAAO,MAAM,sBAAsB;sBAIf,MAAM;uBACL,MAAM;uCA0CvB,CAAA;AAEJ,eAAO,MAAM,gBAAgB,SAAU,IAAI,kDAkBvC,CAAA;AAEJ,eAAO,MAAM,mBAAmB,SAAU,IAAI,kDAiB1C,CAAA;AAEJ,eAAO,MAAM,uBAAuB,SAAU,IAAI,uDAkB9C,CAAA;;;;AAEJ,qBAAa,eAAgB,SAAQ,qBAA+B;IAClE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;CAC7B,CAAC;IACA,QAAQ,eAAwD;CACjE"}
@@ -0,0 +1,82 @@
1
+ import { TaggedClass } from '@effect/data/Data';
2
+ import { pipe } from '@effect/data/Function';
3
+ import * as Effect from '@effect/io/Effect';
4
+ import { errorToString } from '../index.js';
5
+ /** Sleeps the specified duration depending on whether the document is hidden or not */
6
+ export const sleepBasedOnVisibility = ({ durationHiddenMs, durationVisibleMs, }) => Effect.suspend(() => {
7
+ const startTimeMs = Date.now();
8
+ const cleanUpFns = [];
9
+ return pipe(Effect.async((cb) => {
10
+ const visbilityEventHandler = () => {
11
+ if (document.hidden === false) {
12
+ const elapsedMs = Date.now() - startTimeMs;
13
+ if (elapsedMs >= durationHiddenMs) {
14
+ cb(Effect.unit);
15
+ }
16
+ }
17
+ };
18
+ document.addEventListener('visibilitychange', visbilityEventHandler);
19
+ cleanUpFns.push(() => document.removeEventListener('visibilitychange', visbilityEventHandler));
20
+ const backgroundTimeout = setTimeout(() => { }, durationHiddenMs);
21
+ cleanUpFns.push(() => clearTimeout(backgroundTimeout));
22
+ const foregroundTimeout = setTimeout(() => {
23
+ if (document.hidden === false) {
24
+ cb(Effect.unit);
25
+ }
26
+ }, durationVisibleMs);
27
+ cleanUpFns.push(() => clearTimeout(foregroundTimeout));
28
+ return Effect.sync(() => {
29
+ cleanUpFns.forEach((fn) => fn());
30
+ });
31
+ }), Effect.tap(() => Effect.sync(() => {
32
+ cleanUpFns.forEach((fn) => fn());
33
+ })));
34
+ });
35
+ export const fileReaderAsText = (data) => Effect.async((cb, signal) => {
36
+ const reader = new FileReader();
37
+ signal.addEventListener('abort', () => {
38
+ reader.abort();
39
+ });
40
+ reader.addEventListener('error', (event) => {
41
+ cb(Effect.fail(new FileReaderError({ error: event.target.error })));
42
+ });
43
+ reader.addEventListener('load', (event) => {
44
+ cb(Effect.succeed(event.target.result));
45
+ });
46
+ // eslint-disable-next-line unicorn/prefer-blob-reading-methods
47
+ reader.readAsText(data);
48
+ });
49
+ export const fileReaderAsDataUrl = (data) => Effect.async((cb, signal) => {
50
+ const reader = new FileReader();
51
+ signal.addEventListener('abort', () => {
52
+ reader.abort();
53
+ });
54
+ reader.addEventListener('error', (event) => {
55
+ cb(Effect.fail(new FileReaderError({ error: event.target.error })));
56
+ });
57
+ reader.addEventListener('load', (event) => {
58
+ cb(Effect.succeed(event.target.result));
59
+ });
60
+ reader.readAsDataURL(data);
61
+ });
62
+ export const fileReaderAsArrayBuffer = (data) => Effect.async((cb, signal) => {
63
+ const reader = new FileReader();
64
+ signal.addEventListener('abort', () => {
65
+ reader.abort();
66
+ });
67
+ reader.addEventListener('error', (event) => {
68
+ cb(Effect.fail(new FileReaderError({ error: event.target.error })));
69
+ });
70
+ reader.addEventListener('load', (event) => {
71
+ cb(Effect.succeed(event.target.result));
72
+ });
73
+ // eslint-disable-next-line unicorn/prefer-blob-reading-methods
74
+ reader.readAsArrayBuffer(data);
75
+ });
76
+ export class FileReaderError extends TaggedClass('FileReaderError') {
77
+ constructor() {
78
+ super(...arguments);
79
+ this.toString = () => `FileReaderError: ${errorToString(this.error)}`;
80
+ }
81
+ }
82
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/effect/browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/effect/fetch.ts"],"names":[],"mappings":"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"}