@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 @@
1
+ {"version":3,"file":"omit.js","sourceRoot":"","sources":["../../src/object/omit.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,6DAA6D;AAC7D,wFAAwF;AACxF,8DAA8D;AAE9D,uEAAuE;AACvE,MAAM,CAAC,MAAM,IAAI,GAAG,CAClB,GAAQ,EACR,IAAY,EACK,EAAE;IACnB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAQ,EAAE,EAAE;QAC/C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACvB,GAAG,CAAC,GAAG,CAAC,GAAI,GAAW,CAAC,GAAG,CAAC,CAAA;SAC7B;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAS,CAAC,CAAA;AACf,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ type ConvertUndefined<T> = OrUndefined<{
2
+ [K in keyof T as undefined extends T[K] ? K : never]-?: T[K];
3
+ }>;
4
+ type OrUndefined<T> = {
5
+ [K in keyof T]: T[K] | undefined;
6
+ };
7
+ type PickRequired<T> = {
8
+ [K in keyof T as undefined extends T[K] ? never : K]: T[K];
9
+ };
10
+ type ConvertPick<T> = ConvertUndefined<T> & PickRequired<T>;
11
+ export declare const pick: <Obj, Keys extends keyof Obj>(obj: Obj, keys: Keys[]) => ConvertPick<{ [K in Keys]: Obj[K]; }>;
12
+ export declare const pickAllOrElse: <Obj, Keys extends keyof Obj, TElse>(obj: Obj, keys: Keys[], elseValue: TElse) => TElse | ConvertPick<{ [K in Keys]: NonNullable<Obj[K]>; }>;
13
+ export {};
14
+ //# sourceMappingURL=pick.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick.d.ts","sourceRoot":"","sources":["../../src/object/pick.ts"],"names":[],"mappings":"AAAA,KAAK,gBAAgB,CAAC,CAAC,IAAI,WAAW,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAAA;AACxG,KAAK,WAAW,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS;CAAE,CAAA;AAC1D,KAAK,YAAY,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAA;AACrF,KAAK,WAAW,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAA;AAE3D,eAAO,MAAM,IAAI,gGAKhB,CAAA;AAED,eAAO,MAAM,aAAa,8IAczB,CAAA"}
@@ -0,0 +1,17 @@
1
+ export const pick = (obj, keys) => {
2
+ return keys.reduce((acc, key) => {
3
+ acc[key] = obj[key];
4
+ return acc;
5
+ }, {});
6
+ };
7
+ export const pickAllOrElse = (obj, keys, elseValue) => {
8
+ const ret = {};
9
+ for (const key of keys) {
10
+ if (obj[key] === undefined) {
11
+ return elseValue;
12
+ }
13
+ ret[key] = obj[key];
14
+ }
15
+ return ret;
16
+ };
17
+ //# sourceMappingURL=pick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick.js","sourceRoot":"","sources":["../../src/object/pick.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,IAAI,GAAG,CAA8B,GAAQ,EAAE,IAAY,EAAwC,EAAE;IAChH,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9B,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QACnB,OAAO,GAAG,CAAA;IACZ,CAAC,EAAE,EAAS,CAAC,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,GAAQ,EACR,IAAY,EACZ,SAAgB,EAC2C,EAAE;IAC7D,MAAM,GAAG,GAAG,EAAS,CAAA;IACrB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;YAC1B,OAAO,SAAS,CAAA;SACjB;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;KACpB;IAED,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA"}
@@ -0,0 +1,6 @@
1
+ /** Promise.all + Array.map */
2
+ export declare const promiseMap: <T, Res>(arr: T[], map: (el: T, index?: number) => Res | Promise<Res>) => Promise<(Awaited<Res> | Awaited<Res>)[]>;
3
+ export declare const promiseMapDict: <T, Res>(dict: Record<string, T>, map: (el: T, index?: number) => Res | Promise<Res>) => Promise<Record<string, Res>>;
4
+ export declare const promiseMapToDict: <T, Res>(arr: T[], mapValue: (el: T, index?: number) => Res | Promise<Res>, mapKey: (el: T, index?: number) => string) => Promise<Record<string, Res>>;
5
+ export declare const promiseMapPool: <T, Res>(arr: T[], map: (el: T, index?: number) => Promise<Res>, poolLimit: number) => Promise<Res[]>;
6
+ //# sourceMappingURL=promise.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../src/promise.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,eAAO,MAAM,UAAU,0CAA2C,MAAM,oEAC7C,CAAA;AAE3B,eAAO,MAAM,cAAc,yDAEJ,MAAM,wDAI5B,CAAA;AAED,eAAO,MAAM,gBAAgB,+CAED,MAAM,iDACR,MAAM,KAAK,MAAM,iCAK1C,CAAA;AAED,eAAO,MAAM,cAAc,0CAEJ,MAAM,8BAChB,MAAM,mBAiBlB,CAAA"}
@@ -0,0 +1,27 @@
1
+ /** Promise.all + Array.map */
2
+ export const promiseMap = (arr, map) => Promise.all(arr.map(map));
3
+ export const promiseMapDict = async (dict, map) => {
4
+ const mappedEntries = await Promise.all(Object.entries(dict).map(async ([key, val]) => [key, await map(val)]));
5
+ return Object.fromEntries(mappedEntries);
6
+ };
7
+ export const promiseMapToDict = async (arr, mapValue, mapKey) => {
8
+ const mappedEntries = await Promise.all(arr.map(async (el, index) => [mapKey(el, index), await mapValue(el, index)]));
9
+ return Object.fromEntries(mappedEntries);
10
+ };
11
+ export const promiseMapPool = async (arr, map, poolLimit) => {
12
+ const ret = [];
13
+ const executing = [];
14
+ for (const [index, item] of arr.entries()) {
15
+ const p = Promise.resolve().then(() => map(item, index));
16
+ ret.push(p);
17
+ if (poolLimit <= arr.length) {
18
+ const e = p.then(() => executing.splice(executing.indexOf(e), 1));
19
+ executing.push(e);
20
+ if (executing.length >= poolLimit) {
21
+ await Promise.race(executing);
22
+ }
23
+ }
24
+ }
25
+ return Promise.all(ret);
26
+ };
27
+ //# sourceMappingURL=promise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promise.js","sourceRoot":"","sources":["../src/promise.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,MAAM,CAAC,MAAM,UAAU,GAAG,CAAS,GAAQ,EAAE,GAAkD,EAAE,EAAE,CACjG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AAE3B,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,IAAuB,EACvB,GAAkD,EACpB,EAAE;IAChC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9G,OAAO,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,GAAQ,EACR,QAAuD,EACvD,MAAyC,EACX,EAAE;IAChC,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAErH,OAAO,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;AAC1C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,GAAQ,EACR,GAA4C,EAC5C,SAAiB,EACD,EAAE;IAClB,MAAM,GAAG,GAAmB,EAAE,CAAA;IAC9B,MAAM,SAAS,GAAmB,EAAE,CAAA;IACpC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE;QACzC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;QACxD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAEX,IAAI,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE;YAC3B,MAAM,CAAC,GAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;YACtE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,EAAE;gBACjC,MAAM,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;aAC9B;SACF;KACF;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACzB,CAAC,CAAA"}
package/dist/set.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare const difference: <T>(a: Set<T>, b: Set<T>) => Set<T>;
2
+ //# sourceMappingURL=set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../src/set.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,qCAStB,CAAA"}
package/dist/set.js ADDED
@@ -0,0 +1,10 @@
1
+ export const difference = (a, b) => {
2
+ const diff = new Set();
3
+ for (const item of a) {
4
+ if (!b.has(item)) {
5
+ diff.add(item);
6
+ }
7
+ }
8
+ return diff;
9
+ };
10
+ //# sourceMappingURL=set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../src/set.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,CAAS,EAAE,CAAS,EAAE,EAAE;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAK,CAAA;IACzB,KAAK,MAAM,IAAI,IAAI,CAAC,EAAE;QACpB,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;SACf;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ export declare class SingleItem<T> {
2
+ item: T;
3
+ constructor(item: T);
4
+ map: <U>(fn: (item: T) => U) => SingleItem<U>;
5
+ filter: (fn: (item: T) => boolean) => SingleItem<T | undefined>;
6
+ }
7
+ export declare const singleItem: <T>(item: T) => SingleItem<T>;
8
+ //# sourceMappingURL=single-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single-item.d.ts","sourceRoot":"","sources":["../src/single-item.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU,CAAC,CAAC;IACJ,IAAI,EAAE,CAAC;gBAAP,IAAI,EAAE,CAAC;IAE1B,GAAG,iBAAkB,CAAC,yBAAuD;IAE7E,MAAM,cAAe,CAAC,KAAK,OAAO,KAAG,WAAW,CAAC,GAAG,SAAS,CAAC,CAAsD;CACrH;AAED,eAAO,MAAM,UAAU,+BAAuC,CAAA"}
@@ -0,0 +1,9 @@
1
+ export class SingleItem {
2
+ constructor(item) {
3
+ this.item = item;
4
+ this.map = (fn) => new SingleItem(fn(this.item));
5
+ this.filter = (fn) => (fn(this.item) ? this : new SingleItem(undefined));
6
+ }
7
+ }
8
+ export const singleItem = (item) => new SingleItem(item);
9
+ //# sourceMappingURL=single-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single-item.js","sourceRoot":"","sources":["../src/single-item.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IACrB,YAAmB,IAAO;QAAP,SAAI,GAAJ,IAAI,CAAG;QAE1B,QAAG,GAAG,CAAI,EAAkB,EAAiB,EAAE,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAE7E,WAAM,GAAG,CAAC,EAAwB,EAA6B,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;IAJvF,CAAC;CAK/B;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAI,IAAO,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export declare const lowercaseFirstChar: (str: string) => string;
2
+ export declare const uppercaseFirstChar: (str: string) => string;
3
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,QAAS,MAAM,WAA+C,CAAA;AAC7F,eAAO,MAAM,kBAAkB,QAAS,MAAM,WAA+C,CAAA"}
package/dist/string.js ADDED
@@ -0,0 +1,3 @@
1
+ export const lowercaseFirstChar = (str) => str.charAt(0).toLowerCase() + str.slice(1);
2
+ export const uppercaseFirstChar = (str) => str.charAt(0).toUpperCase() + str.slice(1);
3
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC7F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA"}
package/dist/time.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ export declare const minuteInMs: number;
2
+ export declare const time: {
3
+ ms: number;
4
+ sec: number;
5
+ min: number;
6
+ hour: number;
7
+ day: number;
8
+ week: number;
9
+ };
10
+ /** Returns a string of format `m:ss` / `mm:ss` / `h:mm:ss` / ... */
11
+ export declare const msAsTimeString: (ms: number) => string;
12
+ //# sourceMappingURL=time.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.d.ts","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,QAAY,CAAA;AAEnC,eAAO,MAAM,IAAI;;;;;;;CAOhB,CAAA;AAED,oEAAoE;AACpE,eAAO,MAAM,cAAc,OAAQ,MAAM,WAYxC,CAAA"}
package/dist/time.js ADDED
@@ -0,0 +1,22 @@
1
+ export const minuteInMs = 1000 * 60;
2
+ export const time = {
3
+ ms: 1,
4
+ sec: 1000,
5
+ min: 60 * 1000,
6
+ hour: 60 * 60 * 1000,
7
+ day: 24 * 60 * 60 * 1000,
8
+ week: 7 * 24 * 60 * 60 * 1000,
9
+ };
10
+ /** Returns a string of format `m:ss` / `mm:ss` / `h:mm:ss` / ... */
11
+ export const msAsTimeString = (ms) => {
12
+ const seconds = Math.floor(ms / 1000);
13
+ const minutes = Math.floor(seconds / 60);
14
+ const hours = Math.floor(minutes / 60);
15
+ const remainingSeconds = (seconds % 60).toString().padStart(2, '0');
16
+ const remainingMinutes = hours > 0 ? (minutes % 60).toString().padStart(2, '0') : minutes % 60;
17
+ const timeString = [hours > 0 ? `${hours}:` : '', `${remainingMinutes}:`, `${remainingSeconds}`]
18
+ .filter((val) => val !== '')
19
+ .join('');
20
+ return timeString;
21
+ };
22
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../src/time.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAE,CAAA;AAEnC,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,EAAE,EAAE,CAAC;IACL,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,EAAE,GAAG,IAAI;IACd,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;IACpB,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IACxB,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;CAC9B,CAAA;AAED,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAU,EAAE,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IACtC,MAAM,gBAAgB,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACnE,MAAM,gBAAgB,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAA;IAE9F,MAAM,UAAU,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,gBAAgB,GAAG,EAAE,GAAG,gBAAgB,EAAE,CAAC;SAC7F,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;SAC3B,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './json.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from './json.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ @category JSON
3
+ */
4
+ export type JsonObject = {
5
+ [Key in string]?: JsonValue;
6
+ };
7
+ /**
8
+ Matches a JSON array.
9
+
10
+ @category JSON
11
+ */
12
+ export type JsonArray = JsonValue[];
13
+ /**
14
+ Matches any valid JSON primitive value.
15
+
16
+ @category JSON
17
+ */
18
+ export type JsonPrimitive = string | number | boolean | null;
19
+ /**
20
+ Matches any valid JSON value.
21
+
22
+ @see `Jsonify` if you need to transform a type to one that is assignable to `JsonValue`.
23
+
24
+ @category JSON
25
+ */
26
+ export type JsonValue = JsonPrimitive | JsonObject | JsonArray;
27
+ //# sourceMappingURL=json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/types/json.ts"],"names":[],"mappings":"AAAA;;EAEE;AACF,MAAM,MAAM,UAAU,GAAG;KAAG,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,SAAS;CAAE,CAAA;AAExD;;;;EAIE;AACF,MAAM,MAAM,SAAS,GAAG,SAAS,EAAE,CAAA;AAEnC;;;;EAIE;AACF,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AAE5D;;;;;;EAME;AACF,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/types/json.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@livestore/utils",
3
+ "version": "0.0.0",
4
+ "type": "module",
5
+ "react-native": "./dist/index.js",
6
+ "exports": {
7
+ ".": {
8
+ "import": "./dist/index.js"
9
+ },
10
+ "./effect": {
11
+ "import": "./dist/effect/index.js"
12
+ }
13
+ },
14
+ "types": "./dist/index.d.ts",
15
+ "typesVersions": {
16
+ "*": {
17
+ "effect": [
18
+ "./dist/effect"
19
+ ]
20
+ }
21
+ },
22
+ "sideEffects": false,
23
+ "scripts": {
24
+ "test": "echo No tests yet"
25
+ },
26
+ "dependencies": {
27
+ "@effect/data": "0.18.3",
28
+ "@effect/io": "0.39.1",
29
+ "@effect/match": "0.35.1",
30
+ "@effect/schema": "0.34.0",
31
+ "@effect/stm": "0.23.0",
32
+ "@effect/stream": "0.35.1",
33
+ "@opentelemetry/api": "^1.4.1",
34
+ "@opentelemetry/api-metrics": "^0.33.0",
35
+ "@opentelemetry/core": "^1.15.2",
36
+ "@opentelemetry/exporter-metrics-otlp-grpc": "^0.41.2",
37
+ "@opentelemetry/exporter-metrics-otlp-http": "^0.41.2",
38
+ "@opentelemetry/exporter-trace-otlp-grpc": "0.41.2",
39
+ "@opentelemetry/exporter-trace-otlp-http": "0.41.2",
40
+ "@opentelemetry/otlp-transformer": "^0.41.2",
41
+ "@opentelemetry/resources": "1.15.2",
42
+ "@opentelemetry/sdk-metrics": "^1.15.2",
43
+ "@opentelemetry/sdk-node": "^0.41.2",
44
+ "@opentelemetry/sdk-trace-base": "1.15.2",
45
+ "@opentelemetry/sdk-trace-node": "1.15.2",
46
+ "@opentelemetry/sdk-trace-web": "1.15.2",
47
+ "@opentelemetry/semantic-conventions": "1.15.2",
48
+ "@opentelemetry/tracing": "^0.24.0",
49
+ "date-fns": "^2.30.0",
50
+ "otel-websocket-exporter": "^0.0.21",
51
+ "pretty-bytes": "^6.1.1",
52
+ "uuid": "^9.0.0"
53
+ },
54
+ "devDependencies": {
55
+ "@types/uuid": "^9.0.3",
56
+ "@types/web": "^0.0.115"
57
+ }
58
+ }
@@ -0,0 +1,24 @@
1
+ export class Deferred<T> {
2
+ private readonly _promise: Promise<T>
3
+ private _resolve!: (value: T | PromiseLike<T>) => void
4
+ private _reject!: (reason: any) => void
5
+
6
+ constructor() {
7
+ this._promise = new Promise<T>((resolve, reject) => {
8
+ this._resolve = resolve
9
+ this._reject = reject
10
+ })
11
+ }
12
+
13
+ get promise(): Promise<T> {
14
+ return this._promise
15
+ }
16
+
17
+ resolve = (value: T | PromiseLike<T>): void => {
18
+ this._resolve(value)
19
+ }
20
+
21
+ reject = (reason?: any): void => {
22
+ this._reject(reason)
23
+ }
24
+ }
@@ -0,0 +1,75 @@
1
+ /* eslint-disable prefer-arrow/prefer-arrow-functions */
2
+ import type * as otel from '@opentelemetry/api'
3
+
4
+ const makeNoopSpan = () => {
5
+ const performanceStartTime: DOMHighResTimeStamp = performance.now()
6
+
7
+ const span = {
8
+ _performanceStartTime: performanceStartTime,
9
+ setAttribute: () => null,
10
+ setAttributes: () => null,
11
+ addEvent: () => null,
12
+ setStatus: () => null,
13
+ updateName: () => null,
14
+ recordException: () => null,
15
+ end: () => {
16
+ const endTime: DOMHighResTimeStamp = performance.now()
17
+ const duration = endTime - performanceStartTime
18
+ const durationSecs = duration / 1000
19
+ const durationRestNs = (duration % 1000) * 1_000_000
20
+ ;(span as any)._duration = [durationSecs, durationRestNs]
21
+ },
22
+ spanContext: () => {
23
+ return { traceId: 'noop-trace-id', spanId: 'noop-span-id' }
24
+ },
25
+ _duration: [0, 0],
26
+ } as unknown as otel.Span
27
+
28
+ return span
29
+ }
30
+
31
+ export const makeNoopTracer = () => {
32
+ return new NoopTracer() as unknown as otel.Tracer
33
+ }
34
+
35
+ export class NoopTracer {
36
+ startSpan = () => makeNoopSpan()
37
+
38
+ startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(name: string, fn: F): ReturnType<F>
39
+ startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(
40
+ name: string,
41
+ opts: otel.SpanOptions,
42
+ fn: F,
43
+ ): ReturnType<F>
44
+ startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(
45
+ name: string,
46
+ opts: otel.SpanOptions,
47
+ ctx: otel.Context,
48
+ fn: F,
49
+ ): ReturnType<F>
50
+ startActiveSpan<F extends (span: otel.Span) => ReturnType<F>>(
51
+ name: string,
52
+ arg2?: F | otel.SpanOptions,
53
+ arg3?: F | otel.Context,
54
+ arg4?: F,
55
+ ): ReturnType<F> | undefined {
56
+ let _opts: otel.SpanOptions | undefined
57
+ let _ctx: otel.Context | undefined
58
+ let fn: F
59
+
60
+ if (arguments.length < 2) {
61
+ return
62
+ } else if (arguments.length === 2) {
63
+ fn = arg2 as F
64
+ } else if (arguments.length === 3) {
65
+ _opts = arg2 as otel.SpanOptions | undefined
66
+ fn = arg3 as F
67
+ } else {
68
+ _opts = arg2 as otel.SpanOptions | undefined
69
+ _ctx = arg3 as otel.Context | undefined
70
+ fn = arg4 as F
71
+ }
72
+
73
+ return fn(makeNoopSpan())
74
+ }
75
+ }
package/src/base64.ts ADDED
@@ -0,0 +1,118 @@
1
+ // Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
2
+ // This module is browser compatible.
3
+ // https://deno.land/std/encoding/base64.ts
4
+
5
+ const base64abc = [
6
+ 'A',
7
+ 'B',
8
+ 'C',
9
+ 'D',
10
+ 'E',
11
+ 'F',
12
+ 'G',
13
+ 'H',
14
+ 'I',
15
+ 'J',
16
+ 'K',
17
+ 'L',
18
+ 'M',
19
+ 'N',
20
+ 'O',
21
+ 'P',
22
+ 'Q',
23
+ 'R',
24
+ 'S',
25
+ 'T',
26
+ 'U',
27
+ 'V',
28
+ 'W',
29
+ 'X',
30
+ 'Y',
31
+ 'Z',
32
+ 'a',
33
+ 'b',
34
+ 'c',
35
+ 'd',
36
+ 'e',
37
+ 'f',
38
+ 'g',
39
+ 'h',
40
+ 'i',
41
+ 'j',
42
+ 'k',
43
+ 'l',
44
+ 'm',
45
+ 'n',
46
+ 'o',
47
+ 'p',
48
+ 'q',
49
+ 'r',
50
+ 's',
51
+ 't',
52
+ 'u',
53
+ 'v',
54
+ 'w',
55
+ 'x',
56
+ 'y',
57
+ 'z',
58
+ '0',
59
+ '1',
60
+ '2',
61
+ '3',
62
+ '4',
63
+ '5',
64
+ '6',
65
+ '7',
66
+ '8',
67
+ '9',
68
+ '+',
69
+ '/',
70
+ ]
71
+
72
+ /**
73
+ * CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727
74
+ * Encodes a given Uint8Array, ArrayBuffer or string into RFC4648 base64 representation
75
+ * @param data
76
+ */
77
+ export const encode = (data: ArrayBuffer | string): string => {
78
+ const uint8 =
79
+ typeof data === 'string' ? new TextEncoder().encode(data) : data instanceof Uint8Array ? data : new Uint8Array(data)
80
+ let result = '',
81
+ i
82
+ const l = uint8.length
83
+ for (i = 2; i < l; i += 3) {
84
+ result += base64abc[uint8[i - 2]! >> 2]
85
+ result += base64abc[((uint8[i - 2]! & 0x03) << 4) | (uint8[i - 1]! >> 4)]
86
+ result += base64abc[((uint8[i - 1]! & 0x0f) << 2) | (uint8[i]! >> 6)]
87
+ result += base64abc[uint8[i]! & 0x3f]
88
+ }
89
+ if (i === l + 1) {
90
+ // 1 octet yet to write
91
+ result += base64abc[uint8[i - 2]! >> 2]
92
+ result += base64abc[(uint8[i - 2]! & 0x03) << 4]
93
+ result += '=='
94
+ }
95
+ if (i === l) {
96
+ // 2 octets yet to write
97
+ result += base64abc[uint8[i - 2]! >> 2]
98
+ result += base64abc[((uint8[i - 2]! & 0x03) << 4) | (uint8[i - 1]! >> 4)]
99
+ result += base64abc[(uint8[i - 1]! & 0x0f) << 2]
100
+ result += '='
101
+ }
102
+ return result
103
+ }
104
+
105
+ /**
106
+ * Decodes a given RFC4648 base64 encoded string
107
+ * @param b64
108
+ */
109
+ export const decode = (b64: string): Uint8Array => {
110
+ const binString = atob(b64)
111
+ const size = binString.length
112
+ const bytes = new Uint8Array(size)
113
+ for (let i = 0; i < size; i++) {
114
+ // eslint-disable-next-line unicorn/prefer-code-point
115
+ bytes[i] = binString.charCodeAt(i)
116
+ }
117
+ return bytes
118
+ }
package/src/browser.ts ADDED
@@ -0,0 +1,32 @@
1
+ export type DetectedBrowser = 'Something' | 'Opera' | 'Chrome' | 'Safari' | 'Firefox' | 'Edge' | 'Browser'
2
+
3
+ export const detectBrowserName: () => DetectedBrowser = () => {
4
+ if (!navigator.userAgent) {
5
+ return 'Something'
6
+ }
7
+
8
+ const isOpera = navigator.userAgent.includes('OP')
9
+ const isChrome = navigator.userAgent.includes('Chrome') && !isOpera
10
+ const isSafari = navigator.userAgent.includes('Safari') && !isChrome
11
+ const isFirefox = navigator.userAgent.includes('Firefox')
12
+ const isEdge = navigator.userAgent.includes('Edg') || navigator.userAgent.includes('Trident')
13
+
14
+ // TODO: also parse out version
15
+
16
+ if (isOpera) {
17
+ return 'Opera'
18
+ }
19
+ if (isChrome) {
20
+ return 'Chrome'
21
+ }
22
+ if (isSafari) {
23
+ return 'Safari'
24
+ }
25
+ if (isFirefox) {
26
+ return 'Firefox'
27
+ }
28
+ if (isEdge) {
29
+ return 'Edge'
30
+ }
31
+ return 'Browser'
32
+ }
@@ -0,0 +1,27 @@
1
+ import * as Cause from '@effect/io/Cause'
2
+ import * as Effect from '@effect/io/Effect'
3
+
4
+ export * from '@effect/io/Effect'
5
+
6
+ export const logError = <A>(message: A, ...rest: any[]): Effect.Effect<never, never, void> =>
7
+ Effect.sync(() => {
8
+ console.error(message, ...rest)
9
+ })
10
+
11
+ /** Logs both on errors and defects */
12
+ export const tapCauseLogPretty = <R, E, A>(eff: Effect.Effect<R, E, A>): Effect.Effect<R, E, A> =>
13
+ Effect.tapErrorCause(eff, (err) => {
14
+ if (Cause.isInterruptedOnly(err)) {
15
+ return Effect.unit
16
+ }
17
+
18
+ // @ts-expect-error TODO get proper worker name https://github.com/vitejs/vite/issues/12992
19
+ const threadName = window.__tmpWorkerName ? `Worker ${window.__tmpWorkerName}` : 'Main Thread'
20
+
21
+ return logError(`Error on ${threadName}`, Cause.pretty(err))
22
+ })
23
+
24
+ export const tapSync =
25
+ <A>(tapFn: (a: A) => unknown) =>
26
+ <R, E>(eff: Effect.Effect<R, E, A>): Effect.Effect<R, E, A> =>
27
+ Effect.tap(eff, (a) => Effect.sync(() => tapFn(a)))
@@ -0,0 +1,12 @@
1
+ import { TaggedClass } from '@effect/data/Data'
2
+
3
+ import { errorToString, objectToString } from '../index.js'
4
+
5
+ export class UnknownError extends TaggedClass('UnknownError')<{ readonly error: any; readonly payload?: any }> {
6
+ toString = () => {
7
+ const payloadStr = this.payload ? ` with payload ${objectToString(this.payload)}` : ''
8
+ return `UnknownError: ${errorToString(this.error)}${payloadStr}`
9
+ }
10
+
11
+ static from = (error: any, payload?: any) => new UnknownError({ error, payload })
12
+ }
@@ -0,0 +1,32 @@
1
+ import * as Layer from '@effect/io/Layer'
2
+ import type * as otelMetrics from '@opentelemetry/api-metrics'
3
+
4
+ import { NoopTracer } from '../../NoopTracer.js'
5
+ import * as Otel from './index.js'
6
+
7
+ //
8
+ // Dummy Tracer
9
+ //
10
+
11
+ const DummyTracing = () =>
12
+ ({
13
+ [Otel.TracerSymbol]: Otel.TracerSymbol,
14
+ tracer: new NoopTracer(),
15
+ }) as const
16
+
17
+ export const DummyTracingLive = Layer.sync(Otel.Tracer, () => DummyTracing())
18
+
19
+ const NoopMeter = () =>
20
+ ({
21
+ createHistogram: () => ({ record: () => {} }),
22
+ createCounter: () => ({ add: () => {} }),
23
+ createUpDownCounter: () => ({ add: () => {} }),
24
+ }) as unknown as otelMetrics.Meter
25
+
26
+ const DummyMeter = () =>
27
+ ({
28
+ [Otel.MeterSymbol]: Otel.MeterSymbol,
29
+ meter: NoopMeter(),
30
+ }) as const
31
+
32
+ export const DummyMeterLive = Layer.sync(Otel.Meter, () => DummyMeter())