@livestore/utils 0.0.56-dev.1 → 0.0.56-dev.3

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.
@@ -12,6 +12,7 @@ export declare const logWarnIfTakesLongerThan: ({ label, duration }: {
12
12
  label: string;
13
13
  duration: Duration.DurationInput;
14
14
  }) => <R, E, A>(eff: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
15
+ export declare const logDuration: (label: string) => <R, E, A>(eff: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
15
16
  export declare const tapSync: <A>(tapFn: (a: A) => unknown) => <R, E>(eff: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
16
17
  export declare const debugLogEnv: (msg?: string) => Effect.Effect<Context.Context<never>>;
17
18
  export declare const timeoutDie: <E1>(options: {
@@ -1 +1 @@
1
- {"version":3,"file":"Effect.d.ts","sourceRoot":"","sources":["../../src/effect/Effect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Effect.d.ts","sourceRoot":"","sources":["../../src/effect/Effect.ts"],"names":[],"mappings":"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"}
@@ -62,6 +62,13 @@ export const logWarnIfTakesLongerThan = ({ label, duration }) => (eff) => Effect
62
62
  yield* Fiber.interrupt(timeoutFiber);
63
63
  return res;
64
64
  });
65
+ export const logDuration = (label) => (eff) => Effect.gen(function* () {
66
+ const start = Date.now();
67
+ const res = yield* eff;
68
+ const end = Date.now();
69
+ yield* Effect.log(`${label}: ${end - start}ms`);
70
+ return res;
71
+ });
65
72
  export const tapSync = (tapFn) => (eff) => Effect.tap(eff, (a) => Effect.sync(() => tapFn(a)));
66
73
  export const debugLogEnv = (msg) => pipe(Effect.context(), Effect.tap((env) => log(msg ?? 'debugLogEnv', env)));
67
74
  export const timeoutDie = (options) => (self) => Effect.orDie(Effect.timeoutFail(options)(self));
@@ -1 +1 @@
1
- {"version":3,"file":"Effect.js","sourceRoot":"","sources":["../../src/effect/Effect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA;AAE1D,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7D,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAGpC,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,cAAc,eAAe,CAAA;AAE7B,6EAA6E;AAC7E,wBAAwB;AACxB,oCAAoC;AACpC,OAAO;AAEP,iFAAiF;AACjF,wBAAwB;AACxB,qCAAqC;AACrC,OAAO;AAEP,kFAAkF;AAClF,wBAAwB;AACxB,sCAAsC;AACtC,OAAO;AAEP,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,EAAa,EAKmC,EAAE,CAClD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CACzB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACvB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;IACpB,CAAC,CAAE,KAAmC;IACtC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;QAChB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC;QAC7B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAC5B,CACK,CAAA;AAEV,MAAM,aAAa,GAAG,GAAG,EAAE;IACzB,kCAAkC;IAClC,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAA;IAClC,OAAO,gBAAgB,CAAC,UAAU,CAAC;QACjC,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,OAAO,MAAM,KAAK,QAAQ;YAC1B,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,gBAAgB,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAE,EAAE,CACjD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,UAAU,EAAE,EAAE,CAAC,CAAC,CAAA;AAEtG,MAAM,CAAC,MAAM,SAAS,GACpB,CAAC,GAAG,IAAW,EAAE,EAAE,CACnB,CAAU,GAA2B,EAA0B,EAAE,CAC/D,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;AAE5C,sCAAsC;AACtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAU,GAA2B,EAA0B,EAAE,CAChG,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,IAAI,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QACnC,qDAAqD;QACrD,OAAM;IACR,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CACjD,MAAM,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAC5E,CAAA;IAED,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IACpD,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,UAAU,KAAK,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAClF,IAAI,KAAK,SAAS;QAChB,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CACvG,CAAA;AACH,CAAC,CAAC,CACH,CAAA;AAEH,MAAM,CAAC,MAAM,wBAAwB,GACnC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAuD,EAAE,EAAE,CAC7E,CAAU,GAA2B,EAA0B,EAAE,CAC/D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAS,CAAA;IAE9C,IAAI,QAAQ,GAAG,KAAK,CAAA;IAEpB,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;QACd,QAAQ,GAAG,IAAI,CAAA;QACf,yBAAyB;QACzB,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,sBAAsB,QAAQ,IAAI,CAAC,CAAA;IACtE,CAAC,CAAC,EACF,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EACvB,MAAM,CAAC,OAAO,CACf,CAAA;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACxB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAA;IAEtB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,KAAK,sBAAsB,GAAG,GAAG,KAAK,IAAI,CAAC,CAAA;IACzE,CAAC;IAED,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IAEpC,OAAO,GAAG,CAAA;AACZ,CAAC,CAAC,CAAA;AAEN,MAAM,CAAC,MAAM,OAAO,GAClB,CAAI,KAAwB,EAAE,EAAE,CAChC,CAAO,GAA2B,EAA0B,EAAE,CAC5D,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAEvD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAY,EAAyC,EAAE,CACjF,IAAI,CACF,MAAM,CAAC,OAAO,EAAS,EACvB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,aAAa,EAAE,GAAG,CAAC,CAAC,CACpD,CAAA;AAEH,MAAM,CAAC,MAAM,UAAU,GACrB,CAAK,OAAqE,EAAE,EAAE,CAC9E,CAAU,IAA4B,EAA0B,EAAE,CAChE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAEnD,MAAM,CAAC,MAAM,aAAa,GACxB,CAAC,OAA4D,EAAE,EAAE,CACjE,CAAU,IAA4B,EAA0B,EAAE,CAChE,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAC7G,IAAI,CACL,CACF,CAAA;AAEL,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,GAA2B,EACqC,EAAE,CAClE,IAAI,CACF,QAAQ,CAAC,IAAI,EAAQ,EACrB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACtB,IAAI,CACF,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAChB,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EACnD,iBAAiB,EACjB,MAAM,CAAC,UAAU,CAClB,CACF,CACF,CAAA;AAEH,MAAM,CAAC,MAAM,sBAAsB,GACjC,CAAC,WAAmB,EAAE,EAAE,CACxB,CAAU,GAA2B,EAA0B,EAAE,CAC/D,MAAM,CAAC,iBAAiB,CACtB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,QAAQ,CAAC,CAAC,EAC3D,GAAG,EAAE,CAAC,GAAG,EACT,GAAG,EAAE,CACH,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;IACf,WAAW,CAAC,IAAI,CAAC,GAAG,WAAW,MAAM,CAAC,CAAA;IACtC,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,WAAW,QAAQ,EAAE,GAAG,WAAW,MAAM,CAAC,CAAA;AAChF,CAAC,CAAC,CACL,CAAA"}
1
+ {"version":3,"file":"Effect.js","sourceRoot":"","sources":["../../src/effect/Effect.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import type { ParseResult } from '@effect/schema';
2
2
  import type { Scope } from 'effect';
3
- import { Effect, Either, Queue, Stream } from 'effect';
3
+ import { Deferred, Effect, Either, Queue, Stream } from 'effect';
4
4
  import * as Schema from './Schema/index.js';
5
5
  export type WebChannel<MsgIn, MsgOut> = {
6
6
  send: (a: MsgOut) => Effect.Effect<void, ParseResult.ParseError>;
7
7
  listen: Stream.Stream<Either.Either<MsgIn, ParseResult.ParseError>>;
8
+ closedDeferred: Deferred.Deferred<void>;
8
9
  };
9
10
  export declare const broadcastChannel: <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({ channelName, listenSchema, sendSchema, }: {
10
11
  channelName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"WebChannel.d.ts","sourceRoot":"","sources":["../../src/effect/WebChannel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEtD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,MAAM,MAAM,UAAU,CAAC,KAAK,EAAE,MAAM,IAAI;IACtC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IAChE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAA;CACpE,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,8CAIxE;IACD,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAChD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACjD,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAkBU,CAAA;AAEzE,eAAO,MAAM,aAAa,GAAI,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,uDAKrE;IACD,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAChD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACjD,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAaT,CAAA;AAEtD,eAAO,MAAM,kBAAkB,GAAI,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,uCAI1E;IACD,IAAI,EAAE,WAAW,CAAA;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAChD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACjD,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAiBJ,CAAA;AAE3D,eAAO,MAAM,iBAAiB,GAAI,KAAK,EAAE,MAAM,OAAK,MAAM,CAAC,MAAM,CAC/D;IAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;CAAE,EAC1G,KAAK,EACL,KAAK,CAAC,KAAK,CAaT,CAAA"}
1
+ {"version":3,"file":"WebChannel.d.ts","sourceRoot":"","sources":["../../src/effect/WebChannel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEhE,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,MAAM,MAAM,UAAU,CAAC,KAAK,EAAE,MAAM,IAAI;IACtC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IAChE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,CAAA;IACnE,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;CACxC,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,8CAIxE;IACD,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAChD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACjD,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAoBU,CAAA;AAEzE,eAAO,MAAM,aAAa,GAAI,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,uDAKrE;IACD,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAChD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACjD,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAeT,CAAA;AAEtD,eAAO,MAAM,kBAAkB,GAAI,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,uCAI1E;IACD,IAAI,EAAE,WAAW,CAAA;IACjB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;IAChD,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;CACjD,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAmBJ,CAAA;AAE3D,eAAO,MAAM,iBAAiB,GAAI,KAAK,EAAE,MAAM,OAAK,MAAM,CAAC,MAAM,CAC/D;IAAE,UAAU,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;CAAE,EAC1G,KAAK,EACL,KAAK,CAAC,KAAK,CAeT,CAAA"}
@@ -1,4 +1,4 @@
1
- import { Effect, Either, Queue, Stream } from 'effect';
1
+ import { Deferred, Effect, Either, Queue, Stream } from 'effect';
2
2
  import * as Schema from './Schema/index.js';
3
3
  export const broadcastChannel = ({ channelName, listenSchema, sendSchema, }) => Effect.gen(function* () {
4
4
  const channel = new BroadcastChannel(channelName);
@@ -9,7 +9,8 @@ export const broadcastChannel = ({ channelName, listenSchema, sendSchema, }) =>
9
9
  });
10
10
  // TODO also listen to `messageerror` in parallel
11
11
  const listen = Stream.fromEventListener(channel, 'message').pipe(Stream.map((_) => Schema.decodeEither(listenSchema)(_.data)));
12
- return { send, listen };
12
+ const closedDeferred = yield* Deferred.make();
13
+ return { send, listen, closedDeferred };
13
14
  }).pipe(Effect.withSpan(`WebChannel:broadcastChannel(${channelName})`));
14
15
  export const windowChannel = ({ window, targetOrigin = '*', listenSchema, sendSchema, }) => Effect.gen(function* () {
15
16
  const send = (message) => Effect.gen(function* () {
@@ -17,7 +18,8 @@ export const windowChannel = ({ window, targetOrigin = '*', listenSchema, sendSc
17
18
  window.postMessage(messageEncoded, targetOrigin, transferables);
18
19
  });
19
20
  const listen = Stream.fromEventListener(window, 'message').pipe(Stream.map((_) => Schema.decodeEither(listenSchema)(_.data)));
20
- return { send, listen };
21
+ const closedDeferred = yield* Deferred.make();
22
+ return { send, listen, closedDeferred };
21
23
  }).pipe(Effect.withSpan(`WebChannel:windowChannel`));
22
24
  export const messagePortChannel = ({ port, listenSchema, sendSchema, }) => Effect.gen(function* () {
23
25
  const send = (message) => Effect.gen(function* () {
@@ -26,15 +28,17 @@ export const messagePortChannel = ({ port, listenSchema, sendSchema, }) => Effec
26
28
  });
27
29
  const listen = Stream.fromEventListener(port, 'message').pipe(Stream.map((_) => Schema.decodeEither(listenSchema)(_.data)));
28
30
  port.start();
31
+ const closedDeferred = yield* Deferred.make();
29
32
  yield* Effect.addFinalizer(() => Effect.try(() => port.close()).pipe(Effect.ignoreLogged));
30
- return { send, listen };
33
+ return { send, listen, closedDeferred };
31
34
  }).pipe(Effect.withSpan(`WebChannel:messagePortChannel`));
32
35
  export const queueChannelProxy = () => Effect.gen(function* () {
33
36
  const sendQueue = yield* Queue.unbounded().pipe(Effect.acquireRelease(Queue.shutdown));
34
37
  const listenQueue = yield* Queue.unbounded().pipe(Effect.acquireRelease(Queue.shutdown));
35
38
  const send = (message) => Queue.offer(sendQueue, message);
36
39
  const listen = Stream.fromQueue(listenQueue).pipe(Stream.map(Either.right));
37
- const webChannel = { send, listen };
40
+ const closedDeferred = yield* Deferred.make();
41
+ const webChannel = { send, listen, closedDeferred };
38
42
  return { webChannel, sendQueue, listenQueue };
39
43
  });
40
44
  //# sourceMappingURL=WebChannel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WebChannel.js","sourceRoot":"","sources":["../../src/effect/WebChannel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebChannel.js","sourceRoot":"","sources":["../../src/effect/WebChannel.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livestore/utils",
3
- "version": "0.0.56-dev.1",
3
+ "version": "0.0.56-dev.3",
4
4
  "sideEffects": false,
5
5
  "type": "module",
6
6
  "exports": {
@@ -36,7 +36,7 @@
36
36
  "msgpackr": "^1.11.0",
37
37
  "otel-websocket-exporter": "^0.0.29",
38
38
  "pretty-bytes": "^6.1.1",
39
- "effect-db-schema": "0.0.56-dev.1"
39
+ "effect-db-schema": "0.0.56-dev.3"
40
40
  },
41
41
  "peerDependencies": {
42
42
  "@effect/experimental": "^0.21.2",
@@ -114,6 +114,17 @@ export const logWarnIfTakesLongerThan =
114
114
  return res
115
115
  })
116
116
 
117
+ export const logDuration =
118
+ (label: string) =>
119
+ <R, E, A>(eff: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
120
+ Effect.gen(function* () {
121
+ const start = Date.now()
122
+ const res = yield* eff
123
+ const end = Date.now()
124
+ yield* Effect.log(`${label}: ${end - start}ms`)
125
+ return res
126
+ })
127
+
117
128
  export const tapSync =
118
129
  <A>(tapFn: (a: A) => unknown) =>
119
130
  <R, E>(eff: Effect.Effect<A, E, R>): Effect.Effect<A, E, R> =>
@@ -1,12 +1,13 @@
1
1
  import type { ParseResult } from '@effect/schema'
2
2
  import type { Scope } from 'effect'
3
- import { Effect, Either, Queue, Stream } from 'effect'
3
+ import { Deferred, Effect, Either, Queue, Stream } from 'effect'
4
4
 
5
5
  import * as Schema from './Schema/index.js'
6
6
 
7
7
  export type WebChannel<MsgIn, MsgOut> = {
8
8
  send: (a: MsgOut) => Effect.Effect<void, ParseResult.ParseError>
9
9
  listen: Stream.Stream<Either.Either<MsgIn, ParseResult.ParseError>>
10
+ closedDeferred: Deferred.Deferred<void>
10
11
  }
11
12
 
12
13
  export const broadcastChannel = <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({
@@ -34,7 +35,9 @@ export const broadcastChannel = <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({
34
35
  Stream.map((_) => Schema.decodeEither(listenSchema)(_.data)),
35
36
  )
36
37
 
37
- return { send, listen }
38
+ const closedDeferred = yield* Deferred.make<void>()
39
+
40
+ return { send, listen, closedDeferred }
38
41
  }).pipe(Effect.withSpan(`WebChannel:broadcastChannel(${channelName})`))
39
42
 
40
43
  export const windowChannel = <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({
@@ -59,7 +62,9 @@ export const windowChannel = <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({
59
62
  Stream.map((_) => Schema.decodeEither(listenSchema)(_.data)),
60
63
  )
61
64
 
62
- return { send, listen }
65
+ const closedDeferred = yield* Deferred.make<void>()
66
+
67
+ return { send, listen, closedDeferred }
63
68
  }).pipe(Effect.withSpan(`WebChannel:windowChannel`))
64
69
 
65
70
  export const messagePortChannel = <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({
@@ -84,9 +89,11 @@ export const messagePortChannel = <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({
84
89
 
85
90
  port.start()
86
91
 
92
+ const closedDeferred = yield* Deferred.make<void>()
93
+
87
94
  yield* Effect.addFinalizer(() => Effect.try(() => port.close()).pipe(Effect.ignoreLogged))
88
95
 
89
- return { send, listen }
96
+ return { send, listen, closedDeferred }
90
97
  }).pipe(Effect.withSpan(`WebChannel:messagePortChannel`))
91
98
 
92
99
  export const queueChannelProxy = <MsgIn, MsgOut>(): Effect.Effect<
@@ -102,7 +109,9 @@ export const queueChannelProxy = <MsgIn, MsgOut>(): Effect.Effect<
102
109
 
103
110
  const listen = Stream.fromQueue(listenQueue).pipe(Stream.map(Either.right))
104
111
 
105
- const webChannel = { send, listen }
112
+ const closedDeferred = yield* Deferred.make<void>()
113
+
114
+ const webChannel = { send, listen, closedDeferred }
106
115
 
107
116
  return { webChannel, sendQueue, listenQueue }
108
117
  })