@powerhousedao/reactor-browser 6.2.0-dev.5 → 6.2.0-dev.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/{client-CYhc2W1V.d.ts → client-09xv0Dq6.d.ts} +1 -1
  2. package/dist/{client-CYhc2W1V.d.ts.map → client-09xv0Dq6.d.ts.map} +1 -1
  3. package/dist/{client-CvgFU1Dv.js → client-_Gh2Uf0E.js} +1 -1
  4. package/dist/{client-CvgFU1Dv.js.map → client-_Gh2Uf0E.js.map} +1 -1
  5. package/dist/client-u13cr-Vg.js +51 -0
  6. package/dist/client-u13cr-Vg.js.map +1 -0
  7. package/dist/{document-by-id-BrIy0iHX.js → document-by-id-dLYFX-xz.js} +3 -3
  8. package/dist/{document-by-id-BrIy0iHX.js.map → document-by-id-dLYFX-xz.js.map} +1 -1
  9. package/dist/{index-Bz4MqX_j.d.ts → index-D3bV5rcl.d.ts} +1 -2
  10. package/dist/index-D3bV5rcl.d.ts.map +1 -0
  11. package/dist/{index-ZltD7u5Z.d.ts → index-DS4W07Y8.d.ts} +2 -45
  12. package/dist/index-DS4W07Y8.d.ts.map +1 -0
  13. package/dist/index.d.ts +43 -21
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +137 -131
  16. package/dist/index.js.map +1 -1
  17. package/dist/inspector-proxy-CvQDDxmT.d.ts +255 -0
  18. package/dist/inspector-proxy-CvQDDxmT.d.ts.map +1 -0
  19. package/dist/{make-ph-event-functions-DwiD1zH9.js → make-ph-event-functions-BHoLPif5.js} +2 -2
  20. package/dist/{make-ph-event-functions-DwiD1zH9.js.map → make-ph-event-functions-BHoLPif5.js.map} +1 -1
  21. package/dist/{relational-4_LVwp8p.js → relational-Dj06-YkI.js} +14 -2
  22. package/dist/relational-Dj06-YkI.js.map +1 -0
  23. package/dist/{renown-Dzmo1gJD.js → renown-D-1c_Bvx.js} +35 -48
  24. package/dist/renown-D-1c_Bvx.js.map +1 -0
  25. package/dist/src/analytics/index.d.ts +2 -2
  26. package/dist/src/analytics/index.js +2 -2
  27. package/dist/src/document-model.d.ts +8 -0
  28. package/dist/src/document-model.d.ts.map +1 -0
  29. package/dist/src/document-model.js +14 -0
  30. package/dist/src/document-model.js.map +1 -0
  31. package/dist/src/graphql/client.d.ts +1 -1
  32. package/dist/src/graphql/client.js +1 -1
  33. package/dist/src/relational/index.d.ts +46 -2
  34. package/dist/src/relational/index.d.ts.map +1 -0
  35. package/dist/src/relational/index.js +1 -1
  36. package/dist/src/renown/index.d.ts +1 -1
  37. package/dist/src/renown/index.js +1 -1
  38. package/dist/src/rpc/index.d.ts +240 -0
  39. package/dist/src/rpc/index.d.ts.map +1 -0
  40. package/dist/src/rpc/index.js +1250 -0
  41. package/dist/src/rpc/index.js.map +1 -0
  42. package/dist/{types-BmR60pPN.d.ts → types-CPV0Cnsy.d.ts} +1 -1
  43. package/dist/{types-BmR60pPN.d.ts.map → types-CPV0Cnsy.d.ts.map} +1 -1
  44. package/package.json +37 -11
  45. package/dist/index-Bz4MqX_j.d.ts.map +0 -1
  46. package/dist/index-ZltD7u5Z.d.ts.map +0 -1
  47. package/dist/relational-4_LVwp8p.js.map +0 -1
  48. package/dist/renown-Dzmo1gJD.js.map +0 -1
@@ -0,0 +1,255 @@
1
+ //#region src/rpc/protocol.d.ts
2
+ type CorrelationId = string;
3
+ type ErrorInfo = {
4
+ name: string;
5
+ message: string;
6
+ stack?: string;
7
+ cause?: ErrorInfo;
8
+ };
9
+ type RpcRequest = {
10
+ k: "req";
11
+ id: CorrelationId;
12
+ method: string;
13
+ args: unknown[];
14
+ abortAt?: number;
15
+ };
16
+ type RpcResponse = {
17
+ k: "res";
18
+ id: CorrelationId;
19
+ value: unknown;
20
+ };
21
+ type RpcError = {
22
+ k: "err";
23
+ id: CorrelationId;
24
+ error: ErrorInfo;
25
+ };
26
+ /** Failed document subscribe; routed to the change-subscription registry. */
27
+ type RpcSubError = {
28
+ k: "sub-err";
29
+ id: CorrelationId;
30
+ error: ErrorInfo;
31
+ };
32
+ /** Failed live query; routed to the live-query registry. */
33
+ type RpcLiveError = {
34
+ k: "live-err";
35
+ id: CorrelationId;
36
+ error: ErrorInfo;
37
+ };
38
+ type RpcAbort = {
39
+ k: "abort";
40
+ targetId: CorrelationId;
41
+ };
42
+ type RpcSubscribe = {
43
+ k: "sub";
44
+ id: CorrelationId;
45
+ search: unknown;
46
+ view?: unknown;
47
+ };
48
+ type RpcEvent = {
49
+ k: "event";
50
+ id: CorrelationId;
51
+ change: unknown;
52
+ };
53
+ type RpcUnsub = {
54
+ k: "unsub";
55
+ id: CorrelationId;
56
+ };
57
+ type RpcNextPage = {
58
+ k: "page";
59
+ id: CorrelationId;
60
+ token: string;
61
+ };
62
+ declare const RPC_PROTOCOL_VERSION = 2;
63
+ type VersionFingerprint = {
64
+ appBuildId: string;
65
+ rpcProtocolVersion: number;
66
+ models: {
67
+ id: string;
68
+ version: number;
69
+ }[];
70
+ };
71
+ type RpcHello = {
72
+ k: "hello";
73
+ id: CorrelationId;
74
+ version: VersionFingerprint;
75
+ construct?: unknown;
76
+ packages?: string[];
77
+ };
78
+ type RpcRegisterPackages = {
79
+ k: "register-packages";
80
+ id: CorrelationId;
81
+ specs: string[];
82
+ };
83
+ type RpcUnregisterPackages = {
84
+ k: "unregister-packages";
85
+ id: CorrelationId;
86
+ names: string[];
87
+ };
88
+ type RpcReload = {
89
+ k: "reload";
90
+ reason: string;
91
+ workerGen?: string;
92
+ };
93
+ type RpcAdmin = {
94
+ k: "admin";
95
+ id: CorrelationId;
96
+ method: "info" | "restart" | "clearStorage" | "migrate";
97
+ };
98
+ type WorkerMigrationState = {
99
+ status: "idle" | "needed" | "migrating" | "failed";
100
+ legacyMajor?: number;
101
+ phase?: "clone" | "dump" | "restore";
102
+ error?: string;
103
+ };
104
+ type RpcMigration = {
105
+ k: "migration";
106
+ state: WorkerMigrationState;
107
+ };
108
+ type WorkerInspectorInfo = {
109
+ namespace: string;
110
+ ownerId: string;
111
+ bootedAtMs: number;
112
+ connectedClients: number;
113
+ appBuildId: string;
114
+ rpcProtocolVersion: number;
115
+ };
116
+ type ReactorIdentity = {
117
+ address: string;
118
+ chainId: number;
119
+ networkId: string;
120
+ };
121
+ type RpcIdentity = {
122
+ k: "identity";
123
+ user: ReactorIdentity | null;
124
+ };
125
+ type RpcBusEvent = {
126
+ k: "bus-event";
127
+ eventType: number;
128
+ event: unknown;
129
+ };
130
+ type OpKind = "sync-op" | "db-op" | "inspector-op";
131
+ type MethodCallMessage<K extends OpKind> = {
132
+ k: K;
133
+ id: CorrelationId;
134
+ method: string;
135
+ args: unknown[];
136
+ };
137
+ type RpcSyncOp = MethodCallMessage<"sync-op">;
138
+ type RpcDbOp = MethodCallMessage<"db-op">;
139
+ type RpcInspectorOp = MethodCallMessage<"inspector-op">;
140
+ type RpcLiveSubscribe = {
141
+ k: "sub-live";
142
+ id: CorrelationId;
143
+ sql: string;
144
+ params: unknown[];
145
+ };
146
+ type RpcLiveEvent = {
147
+ k: "event-live";
148
+ id: CorrelationId;
149
+ results: unknown;
150
+ };
151
+ type RpcLiveUnsub = {
152
+ k: "unsub-live";
153
+ id: CorrelationId;
154
+ };
155
+ type RpcPing = {
156
+ k: "ping";
157
+ id: CorrelationId;
158
+ };
159
+ type RpcPong = {
160
+ k: "pong";
161
+ id: CorrelationId;
162
+ ownerId: string;
163
+ bootedAtMs: number;
164
+ };
165
+ type ClientMessage = RpcRequest | RpcAbort | RpcSubscribe | RpcUnsub | RpcNextPage | RpcHello | RpcRegisterPackages | RpcUnregisterPackages | RpcIdentity | RpcAdmin | RpcSyncOp | RpcDbOp | RpcInspectorOp | RpcLiveSubscribe | RpcLiveUnsub | RpcPing;
166
+ type OwnerMessage = RpcResponse | RpcError | RpcSubError | RpcLiveError | RpcEvent | RpcReload | RpcBusEvent | RpcLiveEvent | RpcMigration | RpcPong;
167
+ type RpcMessage = ClientMessage | OwnerMessage;
168
+ //#endregion
169
+ //#region src/rpc/rpc-correlator.d.ts
170
+ type RpcRequestOptions = {
171
+ /** Reject if no response arrives within this many ms; omit for no timeout. */timeoutMs?: number; /** Maps a successful response value (e.g. paged-result rehydration). */
172
+ transform?: (value: unknown) => unknown; /** Runs after the post; may return a cleanup invoked when the request settles. */
173
+ setup?: (id: CorrelationId) => (() => void) | void;
174
+ };
175
+ /** Anything that can send a client message (the router). */
176
+ type RpcPoster = {
177
+ post(message: ClientMessage): void;
178
+ };
179
+ /**
180
+ * Request/response correlation shared by every RPC proxy: one pending map,
181
+ * res/err settlement, and per-request timeout/transform/cleanup.
182
+ */
183
+ declare class RpcCorrelator {
184
+ private readonly poster;
185
+ private readonly prefix;
186
+ private counter;
187
+ private readonly pending;
188
+ constructor(poster: RpcPoster, prefix?: string);
189
+ nextId(): CorrelationId;
190
+ /** Settle the pending request a res/err refers to; a missing id is a no-op. */
191
+ handleMessage(message: OwnerMessage): void;
192
+ /** Send a request, resolving on its res/err. `build` stamps the generated id. */
193
+ request(build: (id: CorrelationId) => ClientMessage, options?: RpcRequestOptions): Promise<unknown>;
194
+ }
195
+ //#endregion
196
+ //#region src/rpc/transport.d.ts
197
+ interface IRpcTransport {
198
+ post(message: RpcMessage): void;
199
+ onMessage(listener: (message: RpcMessage) => void): () => void;
200
+ close(): void;
201
+ }
202
+ declare function createPortTransport(port: MessagePort): IRpcTransport;
203
+ //#endregion
204
+ //#region src/rpc/message-router.d.ts
205
+ type OwnerKind = OwnerMessage["k"];
206
+ /**
207
+ * Owns the single transport.onMessage and dispatches each message to the one
208
+ * consumer that owns its kind. Composes the shared RpcCorrelator (res/err) and
209
+ * exposes request/nextId; attach/detach swap the transport for reconnect.
210
+ */
211
+ declare class MessageRouter {
212
+ private readonly handlers;
213
+ private readonly correlator;
214
+ private transport;
215
+ private detachTransport;
216
+ constructor(prefix?: string);
217
+ attach(transport: IRpcTransport): void;
218
+ detach(): void;
219
+ post(message: ClientMessage): void;
220
+ /** Register the sole owner of a message kind; throws on a duplicate. */
221
+ on<K extends OwnerKind>(kind: K, handler: (message: Extract<OwnerMessage, {
222
+ k: K;
223
+ }>) => void): () => void;
224
+ request(build: (id: CorrelationId) => ClientMessage, options?: RpcRequestOptions): Promise<unknown>;
225
+ nextId(): CorrelationId;
226
+ }
227
+ //#endregion
228
+ //#region src/rpc/admin-client.d.ts
229
+ interface IWorkerAdminClient {
230
+ info(): Promise<WorkerInspectorInfo>;
231
+ restart(): Promise<void>;
232
+ clearStorage(): Promise<void>;
233
+ migrate(): Promise<void>;
234
+ getMigrationState(): WorkerMigrationState;
235
+ subscribeMigration(callback: () => void): () => void;
236
+ }
237
+ /** Worker lifecycle channel (info/restart/clearStorage/migrate) over the shared router. */
238
+ declare function createWorkerAdminClient(router: MessageRouter): IWorkerAdminClient;
239
+ //#endregion
240
+ //#region src/rpc/inspector-proxy.d.ts
241
+ interface IInspectorProxy {
242
+ getQueueState(): Promise<unknown>;
243
+ pauseQueue(): Promise<void>;
244
+ resumeQueue(): Promise<void>;
245
+ getProcessors(): Promise<unknown>;
246
+ retryProcessor(processorId: string): Promise<void>;
247
+ validateDocument(documentId: string, branch?: string): Promise<unknown>;
248
+ rebuildKeyframes(documentId: string, branch?: string): Promise<unknown>;
249
+ rebuildSnapshots(documentId: string, branch?: string): Promise<unknown>;
250
+ queryReactorDb(sql: string, params?: unknown[]): Promise<unknown>;
251
+ }
252
+ declare function createInspectorProxy(router: MessageRouter): IInspectorProxy;
253
+ //#endregion
254
+ export { RpcMessage as C, WorkerMigrationState as E, RpcLiveUnsub as S, WorkerInspectorInfo as T, RPC_PROTOCOL_VERSION as _, MessageRouter as a, RpcLiveEvent as b, RpcCorrelator as c, ClientMessage as d, CorrelationId as f, OwnerMessage as g, OpKind as h, createWorkerAdminClient as i, RpcPoster as l, MethodCallMessage as m, createInspectorProxy as n, IRpcTransport as o, ErrorInfo as p, IWorkerAdminClient as r, createPortTransport as s, IInspectorProxy as t, RpcRequestOptions as u, ReactorIdentity as v, VersionFingerprint as w, RpcLiveSubscribe as x, RpcDbOp as y };
255
+ //# sourceMappingURL=inspector-proxy-CvQDDxmT.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspector-proxy-CvQDDxmT.d.ts","names":[],"sources":["../src/rpc/protocol.ts","../src/rpc/rpc-correlator.ts","../src/rpc/transport.ts","../src/rpc/message-router.ts","../src/rpc/admin-client.ts","../src/rpc/inspector-proxy.ts"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { useSyncExternalStore } from "react";
2
1
  import { capitalCase } from "change-case";
2
+ import { useSyncExternalStore } from "react";
3
3
  //#region src/hooks/make-ph-event-functions.ts
4
4
  const isServer = typeof window === "undefined";
5
5
  function makePHEventFunctions(key) {
@@ -50,4 +50,4 @@ function makePHEventFunctions(key) {
50
50
  //#endregion
51
51
  export { makePHEventFunctions as t };
52
52
 
53
- //# sourceMappingURL=make-ph-event-functions-DwiD1zH9.js.map
53
+ //# sourceMappingURL=make-ph-event-functions-BHoLPif5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"make-ph-event-functions-DwiD1zH9.js","names":[],"sources":["../src/hooks/make-ph-event-functions.ts"],"sourcesContent":["import type {\n PHGlobal,\n PHGlobalKey,\n SetEvent,\n} from \"@powerhousedao/reactor-browser\";\nimport { capitalCase } from \"change-case\";\nimport { useSyncExternalStore } from \"react\";\n\n// guard condition for server side rendering\nconst isServer = typeof window === \"undefined\";\n\nexport function makePHEventFunctions<TKey extends PHGlobalKey>(key: TKey) {\n const setEventName = `ph:set${capitalCase(key)}` as const;\n const updateEventName = `ph:${key}Updated` as const;\n\n function setValue(value: PHGlobal[TKey] | undefined) {\n if (isServer) {\n return;\n }\n const event = new CustomEvent(setEventName, {\n detail: { [key]: value },\n });\n window.dispatchEvent(event);\n }\n\n function dispatchUpdatedEvent() {\n if (isServer) {\n return;\n }\n const event = new CustomEvent(updateEventName);\n window.dispatchEvent(event);\n }\n\n function handleSetValueEvent(event: SetEvent<TKey>) {\n if (isServer) {\n return;\n }\n const value = event.detail[key];\n if (!window.ph) {\n window.ph = {};\n }\n window.ph[key] = value;\n dispatchUpdatedEvent();\n }\n\n function addEventHandler() {\n if (isServer) {\n return;\n }\n window.addEventListener(setEventName, handleSetValueEvent as EventListener);\n }\n\n function subscribeToValue(onStoreChange: () => void) {\n if (isServer) return () => {};\n window.addEventListener(updateEventName, onStoreChange);\n return () => {\n window.removeEventListener(updateEventName, onStoreChange);\n };\n }\n\n function getSnapshot() {\n if (isServer) {\n return undefined;\n }\n // The store is legitimately read before the first `setValue` (subscribers\n // mount before init runs), so an uninitialized store is expected, not an\n // error — return `undefined` quietly rather than warning on every render.\n return window.ph?.[key];\n }\n\n function getServerSnapshot() {\n return undefined;\n }\n\n function useValue() {\n return useSyncExternalStore(\n subscribeToValue,\n getSnapshot,\n getServerSnapshot,\n );\n }\n\n return {\n useValue,\n setValue,\n addEventHandler,\n };\n}\n"],"mappings":";;;AASA,MAAM,WAAW,OAAO,WAAW;AAEnC,SAAgB,qBAA+C,KAAW;CACxE,MAAM,eAAe,SAAS,YAAY,IAAI;CAC9C,MAAM,kBAAkB,MAAM,IAAI;CAElC,SAAS,SAAS,OAAmC;AACnD,MAAI,SACF;EAEF,MAAM,QAAQ,IAAI,YAAY,cAAc,EAC1C,QAAQ,GAAG,MAAM,OAAO,EACzB,CAAC;AACF,SAAO,cAAc,MAAM;;CAG7B,SAAS,uBAAuB;AAC9B,MAAI,SACF;EAEF,MAAM,QAAQ,IAAI,YAAY,gBAAgB;AAC9C,SAAO,cAAc,MAAM;;CAG7B,SAAS,oBAAoB,OAAuB;AAClD,MAAI,SACF;EAEF,MAAM,QAAQ,MAAM,OAAO;AAC3B,MAAI,CAAC,OAAO,GACV,QAAO,KAAK,EAAE;AAEhB,SAAO,GAAG,OAAO;AACjB,wBAAsB;;CAGxB,SAAS,kBAAkB;AACzB,MAAI,SACF;AAEF,SAAO,iBAAiB,cAAc,oBAAqC;;CAG7E,SAAS,iBAAiB,eAA2B;AACnD,MAAI,SAAU,cAAa;AAC3B,SAAO,iBAAiB,iBAAiB,cAAc;AACvD,eAAa;AACX,UAAO,oBAAoB,iBAAiB,cAAc;;;CAI9D,SAAS,cAAc;AACrB,MAAI,SACF;AAKF,SAAO,OAAO,KAAK;;CAGrB,SAAS,oBAAoB;CAI7B,SAAS,WAAW;AAClB,SAAO,qBACL,kBACA,aACA,kBACD;;AAGH,QAAO;EACL;EACA;EACA;EACD"}
1
+ {"version":3,"file":"make-ph-event-functions-BHoLPif5.js","names":[],"sources":["../src/hooks/make-ph-event-functions.ts"],"sourcesContent":["import type {\n PHGlobal,\n PHGlobalKey,\n SetEvent,\n} from \"@powerhousedao/reactor-browser\";\nimport { capitalCase } from \"change-case\";\nimport { useSyncExternalStore } from \"react\";\n\n// guard condition for server side rendering\nconst isServer = typeof window === \"undefined\";\n\nexport function makePHEventFunctions<TKey extends PHGlobalKey>(key: TKey) {\n const setEventName = `ph:set${capitalCase(key)}` as const;\n const updateEventName = `ph:${key}Updated` as const;\n\n function setValue(value: PHGlobal[TKey] | undefined) {\n if (isServer) {\n return;\n }\n const event = new CustomEvent(setEventName, {\n detail: { [key]: value },\n });\n window.dispatchEvent(event);\n }\n\n function dispatchUpdatedEvent() {\n if (isServer) {\n return;\n }\n const event = new CustomEvent(updateEventName);\n window.dispatchEvent(event);\n }\n\n function handleSetValueEvent(event: SetEvent<TKey>) {\n if (isServer) {\n return;\n }\n const value = event.detail[key];\n if (!window.ph) {\n window.ph = {};\n }\n window.ph[key] = value;\n dispatchUpdatedEvent();\n }\n\n function addEventHandler() {\n if (isServer) {\n return;\n }\n window.addEventListener(setEventName, handleSetValueEvent as EventListener);\n }\n\n function subscribeToValue(onStoreChange: () => void) {\n if (isServer) return () => {};\n window.addEventListener(updateEventName, onStoreChange);\n return () => {\n window.removeEventListener(updateEventName, onStoreChange);\n };\n }\n\n function getSnapshot() {\n if (isServer) {\n return undefined;\n }\n // The store is legitimately read before the first `setValue` (subscribers\n // mount before init runs), so an uninitialized store is expected, not an\n // error — return `undefined` quietly rather than warning on every render.\n return window.ph?.[key];\n }\n\n function getServerSnapshot() {\n return undefined;\n }\n\n function useValue() {\n return useSyncExternalStore(\n subscribeToValue,\n getSnapshot,\n getServerSnapshot,\n );\n }\n\n return {\n useValue,\n setValue,\n addEventHandler,\n };\n}\n"],"mappings":";;;AASA,MAAM,WAAW,OAAO,WAAW;AAEnC,SAAgB,qBAA+C,KAAW;CACxE,MAAM,eAAe,SAAS,YAAY,IAAI;CAC9C,MAAM,kBAAkB,MAAM,IAAI;CAElC,SAAS,SAAS,OAAmC;AACnD,MAAI,SACF;EAEF,MAAM,QAAQ,IAAI,YAAY,cAAc,EAC1C,QAAQ,GAAG,MAAM,OAAO,EACzB,CAAC;AACF,SAAO,cAAc,MAAM;;CAG7B,SAAS,uBAAuB;AAC9B,MAAI,SACF;EAEF,MAAM,QAAQ,IAAI,YAAY,gBAAgB;AAC9C,SAAO,cAAc,MAAM;;CAG7B,SAAS,oBAAoB,OAAuB;AAClD,MAAI,SACF;EAEF,MAAM,QAAQ,MAAM,OAAO;AAC3B,MAAI,CAAC,OAAO,GACV,QAAO,KAAK,EAAE;AAEhB,SAAO,GAAG,OAAO;AACjB,wBAAsB;;CAGxB,SAAS,kBAAkB;AACzB,MAAI,SACF;AAEF,SAAO,iBAAiB,cAAc,oBAAqC;;CAG7E,SAAS,iBAAiB,eAA2B;AACnD,MAAI,SAAU,cAAa;AAC3B,SAAO,iBAAiB,iBAAiB,cAAc;AACvD,eAAa;AACX,UAAO,oBAAoB,iBAAiB,cAAc;;;CAI9D,SAAS,cAAc;AACrB,MAAI,SACF;AAKF,SAAO,OAAO,KAAK;;CAGrB,SAAS,oBAAoB;CAI7B,SAAS,WAAW;AAClB,SAAO,qBACL,kBACA,aACA,kBACD;;AAGH,QAAO;EACL;EACA;EACA;EACD"}
@@ -19,6 +19,18 @@ const usePGliteDB = () => {
19
19
  }, []);
20
20
  return state;
21
21
  };
22
+ function setPGliteDB(pglite) {
23
+ const currentPowerhouse = window.powerhouse ?? {};
24
+ const currentPGliteState = window.powerhouse?.pglite ?? defaultPGliteState;
25
+ window.powerhouse = {
26
+ ...currentPowerhouse,
27
+ pglite: {
28
+ ...currentPGliteState,
29
+ ...pglite
30
+ }
31
+ };
32
+ window.dispatchEvent(new CustomEvent(PGLITE_UPDATE_EVENT));
33
+ }
22
34
  //#endregion
23
35
  //#region src/relational/hooks/useRelationalDb.ts
24
36
  function createRelationalDbWithLive(pgliteInstance) {
@@ -118,6 +130,6 @@ function createProcessorQuery(ProcessorClass) {
118
130
  return useQuery;
119
131
  }
120
132
  //#endregion
121
- export { useRelationalQuery as n, useRelationalDb as r, createProcessorQuery as t };
133
+ export { setPGliteDB as i, useRelationalQuery as n, useRelationalDb as r, createProcessorQuery as t };
122
134
 
123
- //# sourceMappingURL=relational-4_LVwp8p.js.map
135
+ //# sourceMappingURL=relational-Dj06-YkI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relational-Dj06-YkI.js","names":[],"sources":["../src/pglite/usePGlite.ts","../src/relational/hooks/useRelationalDb.ts","../src/relational/hooks/useRelationalQuery.ts","../src/relational/utils/createProcessorQuery.ts"],"sourcesContent":["import type { PGliteWithLive } from \"@electric-sql/pglite/live\";\nimport { useEffect, useState } from \"react\";\n\nexport const PGLITE_UPDATE_EVENT = \"ph:pglite-update\";\n\nexport interface PGliteState {\n db: PGliteWithLive | null;\n isLoading: boolean;\n error: Error | null;\n}\n\nconst defaultPGliteState: PGliteState = {\n db: null,\n isLoading: true,\n error: null,\n};\n\nexport const usePGliteDB = () => {\n const [state, setState] = useState<PGliteState>(\n () => window.powerhouse?.pglite ?? defaultPGliteState,\n );\n\n useEffect(() => {\n const handlePgliteUpdate = () =>\n setState(window.powerhouse?.pglite ?? defaultPGliteState);\n\n window.addEventListener(PGLITE_UPDATE_EVENT, handlePgliteUpdate);\n\n return () =>\n window.removeEventListener(PGLITE_UPDATE_EVENT, handlePgliteUpdate);\n }, []);\n\n return state;\n};\n\nexport function setPGliteDB(pglite: Partial<PGliteState>): void {\n const currentPowerhouse = window.powerhouse ?? {};\n const currentPGliteState = window.powerhouse?.pglite ?? defaultPGliteState;\n\n window.powerhouse = {\n ...currentPowerhouse,\n pglite: {\n ...currentPGliteState,\n ...pglite,\n },\n };\n window.dispatchEvent(new CustomEvent(PGLITE_UPDATE_EVENT));\n}\n\nexport const useSetPGliteDB = () => setPGliteDB;\n\nexport const usePGlite = () => {\n const pglite = usePGliteDB();\n const setPGlite = useSetPGliteDB();\n\n return [pglite, setPGlite];\n};\n","import type { PGlite } from \"@electric-sql/pglite\";\nimport type { LiveNamespace, PGliteWithLive } from \"@electric-sql/pglite/live\";\nimport { createRelationalDb } from \"@powerhousedao/reactor\";\nimport type { IRelationalDb as IRelationalDbCore } from \"@powerhousedao/shared/processors\";\nimport { Kysely } from \"kysely\";\nimport { PGliteDialect } from \"kysely-pglite-dialect\";\nimport { useMemo } from \"react\";\nimport { usePGliteDB } from \"../../pglite/usePGlite.js\";\n\n// Type for Relational DB instance enhanced with live capabilities\nexport type RelationalDbWithLive<Schema> = IRelationalDbCore<Schema> & {\n live: LiveNamespace;\n};\n\ninterface IRelationalDbState<Schema> {\n db: RelationalDbWithLive<Schema> | null;\n isLoading: boolean;\n error: Error | null;\n}\n\n// Custom initializer that creates enhanced Kysely instance with live capabilities\nfunction createRelationalDbWithLive<Schema>(\n pgliteInstance: PGliteWithLive,\n): RelationalDbWithLive<Schema> {\n const baseDb = new Kysely<Schema>({\n dialect: new PGliteDialect(pgliteInstance as unknown as PGlite),\n });\n const relationalDb = createRelationalDb(baseDb);\n\n // Inject the live namespace with proper typing\n const relationalDBWithLive =\n relationalDb as unknown as RelationalDbWithLive<Schema>;\n relationalDBWithLive.live = pgliteInstance.live;\n\n return relationalDBWithLive;\n}\n\nexport const useRelationalDb = <Schema>(): IRelationalDbState<Schema> => {\n const pglite = usePGliteDB();\n\n const relationalDb = useMemo<IRelationalDbState<Schema>>(() => {\n if (!pglite.db || pglite.isLoading || pglite.error) {\n return {\n db: null,\n isLoading: pglite.isLoading,\n error: pglite.error,\n };\n }\n\n const db = createRelationalDbWithLive<Schema>(pglite.db);\n\n return {\n db,\n isLoading: false,\n error: null,\n };\n }, [pglite]);\n\n return relationalDb;\n};\n","import type { LiveQueryResults } from \"@electric-sql/pglite/live\";\nimport type {\n IRelationalQueryBuilder,\n RelationalDbProcessorClass,\n} from \"@powerhousedao/shared/processors\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { useRelationalDb } from \"./useRelationalDb.js\";\n\nexport type QueryCallbackReturnType = {\n sql: string;\n parameters?: readonly unknown[];\n};\n\nexport type useRelationalQueryOptions = {\n // Whether to hash the namespace to avoid namespace size limit. True by default\n hashNamespace?: boolean;\n};\n\nconst MAX_RETRIES = 5;\nconst RETRY_DELAY = 200;\n\nconst isRelationNotExistError = (error: unknown): boolean => {\n const errorMessage =\n error instanceof Error\n ? error.message\n : typeof error === \"string\"\n ? error\n : String(error);\n\n return (\n errorMessage.toLowerCase().includes(\"relation\") &&\n errorMessage.toLowerCase().includes(\"does not exist\")\n );\n};\n\ntype LiveQueryType = {\n unsubscribe: () => void;\n};\n\nexport function useRelationalQuery<Schema, T = unknown, TParams = undefined>(\n ProcessorClass: RelationalDbProcessorClass<Schema>,\n driveId: string,\n queryCallback: (\n db: IRelationalQueryBuilder<Schema>,\n parameters?: TParams,\n ) => QueryCallbackReturnType,\n parameters?: TParams,\n _options?: useRelationalQueryOptions,\n) {\n const [result, setResult] = useState<LiveQueryResults<T> | null>(null);\n const [queryLoading, setQueryLoading] = useState(true);\n const [error, setError] = useState<Error | undefined>(undefined);\n const retryCount = useRef(0);\n const retryTimeoutRef = useRef<NodeJS.Timeout>(null);\n\n const relationalDb = useRelationalDb<Schema>();\n\n const executeLiveQuery = async (\n sql: string,\n queryParameters: readonly unknown[] | undefined,\n retryAttempt = 0,\n ): Promise<LiveQueryType | null> => {\n if (!relationalDb.db) {\n return null;\n }\n\n try {\n const live = await relationalDb.db.live.query<T>(\n sql,\n queryParameters ? [...queryParameters] : [],\n (result) => {\n setResult(result);\n setQueryLoading(false);\n retryCount.current = 0; // Reset retry count on success\n },\n );\n\n return live as LiveQueryType;\n } catch (err: unknown) {\n if (isRelationNotExistError(err) && retryAttempt < MAX_RETRIES) {\n return new Promise((resolve) => {\n retryTimeoutRef.current = setTimeout(() => {\n resolve(executeLiveQuery(sql, queryParameters, retryAttempt + 1));\n }, RETRY_DELAY);\n });\n }\n\n setQueryLoading(false);\n setError(err instanceof Error ? err : new Error(String(err)));\n return null;\n }\n };\n\n useEffect(() => {\n setError(undefined);\n setQueryLoading(true);\n retryCount.current = 0;\n\n if (!relationalDb.db) {\n return;\n }\n\n // Use the processor helper to obtain a typed namespaced query builder\n const db = ProcessorClass.query(driveId, relationalDb.db);\n\n const compiledQuery = queryCallback(db, parameters);\n const { sql, parameters: queryParameters } = compiledQuery;\n\n const liveQueryPromise = executeLiveQuery(sql, queryParameters);\n\n return () => {\n if (retryTimeoutRef.current) {\n clearTimeout(retryTimeoutRef.current);\n }\n void liveQueryPromise.then((live) => {\n if (live?.unsubscribe) {\n live.unsubscribe();\n }\n });\n };\n }, [relationalDb.db, ProcessorClass, driveId, queryCallback, parameters]);\n\n return {\n isLoading: relationalDb.isLoading || queryLoading,\n error: error || relationalDb.error,\n result,\n } as const;\n}\n","import type { LiveQueryResults } from \"@electric-sql/pglite/live\";\nimport type {\n QueryCallbackReturnType,\n useRelationalQueryOptions,\n} from \"@powerhousedao/reactor-browser\";\nimport type {\n IRelationalQueryBuilder,\n RelationalDbProcessorClass,\n} from \"@powerhousedao/shared/processors\";\nimport type { CompiledQuery } from \"kysely\";\nimport deepEqual from \"lodash.isequal\";\nimport { useCallback, useMemo, useRef } from \"react\";\nimport { useRelationalQuery } from \"../hooks/useRelationalQuery.js\";\n\n// Custom hook for parameter memoization\nfunction useStableParams<T>(params: T): T {\n const prevParamsRef = useRef<T>(null);\n\n return useMemo(() => {\n if (!deepEqual(prevParamsRef.current, params)) {\n prevParamsRef.current = params;\n }\n return prevParamsRef.current as T;\n }, [params]);\n}\n\nexport function createProcessorQuery<TSchema>(\n ProcessorClass: RelationalDbProcessorClass<TSchema>,\n) {\n // Overload for queries without parameters\n function useQuery<\n TQueryBuilder extends (\n db: IRelationalQueryBuilder<TSchema>,\n ) => QueryCallbackReturnType,\n >(\n driveId: string,\n queryCallback: TQueryBuilder,\n ): {\n isLoading: boolean;\n error: Error | null;\n result: LiveQueryResults<\n ReturnType<TQueryBuilder> extends CompiledQuery<infer R> ? R : any\n > | null;\n };\n\n // Overload for queries with parameters\n function useQuery<\n TParams,\n TQueryBuilder extends (\n db: IRelationalQueryBuilder<TSchema>,\n parameters: TParams,\n ) => QueryCallbackReturnType,\n >(\n driveId: string,\n queryCallback: TQueryBuilder,\n parameters: TParams,\n options?: useRelationalQueryOptions,\n ): {\n isLoading: boolean;\n error: Error | null;\n result: LiveQueryResults<\n ReturnType<TQueryBuilder> extends CompiledQuery<infer R> ? R : any\n > | null;\n };\n\n function useQuery<\n TParams,\n TQueryBuilder extends (\n db: IRelationalQueryBuilder<TSchema>,\n parameters?: TParams,\n ) => QueryCallbackReturnType,\n >(\n driveId: string,\n queryCallback: TQueryBuilder,\n parameters?: TParams,\n options?: useRelationalQueryOptions,\n ): {\n isLoading: boolean;\n error: Error | null;\n result: LiveQueryResults<\n ReturnType<TQueryBuilder> extends CompiledQuery<infer R> ? R : any\n > | null;\n } {\n type InferredResult =\n ReturnType<TQueryBuilder> extends CompiledQuery<infer R> ? R : any;\n\n // Automatically memoize parameters using deep comparison\n const stableParams = useStableParams(parameters);\n\n // Memoize the callback to prevent infinite loops, updating when parameters change\n const memoizedCallback = useCallback(queryCallback, [stableParams]);\n\n return useRelationalQuery<TSchema, InferredResult, TParams>(\n ProcessorClass,\n driveId,\n memoizedCallback,\n stableParams,\n options,\n ) as {\n isLoading: boolean;\n error: Error | null;\n result: LiveQueryResults<InferredResult> | null;\n };\n }\n\n return useQuery;\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { t as makePHEventFunctions } from "./make-ph-event-functions-DwiD1zH9.js";
1
+ import { t as makePHEventFunctions } from "./make-ph-event-functions-BHoLPif5.js";
2
2
  import { logger } from "document-model";
3
3
  import { Children, cloneElement, forwardRef, isValidElement, useCallback, useEffect, useRef, useState, useSyncExternalStore } from "react";
4
4
  import { BrowserKeyStorage, CREDENTIAL_SCHEMA_EIP712_TYPE, CREDENTIAL_SUBJECT_TYPE, CREDENTIAL_TYPES, DOMAIN_TYPE, ISSUER_TYPE, RenownBuilder, RenownCryptoBuilder, VERIFIABLE_CREDENTIAL_EIP712_TYPE } from "@renown/sdk";
@@ -166,7 +166,7 @@ function RenownLogo({ width = 71, height = 19, hovered = false, color = "current
166
166
  ]
167
167
  });
168
168
  }
169
- function CopyIcon({ size = 14, color = "#9EA0A1" }) {
169
+ function CopyIcon({ size = 14, color = "var(--muted-foreground, #9EA0A1)" }) {
170
170
  return /* @__PURE__ */ jsxs("svg", {
171
171
  width: size,
172
172
  height: size,
@@ -188,7 +188,7 @@ function CopyIcon({ size = 14, color = "#9EA0A1" }) {
188
188
  })]
189
189
  });
190
190
  }
191
- function DisconnectIcon({ size = 14, color = "#EA4335" }) {
191
+ function DisconnectIcon({ size = 14, color = "var(--destructive, #EA4335)" }) {
192
192
  return /* @__PURE__ */ jsxs("svg", {
193
193
  width: size,
194
194
  height: size,
@@ -357,30 +357,17 @@ const Slot = forwardRef(({ children, ...props }, ref) => {
357
357
  Slot.displayName = "Slot";
358
358
  //#endregion
359
359
  //#region src/renown/components/RenownLoginButton.tsx
360
- const lightStyles = {
360
+ const colorStyles = {
361
361
  trigger: {
362
- backgroundColor: "#ffffff",
362
+ backgroundColor: "var(--card, #ffffff)",
363
363
  borderWidth: "1px",
364
364
  borderStyle: "solid",
365
- borderColor: "#d1d5db",
366
- color: "#111827"
365
+ borderColor: "var(--border, #d1d5db)",
366
+ color: "var(--card-foreground, #111827)"
367
367
  },
368
368
  triggerHover: {
369
- backgroundColor: "#ecf3f8",
370
- borderColor: "#9ca3af"
371
- }
372
- };
373
- const darkStyles = {
374
- trigger: {
375
- backgroundColor: "#1f2937",
376
- borderWidth: "1px",
377
- borderStyle: "solid",
378
- borderColor: "#4b5563",
379
- color: "#ecf3f8"
380
- },
381
- triggerHover: {
382
- backgroundColor: "#374151",
383
- borderColor: "#6b7280"
369
+ backgroundColor: "var(--accent, #ecf3f8)",
370
+ borderColor: "var(--border, #d1d5db)"
384
371
  }
385
372
  };
386
373
  const styles$1 = {
@@ -403,7 +390,7 @@ const styles$1 = {
403
390
  transition: "background-color 150ms, border-color 150ms"
404
391
  }
405
392
  };
406
- function RenownLoginButton({ onLogin: onLoginProp, darkMode = false, style, className, asChild = false, children }) {
393
+ function RenownLoginButton({ onLogin: onLoginProp, style, className, asChild = false, children }) {
407
394
  const onLogin = onLoginProp ?? (() => openRenown());
408
395
  const [isLoading, setIsLoading] = useState(false);
409
396
  const [isHovered, setIsHovered] = useState(false);
@@ -415,7 +402,7 @@ function RenownLoginButton({ onLogin: onLoginProp, darkMode = false, style, clas
415
402
  onLogin();
416
403
  }
417
404
  };
418
- const themeStyles = darkMode ? darkStyles : lightStyles;
405
+ const themeStyles = colorStyles;
419
406
  const triggerStyle = {
420
407
  ...styles$1.trigger,
421
408
  ...themeStyles.trigger,
@@ -461,19 +448,19 @@ const styles = {
461
448
  padding: "6px 12px",
462
449
  borderWidth: "1px",
463
450
  borderStyle: "solid",
464
- borderColor: "#e5e7eb",
465
- backgroundColor: "#ffffff",
451
+ borderColor: "var(--border, #e5e7eb)",
452
+ backgroundColor: "var(--card, #ffffff)",
466
453
  cursor: "pointer",
467
454
  borderRadius: "8px",
468
455
  fontSize: "12px",
469
456
  fontWeight: 500,
470
457
  fontFamily: "inherit",
471
- color: "#111827",
458
+ color: "var(--card-foreground, #111827)",
472
459
  transition: "background-color 150ms, border-color 150ms"
473
460
  },
474
461
  triggerHover: {
475
- backgroundColor: "#f9fafb",
476
- borderColor: "#9ca3af"
462
+ backgroundColor: "var(--accent, #f3f4f6)",
463
+ borderColor: "var(--border, #e5e7eb)"
477
464
  },
478
465
  avatar: {
479
466
  width: "28px",
@@ -507,31 +494,31 @@ const styles = {
507
494
  chevron: {
508
495
  flexShrink: 0,
509
496
  transition: "transform 150ms",
510
- color: "#6b7280"
497
+ color: "var(--muted-foreground, #6b7280)"
511
498
  },
512
499
  chevronOpen: { transform: "rotate(180deg)" },
513
500
  popoverBase: {
514
501
  position: "absolute",
515
502
  right: 0,
516
- backgroundColor: "#ffffff",
503
+ backgroundColor: "var(--popover, #ffffff)",
517
504
  borderRadius: "8px",
518
505
  boxShadow: "0 4px 12px rgba(0, 0, 0, 0.12), 0 1px 3px rgba(0, 0, 0, 0.08)",
519
506
  width: "100%",
520
507
  zIndex: 1e3,
521
- color: "#111827",
508
+ color: "var(--popover-foreground, #111827)",
522
509
  borderWidth: "1px",
523
510
  borderStyle: "solid",
524
- borderColor: "#e5e7eb",
511
+ borderColor: "var(--border, #e5e7eb)",
525
512
  overflow: "hidden"
526
513
  },
527
514
  header: {
528
515
  padding: "12px 16px",
529
- borderBottom: "1px solid #e5e7eb"
516
+ borderBottom: "1px solid var(--border, #e5e7eb)"
530
517
  },
531
518
  headerUsername: {
532
519
  fontSize: "14px",
533
520
  fontWeight: 600,
534
- color: "#111827",
521
+ color: "var(--foreground, #111827)",
535
522
  margin: 0
536
523
  },
537
524
  addressRow: {
@@ -549,14 +536,14 @@ const styles = {
549
536
  backgroundColor: "transparent",
550
537
  cursor: "pointer",
551
538
  fontSize: "12px",
552
- color: "#6b7280",
539
+ color: "var(--muted-foreground, #6b7280)",
553
540
  fontFamily: "inherit",
554
541
  position: "relative",
555
542
  width: "100%"
556
543
  },
557
544
  copiedText: {
558
545
  fontSize: "12px",
559
- color: "#059669",
546
+ color: "var(--success, #059669)",
560
547
  position: "absolute",
561
548
  left: 0,
562
549
  transition: "opacity 150ms",
@@ -579,16 +566,16 @@ const styles = {
579
566
  backgroundColor: "transparent",
580
567
  cursor: "pointer",
581
568
  fontSize: "14px",
582
- color: "#374151",
569
+ color: "var(--foreground, #111827)",
583
570
  textDecoration: "none",
584
571
  fontFamily: "inherit",
585
572
  transition: "background-color 150ms"
586
573
  },
587
- menuItemHover: { backgroundColor: "#f3f4f6" },
588
- disconnectItem: { color: "#dc2626" },
574
+ menuItemHover: { backgroundColor: "var(--accent, #f3f4f6)" },
575
+ disconnectItem: { color: "var(--destructive, #dc2626)" },
589
576
  separator: {
590
577
  height: "1px",
591
- backgroundColor: "#e5e7eb",
578
+ backgroundColor: "var(--border, #e5e7eb)",
592
579
  margin: 0,
593
580
  border: "none"
594
581
  }
@@ -723,7 +710,7 @@ function RenownUserButton({ address: addressProp, username: usernameProp, avatar
723
710
  },
724
711
  children: [/* @__PURE__ */ jsx("span", { children: truncateAddress(address) }), /* @__PURE__ */ jsx(CopyIcon, {
725
712
  size: 12,
726
- color: "#9ca3af"
713
+ color: "var(--muted-foreground, #9ca3af)"
727
714
  })]
728
715
  }), /* @__PURE__ */ jsx("div", {
729
716
  style: {
@@ -749,7 +736,7 @@ function RenownUserButton({ address: addressProp, username: usernameProp, avatar
749
736
  },
750
737
  children: [/* @__PURE__ */ jsx(UserIcon, {
751
738
  size: 14,
752
- color: "#6b7280"
739
+ color: "var(--muted-foreground, #6b7280)"
753
740
  }), "View Profile"]
754
741
  }), menuItems?.map((item) => /* @__PURE__ */ jsxs("button", {
755
742
  type: "button",
@@ -779,7 +766,7 @@ function RenownUserButton({ address: addressProp, username: usernameProp, avatar
779
766
  },
780
767
  children: [/* @__PURE__ */ jsx(DisconnectIcon, {
781
768
  size: 14,
782
- color: "#dc2626"
769
+ color: "var(--destructive, #dc2626)"
783
770
  }), "Log out"]
784
771
  })
785
772
  })
@@ -806,19 +793,19 @@ function RenownAuthButton({ className = "", darkMode, loginContent, userContent,
806
793
  gap: "8px",
807
794
  padding: "6px 12px",
808
795
  borderRadius: "8px",
809
- border: "1px solid #e5e7eb",
796
+ border: "1px solid var(--border, #f0f0f0)",
810
797
  animation: "pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite"
811
798
  },
812
799
  children: [/* @__PURE__ */ jsx("div", { style: {
813
800
  width: "28px",
814
801
  height: "28px",
815
802
  borderRadius: "50%",
816
- backgroundColor: "#e5e7eb"
803
+ backgroundColor: "var(--secondary, #f0f0f0)"
817
804
  } }), /* @__PURE__ */ jsx("div", { style: {
818
805
  width: "80px",
819
806
  height: "14px",
820
807
  borderRadius: "4px",
821
- backgroundColor: "#e5e7eb"
808
+ backgroundColor: "var(--secondary, #f0f0f0)"
822
809
  } })]
823
810
  }), /* @__PURE__ */ jsx("style", { children: `@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }` })]
824
811
  });
@@ -923,4 +910,4 @@ function Renown({ onError, ...initOptions }) {
923
910
  //#endregion
924
911
  export { useLoginStatus as A, RENOWN_CHAIN_ID as C, addRenownEventHandler as D, VERIFIABLE_CREDENTIAL_EIP712_TYPE as E, setLoading as F, useLoading as I, useUser as M, addLoadingEventHandler as N, setRenown as O, loading as P, ISSUER_TYPE as S, RENOWN_URL as T, openRenown as _, RenownAuthButton as a, CREDENTIAL_TYPES as b, ChevronDownIcon as c, RenownLogo as d, SpinnerIcon as f, logout as g, login as h, initRenownCrypto as i, useRenown as j, useDid as k, CopyIcon as l, useRenownAuth as m, useRenownInit as n, RenownUserButton as o, UserIcon as p, initConnectCrypto as r, RenownLoginButton as s, Renown as t, DisconnectIcon as u, CREDENTIAL_SCHEMA_EIP712_TYPE as v, RENOWN_NETWORK_ID as w, DOMAIN_TYPE as x, CREDENTIAL_SUBJECT_TYPE as y };
925
912
 
926
- //# sourceMappingURL=renown-Dzmo1gJD.js.map
913
+ //# sourceMappingURL=renown-D-1c_Bvx.js.map