@livestore/utils 0.0.55 → 0.0.56-dev.1
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.
- package/dist/.tsbuildinfo.json +1 -1
- package/dist/base64.d.ts +1 -0
- package/dist/base64.d.ts.map +1 -1
- package/dist/base64.js +4 -1
- package/dist/base64.js.map +1 -1
- package/dist/effect/Schema/index.d.ts +3 -6
- package/dist/effect/Schema/index.d.ts.map +1 -1
- package/dist/effect/Schema/index.js +7 -24
- package/dist/effect/Schema/index.js.map +1 -1
- package/dist/effect/Schema/msgpack.d.ts +3 -0
- package/dist/effect/Schema/msgpack.d.ts.map +1 -0
- package/dist/effect/Schema/msgpack.js +7 -0
- package/dist/effect/Schema/msgpack.js.map +1 -0
- package/dist/effect/{BrowserChannel.d.ts → WebChannel.d.ts} +12 -7
- package/dist/effect/WebChannel.d.ts.map +1 -0
- package/dist/effect/{BrowserChannel.js → WebChannel.js} +13 -5
- package/dist/effect/WebChannel.js.map +1 -0
- package/dist/effect/index.d.ts +1 -1
- package/dist/effect/index.d.ts.map +1 -1
- package/dist/effect/index.js +1 -1
- package/dist/effect/index.js.map +1 -1
- package/package.json +3 -2
- package/src/base64.ts +6 -1
- package/src/effect/Schema/index.ts +10 -26
- package/src/effect/Schema/msgpack.ts +8 -0
- package/src/effect/{BrowserChannel.ts → WebChannel.ts} +27 -9
- package/src/effect/index.ts +1 -1
- package/dist/effect/BrowserChannel.d.ts.map +0 -1
- package/dist/effect/BrowserChannel.js.map +0 -1
package/dist/base64.d.ts
CHANGED
package/dist/base64.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../src/base64.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base64.d.ts","sourceRoot":"","sources":["../src/base64.ts"],"names":[],"mappings":"AAyEA;;;;GAIG;AACH,eAAO,MAAM,MAAM,SAAU,WAAW,GAAG,MAAM,KAAG,MA0BnD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,MAAM,QAAS,MAAM,KAAG,UASpC,CAAA;AAGD,eAAO,MAAM,cAAc,QAAS,MAAM,KAAG,MAAyC,CAAA"}
|
package/dist/base64.js
CHANGED
|
@@ -67,13 +67,14 @@ const base64abc = [
|
|
|
67
67
|
'+',
|
|
68
68
|
'/',
|
|
69
69
|
];
|
|
70
|
+
const textEncoder = new TextEncoder();
|
|
70
71
|
/**
|
|
71
72
|
* CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727
|
|
72
73
|
* Encodes a given Uint8Array, ArrayBuffer or string into RFC4648 base64 representation
|
|
73
74
|
* @param data
|
|
74
75
|
*/
|
|
75
76
|
export const encode = (data) => {
|
|
76
|
-
const uint8 = typeof data === 'string' ?
|
|
77
|
+
const uint8 = typeof data === 'string' ? textEncoder.encode(data) : data instanceof Uint8Array ? data : new Uint8Array(data);
|
|
77
78
|
let result = '', i;
|
|
78
79
|
const l = uint8.length;
|
|
79
80
|
for (i = 2; i < l; i += 3) {
|
|
@@ -111,4 +112,6 @@ export const decode = (b64) => {
|
|
|
111
112
|
}
|
|
112
113
|
return bytes;
|
|
113
114
|
};
|
|
115
|
+
const textDecoder = new TextDecoder();
|
|
116
|
+
export const decodeToString = (b64) => textDecoder.decode(decode(b64));
|
|
114
117
|
//# sourceMappingURL=base64.js.map
|
package/dist/base64.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../src/base64.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,qCAAqC;AACrC,2CAA2C;AAE3C,MAAM,SAAS,GAAG;IAChB,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;CACJ,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAA0B,EAAU,EAAE;IAC3D,MAAM,KAAK,GACT,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"base64.js","sourceRoot":"","sources":["../src/base64.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,12 +4,9 @@ import type { ParseError } from '@effect/schema/ParseResult';
|
|
|
4
4
|
import { Effect } from 'effect';
|
|
5
5
|
export * from '@effect/schema/Schema';
|
|
6
6
|
export * from './debug-diff.js';
|
|
7
|
+
export * from './msgpack.js';
|
|
7
8
|
export declare const hash: (schema: Schema.Schema<any>) => number;
|
|
8
|
-
declare const AnyError_base: Schema.transform<Schema.Struct<{
|
|
9
|
-
message: typeof Schema.String;
|
|
10
|
-
stack: Schema.optional<typeof Schema.String>;
|
|
11
|
-
}>, typeof Schema.Any>;
|
|
12
|
-
export declare class AnyError extends AnyError_base {
|
|
13
|
-
}
|
|
14
9
|
export declare const encodeWithTransferables: <A, I, R>(schema: Schema.Schema<A, I, R>, options?: ParseOptions | undefined) => (a: A, overrideOptions?: ParseOptions | undefined) => Effect.Effect<[I, Transferable[]], ParseError, R>;
|
|
10
|
+
export declare const swap: <A, I, R>(schema: Schema.Schema<A, I, R>) => Schema.Schema<I, A, R>;
|
|
11
|
+
export declare const Base64FromUint8Array: Schema.Schema<string, Uint8Array>;
|
|
15
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/effect/Schema/index.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/effect/Schema/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAQ,MAAM,QAAQ,CAAA;AAErC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAK5B,eAAO,MAAM,IAAI,WAAY,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAS9C,CAAA;AAED,eAAO,MAAM,uBAAuB,GACjC,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,YAAY,YAAY,GAAG,SAAS,SACxE,CAAC,oBAAoB,YAAY,GAAG,SAAS,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAShG,CAAA;AAEN,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAIhF,CAAA;AAEJ,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAqC,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Transferable } from '@effect/platform';
|
|
2
|
-
import { Schema } from '@effect/schema';
|
|
2
|
+
import { ParseResult, Schema } from '@effect/schema';
|
|
3
3
|
import { Effect, Hash } from 'effect';
|
|
4
|
-
import { objectToString } from '../../misc.js';
|
|
5
4
|
export * from '@effect/schema/Schema';
|
|
6
5
|
export * from './debug-diff.js';
|
|
6
|
+
export * from './msgpack.js';
|
|
7
7
|
// NOTE this is a temporary workaround until Effect schema has a better way to hash schemas
|
|
8
8
|
// https://github.com/Effect-TS/effect/issues/2719
|
|
9
9
|
// TODO remove this once the issue is resolved
|
|
@@ -16,31 +16,14 @@ export const hash = (schema) => {
|
|
|
16
16
|
return Hash.hash(schema.ast.toString());
|
|
17
17
|
}
|
|
18
18
|
};
|
|
19
|
-
const errorStructSchema = Schema.Struct({
|
|
20
|
-
message: Schema.String,
|
|
21
|
-
stack: Schema.optional(Schema.String),
|
|
22
|
-
});
|
|
23
|
-
export class AnyError extends Schema.transform(errorStructSchema, Schema.Any, {
|
|
24
|
-
decode: (errorStruct) => {
|
|
25
|
-
const { message, stack } = errorStruct;
|
|
26
|
-
const previousLimit = Error.stackTraceLimit;
|
|
27
|
-
Error.stackTraceLimit = 0;
|
|
28
|
-
// eslint-disable-next-line unicorn/error-message
|
|
29
|
-
const error = new Error('');
|
|
30
|
-
Error.stackTraceLimit = previousLimit;
|
|
31
|
-
error.message = message;
|
|
32
|
-
error.stack = stack;
|
|
33
|
-
return error;
|
|
34
|
-
},
|
|
35
|
-
encode: (anyError) => ({
|
|
36
|
-
message: objectToString(anyError).replace(/^Error: /, ''),
|
|
37
|
-
stack: anyError.stack,
|
|
38
|
-
}),
|
|
39
|
-
}) {
|
|
40
|
-
}
|
|
41
19
|
export const encodeWithTransferables = (schema, options) => (a, overrideOptions) => Effect.gen(function* () {
|
|
42
20
|
const collector = yield* Transferable.makeCollector;
|
|
43
21
|
const encoded = yield* Schema.encode(schema, options)(a, overrideOptions).pipe(Effect.provideService(Transferable.Collector, collector));
|
|
44
22
|
return [encoded, collector.unsafeRead()];
|
|
45
23
|
});
|
|
24
|
+
export const swap = (schema) => Schema.transformOrFail(Schema.typeSchema(schema), Schema.encodedSchema(schema), {
|
|
25
|
+
decode: ParseResult.encode(schema),
|
|
26
|
+
encode: ParseResult.decode(schema),
|
|
27
|
+
});
|
|
28
|
+
export const Base64FromUint8Array = swap(Schema.Uint8ArrayFromBase64);
|
|
46
29
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/effect/Schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/effect/Schema/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAGpD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAErC,cAAc,uBAAuB,CAAA;AACrC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAE5B,2FAA2F;AAC3F,kDAAkD;AAClD,8CAA8C;AAC9C,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAA0B,EAAE,EAAE;IACjD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CACV,qIAAqI,CACtI,CAAA;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;IACzC,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAClC,CAAU,MAA8B,EAAE,OAAkC,EAAE,EAAE,CAChF,CAAC,CAAI,EAAE,eAA0C,EAAqD,EAAE,CACtG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,aAAa,CAAA;IAEnD,MAAM,OAAO,GAAM,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,IAAI,CAC/E,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CACzD,CAAA;IAED,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,UAAU,EAAoB,CAAC,CAAA;AAC5D,CAAC,CAAC,CAAA;AAEN,MAAM,CAAC,MAAM,IAAI,GAAG,CAAU,MAA8B,EAA0B,EAAE,CACtF,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;IAC9E,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IAClC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;CACnC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,oBAAoB,GAAsC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msgpack.d.ts","sourceRoot":"","sources":["../../../src/effect/Schema/msgpack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAGvC,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,+FAIrD,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Schema } from '@effect/schema';
|
|
2
|
+
import * as msgpack from 'msgpackr';
|
|
3
|
+
export const MsgPack = (schema) => Schema.transform(Schema.Uint8ArrayFromSelf, schema, {
|
|
4
|
+
encode: (decoded) => msgpack.pack(decoded),
|
|
5
|
+
decode: (encodedBytes) => msgpack.unpack(encodedBytes),
|
|
6
|
+
});
|
|
7
|
+
//# sourceMappingURL=msgpack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msgpack.js","sourceRoot":"","sources":["../../../src/effect/Schema/msgpack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,UAAU,CAAA;AAEnC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAO,MAA2B,EAAE,EAAE,CAC3D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,EAAE;IAClD,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;IAC1C,MAAM,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;CACvD,CAAC,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { ParseResult } from '@effect/schema';
|
|
2
|
-
import type {
|
|
3
|
-
import { Effect, Stream } from 'effect';
|
|
2
|
+
import type { Scope } from 'effect';
|
|
3
|
+
import { Effect, Either, Queue, Stream } from 'effect';
|
|
4
4
|
import * as Schema from './Schema/index.js';
|
|
5
|
-
export type
|
|
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
8
|
};
|
|
@@ -10,16 +10,21 @@ export declare const broadcastChannel: <MsgIn, MsgOut, MsgInEncoded, MsgOutEncod
|
|
|
10
10
|
channelName: string;
|
|
11
11
|
listenSchema: Schema.Schema<MsgIn, MsgInEncoded>;
|
|
12
12
|
sendSchema: Schema.Schema<MsgOut, MsgOutEncoded>;
|
|
13
|
-
}) => Effect.Effect<
|
|
13
|
+
}) => Effect.Effect<WebChannel<MsgIn, MsgOut>, never, Scope.Scope>;
|
|
14
14
|
export declare const windowChannel: <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({ window, targetOrigin, listenSchema, sendSchema, }: {
|
|
15
15
|
window: Window;
|
|
16
16
|
targetOrigin?: string;
|
|
17
17
|
listenSchema: Schema.Schema<MsgIn, MsgInEncoded>;
|
|
18
18
|
sendSchema: Schema.Schema<MsgOut, MsgOutEncoded>;
|
|
19
|
-
}) => Effect.Effect<
|
|
19
|
+
}) => Effect.Effect<WebChannel<MsgIn, MsgOut>, never, Scope.Scope>;
|
|
20
20
|
export declare const messagePortChannel: <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({ port, listenSchema, sendSchema, }: {
|
|
21
21
|
port: MessagePort;
|
|
22
22
|
listenSchema: Schema.Schema<MsgIn, MsgInEncoded>;
|
|
23
23
|
sendSchema: Schema.Schema<MsgOut, MsgOutEncoded>;
|
|
24
|
-
}) => Effect.Effect<
|
|
25
|
-
|
|
24
|
+
}) => Effect.Effect<WebChannel<MsgIn, MsgOut>, never, Scope.Scope>;
|
|
25
|
+
export declare const queueChannelProxy: <MsgIn, MsgOut>() => Effect.Effect<{
|
|
26
|
+
webChannel: WebChannel<MsgIn, MsgOut>;
|
|
27
|
+
sendQueue: Queue.Queue<MsgOut>;
|
|
28
|
+
listenQueue: Queue.Queue<MsgIn>;
|
|
29
|
+
}, never, Scope.Scope>;
|
|
30
|
+
//# sourceMappingURL=WebChannel.d.ts.map
|
|
@@ -0,0 +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,4 +1,4 @@
|
|
|
1
|
-
import { Effect, Stream } from 'effect';
|
|
1
|
+
import { 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);
|
|
@@ -10,7 +10,7 @@ export const broadcastChannel = ({ channelName, listenSchema, sendSchema, }) =>
|
|
|
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
12
|
return { send, listen };
|
|
13
|
-
}).pipe(Effect.withSpan(`
|
|
13
|
+
}).pipe(Effect.withSpan(`WebChannel:broadcastChannel(${channelName})`));
|
|
14
14
|
export const windowChannel = ({ window, targetOrigin = '*', listenSchema, sendSchema, }) => Effect.gen(function* () {
|
|
15
15
|
const send = (message) => Effect.gen(function* () {
|
|
16
16
|
const [messageEncoded, transferables] = yield* Schema.encodeWithTransferables(sendSchema)(message);
|
|
@@ -18,7 +18,7 @@ export const windowChannel = ({ window, targetOrigin = '*', listenSchema, sendSc
|
|
|
18
18
|
});
|
|
19
19
|
const listen = Stream.fromEventListener(window, 'message').pipe(Stream.map((_) => Schema.decodeEither(listenSchema)(_.data)));
|
|
20
20
|
return { send, listen };
|
|
21
|
-
}).pipe(Effect.withSpan(`
|
|
21
|
+
}).pipe(Effect.withSpan(`WebChannel:windowChannel`));
|
|
22
22
|
export const messagePortChannel = ({ port, listenSchema, sendSchema, }) => Effect.gen(function* () {
|
|
23
23
|
const send = (message) => Effect.gen(function* () {
|
|
24
24
|
const [messageEncoded, transferables] = yield* Schema.encodeWithTransferables(sendSchema)(message);
|
|
@@ -28,5 +28,13 @@ export const messagePortChannel = ({ port, listenSchema, sendSchema, }) => Effec
|
|
|
28
28
|
port.start();
|
|
29
29
|
yield* Effect.addFinalizer(() => Effect.try(() => port.close()).pipe(Effect.ignoreLogged));
|
|
30
30
|
return { send, listen };
|
|
31
|
-
}).pipe(Effect.withSpan(`
|
|
32
|
-
|
|
31
|
+
}).pipe(Effect.withSpan(`WebChannel:messagePortChannel`));
|
|
32
|
+
export const queueChannelProxy = () => Effect.gen(function* () {
|
|
33
|
+
const sendQueue = yield* Queue.unbounded().pipe(Effect.acquireRelease(Queue.shutdown));
|
|
34
|
+
const listenQueue = yield* Queue.unbounded().pipe(Effect.acquireRelease(Queue.shutdown));
|
|
35
|
+
const send = (message) => Queue.offer(sendQueue, message);
|
|
36
|
+
const listen = Stream.fromQueue(listenQueue).pipe(Stream.map(Either.right));
|
|
37
|
+
const webChannel = { send, listen };
|
|
38
|
+
return { webChannel, sendQueue, listenQueue };
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=WebChannel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebChannel.js","sourceRoot":"","sources":["../../src/effect/WebChannel.ts"],"names":[],"mappings":"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"}
|
package/dist/effect/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export { Scope, Ref, SynchronizedRef, Queue, Fiber, FiberId, FiberSet, FiberMap,
|
|
|
3
3
|
export { dual } from 'effect/Function';
|
|
4
4
|
export * as Stream from './Stream.js';
|
|
5
5
|
export * as SubscriptionRef from './SubscriptionRef.js';
|
|
6
|
-
export * as
|
|
6
|
+
export * as WebChannel from './WebChannel.js';
|
|
7
7
|
export { TreeFormatter, AST as SchemaAST, Pretty as SchemaPretty, Equivalence as SchemaEquivalence, Serializable, JSONSchema, ParseResult, } from '@effect/schema';
|
|
8
8
|
export * as Schema from './Schema/index.js';
|
|
9
9
|
export * as OtelTracer from '@effect/opentelemetry/Tracer';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/effect/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAA;AAErB,OAAO,EACL,KAAK,EACL,GAAG,EACH,eAAe,EACf,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,WAAW,EACX,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,cAAc,EACd,QAAQ,EACR,MAAM,EACN,WAAW,EACX,OAAO,EACP,MAAM,EACN,OAAO,EACP,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,IAAI,aAAa,EACtB,MAAM,IAAI,cAAc,EACxB,SAAS,EACT,OAAO,EACP,OAAO,EACP,cAAc,EACd,MAAM,EACN,QAAQ,EACR,MAAM,EACN,KAAK,EACL,GAAG,EACH,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,KAAK,GACN,MAAM,QAAQ,CAAA;AAEf,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/effect/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAA;AAErB,OAAO,EACL,KAAK,EACL,GAAG,EACH,eAAe,EACf,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,WAAW,EACX,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,cAAc,EACd,QAAQ,EACR,MAAM,EACN,WAAW,EACX,OAAO,EACP,MAAM,EACN,OAAO,EACP,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,IAAI,aAAa,EACtB,MAAM,IAAI,cAAc,EACxB,SAAS,EACT,OAAO,EACP,OAAO,EACP,cAAc,EACd,MAAM,EACN,QAAQ,EACR,MAAM,EACN,KAAK,EACL,GAAG,EACH,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,KAAK,GACN,MAAM,QAAQ,CAAA;AAEf,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C,OAAO,EACL,aAAa,EACb,GAAG,IAAI,SAAS,EAChB,MAAM,IAAI,YAAY,EACtB,WAAW,IAAI,iBAAiB,EAChC,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA;AAE1D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACpH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE7E,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA"}
|
package/dist/effect/index.js
CHANGED
|
@@ -3,7 +3,7 @@ export { Scope, Ref, SynchronizedRef, Queue, Fiber, FiberId, FiberSet, FiberMap,
|
|
|
3
3
|
export { dual } from 'effect/Function';
|
|
4
4
|
export * as Stream from './Stream.js';
|
|
5
5
|
export * as SubscriptionRef from './SubscriptionRef.js';
|
|
6
|
-
export * as
|
|
6
|
+
export * as WebChannel from './WebChannel.js';
|
|
7
7
|
export { TreeFormatter, AST as SchemaAST, Pretty as SchemaPretty, Equivalence as SchemaEquivalence, Serializable, JSONSchema, ParseResult, } from '@effect/schema';
|
|
8
8
|
export * as Schema from './Schema/index.js';
|
|
9
9
|
export * as OtelTracer from '@effect/opentelemetry/Tracer';
|
package/dist/effect/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/effect/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAA;AAErB,OAAO,EACL,KAAK,EACL,GAAG,EACH,eAAe,EACf,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,WAAW,EACX,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,cAAc,EACd,QAAQ,EACR,MAAM,EACN,WAAW,EACX,OAAO,EACP,MAAM,EACN,OAAO,EACP,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,IAAI,aAAa,EACtB,MAAM,IAAI,cAAc,EACxB,SAAS,EACT,OAAO,EACP,OAAO,EACP,cAAc,EACd,MAAM,EACN,QAAQ,EACR,MAAM,EACN,KAAK,EACL,GAAG,EACH,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,KAAK,GACN,MAAM,QAAQ,CAAA;AAEf,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/effect/index.ts"],"names":[],"mappings":"AAAA,OAAO,cAAc,CAAA;AAErB,OAAO,EACL,KAAK,EACL,GAAG,EACH,eAAe,EACf,KAAK,EACL,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,WAAW,EACX,YAAY,EACZ,MAAM,EACN,IAAI,EACJ,KAAK,EACL,OAAO,EACP,QAAQ,EACR,SAAS,EACT,cAAc,EACd,QAAQ,EACR,MAAM,EACN,WAAW,EACX,OAAO,EACP,MAAM,EACN,OAAO,EACP,IAAI,EACJ,MAAM,EACN,KAAK,EACL,IAAI,EACJ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,IAAI,aAAa,EACtB,MAAM,IAAI,cAAc,EACxB,SAAS,EACT,OAAO,EACP,OAAO,EACP,cAAc,EACd,MAAM,EACN,QAAQ,EACR,MAAM,EACN,KAAK,EACL,GAAG,EACH,IAAI,EACJ,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,KAAK,GACN,MAAM,QAAQ,CAAA;AAEf,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAEvD,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAE7C,OAAO,EACL,aAAa,EACb,GAAG,IAAI,SAAS,EAChB,MAAM,IAAI,YAAY,EACtB,WAAW,IAAI,iBAAiB,EAChC,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAC3C,OAAO,KAAK,UAAU,MAAM,8BAA8B,CAAA;AAE1D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AACpH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE7E,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,OAAO,KAAK,cAAc,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/utils",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.56-dev.1",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -33,9 +33,10 @@
|
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"date-fns": "^3.6.0",
|
|
36
|
+
"msgpackr": "^1.11.0",
|
|
36
37
|
"otel-websocket-exporter": "^0.0.29",
|
|
37
38
|
"pretty-bytes": "^6.1.1",
|
|
38
|
-
"effect-db-schema": "0.0.
|
|
39
|
+
"effect-db-schema": "0.0.56-dev.1"
|
|
39
40
|
},
|
|
40
41
|
"peerDependencies": {
|
|
41
42
|
"@effect/experimental": "^0.21.2",
|
package/src/base64.ts
CHANGED
|
@@ -69,6 +69,8 @@ const base64abc = [
|
|
|
69
69
|
'/',
|
|
70
70
|
]
|
|
71
71
|
|
|
72
|
+
const textEncoder = new TextEncoder()
|
|
73
|
+
|
|
72
74
|
/**
|
|
73
75
|
* CREDIT: https://gist.github.com/enepomnyaschih/72c423f727d395eeaa09697058238727
|
|
74
76
|
* Encodes a given Uint8Array, ArrayBuffer or string into RFC4648 base64 representation
|
|
@@ -76,7 +78,7 @@ const base64abc = [
|
|
|
76
78
|
*/
|
|
77
79
|
export const encode = (data: ArrayBuffer | string): string => {
|
|
78
80
|
const uint8 =
|
|
79
|
-
typeof data === 'string' ?
|
|
81
|
+
typeof data === 'string' ? textEncoder.encode(data) : data instanceof Uint8Array ? data : new Uint8Array(data)
|
|
80
82
|
let result = '',
|
|
81
83
|
i
|
|
82
84
|
const l = uint8.length
|
|
@@ -116,3 +118,6 @@ export const decode = (b64: string): Uint8Array => {
|
|
|
116
118
|
}
|
|
117
119
|
return bytes
|
|
118
120
|
}
|
|
121
|
+
|
|
122
|
+
const textDecoder = new TextDecoder()
|
|
123
|
+
export const decodeToString = (b64: string): string => textDecoder.decode(decode(b64))
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { Transferable } from '@effect/platform'
|
|
2
|
-
import { Schema } from '@effect/schema'
|
|
2
|
+
import { ParseResult, Schema } from '@effect/schema'
|
|
3
3
|
import type { ParseOptions } from '@effect/schema/AST'
|
|
4
4
|
import type { ParseError } from '@effect/schema/ParseResult'
|
|
5
5
|
import { Effect, Hash } from 'effect'
|
|
6
6
|
|
|
7
|
-
import { objectToString } from '../../misc.js'
|
|
8
|
-
|
|
9
7
|
export * from '@effect/schema/Schema'
|
|
10
8
|
export * from './debug-diff.js'
|
|
9
|
+
export * from './msgpack.js'
|
|
11
10
|
|
|
12
11
|
// NOTE this is a temporary workaround until Effect schema has a better way to hash schemas
|
|
13
12
|
// https://github.com/Effect-TS/effect/issues/2719
|
|
@@ -23,29 +22,6 @@ export const hash = (schema: Schema.Schema<any>) => {
|
|
|
23
22
|
}
|
|
24
23
|
}
|
|
25
24
|
|
|
26
|
-
const errorStructSchema = Schema.Struct({
|
|
27
|
-
message: Schema.String,
|
|
28
|
-
stack: Schema.optional(Schema.String),
|
|
29
|
-
})
|
|
30
|
-
|
|
31
|
-
export class AnyError extends Schema.transform(errorStructSchema, Schema.Any, {
|
|
32
|
-
decode: (errorStruct) => {
|
|
33
|
-
const { message, stack } = errorStruct
|
|
34
|
-
const previousLimit = Error.stackTraceLimit
|
|
35
|
-
Error.stackTraceLimit = 0
|
|
36
|
-
// eslint-disable-next-line unicorn/error-message
|
|
37
|
-
const error = new Error('')
|
|
38
|
-
Error.stackTraceLimit = previousLimit
|
|
39
|
-
error.message = message
|
|
40
|
-
error.stack = stack
|
|
41
|
-
return error
|
|
42
|
-
},
|
|
43
|
-
encode: (anyError) => ({
|
|
44
|
-
message: objectToString(anyError).replace(/^Error: /, ''),
|
|
45
|
-
stack: anyError.stack,
|
|
46
|
-
}),
|
|
47
|
-
}) {}
|
|
48
|
-
|
|
49
25
|
export const encodeWithTransferables =
|
|
50
26
|
<A, I, R>(schema: Schema.Schema<A, I, R>, options?: ParseOptions | undefined) =>
|
|
51
27
|
(a: A, overrideOptions?: ParseOptions | undefined): Effect.Effect<[I, Transferable[]], ParseError, R> =>
|
|
@@ -58,3 +34,11 @@ export const encodeWithTransferables =
|
|
|
58
34
|
|
|
59
35
|
return [encoded, collector.unsafeRead() as Transferable[]]
|
|
60
36
|
})
|
|
37
|
+
|
|
38
|
+
export const swap = <A, I, R>(schema: Schema.Schema<A, I, R>): Schema.Schema<I, A, R> =>
|
|
39
|
+
Schema.transformOrFail(Schema.typeSchema(schema), Schema.encodedSchema(schema), {
|
|
40
|
+
decode: ParseResult.encode(schema),
|
|
41
|
+
encode: ParseResult.decode(schema),
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
export const Base64FromUint8Array: Schema.Schema<string, Uint8Array> = swap(Schema.Uint8ArrayFromBase64)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Schema } from '@effect/schema'
|
|
2
|
+
import * as msgpack from 'msgpackr'
|
|
3
|
+
|
|
4
|
+
export const MsgPack = <A, I>(schema: Schema.Schema<A, I>) =>
|
|
5
|
+
Schema.transform(Schema.Uint8ArrayFromSelf, schema, {
|
|
6
|
+
encode: (decoded) => msgpack.pack(decoded),
|
|
7
|
+
decode: (encodedBytes) => msgpack.unpack(encodedBytes),
|
|
8
|
+
})
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type { ParseResult } from '@effect/schema'
|
|
2
|
-
import type {
|
|
3
|
-
import { Effect, Stream } from 'effect'
|
|
2
|
+
import type { Scope } from 'effect'
|
|
3
|
+
import { Effect, Either, Queue, Stream } from 'effect'
|
|
4
4
|
|
|
5
5
|
import * as Schema from './Schema/index.js'
|
|
6
6
|
|
|
7
|
-
export type
|
|
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
10
|
}
|
|
@@ -17,7 +17,7 @@ export const broadcastChannel = <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({
|
|
|
17
17
|
channelName: string
|
|
18
18
|
listenSchema: Schema.Schema<MsgIn, MsgInEncoded>
|
|
19
19
|
sendSchema: Schema.Schema<MsgOut, MsgOutEncoded>
|
|
20
|
-
}): Effect.Effect<
|
|
20
|
+
}): Effect.Effect<WebChannel<MsgIn, MsgOut>, never, Scope.Scope> =>
|
|
21
21
|
Effect.gen(function* () {
|
|
22
22
|
const channel = new BroadcastChannel(channelName)
|
|
23
23
|
|
|
@@ -35,7 +35,7 @@ export const broadcastChannel = <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({
|
|
|
35
35
|
)
|
|
36
36
|
|
|
37
37
|
return { send, listen }
|
|
38
|
-
}).pipe(Effect.withSpan(`
|
|
38
|
+
}).pipe(Effect.withSpan(`WebChannel:broadcastChannel(${channelName})`))
|
|
39
39
|
|
|
40
40
|
export const windowChannel = <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({
|
|
41
41
|
window,
|
|
@@ -47,7 +47,7 @@ export const windowChannel = <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({
|
|
|
47
47
|
targetOrigin?: string
|
|
48
48
|
listenSchema: Schema.Schema<MsgIn, MsgInEncoded>
|
|
49
49
|
sendSchema: Schema.Schema<MsgOut, MsgOutEncoded>
|
|
50
|
-
}): Effect.Effect<
|
|
50
|
+
}): Effect.Effect<WebChannel<MsgIn, MsgOut>, never, Scope.Scope> =>
|
|
51
51
|
Effect.gen(function* () {
|
|
52
52
|
const send = (message: MsgOut) =>
|
|
53
53
|
Effect.gen(function* () {
|
|
@@ -60,7 +60,7 @@ export const windowChannel = <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({
|
|
|
60
60
|
)
|
|
61
61
|
|
|
62
62
|
return { send, listen }
|
|
63
|
-
}).pipe(Effect.withSpan(`
|
|
63
|
+
}).pipe(Effect.withSpan(`WebChannel:windowChannel`))
|
|
64
64
|
|
|
65
65
|
export const messagePortChannel = <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({
|
|
66
66
|
port,
|
|
@@ -70,7 +70,7 @@ export const messagePortChannel = <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({
|
|
|
70
70
|
port: MessagePort
|
|
71
71
|
listenSchema: Schema.Schema<MsgIn, MsgInEncoded>
|
|
72
72
|
sendSchema: Schema.Schema<MsgOut, MsgOutEncoded>
|
|
73
|
-
}): Effect.Effect<
|
|
73
|
+
}): Effect.Effect<WebChannel<MsgIn, MsgOut>, never, Scope.Scope> =>
|
|
74
74
|
Effect.gen(function* () {
|
|
75
75
|
const send = (message: MsgOut) =>
|
|
76
76
|
Effect.gen(function* () {
|
|
@@ -87,4 +87,22 @@ export const messagePortChannel = <MsgIn, MsgOut, MsgInEncoded, MsgOutEncoded>({
|
|
|
87
87
|
yield* Effect.addFinalizer(() => Effect.try(() => port.close()).pipe(Effect.ignoreLogged))
|
|
88
88
|
|
|
89
89
|
return { send, listen }
|
|
90
|
-
}).pipe(Effect.withSpan(`
|
|
90
|
+
}).pipe(Effect.withSpan(`WebChannel:messagePortChannel`))
|
|
91
|
+
|
|
92
|
+
export const queueChannelProxy = <MsgIn, MsgOut>(): Effect.Effect<
|
|
93
|
+
{ webChannel: WebChannel<MsgIn, MsgOut>; sendQueue: Queue.Queue<MsgOut>; listenQueue: Queue.Queue<MsgIn> },
|
|
94
|
+
never,
|
|
95
|
+
Scope.Scope
|
|
96
|
+
> =>
|
|
97
|
+
Effect.gen(function* () {
|
|
98
|
+
const sendQueue = yield* Queue.unbounded<MsgOut>().pipe(Effect.acquireRelease(Queue.shutdown))
|
|
99
|
+
const listenQueue = yield* Queue.unbounded<MsgIn>().pipe(Effect.acquireRelease(Queue.shutdown))
|
|
100
|
+
|
|
101
|
+
const send = (message: MsgOut) => Queue.offer(sendQueue, message)
|
|
102
|
+
|
|
103
|
+
const listen = Stream.fromQueue(listenQueue).pipe(Stream.map(Either.right))
|
|
104
|
+
|
|
105
|
+
const webChannel = { send, listen }
|
|
106
|
+
|
|
107
|
+
return { webChannel, sendQueue, listenQueue }
|
|
108
|
+
})
|
package/src/effect/index.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserChannel.d.ts","sourceRoot":"","sources":["../../src/effect/BrowserChannel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEvC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAA;AAE3C,MAAM,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,IAAI;IAC1C,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,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAkBU,CAAA;AAE7E,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,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAaT,CAAA;AAE1D,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,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAiBJ,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserChannel.js","sourceRoot":"","sources":["../../src/effect/BrowserChannel.ts"],"names":[],"mappings":"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"}
|