@livestore/devtools-web-common 0.0.0-snapshot-cd10782385ab8ba5d2bc26a16801628ac813d5f9 → 0.0.0-snapshot-ee8e0fc3b894cf3159269c9c8969a8fc4b398dca

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.
@@ -3,6 +3,10 @@ import type { Scope, Worker } from '@livestore/utils/effect';
3
3
  import { Effect, WebChannel } from '@livestore/utils/effect';
4
4
  import type { MeshNode } from '@livestore/webmesh';
5
5
  import * as WorkerSchema from '../worker/schema.js';
6
+ export * as WorkerSchema from '../worker/schema.js';
7
+ declare global {
8
+ var __debugWebMeshNode: any;
9
+ }
6
10
  export declare const makeWebDevtoolsConnectedMeshNode: ({ nodeName, target, worker, }: {
7
11
  nodeName: string;
8
12
  target: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web-channel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAY,MAAM,EAAU,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGlD,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAA;AAEnD,eAAO,MAAM,gCAAgC,GAAI,+BAI9C;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAC,oBAAoB,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE,0DAOG,CAAA;AAEJ,eAAO,MAAM,+BAA+B,GAAI,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,2BAInG;IACD,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAA;CACrF,wFAMG,CAAA;AAEJ,eAAO,MAAM,sBAAsB,GAAI,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,yDAM1F;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAA;IACpF,MAAM,EAAE,MAAM,CAAC,oBAAoB,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE,gBAAgB,EAAE,MAAM,CAAA;CACzB,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,KAAK,CAUjB,CAAA;AAExE,eAAO,MAAM,gBAAgB,GAAI,2BAI9B;IACD,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAC,oBAAoB,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE,sDA+B8C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/web-channel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAY,MAAM,EAAU,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGlD,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAA;AAEnD,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAA;AAEnD,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,kBAAkB,EAAE,GAAG,CAAA;CAC5B;AAED,eAAO,MAAM,gCAAgC,GAAI,+BAI9C;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAC,oBAAoB,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE,0DAOG,CAAA;AAEJ,eAAO,MAAM,+BAA+B,GAAI,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,2BAInG;IACD,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAA;CACrF,wFAMG,CAAA;AAEJ,eAAO,MAAM,sBAAsB,GAAI,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,yDAM1F;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,UAAU,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAA;IACpF,MAAM,EAAE,MAAM,CAAC,oBAAoB,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE,gBAAgB,EAAE,MAAM,CAAA;CACzB,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,KAAK,CASjB,CAAA;AAExE,eAAO,MAAM,gBAAgB,GAAI,2BAI9B;IACD,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAC,oBAAoB,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE,sDA+B8C,CAAA"}
@@ -3,6 +3,7 @@ import { LS_DEV } from '@livestore/utils';
3
3
  import { Deferred, Effect, Stream, WebChannel } from '@livestore/utils/effect';
4
4
  import { makeMeshNode, WebmeshSchema } from '@livestore/webmesh';
5
5
  import * as WorkerSchema from '../worker/schema.js';
6
+ export * as WorkerSchema from '../worker/schema.js';
6
7
  export const makeWebDevtoolsConnectedMeshNode = ({ nodeName, target, worker, }) => Effect.gen(function* () {
7
8
  const node = yield* makeMeshNode(nodeName);
8
9
  yield* connectViaWorker({ node, target, worker });
@@ -10,13 +11,12 @@ export const makeWebDevtoolsConnectedMeshNode = ({ nodeName, target, worker, })
10
11
  });
11
12
  export const makeChannelForConnectedMeshNode = ({ target, node, schema, }) => node.makeChannel({
12
13
  target,
13
- channelName: 'devtools:' + [node.nodeName, target].sort().join('_'),
14
+ channelName: 'devtools(' + [node.nodeName, target].sort().join('') + ')',
14
15
  schema,
15
16
  mode: 'messagechannel',
16
17
  });
17
18
  export const makeWebDevtoolsChannel = ({ nodeName, target, schema, worker, workerTargetName, }) => Effect.gen(function* () {
18
19
  const node = yield* makeWebDevtoolsConnectedMeshNode({ nodeName, target: workerTargetName, worker });
19
- // @ts-expect-error typing
20
20
  globalThis.__debugWebMeshNode = node;
21
21
  const channel = yield* makeChannelForConnectedMeshNode({ node, target, schema });
22
22
  return channel;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/web-channel/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/web-channel/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/worker/mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAU,KAAK,EAAE,MAAM,EAAc,MAAM,yBAAyB,CAAA;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGlD,OAAO,KAAK,KAAK,kBAAkB,MAAM,aAAa,CAAA;AAEtD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;;UAI3B,QAAQ;;AAFlB,qBAAa,YAAa,SAAQ,iBAG/B;IACD,MAAM,CAAC,KAAK,GAAI,cAAc;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,6CAQb;CACtC;AAED,eAAO,MAAM,gBAAgB,GAAI,gBAAgB,OAAO,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,2CAsBJ,CAAA"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/worker/mod.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAU,KAAK,EAAE,MAAM,EAAc,MAAM,yBAAyB,CAAA;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGlD,OAAO,KAAK,KAAK,kBAAkB,MAAM,aAAa,CAAA;AAEtD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;;UAI3B,QAAQ;;AAFlB,qBAAa,YAAa,SAAQ,iBAG/B;IACD,MAAM,CAAC,KAAK,GAAI,cAAc;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,6CAOb;CACtC;AAED,eAAO,MAAM,gBAAgB,GAAI,gBAAgB,OAAO,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,2CAsBJ,CAAA"}
@@ -5,7 +5,6 @@ export * as Schema from './schema.js';
5
5
  export class CacheService extends Context.Tag('@livestore/devtools-web-common:CacheService')() {
6
6
  static layer = ({ nodeName }) => Effect.gen(function* () {
7
7
  const node = yield* makeMeshNode(nodeName);
8
- // @ts-expect-error typing
9
8
  globalThis.__debugWebMeshNode = node;
10
9
  return { node };
11
10
  }).pipe(Layer.scoped(CacheService));
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/worker/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAIhE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,MAAM,OAAO,YAAa,SAAQ,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,EAGzF;IACD,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAwB,EAAE,EAAE,CACpD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QAE1C,0BAA0B;QAC1B,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAA;QAEpC,OAAO,EAAE,IAAI,EAAE,CAAA;IACjB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;;AAGvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAmD,EAAE,EAAE,CAClG,MAAM,CAAC,WAAW,CAA0B,CAAC,IAAI,EAAE,EAAE,CACnD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,YAAY,CAAA;IAEpC,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAA;IAEvG,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAA;IAEzG,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,wDAAwD,IAAI,CAAC,QAAQ,MAAM,IAAI,EAAE,CAAC,CAAA;IAC3G,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAEf,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;IAElE,wBAAwB;IACxB,sBAAsB;IAEtB,YAAY;AACd,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CACtB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,2DAA2D,IAAI,EAAE,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/worker/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAIhE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,MAAM,OAAO,YAAa,SAAQ,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,EAGzF;IACD,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAwB,EAAE,EAAE,CACpD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QAE1C,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAA;QAEpC,OAAO,EAAE,IAAI,EAAE,CAAA;IACjB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;;AAGvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAmD,EAAE,EAAE,CAClG,MAAM,CAAC,WAAW,CAA0B,CAAC,IAAI,EAAE,EAAE,CACnD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,YAAY,CAAA;IAEpC,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,CAAA;IAEvG,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAA;IAEzG,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,wDAAwD,IAAI,CAAC,QAAQ,MAAM,IAAI,EAAE,CAAC,CAAA;IAC3G,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAEf,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAA;IAElE,wBAAwB;IACxB,sBAAsB;IAEtB,YAAY;AACd,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CACtB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,2DAA2D,IAAI,EAAE,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livestore/devtools-web-common",
3
- "version": "0.0.0-snapshot-cd10782385ab8ba5d2bc26a16801628ac813d5f9",
3
+ "version": "0.0.0-snapshot-ee8e0fc3b894cf3159269c9c8969a8fc4b398dca",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {
@@ -11,16 +11,12 @@
11
11
  "./worker": {
12
12
  "types": "./dist/worker/mod.d.ts",
13
13
  "default": "./dist/worker/mod.js"
14
- },
15
- "./devtools-bridge": {
16
- "types": "./dist/devtools-bridge/index.d.ts",
17
- "default": "./dist/devtools-bridge/index.js"
18
14
  }
19
15
  },
20
16
  "dependencies": {
21
- "@livestore/common": "0.0.0-snapshot-cd10782385ab8ba5d2bc26a16801628ac813d5f9",
22
- "@livestore/utils": "0.0.0-snapshot-cd10782385ab8ba5d2bc26a16801628ac813d5f9",
23
- "@livestore/webmesh": "0.0.0-snapshot-cd10782385ab8ba5d2bc26a16801628ac813d5f9"
17
+ "@livestore/common": "0.0.0-snapshot-ee8e0fc3b894cf3159269c9c8969a8fc4b398dca",
18
+ "@livestore/utils": "0.0.0-snapshot-ee8e0fc3b894cf3159269c9c8969a8fc4b398dca",
19
+ "@livestore/webmesh": "0.0.0-snapshot-ee8e0fc3b894cf3159269c9c8969a8fc4b398dca"
24
20
  },
25
21
  "devDependencies": {},
26
22
  "publishConfig": {
@@ -7,6 +7,13 @@ import { makeMeshNode, WebmeshSchema } from '@livestore/webmesh'
7
7
 
8
8
  import * as WorkerSchema from '../worker/schema.js'
9
9
 
10
+ export * as WorkerSchema from '../worker/schema.js'
11
+
12
+ declare global {
13
+ // eslint-disable-next-line no-var
14
+ var __debugWebMeshNode: any
15
+ }
16
+
10
17
  export const makeWebDevtoolsConnectedMeshNode = ({
11
18
  nodeName,
12
19
  target,
@@ -35,7 +42,7 @@ export const makeChannelForConnectedMeshNode = <MsgListen, MsgSend, MsgListenEnc
35
42
  }) =>
36
43
  node.makeChannel({
37
44
  target,
38
- channelName: 'devtools:' + [node.nodeName, target].sort().join('_'),
45
+ channelName: 'devtools(' + [node.nodeName, target].sort().join('') + ')',
39
46
  schema,
40
47
  mode: 'messagechannel',
41
48
  })
@@ -56,7 +63,6 @@ export const makeWebDevtoolsChannel = <MsgListen, MsgSend, MsgListenEncoded, Msg
56
63
  Effect.gen(function* () {
57
64
  const node = yield* makeWebDevtoolsConnectedMeshNode({ nodeName, target: workerTargetName, worker })
58
65
 
59
- // @ts-expect-error typing
60
66
  globalThis.__debugWebMeshNode = node
61
67
 
62
68
  const channel = yield* makeChannelForConnectedMeshNode({ node, target, schema })
package/src/worker/mod.ts CHANGED
@@ -15,7 +15,6 @@ export class CacheService extends Context.Tag('@livestore/devtools-web-common:Ca
15
15
  Effect.gen(function* () {
16
16
  const node = yield* makeMeshNode(nodeName)
17
17
 
18
- // @ts-expect-error typing
19
18
  globalThis.__debugWebMeshNode = node
20
19
 
21
20
  return { node }
@@ -1,13 +0,0 @@
1
- import { Devtools } from '@livestore/common';
2
- import type { Scope, Worker } from '@livestore/utils/effect';
3
- import { Effect } from '@livestore/utils/effect';
4
- import type * as WorkerSchema from '../worker/schema.js';
5
- export declare const prepareWebDevtoolsBridge: ({ worker, workerTargetName, storeId, clientId, sessionId, }: {
6
- worker: Worker.SerializedWorkerPool<typeof WorkerSchema.Request.Type>;
7
- /** Usually `shared-worker` */
8
- workerTargetName: string;
9
- storeId: string;
10
- clientId: string;
11
- sessionId: string;
12
- }) => Effect.Effect<Devtools.PrepareDevtoolsBridge, never, Scope.Scope>;
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/devtools-bridge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGhD,OAAO,KAAK,KAAK,YAAY,MAAM,qBAAqB,CAAA;AAIxD,eAAO,MAAM,wBAAwB,GAAI,6DAMtC;IACD,MAAM,EAAE,MAAM,CAAC,oBAAoB,CAAC,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE,8BAA8B;IAC9B,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB,KAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CA8G7C,CAAA"}
@@ -1,99 +0,0 @@
1
- import { Devtools } from '@livestore/common';
2
- import { Effect } from '@livestore/utils/effect';
3
- import { makeChannelForConnectedMeshNode, makeWebDevtoolsConnectedMeshNode } from '../web-channel/index.js';
4
- // TODO use a unique bridgeId for each connection (similar to web bridge)
5
- // TODO refactor the bridge creation code to be re-used for both web and node and possibly expo
6
- export const prepareWebDevtoolsBridge = ({ worker, workerTargetName, storeId, clientId, sessionId, }) => Effect.gen(function* () {
7
- const meshNode = yield* makeWebDevtoolsConnectedMeshNode({
8
- nodeName: `devtools`,
9
- target: workerTargetName,
10
- worker,
11
- });
12
- // @ts-expect-error typing
13
- globalThis.__debugWebMeshNode = meshNode;
14
- const isLeader = true; // TODO properly implement this
15
- // TODO maybe we need a temporary channel to create a unique bridge channel e..g see appHostInfoDeferred below
16
- const webDevtoolsChannelStore = yield* makeChannelForConnectedMeshNode({
17
- node: meshNode,
18
- target: `client-session-${storeId}-${clientId}-${sessionId}`,
19
- schema: {
20
- listen: Devtools.ClientSession.MessageFromApp,
21
- send: Devtools.ClientSession.MessageToApp,
22
- },
23
- });
24
- const webDevtoolsChannelCoordinator = yield* makeChannelForConnectedMeshNode({
25
- node: meshNode,
26
- target: `leader-${storeId}-${clientId}`,
27
- schema: { listen: Devtools.Leader.MessageFromApp, send: Devtools.Leader.MessageToApp },
28
- });
29
- // const responsePubSub = yield* PubSub.unbounded<
30
- // Devtools.MessageFromApp | Devtools.MessageFromApp
31
- // >().pipe(Effect.acquireRelease(PubSub.shutdown))
32
- // // const appHostInfoDeferred = yield* Deferred.make<{ appHostId: string; isLeader: boolean }>()
33
- // yield* webDevtoolsChannelCoordinator.listen.pipe(
34
- // Stream.flatten(),
35
- // // Stream.tapLogWithLabel('fromCoordinator.listen'),
36
- // Stream.tap((msg) =>
37
- // Effect.gen(function* () {
38
- // yield* PubSub.publish(responsePubSub, msg)
39
- // }),
40
- // ),
41
- // Stream.runDrain,
42
- // Effect.withSpan('portForDevtoolsChannelCoordinator.listen'),
43
- // Effect.tapCauseLogPretty,
44
- // Effect.forkScoped,
45
- // )
46
- // yield* webDevtoolsChannelStore.listen.pipe(
47
- // Stream.flatten(),
48
- // // Stream.tapLogWithLabel('fromStore.listen'),
49
- // Stream.tap((msg) =>
50
- // Effect.gen(function* () {
51
- // yield* PubSub.publish(responsePubSub, msg)
52
- // }),
53
- // ),
54
- // Stream.runDrain,
55
- // Effect.withSpan('portForDevtoolsChannelStore.listen'),
56
- // Effect.tapCauseLogPretty,
57
- // Effect.forkScoped,
58
- // )
59
- // // yield* webDevtoolsChannelCoordinator.send(Devtools.DevtoolsReady.make({ liveStoreVersion }))
60
- // // const { appHostId, isLeader } = yield* Deferred.await(appHostInfoDeferred)
61
- // // TODO improve disconnect handling
62
- // yield* Deferred.await(webDevtoolsChannelCoordinator.closedDeferred).pipe(
63
- // Effect.tap(() =>
64
- // PubSub.publish(responsePubSub, Devtools.Disconnect.make({ liveStoreVersion, clientId, sessionId })),
65
- // ),
66
- // Effect.tapCauseLogPretty,
67
- // Effect.forkScoped,
68
- // )
69
- // // TODO improve disconnect handling
70
- // yield* Deferred.await(webDevtoolsChannelStore.closedDeferred).pipe(
71
- // Effect.tap(() =>
72
- // PubSub.publish(responsePubSub, Devtools.Disconnect.make({ liveStoreVersion, clientId, sessionId })),
73
- // ),
74
- // Effect.tapCauseLogPretty,
75
- // Effect.forkScoped,
76
- // )
77
- // const sendToAppHost: Devtools.PrepareDevtoolsBridge['sendToAppHost'] = (msg) =>
78
- // Effect.gen(function* () {
79
- // // NOTE it's possible that a message is for both the coordinator and the store (e.g. Disconnect)
80
- // if (Schema.is(Devtools.MessageToApp)(msg)) {
81
- // yield* webDevtoolsChannelCoordinator.send(msg)
82
- // }
83
- // if (Schema.is(Devtools.MessageToApp)(msg)) {
84
- // yield* webDevtoolsChannelStore.send(msg)
85
- // }
86
- // }).pipe(Effect.withSpan('sendToAppHost'), Effect.orDie)
87
- const copyToClipboard = (text) => Effect.sync(() => {
88
- navigator.clipboard.writeText(text);
89
- });
90
- return {
91
- webchannels: {
92
- leader: webDevtoolsChannelCoordinator,
93
- clientSession: webDevtoolsChannelStore,
94
- },
95
- clientInfo: { clientId, sessionId, isLeader },
96
- copyToClipboard,
97
- };
98
- }).pipe(Effect.orDie);
99
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/devtools-bridge/index.ts"],"names":[],"mappings":"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"}
@@ -1,133 +0,0 @@
1
- import { Devtools } from '@livestore/common'
2
- import type { Scope, Worker } from '@livestore/utils/effect'
3
- import { Effect } from '@livestore/utils/effect'
4
-
5
- import { makeChannelForConnectedMeshNode, makeWebDevtoolsConnectedMeshNode } from '../web-channel/index.js'
6
- import type * as WorkerSchema from '../worker/schema.js'
7
-
8
- // TODO use a unique bridgeId for each connection (similar to web bridge)
9
- // TODO refactor the bridge creation code to be re-used for both web and node and possibly expo
10
- export const prepareWebDevtoolsBridge = ({
11
- worker,
12
- workerTargetName,
13
- storeId,
14
- clientId,
15
- sessionId,
16
- }: {
17
- worker: Worker.SerializedWorkerPool<typeof WorkerSchema.Request.Type>
18
- /** Usually `shared-worker` */
19
- workerTargetName: string
20
- storeId: string
21
- clientId: string
22
- sessionId: string
23
- }): Effect.Effect<Devtools.PrepareDevtoolsBridge, never, Scope.Scope> =>
24
- Effect.gen(function* () {
25
- const meshNode = yield* makeWebDevtoolsConnectedMeshNode({
26
- nodeName: `devtools`,
27
- target: workerTargetName,
28
- worker,
29
- })
30
-
31
- // @ts-expect-error typing
32
- globalThis.__debugWebMeshNode = meshNode
33
-
34
- const isLeader = true // TODO properly implement this
35
-
36
- // TODO maybe we need a temporary channel to create a unique bridge channel e..g see appHostInfoDeferred below
37
- const webDevtoolsChannelStore = yield* makeChannelForConnectedMeshNode({
38
- node: meshNode,
39
- target: `client-session-${storeId}-${clientId}-${sessionId}`,
40
- schema: {
41
- listen: Devtools.ClientSession.MessageFromApp,
42
- send: Devtools.ClientSession.MessageToApp,
43
- },
44
- })
45
-
46
- const webDevtoolsChannelCoordinator = yield* makeChannelForConnectedMeshNode({
47
- node: meshNode,
48
- target: `leader-${storeId}-${clientId}`,
49
- schema: { listen: Devtools.Leader.MessageFromApp, send: Devtools.Leader.MessageToApp },
50
- })
51
-
52
- // const responsePubSub = yield* PubSub.unbounded<
53
- // Devtools.MessageFromApp | Devtools.MessageFromApp
54
- // >().pipe(Effect.acquireRelease(PubSub.shutdown))
55
-
56
- // // const appHostInfoDeferred = yield* Deferred.make<{ appHostId: string; isLeader: boolean }>()
57
-
58
- // yield* webDevtoolsChannelCoordinator.listen.pipe(
59
- // Stream.flatten(),
60
- // // Stream.tapLogWithLabel('fromCoordinator.listen'),
61
- // Stream.tap((msg) =>
62
- // Effect.gen(function* () {
63
- // yield* PubSub.publish(responsePubSub, msg)
64
- // }),
65
- // ),
66
- // Stream.runDrain,
67
- // Effect.withSpan('portForDevtoolsChannelCoordinator.listen'),
68
- // Effect.tapCauseLogPretty,
69
- // Effect.forkScoped,
70
- // )
71
-
72
- // yield* webDevtoolsChannelStore.listen.pipe(
73
- // Stream.flatten(),
74
- // // Stream.tapLogWithLabel('fromStore.listen'),
75
- // Stream.tap((msg) =>
76
- // Effect.gen(function* () {
77
- // yield* PubSub.publish(responsePubSub, msg)
78
- // }),
79
- // ),
80
- // Stream.runDrain,
81
- // Effect.withSpan('portForDevtoolsChannelStore.listen'),
82
- // Effect.tapCauseLogPretty,
83
- // Effect.forkScoped,
84
- // )
85
-
86
- // // yield* webDevtoolsChannelCoordinator.send(Devtools.DevtoolsReady.make({ liveStoreVersion }))
87
-
88
- // // const { appHostId, isLeader } = yield* Deferred.await(appHostInfoDeferred)
89
-
90
- // // TODO improve disconnect handling
91
- // yield* Deferred.await(webDevtoolsChannelCoordinator.closedDeferred).pipe(
92
- // Effect.tap(() =>
93
- // PubSub.publish(responsePubSub, Devtools.Disconnect.make({ liveStoreVersion, clientId, sessionId })),
94
- // ),
95
- // Effect.tapCauseLogPretty,
96
- // Effect.forkScoped,
97
- // )
98
-
99
- // // TODO improve disconnect handling
100
- // yield* Deferred.await(webDevtoolsChannelStore.closedDeferred).pipe(
101
- // Effect.tap(() =>
102
- // PubSub.publish(responsePubSub, Devtools.Disconnect.make({ liveStoreVersion, clientId, sessionId })),
103
- // ),
104
- // Effect.tapCauseLogPretty,
105
- // Effect.forkScoped,
106
- // )
107
-
108
- // const sendToAppHost: Devtools.PrepareDevtoolsBridge['sendToAppHost'] = (msg) =>
109
- // Effect.gen(function* () {
110
- // // NOTE it's possible that a message is for both the coordinator and the store (e.g. Disconnect)
111
- // if (Schema.is(Devtools.MessageToApp)(msg)) {
112
- // yield* webDevtoolsChannelCoordinator.send(msg)
113
- // }
114
-
115
- // if (Schema.is(Devtools.MessageToApp)(msg)) {
116
- // yield* webDevtoolsChannelStore.send(msg)
117
- // }
118
- // }).pipe(Effect.withSpan('sendToAppHost'), Effect.orDie)
119
-
120
- const copyToClipboard = (text: string) =>
121
- Effect.sync(() => {
122
- navigator.clipboard.writeText(text)
123
- })
124
-
125
- return {
126
- webchannels: {
127
- leader: webDevtoolsChannelCoordinator,
128
- clientSession: webDevtoolsChannelStore,
129
- },
130
- clientInfo: { clientId, sessionId, isLeader },
131
- copyToClipboard,
132
- } satisfies Devtools.PrepareDevtoolsBridge
133
- }).pipe(Effect.orDie)