@livestore/devtools-web-common 0.3.0-dev.11 → 0.3.0-dev.12

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/devtools-bridge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAoB,MAAM,mBAAmB,CAAA;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAY,MAAM,EAA0B,MAAM,yBAAyB,CAAA;AAGlF,OAAO,KAAK,KAAK,YAAY,MAAM,qBAAqB,CAAA;AAIxD,eAAO,MAAM,wBAAwB,gEAMlC;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,CA4G7C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/devtools-bridge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAoB,MAAM,mBAAmB,CAAA;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAY,MAAM,EAA0B,MAAM,yBAAyB,CAAA;AAGlF,OAAO,KAAK,KAAK,YAAY,MAAM,qBAAqB,CAAA;AAIxD,eAAO,MAAM,wBAAwB,gEAMlC;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,5 +1,5 @@
1
- import { Devtools, liveStoreVersion } from '@livestore/common';
2
- import { Deferred, Effect, PubSub, Schema, Stream } from '@livestore/utils/effect';
1
+ import { Devtools } from '@livestore/common';
2
+ import { Effect } from '@livestore/utils/effect';
3
3
  import { makeChannelForConnectedMeshNode, makeWebDevtoolsConnectedMeshNode } from '../web-channel/index.js';
4
4
  // TODO use a unique bridgeId for each connection (similar to web bridge)
5
5
  // TODO refactor the bridge creation code to be re-used for both web and node and possibly expo
@@ -11,56 +11,89 @@ export const prepareWebDevtoolsBridge = ({ worker, workerTargetName, storeId, cl
11
11
  });
12
12
  // @ts-expect-error typing
13
13
  globalThis.__debugWebMeshNode = meshNode;
14
- // const appHostId = `${storeId}-${sessionId}`
15
- const isLeader = true; // For now we only support a single node instance, which always is the leader
14
+ const isLeader = true; // TODO properly implement this
16
15
  // TODO maybe we need a temporary channel to create a unique bridge channel e..g see appHostInfoDeferred below
17
16
  const webDevtoolsChannelStore = yield* makeChannelForConnectedMeshNode({
18
17
  node: meshNode,
19
18
  target: `client-session-${storeId}-${clientId}-${sessionId}`,
20
- schema: { listen: Devtools.MessageFromAppClientSession, send: Devtools.MessageToAppClientSession },
19
+ schema: {
20
+ listen: Devtools.ClientSession.MessageFromApp,
21
+ send: Devtools.ClientSession.MessageToApp,
22
+ },
21
23
  });
22
24
  const webDevtoolsChannelCoordinator = yield* makeChannelForConnectedMeshNode({
23
25
  node: meshNode,
24
26
  target: `leader-${storeId}-${clientId}`,
25
- schema: { listen: Devtools.MessageFromAppLeader, send: Devtools.MessageToAppLeader },
27
+ schema: { listen: Devtools.Leader.MessageFromApp, send: Devtools.Leader.MessageToApp },
26
28
  });
27
- const responsePubSub = yield* PubSub.unbounded().pipe(Effect.acquireRelease(PubSub.shutdown));
28
- // const appHostInfoDeferred = yield* Deferred.make<{ appHostId: string; isLeader: boolean }>()
29
- yield* webDevtoolsChannelCoordinator.listen.pipe(Stream.flatten(),
30
- // Stream.tapLogWithLabel('fromCoordinator.listen'),
31
- Stream.tap((msg) => Effect.gen(function* () {
32
- yield* PubSub.publish(responsePubSub, msg);
33
- })), Stream.runDrain, Effect.withSpan('portForDevtoolsChannelCoordinator.listen'), Effect.tapCauseLogPretty, Effect.forkScoped);
34
- yield* webDevtoolsChannelStore.listen.pipe(Stream.flatten(),
35
- // Stream.tapLogWithLabel('fromStore.listen'),
36
- Stream.tap((msg) => Effect.gen(function* () {
37
- yield* PubSub.publish(responsePubSub, msg);
38
- })), Stream.runDrain, Effect.withSpan('portForDevtoolsChannelStore.listen'), Effect.tapCauseLogPretty, Effect.forkScoped);
39
- // yield* webDevtoolsChannelCoordinator.send(Devtools.DevtoolsReady.make({ liveStoreVersion }))
40
- // const { appHostId, isLeader } = yield* Deferred.await(appHostInfoDeferred)
41
- // TODO improve disconnect handling
42
- yield* Deferred.await(webDevtoolsChannelCoordinator.closedDeferred).pipe(Effect.tap(() => PubSub.publish(responsePubSub, Devtools.Disconnect.make({ liveStoreVersion, clientId, sessionId }))), Effect.tapCauseLogPretty, Effect.forkScoped);
43
- // TODO improve disconnect handling
44
- yield* Deferred.await(webDevtoolsChannelStore.closedDeferred).pipe(Effect.tap(() => PubSub.publish(responsePubSub, Devtools.Disconnect.make({ liveStoreVersion, clientId, sessionId }))), Effect.tapCauseLogPretty, Effect.forkScoped);
45
- const sendToAppHost = (msg) => Effect.gen(function* () {
46
- // NOTE it's possible that a message is for both the coordinator and the store (e.g. Disconnect)
47
- if (Schema.is(Devtools.MessageToAppLeader)(msg)) {
48
- yield* webDevtoolsChannelCoordinator.send(msg);
49
- }
50
- if (Schema.is(Devtools.MessageToAppClientSession)(msg)) {
51
- yield* webDevtoolsChannelStore.send(msg);
52
- }
53
- }).pipe(Effect.withSpan('sendToAppHost'), Effect.orDie);
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)
54
87
  const copyToClipboard = (text) => Effect.sync(() => {
55
88
  navigator.clipboard.writeText(text);
56
89
  });
57
90
  return {
58
- responsePubSub,
59
- sendToAppHost,
60
- clientId,
61
- sessionId,
91
+ webchannels: {
92
+ leader: webDevtoolsChannelCoordinator,
93
+ clientSession: webDevtoolsChannelStore,
94
+ },
95
+ clientInfo: { clientId, sessionId, isLeader },
62
96
  copyToClipboard,
63
- isLeader,
64
97
  };
65
98
  }).pipe(Effect.orDie);
66
99
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/devtools-bridge/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAElF,OAAO,EAAE,+BAA+B,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAA;AAG3G,yEAAyE;AACzE,+FAA+F;AAC/F,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EACvC,MAAM,EACN,gBAAgB,EAChB,OAAO,EACP,QAAQ,EACR,SAAS,GAQV,EAAqE,EAAE,CACtE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,gCAAgC,CAAC;QACvD,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,gBAAgB;QACxB,MAAM;KACP,CAAC,CAAA;IAEF,0BAA0B;IAC1B,UAAU,CAAC,kBAAkB,GAAG,QAAQ,CAAA;IAExC,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAA,CAAC,6EAA6E;IAEnG,8GAA8G;IAC9G,MAAM,uBAAuB,GAAG,KAAK,CAAC,CAAC,+BAA+B,CAAC;QACrE,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,kBAAkB,OAAO,IAAI,QAAQ,IAAI,SAAS,EAAE;QAC5D,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,2BAA2B,EAAE,IAAI,EAAE,QAAQ,CAAC,yBAAyB,EAAE;KACnG,CAAC,CAAA;IAEF,MAAM,6BAA6B,GAAG,KAAK,CAAC,CAAC,+BAA+B,CAAC;QAC3E,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,UAAU,OAAO,IAAI,QAAQ,EAAE;QACvC,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,oBAAoB,EAAE,IAAI,EAAE,QAAQ,CAAC,kBAAkB,EAAE;KACrF,CAAC,CAAA;IAEF,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,EAE3C,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEhD,+FAA+F;IAE/F,KAAK,CAAC,CAAC,6BAA6B,CAAC,MAAM,CAAC,IAAI,CAC9C,MAAM,CAAC,OAAO,EAAE;IAChB,oDAAoD;IACpD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;IAC5C,CAAC,CAAC,CACH,EACD,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,QAAQ,CAAC,0CAA0C,CAAC,EAC3D,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,UAAU,CAClB,CAAA;IAED,KAAK,CAAC,CAAC,uBAAuB,CAAC,MAAM,CAAC,IAAI,CACxC,MAAM,CAAC,OAAO,EAAE;IAChB,8CAA8C;IAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,CAAA;IAC5C,CAAC,CAAC,CACH,EACD,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,QAAQ,CAAC,oCAAoC,CAAC,EACrD,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,UAAU,CAClB,CAAA;IAED,+FAA+F;IAE/F,6EAA6E;IAE7E,mCAAmC;IACnC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,6BAA6B,CAAC,cAAc,CAAC,CAAC,IAAI,CACtE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CACd,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CACpG,EACD,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,UAAU,CAClB,CAAA;IAED,mCAAmC;IACnC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,uBAAuB,CAAC,cAAc,CAAC,CAAC,IAAI,CAChE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CACd,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,CACpG,EACD,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,UAAU,CAClB,CAAA;IAED,MAAM,aAAa,GAAoD,CAAC,GAAG,EAAE,EAAE,CAC7E,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,gGAAgG;QAChG,IAAI,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,CAAC,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAChD,CAAC;QAED,IAAI,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,KAAK,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAEzD,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,EAAE,CACvC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEJ,OAAO;QACL,cAAc;QACd,aAAa;QACb,QAAQ;QACR,SAAS;QACT,eAAe;QACf,QAAQ;KACgC,CAAA;AAC5C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/devtools-bridge/index.ts"],"names":[],"mappings":"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"}
@@ -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,kCAI1C;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,6BAIjG;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,2DAMxF;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,CAOjB,CAAA;AAExE,eAAO,MAAM,gBAAgB,8BAI1B;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,sDA6B8C,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,eAAO,MAAM,gCAAgC,kCAI1C;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,6BAIjG;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,2DAMxF;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,8BAI1B;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,sDA6B8C,CAAA"}
@@ -16,6 +16,8 @@ export const makeChannelForConnectedMeshNode = ({ target, node, schema, }) => no
16
16
  });
17
17
  export const makeWebDevtoolsChannel = ({ nodeName, target, schema, worker, workerTargetName, }) => Effect.gen(function* () {
18
18
  const node = yield* makeWebDevtoolsConnectedMeshNode({ nodeName, target: workerTargetName, worker });
19
+ // @ts-expect-error typing
20
+ globalThis.__debugWebMeshNode = node;
19
21
  const channel = yield* makeChannelForConnectedMeshNode({ node, target, schema });
20
22
  return channel;
21
23
  }).pipe(Effect.withSpan(`devtools-web-common:makeWebDevtoolsChannel`));
@@ -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":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE9E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAEhE,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAA;AAEnD,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,EAC/C,QAAQ,EACR,MAAM,EACN,MAAM,GAKP,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;IAE1C,KAAK,CAAC,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAEjD,OAAO,IAAI,CAAA;AACb,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAuD,EACpG,MAAM,EACN,IAAI,EACJ,MAAM,GAKP,EAAE,EAAE,CACH,IAAI,CAAC,WAAW,CAAC;IACf,MAAM;IACN,WAAW,EAAE,WAAW,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;IACnE,MAAM;IACN,IAAI,EAAE,gBAAgB;CACvB,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAuD,EAC3F,QAAQ,EACR,MAAM,EACN,MAAM,EACN,MAAM,EACN,gBAAgB,GAOjB,EAA0F,EAAE,CAC3F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,gCAAgC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAA;IAEpG,0BAA0B;IAC1B,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAA;IAEpC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,+BAA+B,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAEhF,OAAO,OAAO,CAAA;AAChB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,4CAA4C,CAAC,CAAC,CAAA;AAExE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,IAAI,EACJ,MAAM,EACN,MAAM,GAKP,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,EAAE,GAAG,IAAI,cAAc,EAAE,CAAA;IAE/B,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAkB,CAAA;IAE1D,KAAK,CAAC,CAAC,MAAM,CAAC,eAAe,CAC3B,2DAA2D,IAAI,CAAC,QAAQ,MAAM,MAAM,EAAE,CACvF,CAAA;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CACrG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,EACrD,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,UAAU,CAClB,CAAA;IAED,KAAK,CAAC,CAAC,WAAW,CAAA;IAElB,MAAM,sBAAsB,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC;QAClE,IAAI,EAAE,EAAE,CAAC,KAAK;QACd,MAAM,EAAE,aAAa,CAAC,MAAM;KAC7B,CAAC,CAAA;IAEF,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAA;IAEvG,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,yDAAyD,IAAI,CAAC,QAAQ,MAAM,MAAM,EAAE,CAAC,CAAA;IAC9G,CAAC;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livestore/devtools-web-common",
3
- "version": "0.3.0-dev.11",
3
+ "version": "0.3.0-dev.12",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {
@@ -18,9 +18,9 @@
18
18
  }
19
19
  },
20
20
  "dependencies": {
21
- "@livestore/common": "0.3.0-dev.11",
22
- "@livestore/utils": "0.3.0-dev.11",
23
- "@livestore/webmesh": "0.3.0-dev.11"
21
+ "@livestore/utils": "0.3.0-dev.12",
22
+ "@livestore/common": "0.3.0-dev.12",
23
+ "@livestore/webmesh": "0.3.0-dev.12"
24
24
  },
25
25
  "devDependencies": {},
26
26
  "publishConfig": {
@@ -31,89 +31,91 @@ export const prepareWebDevtoolsBridge = ({
31
31
  // @ts-expect-error typing
32
32
  globalThis.__debugWebMeshNode = meshNode
33
33
 
34
- // const appHostId = `${storeId}-${sessionId}`
35
- const isLeader = true // For now we only support a single node instance, which always is the leader
34
+ const isLeader = true // TODO properly implement this
36
35
 
37
36
  // TODO maybe we need a temporary channel to create a unique bridge channel e..g see appHostInfoDeferred below
38
37
  const webDevtoolsChannelStore = yield* makeChannelForConnectedMeshNode({
39
38
  node: meshNode,
40
39
  target: `client-session-${storeId}-${clientId}-${sessionId}`,
41
- schema: { listen: Devtools.MessageFromAppClientSession, send: Devtools.MessageToAppClientSession },
40
+ schema: {
41
+ listen: Devtools.ClientSession.MessageFromApp,
42
+ send: Devtools.ClientSession.MessageToApp,
43
+ },
42
44
  })
43
45
 
44
46
  const webDevtoolsChannelCoordinator = yield* makeChannelForConnectedMeshNode({
45
47
  node: meshNode,
46
48
  target: `leader-${storeId}-${clientId}`,
47
- schema: { listen: Devtools.MessageFromAppLeader, send: Devtools.MessageToAppLeader },
49
+ schema: { listen: Devtools.Leader.MessageFromApp, send: Devtools.Leader.MessageToApp },
48
50
  })
49
51
 
50
- const responsePubSub = yield* PubSub.unbounded<
51
- Devtools.MessageFromAppLeader | Devtools.MessageFromAppClientSession
52
- >().pipe(Effect.acquireRelease(PubSub.shutdown))
53
-
54
- // const appHostInfoDeferred = yield* Deferred.make<{ appHostId: string; isLeader: boolean }>()
55
-
56
- yield* webDevtoolsChannelCoordinator.listen.pipe(
57
- Stream.flatten(),
58
- // Stream.tapLogWithLabel('fromCoordinator.listen'),
59
- Stream.tap((msg) =>
60
- Effect.gen(function* () {
61
- yield* PubSub.publish(responsePubSub, msg)
62
- }),
63
- ),
64
- Stream.runDrain,
65
- Effect.withSpan('portForDevtoolsChannelCoordinator.listen'),
66
- Effect.tapCauseLogPretty,
67
- Effect.forkScoped,
68
- )
69
-
70
- yield* webDevtoolsChannelStore.listen.pipe(
71
- Stream.flatten(),
72
- // Stream.tapLogWithLabel('fromStore.listen'),
73
- Stream.tap((msg) =>
74
- Effect.gen(function* () {
75
- yield* PubSub.publish(responsePubSub, msg)
76
- }),
77
- ),
78
- Stream.runDrain,
79
- Effect.withSpan('portForDevtoolsChannelStore.listen'),
80
- Effect.tapCauseLogPretty,
81
- Effect.forkScoped,
82
- )
83
-
84
- // yield* webDevtoolsChannelCoordinator.send(Devtools.DevtoolsReady.make({ liveStoreVersion }))
85
-
86
- // const { appHostId, isLeader } = yield* Deferred.await(appHostInfoDeferred)
87
-
88
- // TODO improve disconnect handling
89
- yield* Deferred.await(webDevtoolsChannelCoordinator.closedDeferred).pipe(
90
- Effect.tap(() =>
91
- PubSub.publish(responsePubSub, Devtools.Disconnect.make({ liveStoreVersion, clientId, sessionId })),
92
- ),
93
- Effect.tapCauseLogPretty,
94
- Effect.forkScoped,
95
- )
96
-
97
- // TODO improve disconnect handling
98
- yield* Deferred.await(webDevtoolsChannelStore.closedDeferred).pipe(
99
- Effect.tap(() =>
100
- PubSub.publish(responsePubSub, Devtools.Disconnect.make({ liveStoreVersion, clientId, sessionId })),
101
- ),
102
- Effect.tapCauseLogPretty,
103
- Effect.forkScoped,
104
- )
105
-
106
- const sendToAppHost: Devtools.PrepareDevtoolsBridge['sendToAppHost'] = (msg) =>
107
- Effect.gen(function* () {
108
- // NOTE it's possible that a message is for both the coordinator and the store (e.g. Disconnect)
109
- if (Schema.is(Devtools.MessageToAppLeader)(msg)) {
110
- yield* webDevtoolsChannelCoordinator.send(msg)
111
- }
112
-
113
- if (Schema.is(Devtools.MessageToAppClientSession)(msg)) {
114
- yield* webDevtoolsChannelStore.send(msg)
115
- }
116
- }).pipe(Effect.withSpan('sendToAppHost'), Effect.orDie)
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)
117
119
 
118
120
  const copyToClipboard = (text: string) =>
119
121
  Effect.sync(() => {
@@ -121,11 +123,11 @@ export const prepareWebDevtoolsBridge = ({
121
123
  })
122
124
 
123
125
  return {
124
- responsePubSub,
125
- sendToAppHost,
126
- clientId,
127
- sessionId,
126
+ webchannels: {
127
+ leader: webDevtoolsChannelCoordinator,
128
+ clientSession: webDevtoolsChannelStore,
129
+ },
130
+ clientInfo: { clientId, sessionId, isLeader },
128
131
  copyToClipboard,
129
- isLeader,
130
132
  } satisfies Devtools.PrepareDevtoolsBridge
131
133
  }).pipe(Effect.orDie)
@@ -56,6 +56,9 @@ export const makeWebDevtoolsChannel = <MsgListen, MsgSend, MsgListenEncoded, Msg
56
56
  Effect.gen(function* () {
57
57
  const node = yield* makeWebDevtoolsConnectedMeshNode({ nodeName, target: workerTargetName, worker })
58
58
 
59
+ // @ts-expect-error typing
60
+ globalThis.__debugWebMeshNode = node
61
+
59
62
  const channel = yield* makeChannelForConnectedMeshNode({ node, target, schema })
60
63
 
61
64
  return channel