@livestore/utils 0.3.0-dev.5 → 0.3.0-dev.50

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 (150) hide show
  1. package/dist/.tsbuildinfo.json +1 -1
  2. package/dist/Deferred.d.ts.map +1 -1
  3. package/dist/base64.d.ts.map +1 -1
  4. package/dist/bun/mod.d.ts +5 -0
  5. package/dist/bun/mod.d.ts.map +1 -0
  6. package/dist/bun/mod.js +10 -0
  7. package/dist/bun/mod.js.map +1 -0
  8. package/dist/cuid/cuid.browser.d.ts.map +1 -1
  9. package/dist/cuid/cuid.node.d.ts.map +1 -1
  10. package/dist/effect/BucketQueue.d.ts +15 -2
  11. package/dist/effect/BucketQueue.d.ts.map +1 -1
  12. package/dist/effect/BucketQueue.js +24 -6
  13. package/dist/effect/BucketQueue.js.map +1 -1
  14. package/dist/effect/Effect.d.ts +4 -2
  15. package/dist/effect/Effect.d.ts.map +1 -1
  16. package/dist/effect/Effect.js +21 -18
  17. package/dist/effect/Effect.js.map +1 -1
  18. package/dist/effect/Logger.d.ts +2 -0
  19. package/dist/effect/Logger.d.ts.map +1 -1
  20. package/dist/effect/Logger.js +16 -1
  21. package/dist/effect/Logger.js.map +1 -1
  22. package/dist/effect/Scheduler.d.ts.map +1 -1
  23. package/dist/effect/Schema/debug-diff.d.ts.map +1 -1
  24. package/dist/effect/Schema/index.d.ts +3 -0
  25. package/dist/effect/Schema/index.d.ts.map +1 -1
  26. package/dist/effect/Schema/index.js +19 -0
  27. package/dist/effect/Schema/index.js.map +1 -1
  28. package/dist/effect/Schema/msgpack.d.ts +1 -1
  29. package/dist/effect/Schema/msgpack.d.ts.map +1 -1
  30. package/dist/effect/ServiceContext.d.ts.map +1 -1
  31. package/dist/effect/Stream.d.ts.map +1 -1
  32. package/dist/effect/Subscribable.d.ts +76 -0
  33. package/dist/effect/Subscribable.d.ts.map +1 -0
  34. package/dist/effect/Subscribable.js +80 -0
  35. package/dist/effect/Subscribable.js.map +1 -0
  36. package/dist/effect/TaskTracing.d.ts.map +1 -1
  37. package/dist/effect/{WebChannel.d.ts → WebChannel/WebChannel.d.ts} +39 -17
  38. package/dist/effect/WebChannel/WebChannel.d.ts.map +1 -0
  39. package/dist/effect/WebChannel/WebChannel.js +300 -0
  40. package/dist/effect/WebChannel/WebChannel.js.map +1 -0
  41. package/dist/effect/WebChannel/WebChannel.test.d.ts +2 -0
  42. package/dist/effect/WebChannel/WebChannel.test.d.ts.map +1 -0
  43. package/dist/effect/WebChannel/WebChannel.test.js +62 -0
  44. package/dist/effect/WebChannel/WebChannel.test.js.map +1 -0
  45. package/dist/effect/WebChannel/broadcastChannelWithAck.d.ts +5 -6
  46. package/dist/effect/WebChannel/broadcastChannelWithAck.d.ts.map +1 -1
  47. package/dist/effect/WebChannel/broadcastChannelWithAck.js +12 -9
  48. package/dist/effect/WebChannel/broadcastChannelWithAck.js.map +1 -1
  49. package/dist/effect/WebChannel/common.d.ts +29 -1
  50. package/dist/effect/WebChannel/common.d.ts.map +1 -1
  51. package/dist/effect/WebChannel/common.js +26 -1
  52. package/dist/effect/WebChannel/common.js.map +1 -1
  53. package/dist/effect/WebChannel/mod.d.ts +4 -0
  54. package/dist/effect/WebChannel/mod.d.ts.map +1 -0
  55. package/dist/effect/WebChannel/mod.js +4 -0
  56. package/dist/effect/WebChannel/mod.js.map +1 -0
  57. package/dist/effect/WebLock.d.ts.map +1 -1
  58. package/dist/effect/WebSocket.d.ts +3 -2
  59. package/dist/effect/WebSocket.d.ts.map +1 -1
  60. package/dist/effect/WebSocket.js +45 -19
  61. package/dist/effect/WebSocket.js.map +1 -1
  62. package/dist/effect/WebSocket.test.d.ts +2 -0
  63. package/dist/effect/WebSocket.test.d.ts.map +1 -0
  64. package/dist/effect/WebSocket.test.js +11 -0
  65. package/dist/effect/WebSocket.test.js.map +1 -0
  66. package/dist/effect/index.d.ts +6 -3
  67. package/dist/effect/index.d.ts.map +1 -1
  68. package/dist/effect/index.js +9 -5
  69. package/dist/effect/index.js.map +1 -1
  70. package/dist/env.d.ts +4 -1
  71. package/dist/env.d.ts.map +1 -1
  72. package/dist/env.js +6 -11
  73. package/dist/env.js.map +1 -1
  74. package/dist/fast-deep-equal.d.ts.map +1 -1
  75. package/dist/guards.d.ts.map +1 -1
  76. package/dist/index.d.ts +6 -5
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +0 -8
  79. package/dist/index.js.map +1 -1
  80. package/dist/misc.d.ts +3 -0
  81. package/dist/misc.d.ts.map +1 -1
  82. package/dist/misc.js +23 -0
  83. package/dist/misc.js.map +1 -1
  84. package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts +0 -1
  85. package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts.map +1 -1
  86. package/dist/node/ChildProcessRunner/ChildProcessRunner.js +21 -11
  87. package/dist/node/ChildProcessRunner/ChildProcessRunner.js.map +1 -1
  88. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts +2 -0
  89. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts.map +1 -0
  90. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js +39 -0
  91. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js.map +1 -0
  92. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.d.ts +75 -0
  93. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.d.ts.map +1 -0
  94. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.js +62 -0
  95. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.js.map +1 -0
  96. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.d.ts +2 -0
  97. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.d.ts.map +1 -0
  98. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js +42 -0
  99. package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js.map +1 -0
  100. package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts +1 -4
  101. package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts.map +1 -1
  102. package/dist/node/ChildProcessRunner/ChildProcessWorker.js +1 -4
  103. package/dist/node/ChildProcessRunner/ChildProcessWorker.js.map +1 -1
  104. package/dist/node/mod.d.ts +4 -16
  105. package/dist/node/mod.d.ts.map +1 -1
  106. package/dist/node/mod.js +25 -69
  107. package/dist/node/mod.js.map +1 -1
  108. package/dist/object/index.d.ts.map +1 -1
  109. package/dist/object/omit.d.ts.map +1 -1
  110. package/dist/object/pick.d.ts.map +1 -1
  111. package/dist/promise.d.ts.map +1 -1
  112. package/dist/set.d.ts.map +1 -1
  113. package/dist/string.d.ts.map +1 -1
  114. package/dist/time.d.ts.map +1 -1
  115. package/package.json +59 -51
  116. package/src/bun/mod.ts +13 -0
  117. package/src/effect/BucketQueue.ts +33 -6
  118. package/src/effect/Effect.ts +33 -20
  119. package/src/effect/Logger.ts +23 -1
  120. package/src/effect/Schema/index.ts +27 -0
  121. package/src/effect/Subscribable.ts +155 -0
  122. package/src/effect/WebChannel/WebChannel.test.ts +106 -0
  123. package/src/effect/WebChannel/WebChannel.ts +502 -0
  124. package/src/effect/WebChannel/broadcastChannelWithAck.ts +86 -83
  125. package/src/effect/WebChannel/common.ts +61 -2
  126. package/src/effect/WebChannel/mod.ts +3 -0
  127. package/src/effect/WebSocket.test.ts +15 -0
  128. package/src/effect/WebSocket.ts +75 -36
  129. package/src/effect/index.ts +34 -2
  130. package/src/env.ts +9 -13
  131. package/src/index.ts +6 -12
  132. package/src/misc.ts +31 -0
  133. package/src/node/ChildProcessRunner/ChildProcessRunner.ts +40 -29
  134. package/src/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.ts +52 -0
  135. package/src/node/ChildProcessRunner/ChildProcessRunnerTest/schema.ts +65 -0
  136. package/src/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.ts +53 -0
  137. package/src/node/ChildProcessRunner/ChildProcessWorker.ts +3 -6
  138. package/src/node/mod.ts +32 -94
  139. package/dist/effect/WebChannel.d.ts.map +0 -1
  140. package/dist/effect/WebChannel.js +0 -175
  141. package/dist/effect/WebChannel.js.map +0 -1
  142. package/dist/nanoid/index.browser.d.ts +0 -2
  143. package/dist/nanoid/index.browser.d.ts.map +0 -1
  144. package/dist/nanoid/index.browser.js +0 -3
  145. package/dist/nanoid/index.browser.js.map +0 -1
  146. package/src/effect/WebChannel.ts +0 -305
  147. package/src/nanoid/index.browser.ts +0 -2
  148. package/tmp/effect-deferred-repro.ts +0 -29
  149. package/tmp/effect-semaphore-repro.ts +0 -93
  150. package/tsconfig.json +0 -10
package/dist/node/mod.js CHANGED
@@ -1,83 +1,39 @@
1
- import * as OtelNodeSdk from '@effect/opentelemetry/NodeSdk';
2
- import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
3
- import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
4
- import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
5
- import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
6
- import { Config, Effect, Layer } from 'effect';
7
- import { tapCauseLogPretty } from '../effect/Effect.js';
8
- // import { tapCauseLogPretty } from '../effect/Effect.js'
1
+ import * as http from 'node:http';
2
+ import { Effect, Layer } from 'effect';
3
+ import { OtelTracer, UnknownError } from '../effect/index.js';
4
+ import { makeNoopTracer } from '../NoopTracer.js';
9
5
  export * as Cli from '@effect/cli';
10
- export * as PlatformBun from '@effect/platform-bun';
11
6
  export * as PlatformNode from '@effect/platform-node';
12
- export * as SocketServer from '@effect/experimental/SocketServer';
13
- export * as OtelResource from '@effect/opentelemetry/Resource';
14
- export { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
15
- export { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
16
- export * as OtelNodeSdk from '@effect/opentelemetry/NodeSdk';
7
+ export * as SocketServer from '@effect/platform/SocketServer';
17
8
  export * as ChildProcessRunner from './ChildProcessRunner/ChildProcessRunner.js';
18
9
  export * as ChildProcessWorker from './ChildProcessRunner/ChildProcessWorker.js';
19
10
  // Enable debug logging for OpenTelemetry
20
11
  // otel.diag.setLogger(new otel.DiagConsoleLogger(), otel.DiagLogLevel.ERROR)
21
12
  // export const OtelLiveHttp = (args: any): Layer.Layer<never> => Layer.empty
22
- export const OtelLiveHttp = ({ serviceName, rootSpanName, skipLogUrl, } = {}) => Effect.gen(function* () {
23
- const config = yield* Config.all({
24
- exporterUrlTracing: Config.string('OTEL_EXPORTER_OTLP_TRACES_ENDPOINT'),
25
- exporterUrlMracing: Config.string('OTEL_EXPORTER_OTLP_METRICS_ENDPOINT'),
26
- serviceName: serviceName
27
- ? Config.succeed(serviceName)
28
- : Config.string('OTEL_SERVICE_NAME').pipe(Config.withDefault('overtone-node-utils-default-service')),
29
- rootSpanName: rootSpanName
30
- ? Config.succeed(rootSpanName)
31
- : Config.string('OTEL_ROOT_SPAN_NAME').pipe(Config.withDefault('RootSpan')),
32
- }).pipe(tapCauseLogPretty, Effect.orDie);
33
- const resource = { serviceName: config.serviceName };
34
- // METRICS
35
- const metricExporter = new OTLPMetricExporter({ url: config.exporterUrlMracing });
36
- const metricReader = new PeriodicExportingMetricReader({
37
- exporter: metricExporter,
38
- exportIntervalMillis: 1000,
13
+ export const getFreePort = Effect.async((cb, signal) => {
14
+ const server = http.createServer();
15
+ signal.addEventListener('abort', () => {
16
+ server.close();
39
17
  });
40
- // TRACING
41
- const OtelLive = OtelNodeSdk.layer(() => ({
42
- resource,
43
- metricReader,
44
- spanProcessor: new BatchSpanProcessor(new OTLPTraceExporter({ url: config.exporterUrlTracing, headers: {} })),
45
- }));
46
- const RootSpanLive = Layer.span(config.rootSpanName, {
47
- attributes: { config },
48
- onEnd: skipLogUrl ? undefined : (span) => logTraceUiUrlForSpan()(span.span),
49
- });
50
- return RootSpanLive.pipe(Layer.provideMerge(OtelLive));
51
- }).pipe(Layer.unwrapEffect);
52
- export const logTraceUiUrlForSpan = (printMsg) => (span) => getTracingBackendUrl(span).pipe(Effect.tap((url) => {
53
- if (url === undefined) {
54
- console.warn('No tracing backend url found');
55
- }
56
- else {
57
- if (printMsg) {
58
- console.log(printMsg(url));
18
+ // Listen on port 0 to get an available port
19
+ server.listen(0, () => {
20
+ const address = server.address();
21
+ if (address && typeof address === 'object') {
22
+ const port = address.port;
23
+ server.close(() => cb(Effect.succeed(port)));
59
24
  }
60
25
  else {
61
- console.log(`Trace URL: ${url}`);
26
+ server.close(() => cb(Effect.fail(new UnknownError({ cause: 'Failed to get a free port' }))));
62
27
  }
63
- }
64
- }));
65
- export const getTracingBackendUrl = (span) => Effect.gen(function* () {
66
- const endpoint = yield* Config.string('TRACING_UI_ENDPOINT').pipe(Config.option, Effect.orDie);
67
- if (endpoint._tag === 'None')
68
- return;
69
- const traceId = span.spanContext().traceId;
70
- // Grafana + Tempo
71
- const grafanaEndpoint = endpoint.value;
72
- const searchParams = new URLSearchParams({
73
- orgId: '1',
74
- left: JSON.stringify({
75
- datasource: 'tempo',
76
- queries: [{ query: traceId, queryType: 'traceql', refId: 'A' }],
77
- range: { from: 'now-1h', to: 'now' },
78
- }),
79
28
  });
80
- // TODO make dynamic via env var
81
- return `${grafanaEndpoint}/explore?${searchParams.toString()}`;
29
+ // Error handling in case the server encounters an error
30
+ server.on('error', (err) => {
31
+ server.close(() => cb(Effect.fail(new UnknownError({ cause: err }))));
32
+ });
33
+ });
34
+ export const OtelLiveDummy = Layer.suspend(() => {
35
+ const OtelTracerLive = Layer.succeed(OtelTracer.OtelTracer, makeNoopTracer());
36
+ const TracingLive = Layer.unwrapEffect(Effect.map(OtelTracer.make, Layer.setTracer)).pipe(Layer.provideMerge(OtelTracerLive));
37
+ return TracingLive;
82
38
  });
83
39
  //# sourceMappingURL=mod.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AAEjC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAEtC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,KAAK,GAAG,MAAM,aAAa,CAAA;AAClC,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,YAAY,MAAM,+BAA+B,CAAA;AAE7D,OAAO,KAAK,kBAAkB,MAAM,4CAA4C,CAAA;AAChF,OAAO,KAAK,kBAAkB,MAAM,4CAA4C,CAAA;AAEhF,yCAAyC;AACzC,6EAA6E;AAE7E,6EAA6E;AAE7E,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAuB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE;IAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;IAElC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,KAAK,EAAE,CAAA;IAChB,CAAC,CAAC,CAAA;IAEF,4CAA4C;IAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;QAEhC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;YACzB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC9C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/F,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,wDAAwD;IACxD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACzB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAuC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;IAClF,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,CAAA;IAE7E,MAAM,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CACvF,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,CACU,CAAA;IAE9C,OAAO,WAAW,CAAA;AACpB,CAAC,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/object/index.ts"],"names":[],"mappings":"AAEA,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE3F,eAAO,MAAM,eAAe,GAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,OAChE,IAAI,YACC,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,KAAK,KAC7D,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,KAAK,GAG5B,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;AAEjE,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,KAAG,OAAO,CAAC,CAAC,CAAsC,CAAA;AAErH,eAAO,MAAM,mBAAmB,GAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,IAAI,KAAG,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,GAI9F,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/object/index.ts"],"names":[],"mappings":"AAEA,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,KAAK,aAAa,CAAC,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE3F,eAAO,MAAM,eAAe,GAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EACrE,KAAK,IAAI,EACT,UAAU,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,KAAK,KAC7D,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,KAAK,GAG5B,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;AAEjE,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,KAAG,OAAO,CAAC,CAAC,CAAsC,CAAA;AAErH,eAAO,MAAM,mBAAmB,GAAI,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,IAAI,KAAG,GAAG,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,GAI9F,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"omit.d.ts","sourceRoot":"","sources":["../../src/object/omit.ts"],"names":[],"mappings":"AAKA,uEAAuE;AACvE,eAAO,MAAM,IAAI,GAAI,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,SAAS,MAAM,GAAG,OACrE,GAAG,QACF,IAAI,EAAE,KACX,IAAI,CAAC,GAAG,EAAE,IAAI,CAOhB,CAAA"}
1
+ {"version":3,"file":"omit.d.ts","sourceRoot":"","sources":["../../src/object/omit.ts"],"names":[],"mappings":"AAKA,uEAAuE;AACvE,eAAO,MAAM,IAAI,GAAI,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,SAAS,MAAM,GAAG,EAC1E,KAAK,GAAG,EACR,MAAM,IAAI,EAAE,KACX,IAAI,CAAC,GAAG,EAAE,IAAI,CAOhB,CAAA"}
@@ -1 +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,GAAI,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,OAAO,GAAG,QAAQ,IAAI,EAAE,KAAG,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAE,CAK7G,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,EAAE,KAAK,OACzD,GAAG,QACF,IAAI,EAAE,aACD,KAAK,KACf,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,GAAG,KAUtD,CAAA"}
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,GAAI,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,IAAI,EAAE,KAAG,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAE,CAK7G,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,GAAG,EAAE,IAAI,SAAS,MAAM,GAAG,EAAE,KAAK,EAC9D,KAAK,GAAG,EACR,MAAM,IAAI,EAAE,EACZ,WAAW,KAAK,KACf,WAAW,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAE,CAAC,GAAG,KAUtD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../src/promise.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,6CACpE,CAAA;AAE3B,eAAO,MAAM,cAAc,GAAU,CAAC,EAAE,GAAG,QACnC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAClB,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KACjD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAG7B,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,CAAC,EAAE,GAAG,OACtC,CAAC,EAAE,YACE,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAC/C,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,KACxC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAI7B,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,CAAC,EAAE,GAAG,OACpC,CAAC,EAAE,OACH,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,aACjC,MAAM,KAChB,OAAO,CAAC,GAAG,EAAE,CAgBf,CAAA"}
1
+ {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../src/promise.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,6CACpE,CAAA;AAE3B,eAAO,MAAM,cAAc,GAAU,CAAC,EAAE,GAAG,EACzC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EACvB,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,KACjD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAG7B,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,CAAC,EAAE,GAAG,EAC3C,KAAK,CAAC,EAAE,EACR,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,EACvD,QAAQ,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,KACxC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAI7B,CAAA;AAED,eAAO,MAAM,cAAc,GAAU,CAAC,EAAE,GAAG,EACzC,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,EAC5C,WAAW,MAAM,KAChB,OAAO,CAAC,GAAG,EAAE,CAgBf,CAAA"}
package/dist/set.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../src/set.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,GAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,WASjD,CAAA"}
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../src/set.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,GAAI,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,WASjD,CAAA"}
@@ -1 +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;AAE7F,qEAAqE;AACrE,eAAO,MAAM,MAAM,QAAS,MAAM,KAAK,MAAM,oBAAe,MAI7C,CAAA"}
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../src/string.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,WAA+C,CAAA;AAC7F,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,WAA+C,CAAA;AAE7F,qEAAqE;AACrE,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,EAAE,GAAG,MAAM,EAAE,aAAU,KAAG,MAI7C,CAAA"}
@@ -1 +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"}
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,GAAI,IAAI,MAAM,WAYxC,CAAA"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@livestore/utils",
3
- "version": "0.3.0-dev.5",
3
+ "version": "0.3.0-dev.50",
4
+ "type": "module",
4
5
  "sideEffects": [
5
6
  "./dist/global.js"
6
7
  ],
7
- "type": "module",
8
8
  "exports": {
9
9
  ".": {
10
10
  "types": "./dist/index.d.ts",
@@ -13,12 +13,11 @@
13
13
  "./cuid": {
14
14
  "types": "./dist/cuid/cuid.node.d.ts",
15
15
  "node": "./dist/cuid/cuid.node.js",
16
- "react-native": "./dist/cuid/cuid.browser.js",
17
- "browser": "./dist/cuid/cuid.browser.js"
16
+ "browser": "./dist/cuid/cuid.browser.js",
17
+ "react-native": "./dist/cuid/cuid.browser.js"
18
18
  },
19
19
  "./nanoid": {
20
20
  "types": "./dist/nanoid/index.d.ts",
21
- "react-native": "./dist/nanoid/index.browser.js",
22
21
  "default": "./dist/nanoid/index.js"
23
22
  },
24
23
  "./effect": {
@@ -29,16 +28,11 @@
29
28
  "types": "./dist/node/mod.d.ts",
30
29
  "default": "./dist/node/mod.js"
31
30
  },
32
- "./node-vitest": {
33
- "types": "./dist/node-vitest/mod.d.ts",
34
- "default": "./dist/node-vitest/mod.js"
35
- },
36
- "./node-vitest-polyfill": {
37
- "types": "./dist/node-vitest/polyfill.d.ts",
38
- "default": "./dist/node-vitest/polyfill.js"
31
+ "./bun": {
32
+ "types": "./dist/bun/mod.d.ts",
33
+ "default": "./dist/bun/mod.js"
39
34
  }
40
35
  },
41
- "react-native": "./dist/index.js",
42
36
  "types": "./dist/index.d.ts",
43
37
  "typesVersions": {
44
38
  "*": {
@@ -54,55 +48,69 @@
54
48
  "./node": [
55
49
  "./dist/node/mod.d.ts"
56
50
  ],
57
- "./node-vitest": [
58
- "./dist/node-vitest/mod.d.ts"
59
- ],
60
- "./node-vitest-polyfill": [
61
- "./dist/node-vitest/polyfill.d.ts"
51
+ "./bun": [
52
+ "./dist/bun/mod.d.ts"
62
53
  ]
63
54
  }
64
55
  },
65
56
  "dependencies": {
66
- "msgpackr": "^1.11.2",
67
- "nanoid": "^5.0.7",
68
- "pretty-bytes": "^6.1.1",
69
- "@livestore/db-schema": "0.3.0-dev.5"
70
- },
71
- "peerDependencies": {
72
- "@effect/cli": "^0.50.2",
73
- "@effect/experimental": "^0.36.1",
74
- "@effect/opentelemetry": "^0.42.1",
75
- "@effect/platform": "^0.72.1",
76
- "@effect/platform-browser": "^0.51.1",
77
- "@effect/platform-bun": "^0.52.1",
78
- "@effect/platform-node": "^0.68.1",
79
- "@effect/vitest": "^0.16.1",
80
- "@opentelemetry/api": "^1.9.0",
81
- "effect": "^3.11.7"
57
+ "@standard-schema/spec": "1.0.0",
58
+ "msgpackr": "1.11.2",
59
+ "nanoid": "5.1.3",
60
+ "pretty-bytes": "6.1.1"
82
61
  },
83
62
  "devDependencies": {
84
- "@effect/cli": "^0.51.1",
85
- "@effect/experimental": "0.36.1",
86
- "@effect/opentelemetry": "0.42.1",
87
- "@effect/platform": "0.72.1",
88
- "@effect/platform-browser": "0.51.1",
89
- "@effect/platform-bun": "0.52.1",
90
- "@effect/platform-node": "0.68.1",
91
- "@effect/vitest": "0.16.1",
63
+ "@effect/cli": "^0.59.15",
64
+ "@effect/cluster": "^0.30.3",
65
+ "@effect/experimental": "^0.44.15",
66
+ "@effect/opentelemetry": "^0.46.4",
67
+ "@effect/platform": "^0.80.15",
68
+ "@effect/platform-browser": "^0.60.6",
69
+ "@effect/platform-bun": "^0.61.3",
70
+ "@effect/platform-node": "^0.77.3",
71
+ "@effect/printer": "^0.42.15",
72
+ "@effect/printer-ansi": "^0.42.15",
73
+ "@effect/rpc": "^0.56.3",
74
+ "@effect/sql": "^0.33.15",
75
+ "@effect/typeclass": "^0.33.15",
76
+ "@effect/vitest": "^0.20.8",
92
77
  "@opentelemetry/api": "^1.9.0",
93
- "@opentelemetry/exporter-metrics-otlp-http": "0.57.0",
94
- "@opentelemetry/exporter-trace-otlp-http": "0.57.0",
95
- "@opentelemetry/sdk-metrics": "1.30.0",
96
- "@opentelemetry/sdk-trace-base": "1.30.0",
97
- "@opentelemetry/sdk-trace-node": "1.30.0",
98
- "@types/node": "22.10.5",
99
- "@types/web": "^0.0.175",
100
- "effect": "3.12.1",
101
- "vitest": "^2.1.4"
78
+ "@opentelemetry/resources": "^2.0.0",
79
+ "@types/bun": "^1.2.4",
80
+ "@types/jsdom": "^21.1.7",
81
+ "@types/node": "^22.15.17",
82
+ "@types/web": "^0.0.203",
83
+ "effect": "^3.14.15",
84
+ "jsdom": "^26.0.0",
85
+ "vitest": "^3.1.2"
86
+ },
87
+ "files": [
88
+ "package.json",
89
+ "src",
90
+ "dist"
91
+ ],
92
+ "peerDependencies": {
93
+ "@effect/cli": "~0.59.15",
94
+ "@effect/cluster": "~0.30.3",
95
+ "@effect/experimental": "~0.44.15",
96
+ "@effect/opentelemetry": "~0.46.4",
97
+ "@effect/platform": "~0.80.15",
98
+ "@effect/platform-browser": "~0.60.6",
99
+ "@effect/platform-bun": "~0.61.3",
100
+ "@effect/platform-node": "~0.77.3",
101
+ "@effect/printer": "~0.42.15",
102
+ "@effect/printer-ansi": "~0.42.15",
103
+ "@effect/rpc": "~0.56.3",
104
+ "@effect/sql": "~0.33.15",
105
+ "@effect/typeclass": "~0.33.15",
106
+ "@opentelemetry/api": "~1.9.0",
107
+ "@opentelemetry/resources": "~2.0.0",
108
+ "effect": "~3.14.15"
102
109
  },
103
110
  "publishConfig": {
104
111
  "access": "public"
105
112
  },
113
+ "react-native": "./dist/index.js",
106
114
  "scripts": {
107
115
  "test": "vitest"
108
116
  }
package/src/bun/mod.ts ADDED
@@ -0,0 +1,13 @@
1
+ import { $ } from 'bun'
2
+ import { Effect } from 'effect'
3
+
4
+ export * as PlatformBun from '@effect/platform-bun'
5
+
6
+ // TODO remove in favour of other `cmd` implementation
7
+ export const cmd = (_: string) =>
8
+ Effect.promise(() => {
9
+ console.log(`Running command: ${_}`)
10
+ return $`${{ raw: _ }}`
11
+ })
12
+
13
+ export { $ } from 'bun'
@@ -1,4 +1,4 @@
1
- import { Array, STM, TRef } from 'effect'
1
+ import { Array, Effect, STM, TRef } from 'effect'
2
2
 
3
3
  export type BucketQueue<A> = TRef.TRef<A[]>
4
4
 
@@ -7,16 +7,43 @@ export const make = <A>(): STM.STM<BucketQueue<A>> => TRef.make<A[]>([])
7
7
  export const offerAll = <A>(self: BucketQueue<A>, elements: ReadonlyArray<A>) =>
8
8
  TRef.update(self, (bucket) => Array.appendAll(bucket, elements))
9
9
 
10
+ export const replace = <A>(self: BucketQueue<A>, elements: ReadonlyArray<A>) => TRef.set(self, elements as A[])
11
+
10
12
  export const clear = <A>(self: BucketQueue<A>) => TRef.set(self, [])
11
13
 
12
- export const takeBetween = <A>(self: BucketQueue<A>, min: number, max: number) =>
14
+ export const takeBetween = <A>(
15
+ bucket: BucketQueue<A>,
16
+ min: number,
17
+ max: number,
18
+ ): STM.STM<ReadonlyArray<A>, never, never> =>
13
19
  STM.gen(function* () {
14
- const bucket = yield* TRef.get(self)
15
- if (bucket.length < min) {
20
+ const bucketValue = yield* TRef.get(bucket)
21
+ if (bucketValue.length < min) {
16
22
  return yield* STM.retry
17
23
  } else {
18
- const elements = bucket.splice(0, Math.min(max, bucket.length))
19
- yield* TRef.set(self, bucket)
24
+ const elements = bucketValue.splice(0, Math.min(max, bucketValue.length))
25
+ yield* TRef.set(bucket, bucketValue)
20
26
  return elements
21
27
  }
22
28
  })
29
+
30
+ export const peekAll = <A>(bucket: BucketQueue<A>) => TRef.get(bucket)
31
+
32
+ /** Returns the elements up to the first element that matches the predicate, the rest is left in the queue
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * const [elements, rest] = yield* BucketQueue.takeSplitWhere(bucket, (a) => a > 3)
37
+ * assert.deepStrictEqual(elements, [1, 2, 3])
38
+ * assert.deepStrictEqual(rest, [4, 5, 6])
39
+ * ```
40
+ */
41
+ export const takeSplitWhere = <A>(bucket: BucketQueue<A>, predicate: (a: A) => boolean) =>
42
+ STM.gen(function* () {
43
+ const bucketValue = yield* TRef.get(bucket)
44
+ const [elements, rest] = Array.splitWhere(bucketValue, predicate)
45
+ yield* TRef.set(bucket, rest)
46
+ return elements
47
+ })
48
+
49
+ export const size = <A>(bucket: BucketQueue<A>) => TRef.get(bucket).pipe(Effect.map((_) => _.length))
@@ -1,11 +1,11 @@
1
1
  import * as OtelTracer from '@effect/opentelemetry/Tracer'
2
- import type { Context, Duration, Scope, Stream } from 'effect'
3
- import { Cause, Deferred, Effect, Fiber, FiberRef, HashSet, Logger, pipe } from 'effect'
2
+ import type { Context, Duration, Stream } from 'effect'
3
+ import { Cause, Deferred, Effect, Fiber, FiberRef, HashSet, Logger, pipe, Scope } from 'effect'
4
4
  import type { UnknownException } from 'effect/Cause'
5
5
  import { log } from 'effect/Console'
6
6
  import type { LazyArg } from 'effect/Function'
7
7
 
8
- import { isNonEmptyString, isPromise } from '../index.js'
8
+ import { isPromise } from '../index.js'
9
9
  import { UnknownError } from './Error.js'
10
10
 
11
11
  export * from 'effect/Effect'
@@ -25,6 +25,18 @@ export * from 'effect/Effect'
25
25
  // console.error(message, ...rest)
26
26
  // })
27
27
 
28
+ /** Same as `Effect.scopeWith` but with a `CloseableScope` instead of a `Scope`. */
29
+ export const scopeWithCloseable = <R, E, A>(
30
+ fn: (scope: Scope.CloseableScope) => Effect.Effect<A, E, R | Scope.Scope>,
31
+ ): Effect.Effect<A, E, R | Scope.Scope> =>
32
+ Effect.gen(function* () {
33
+ // const parentScope = yield* Scope.Scope
34
+ // const scope = yield* Scope.fork(parentScope, ExecutionStrategy.sequential)
35
+ const scope = yield* Scope.make()
36
+ yield* Effect.addFinalizer((exit) => Scope.close(scope, exit))
37
+ return yield* fn(scope).pipe(Scope.extend(scope))
38
+ })
39
+
28
40
  export const tryAll = <Res>(
29
41
  fn: () => Res,
30
42
  ): Res extends Effect.Effect<infer A, infer E, never>
@@ -42,17 +54,6 @@ export const tryAll = <Res>(
42
54
  ),
43
55
  ) as any
44
56
 
45
- const getThreadName = () => {
46
- // @ts-expect-error TODO fix types
47
- const globalName = globalThis.name
48
- return isNonEmptyString(globalName)
49
- ? globalName
50
- : // eslint-disable-next-line unicorn/prefer-global-this
51
- typeof window === 'object'
52
- ? 'Main Thread'
53
- : 'unknown-thread'
54
- }
55
-
56
57
  export const acquireReleaseLog = (label: string) =>
57
58
  Effect.acquireRelease(Effect.log(`${label} acquire`), (_, ex) => Effect.log(`${label} release`, ex))
58
59
 
@@ -76,9 +77,8 @@ export const tapCauseLogPretty = <R, E, A>(eff: Effect.Effect<A, E, R>): Effect.
76
77
  Effect.catchTag('NoSuchElementException', (_) => Effect.succeed(undefined)),
77
78
  )
78
79
 
79
- const threadName = getThreadName()
80
80
  const firstErrLine = cause.toString().split('\n')[0]
81
- yield* Effect.logError(`Error on ${threadName}: ${firstErrLine}`, cause).pipe((_) =>
81
+ yield* Effect.logError(firstErrLine, cause).pipe((_) =>
82
82
  span === undefined
83
83
  ? _
84
84
  : Effect.annotateLogs({ spanId: span.spanContext().spanId, traceId: span.spanContext().traceId })(_),
@@ -113,11 +113,11 @@ export const logWarnIfTakesLongerThan =
113
113
  Effect.gen(function* () {
114
114
  const runtime = yield* Effect.runtime<never>()
115
115
 
116
- let timedOut = false
116
+ let tookLongerThanTimer = false
117
117
 
118
118
  const timeoutFiber = Effect.sleep(duration).pipe(
119
119
  Effect.tap(() => {
120
- timedOut = true
120
+ tookLongerThanTimer = true
121
121
  // TODO include span info
122
122
  return Effect.logWarning(`${label}: Took longer than ${duration}ms`)
123
123
  }),
@@ -126,9 +126,22 @@ export const logWarnIfTakesLongerThan =
126
126
  )
127
127
 
128
128
  const start = Date.now()
129
- const res = yield* eff.pipe(Effect.exit)
129
+ const res = yield* eff.pipe(
130
+ Effect.exit,
131
+ Effect.onInterrupt(
132
+ Effect.fn(function* () {
133
+ const end = Date.now()
134
+
135
+ yield* Fiber.interrupt(timeoutFiber)
136
+
137
+ if (tookLongerThanTimer) {
138
+ yield* Effect.logWarning(`${label}: Interrupted after ${end - start}ms`)
139
+ }
140
+ }),
141
+ ),
142
+ )
130
143
 
131
- if (timedOut) {
144
+ if (tookLongerThanTimer) {
132
145
  const end = Date.now()
133
146
  yield* Effect.logWarning(`${label}: Actual duration: ${end - start}ms`)
134
147
  }
@@ -1,4 +1,4 @@
1
- import { Logger } from 'effect'
1
+ import { Cause, HashMap, Logger, LogLevel } from 'effect'
2
2
 
3
3
  export * from 'effect/Logger'
4
4
 
@@ -14,4 +14,26 @@ export const prettyWithThread = (threadName: string) =>
14
14
  Logger.prettyLogger({
15
15
  formatDate: (date) => `${defaultDateFormat(date)} ${threadName}`,
16
16
  }),
17
+ // consoleLogger(threadName),
17
18
  )
19
+
20
+ export const consoleLogger = (threadName: string) =>
21
+ Logger.make(({ message, annotations, date, logLevel, cause }) => {
22
+ const consoleFn =
23
+ logLevel === LogLevel.Debug
24
+ ? console.debug
25
+ : logLevel === LogLevel.Info
26
+ ? console.info
27
+ : logLevel === LogLevel.Warning
28
+ ? console.warn
29
+ : console.error
30
+
31
+ const annotationsObj = Object.fromEntries(HashMap.entries(annotations))
32
+
33
+ const messages = Array.isArray(message) ? message : [message]
34
+ if (Cause.isEmpty(cause) === false) {
35
+ messages.push(Cause.pretty(cause, { renderErrorCause: true }))
36
+ }
37
+
38
+ consoleFn(`[${defaultDateFormat(date)} ${threadName}]`, ...messages, annotationsObj)
39
+ })
@@ -1,8 +1,11 @@
1
1
  import { Transferable } from '@effect/platform'
2
+ import type { SchemaAST } from 'effect'
2
3
  import { Effect, Hash, ParseResult, Schema } from 'effect'
3
4
  import type { ParseError } from 'effect/ParseResult'
4
5
  import type { ParseOptions } from 'effect/SchemaAST'
5
6
 
7
+ import { shouldNeverHappen } from '../../index.js'
8
+
6
9
  export * from 'effect/Schema'
7
10
  export * from './debug-diff.js'
8
11
  export * from './msgpack.js'
@@ -34,6 +37,30 @@ export const encodeWithTransferables =
34
37
  return [encoded, collector.unsafeRead() as Transferable[]]
35
38
  })
36
39
 
40
+ export const decodeSyncDebug: <A, I>(
41
+ schema: Schema.Schema<A, I, never>,
42
+ options?: SchemaAST.ParseOptions,
43
+ ) => (i: I, overrideOptions?: SchemaAST.ParseOptions) => A = (schema, options) => (input, overrideOptions) => {
44
+ const res = Schema.decodeEither(schema, options)(input, overrideOptions)
45
+ if (res._tag === 'Left') {
46
+ return shouldNeverHappen(`decodeSyncDebug failed:`, res.left)
47
+ } else {
48
+ return res.right
49
+ }
50
+ }
51
+
52
+ export const encodeSyncDebug: <A, I>(
53
+ schema: Schema.Schema<A, I, never>,
54
+ options?: SchemaAST.ParseOptions,
55
+ ) => (a: A, overrideOptions?: SchemaAST.ParseOptions) => I = (schema, options) => (input, overrideOptions) => {
56
+ const res = Schema.encodeEither(schema, options)(input, overrideOptions)
57
+ if (res._tag === 'Left') {
58
+ return shouldNeverHappen(`encodeSyncDebug failed:`, res.left)
59
+ } else {
60
+ return res.right
61
+ }
62
+ }
63
+
37
64
  export const swap = <A, I, R>(schema: Schema.Schema<A, I, R>): Schema.Schema<I, A, R> =>
38
65
  Schema.transformOrFail(Schema.typeSchema(schema), Schema.encodedSchema(schema), {
39
66
  decode: ParseResult.encode(schema),