@powerhousedao/reactor-browser 6.2.2-dev.6 → 6.2.2-dev.60

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 (66) hide show
  1. package/README.md +283 -0
  2. package/dist/attachment-service-DTFJRf5j.d.ts +1057 -0
  3. package/dist/attachment-service-DTFJRf5j.d.ts.map +1 -0
  4. package/dist/{client-_Gh2Uf0E.js → client-DB8gP4hz.js} +79 -13
  5. package/dist/client-DB8gP4hz.js.map +1 -0
  6. package/dist/client-DjkEpwu_.d.ts +14 -0
  7. package/dist/client-DjkEpwu_.d.ts.map +1 -0
  8. package/dist/{client-u13cr-Vg.js → client-Zz_l9QzI.js} +30 -3
  9. package/dist/client-Zz_l9QzI.js.map +1 -0
  10. package/dist/{document-by-id-dLYFX-xz.js → document-by-id-BSZqTN66.js} +81 -51
  11. package/dist/document-by-id-BSZqTN66.js.map +1 -0
  12. package/dist/document-operations-C6nce9dH.js +2928 -0
  13. package/dist/document-operations-C6nce9dH.js.map +1 -0
  14. package/dist/global-pg5gy2eZ.d.ts +400 -0
  15. package/dist/global-pg5gy2eZ.d.ts.map +1 -0
  16. package/dist/index-CxxxP14A.d.ts +144 -0
  17. package/dist/index-CxxxP14A.d.ts.map +1 -0
  18. package/dist/index-DjloxNSR.d.ts +345 -0
  19. package/dist/index-DjloxNSR.d.ts.map +1 -0
  20. package/dist/index.d.ts +305 -709
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +608 -1660
  23. package/dist/index.js.map +1 -1
  24. package/dist/{inspector-proxy-CvQDDxmT.d.ts → inspector-proxy-CaCFdEG4.d.ts} +4 -2
  25. package/dist/inspector-proxy-CaCFdEG4.d.ts.map +1 -0
  26. package/dist/{make-ph-event-functions-BHoLPif5.js → make-ph-event-functions-DBq3iWYn.js} +1 -1
  27. package/dist/{make-ph-event-functions-BHoLPif5.js.map → make-ph-event-functions-DBq3iWYn.js.map} +1 -1
  28. package/dist/{index-DS4W07Y8.d.ts → pglite-CntadC_p-BtEalg1H.d.ts} +2 -142
  29. package/dist/pglite-CntadC_p-BtEalg1H.d.ts.map +1 -0
  30. package/dist/{relational-Dj06-YkI.js → relational-C_0GdGVN.js} +2 -2
  31. package/dist/{relational-Dj06-YkI.js.map → relational-C_0GdGVN.js.map} +1 -1
  32. package/dist/renown-BZabzj4l.js +68 -0
  33. package/dist/renown-BZabzj4l.js.map +1 -0
  34. package/dist/{renown-D-1c_Bvx.js → renown-C7a1ygsj.js} +471 -57
  35. package/dist/renown-C7a1ygsj.js.map +1 -0
  36. package/dist/src/analytics/index.d.ts +1 -1
  37. package/dist/src/analytics/index.js +2 -1
  38. package/dist/src/analytics/index.js.map +1 -1
  39. package/dist/src/graphql/client.d.ts +3 -2
  40. package/dist/src/graphql/client.js +1 -1
  41. package/dist/src/graphql-client/entry.d.ts +4 -0
  42. package/dist/src/graphql-client/entry.js +3 -0
  43. package/dist/src/relational/index.d.ts +1 -1
  44. package/dist/src/relational/index.js +1 -1
  45. package/dist/src/renown/index.d.ts +2 -2
  46. package/dist/src/renown/index.js +3 -2
  47. package/dist/src/rpc/index.d.ts +6 -3
  48. package/dist/src/rpc/index.d.ts.map +1 -1
  49. package/dist/src/rpc/index.js +41 -10
  50. package/dist/src/rpc/index.js.map +1 -1
  51. package/dist/store-DAJq6vSs.js +37 -0
  52. package/dist/store-DAJq6vSs.js.map +1 -0
  53. package/dist/{client-09xv0Dq6.d.ts → types-4rfAFZQd.d.ts} +87 -19
  54. package/dist/types-4rfAFZQd.d.ts.map +1 -0
  55. package/dist/{types-CPV0Cnsy.d.ts → types-wGaiXwjh.d.ts} +1 -1
  56. package/dist/{types-CPV0Cnsy.d.ts.map → types-wGaiXwjh.d.ts.map} +1 -1
  57. package/package.json +16 -10
  58. package/dist/client-09xv0Dq6.d.ts.map +0 -1
  59. package/dist/client-_Gh2Uf0E.js.map +0 -1
  60. package/dist/client-u13cr-Vg.js.map +0 -1
  61. package/dist/document-by-id-dLYFX-xz.js.map +0 -1
  62. package/dist/index-D3bV5rcl.d.ts +0 -216
  63. package/dist/index-D3bV5rcl.d.ts.map +0 -1
  64. package/dist/index-DS4W07Y8.d.ts.map +0 -1
  65. package/dist/inspector-proxy-CvQDDxmT.d.ts.map +0 -1
  66. package/dist/renown-D-1c_Bvx.js.map +0 -1
@@ -67,6 +67,7 @@ type VersionFingerprint = {
67
67
  id: string;
68
68
  version: number;
69
69
  }[];
70
+ featureFlags?: string;
70
71
  };
71
72
  type RpcHello = {
72
73
  k: "hello";
@@ -111,7 +112,8 @@ type WorkerInspectorInfo = {
111
112
  bootedAtMs: number;
112
113
  connectedClients: number;
113
114
  appBuildId: string;
114
- rpcProtocolVersion: number;
115
+ rpcProtocolVersion: number; /** Flags this worker is enforcing, from the fingerprint that built it. */
116
+ featureFlags?: string;
115
117
  };
116
118
  type ReactorIdentity = {
117
119
  address: string;
@@ -252,4 +254,4 @@ interface IInspectorProxy {
252
254
  declare function createInspectorProxy(router: MessageRouter): IInspectorProxy;
253
255
  //#endregion
254
256
  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
257
+ //# sourceMappingURL=inspector-proxy-CaCFdEG4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspector-proxy-CaCFdEG4.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":";KAAY,aAAA;AAAA,KAEA,SAAA;EACV,IAAA;EACA,OAAA;EACA,KAAA;EACA,KAAA,GAAQ,SAAA;AAAA;AAAA,KAGE,UAAA;EACV,CAAA;EACA,EAAA,EAAI,aAAA;EACJ,MAAA;EACA,IAAA;EACA,OAAA;AAAA;AAAA,KAGU,WAAA;EAAgB,CAAA;EAAU,EAAA,EAAI,aAAA;EAAe,KAAA;AAAA;AAAA,KAE7C,QAAA;EAAa,CAAA;EAAU,EAAA,EAAI,aAAA;EAAe,KAAA,EAAO,SAAA;AAAA;;KAGjD,WAAA;EAAgB,CAAA;EAAc,EAAA,EAAI,aAAA;EAAe,KAAA,EAAO,SAAA;AAAA;;KAGxD,YAAA;EACV,CAAA;EACA,EAAA,EAAI,aAAA;EACJ,KAAA,EAAO,SAAA;AAAA;AAAA,KAGG,QAAA;EAAa,CAAA;EAAY,QAAA,EAAU,aAAA;AAAA;AAAA,KAEnC,YAAA;EACV,CAAA;EACA,EAAA,EAAI,aAAA;EACJ,MAAA;EACA,IAAA;AAAA;AAAA,KAGU,QAAA;EAAa,CAAA;EAAY,EAAA,EAAI,aAAA;EAAe,MAAA;AAAA;AAAA,KAE5C,QAAA;EAAa,CAAA;EAAY,EAAA,EAAI,aAAA;AAAA;AAAA,KAE7B,WAAA;EAAgB,CAAA;EAAW,EAAA,EAAI,aAAA;EAAe,KAAA;AAAA;AAAA,cAI7C,oBAAA;AAAA,KAED,kBAAA;EACV,UAAA;EACA,kBAAA;EACA,MAAA;IAAU,EAAA;IAAY,OAAA;EAAA;EAGtB,YAAA;AAAA;AAAA,KAGU,QAAA;EACV,CAAA;EACA,EAAA,EAAI,aAAA;EACJ,OAAA,EAAS,kBAAA;EACT,SAAA;EACA,QAAA;AAAA;AAAA,KAGU,mBAAA;EACV,CAAA;EACA,EAAA,EAAI,aAAA;EACJ,KAAA;AAAA;AAAA,KAGU,qBAAA;EACV,CAAA;EACA,EAAA,EAAI,aAAA;EACJ,KAAA;AAAA;AAAA,KAKU,SAAA;EAAc,CAAA;EAAa,MAAA;EAAgB,SAAA;AAAA;AAAA,KAG3C,QAAA;EACV,CAAA;EACA,EAAA,EAAI,aAAA;EACJ,MAAA;AAAA;AAAA,KAGU,oBAAA;EACV,MAAA;EACA,WAAA;EACA,KAAA;EACA,KAAA;AAAA;AAAA,KAKU,YAAA;EAAiB,CAAA;EAAgB,KAAA,EAAO,oBAAA;AAAA;AAAA,KAExC,mBAAA;EACV,SAAA;EACA,OAAA;EACA,UAAA;EACA,gBAAA;EACA,UAAA;EACA,kBAAA,UA/DsD;EAiEtD,YAAA;AAAA;AAAA,KAIU,eAAA;EACV,OAAA;EACA,OAAA;EACA,SAAA;AAAA;AAAA,KAGU,WAAA;EAAgB,CAAA;EAAe,IAAA,EAAM,eAAA;AAAA;AAAA,KAIrC,WAAA;EAAgB,CAAA;EAAgB,SAAA;EAAmB,KAAA;AAAA;AAAA,KAEnD,MAAA;AAAA,KAEA,iBAAA,WAA4B,MAAA;EACtC,CAAA,EAAG,CAAA;EACH,EAAA,EAAI,aAAA;EACJ,MAAA;EACA,IAAA;AAAA;AAAA,KAMU,SAAA,GAAY,iBAAA;AAAA,KAEZ,OAAA,GAAU,iBAAA;AAAA,KAEV,cAAA,GAAiB,iBAAA;AAAA,KAEjB,gBAAA;EACV,CAAA;EACA,EAAA,EAAI,aAAA;EACJ,GAAA;EACA,MAAA;AAAA;AAAA,KAGU,YAAA;EACV,CAAA;EACA,EAAA,EAAI,aAAA;EACJ,OAAA;AAAA;AAAA,KAGU,YAAA;EAAiB,CAAA;EAAiB,EAAA,EAAI,aAAA;AAAA;AAAA,KAKtC,OAAA;EAAY,CAAA;EAAW,EAAA,EAAI,aAAA;AAAA;AAAA,KAE3B,OAAA;EACV,CAAA;EACA,EAAA,EAAI,aAAA;EACJ,OAAA;EACA,UAAA;AAAA;AAAA,KAGU,aAAA,GACR,UAAA,GACA,QAAA,GACA,YAAA,GACA,QAAA,GACA,WAAA,GACA,QAAA,GACA,mBAAA,GACA,qBAAA,GACA,WAAA,GACA,QAAA,GACA,SAAA,GACA,OAAA,GACA,cAAA,GACA,gBAAA,GACA,YAAA,GACA,OAAA;AAAA,KAEQ,YAAA,GACR,WAAA,GACA,QAAA,GACA,WAAA,GACA,YAAA,GACA,QAAA,GACA,SAAA,GACA,WAAA,GACA,YAAA,GACA,YAAA,GACA,OAAA;AAAA,KAEQ,UAAA,GAAa,aAAA,GAAgB,YAAA;;;KC7L7B,iBAAA;EDXa,8ECavB,SAAA,WDbuB;ECevB,SAAA,IAAa,KAAA,uBDbH;ECeV,KAAA,IAAS,EAAA,EAAI,aAAA;AAAA;;KAIH,SAAA;EAAc,IAAA,CAAK,OAAA,EAAS,aAAA;AAAA;;;;;cAM3B,aAAA;EAAA,iBAKQ,MAAA;EAAA,iBACA,MAAA;EAAA,QALX,OAAA;EAAA,iBACS,OAAA;cAGE,MAAA,EAAQ,SAAA,EACR,MAAA;EAGnB,MAAA,CAAA,GAAU,aAAA;EDxBV;EC6BA,aAAA,CAAc,OAAA,EAAS,YAAA;ED3BvB;ECkDA,OAAA,CACE,KAAA,GAAQ,EAAA,EAAI,aAAA,KAAkB,aAAA,EAC9B,OAAA,GAAS,iBAAA,GACR,OAAA;AAAA;;;UCjEY,aAAA;EACf,IAAA,CAAK,OAAA,EAAS,UAAA;EACd,SAAA,CAAU,QAAA,GAAW,OAAA,EAAS,UAAA;EAC9B,KAAA;AAAA;AAAA,iBAGc,mBAAA,CAAoB,IAAA,EAAM,WAAA,GAAc,aAAA;;;KCJnD,SAAA,GAAY,YAAA;;;AHFjB;;;cGUa,aAAA;EAAA,iBACM,QAAA;EAAA,iBACA,UAAA;EAAA,QACT,SAAA;EAAA,QACA,eAAA;cAEI,MAAA;EAQZ,MAAA,CAAO,SAAA,EAAW,aAAA;EASlB,MAAA,CAAA;EAMA,IAAA,CAAK,OAAA,EAAS,aAAA;EHhCM;EGwCpB,EAAA,WAAa,SAAA,CAAA,CACX,IAAA,EAAM,CAAA,EACN,OAAA,GAAU,OAAA,EAAS,OAAA,CAAQ,YAAA;IAAgB,CAAA,EAAG,CAAA;EAAA;EAchD,OAAA,CACE,KAAA,GAAQ,EAAA,EAAI,aAAA,KAAkB,aAAA,EAC9B,OAAA,GAAU,iBAAA,GACT,OAAA;EAIH,MAAA,CAAA,GAAU,aAAA;AAAA;;;UCnEK,kBAAA;EACf,IAAA,IAAQ,OAAA,CAAQ,mBAAA;EAChB,OAAA,IAAW,OAAA;EACX,YAAA,IAAgB,OAAA;EAChB,OAAA,IAAW,OAAA;EACX,iBAAA,IAAqB,oBAAA;EACrB,kBAAA,CAAmB,QAAA;AAAA;;iBAIL,uBAAA,CACd,MAAA,EAAQ,aAAA,GACP,kBAAA;;;UCdc,eAAA;EACf,aAAA,IAAiB,OAAA;EACjB,UAAA,IAAc,OAAA;EACd,WAAA,IAAe,OAAA;EACf,aAAA,IAAiB,OAAA;EACjB,cAAA,CAAe,WAAA,WAAsB,OAAA;EACrC,gBAAA,CAAiB,UAAA,UAAoB,MAAA,YAAkB,OAAA;EACvD,gBAAA,CAAiB,UAAA,UAAoB,MAAA,YAAkB,OAAA;EACvD,gBAAA,CAAiB,UAAA,UAAoB,MAAA,YAAkB,OAAA;EACvD,cAAA,CAAe,GAAA,UAAa,MAAA,eAAqB,OAAA;AAAA;AAAA,iBAGnC,oBAAA,CAAqB,MAAA,EAAQ,aAAA,GAAgB,eAAA"}
@@ -50,4 +50,4 @@ function makePHEventFunctions(key) {
50
50
  //#endregion
51
51
  export { makePHEventFunctions as t };
52
52
 
53
- //# sourceMappingURL=make-ph-event-functions-BHoLPif5.js.map
53
+ //# sourceMappingURL=make-ph-event-functions-DBq3iWYn.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"make-ph-event-functions-DBq3iWYn.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"}
@@ -539,145 +539,5 @@ declare class PGlite extends BasePGlite implements PGliteInterface, AsyncDisposa
539
539
  _runExclusiveListen<T>(fn: () => Promise<T>): Promise<T>;
540
540
  }
541
541
  //#endregion
542
- //#region ../../node_modules/.pnpm/@electric-sql+pglite@0.3.15/node_modules/@electric-sql/pglite/dist/live/index.d.ts
543
- interface LiveQueryOptions<T = {
544
- [key: string]: any;
545
- }> {
546
- query: string;
547
- params?: any[] | null;
548
- offset?: number;
549
- limit?: number;
550
- callback?: (results: Results<T>) => void;
551
- signal?: AbortSignal;
552
- }
553
- interface LiveChangesOptions<T = {
554
- [key: string]: any;
555
- }> {
556
- query: string;
557
- params?: any[] | null;
558
- key: string;
559
- callback?: (changes: Array<Change<T>>) => void;
560
- signal?: AbortSignal;
561
- }
562
- interface LiveIncrementalQueryOptions<T = {
563
- [key: string]: any;
564
- }> {
565
- query: string;
566
- params?: any[] | null;
567
- key: string;
568
- callback?: (results: Results<T>) => void;
569
- signal?: AbortSignal;
570
- }
571
- interface LiveNamespace {
572
- /**
573
- * Create a live query
574
- * @param query - The query to run
575
- * @param params - The parameters to pass to the query
576
- * @param callback - A callback to run when the query is updated
577
- * @returns A promise that resolves to an object with the initial results,
578
- * an unsubscribe function, and a refresh function
579
- */
580
- query<T = {
581
- [key: string]: any;
582
- }>(query: string, params?: any[] | null, callback?: (results: Results<T>) => void): Promise<LiveQuery<T>>;
583
- /**
584
- * Create a live query
585
- * @param options - The options to pass to the query
586
- * @returns A promise that resolves to an object with the initial results,
587
- * an unsubscribe function, and a refresh function
588
- */
589
- query<T = {
590
- [key: string]: any;
591
- }>(options: LiveQueryOptions<T>): Promise<LiveQuery<T>>;
592
- /**
593
- * Create a live query that returns the changes to the query results
594
- * @param query - The query to run
595
- * @param params - The parameters to pass to the query
596
- * @param callback - A callback to run when the query is updated
597
- * @returns A promise that resolves to an object with the initial changes,
598
- * an unsubscribe function, and a refresh function
599
- */
600
- changes<T = {
601
- [key: string]: any;
602
- }>(query: string, params: any[] | undefined | null, key: string, callback?: (changes: Array<Change<T>>) => void): Promise<LiveChanges<T>>;
603
- /**
604
- * Create a live query that returns the changes to the query results
605
- * @param options - The options to pass to the query
606
- * @returns A promise that resolves to an object with the initial changes,
607
- * an unsubscribe function, and a refresh function
608
- */
609
- changes<T = {
610
- [key: string]: any;
611
- }>(options: LiveChangesOptions<T>): Promise<LiveChanges<T>>;
612
- /**
613
- * Create a live query with incremental updates
614
- * @param query - The query to run
615
- * @param params - The parameters to pass to the query
616
- * @param callback - A callback to run when the query is updated
617
- * @returns A promise that resolves to an object with the initial results,
618
- * an unsubscribe function, and a refresh function
619
- */
620
- incrementalQuery<T = {
621
- [key: string]: any;
622
- }>(query: string, params: any[] | undefined | null, key: string, callback?: (results: Results<T>) => void): Promise<LiveQuery<T>>;
623
- /**
624
- * Create a live query with incremental updates
625
- * @param options - The options to pass to the query
626
- * @returns A promise that resolves to an object with the initial results,
627
- * an unsubscribe function, and a refresh function
628
- */
629
- incrementalQuery<T = {
630
- [key: string]: any;
631
- }>(options: LiveIncrementalQueryOptions<T>): Promise<LiveQuery<T>>;
632
- }
633
- interface LiveQueryResults<T> extends Results<T> {
634
- totalCount?: number;
635
- offset?: number;
636
- limit?: number;
637
- }
638
- interface LiveQuery<T> {
639
- initialResults: LiveQueryResults<T>;
640
- subscribe: (callback: (results: LiveQueryResults<T>) => void) => void;
641
- unsubscribe: (callback?: (results: LiveQueryResults<T>) => void) => Promise<void>;
642
- refresh: (options?: {
643
- offset?: number;
644
- limit?: number;
645
- }) => Promise<void>;
646
- }
647
- interface LiveChanges<T = {
648
- [key: string]: any;
649
- }> {
650
- fields: {
651
- name: string;
652
- dataTypeID: number;
653
- }[];
654
- initialChanges: Array<Change<T>>;
655
- subscribe: (callback: (changes: Array<Change<T>>) => void) => void;
656
- unsubscribe: (callback?: (changes: Array<Change<T>>) => void) => Promise<void>;
657
- refresh: () => Promise<void>;
658
- }
659
- type ChangeInsert<T> = {
660
- __changed_columns__: string[];
661
- __op__: 'INSERT';
662
- __after__: number;
663
- } & T;
664
- type ChangeDelete<T> = {
665
- __changed_columns__: string[];
666
- __op__: 'DELETE';
667
- __after__: undefined;
668
- } & T;
669
- type ChangeUpdate<T> = {
670
- __changed_columns__: string[];
671
- __op__: 'UPDATE';
672
- __after__: number;
673
- } & T;
674
- type ChangeReset<T> = {
675
- __op__: 'RESET';
676
- } & T;
677
- type Change<T> = ChangeInsert<T> | ChangeDelete<T> | ChangeUpdate<T> | ChangeReset<T>;
678
- type PGliteWithLive = PGliteInterface & {
679
- live: LiveNamespace;
680
- };
681
- //#endregion
682
- export { type PGlite as i, type LiveQueryResults as n, type PGliteWithLive as r, LiveNamespace as t };
683
- //# sourceMappingURL=index-DS4W07Y8.d.ts.map
542
+ export { type PGliteInterface as n, type Results as r, PGlite as t };
543
+ //# sourceMappingURL=pglite-CntadC_p-BtEalg1H.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pglite-CntadC_p-BtEalg1H.d.ts","names":["Modes","text","binary","Mode","BufferParameter","ArrayBuffer","ArrayBufferView","MessageName","BackendMessage","name","length","parseComplete","bindComplete","closeComplete","noData","portalSuspended","replicationStart","emptyQuery","copyDone","AuthenticationOk","constructor","AuthenticationCleartextPassword","AuthenticationMD5Password","Uint8Array","salt","AuthenticationSASL","mechanisms","AuthenticationSASLContinue","data","AuthenticationSASLFinal","AuthenticationMessage","NoticeOrError","message","severity","code","detail","hint","position","internalPosition","internalQuery","where","schema","table","column","dataType","constraint","file","line","routine","DatabaseError","Error","CopyDataMessage","chunk","CopyResponse","columnTypes","columnCount","Field","tableID","columnID","dataTypeID","dataTypeSize","dataTypeModifier","format","RowDescriptionMessage","fieldCount","fields","ParameterDescriptionMessage","parameterCount","dataTypeIDs","ParameterStatusMessage","parameterName","parameterValue","BackendKeyDataMessage","processID","secretKey","NotificationResponseMessage","processId","channel","payload","ReadyForQueryMessage","status","CommandCompleteMessage","DataRowMessage","NoticeMessage","messages_AuthenticationCleartextPassword","messages_AuthenticationMD5Password","messages_AuthenticationMessage","messages_AuthenticationOk","messages_AuthenticationSASL","messages_AuthenticationSASLContinue","messages_AuthenticationSASLFinal","messages_BackendKeyDataMessage","messages_BackendMessage","messages_CommandCompleteMessage","messages_CopyDataMessage","messages_CopyResponse","messages_DataRowMessage","messages_DatabaseError","messages_Field","messages_MessageName","messages_NoticeMessage","messages_NotificationResponseMessage","messages_ParameterDescriptionMessage","messages_ParameterStatusMessage","messages_ReadyForQueryMessage","messages_RowDescriptionMessage","messages_bindComplete","messages_closeComplete","messages_copyDone","messages_emptyQuery","messages_noData","messages_parseComplete","messages_portalSuspended","messages_replicationStart","messages","IDBFS","Emscripten","FileSystemType","IDBDatabase","Record","quit","dbs","FS","filesystems","MEMFS","NODEFS","PostgresMod","EmscriptenModule","Array","Blob","Promise","Omit","preInit","mod","preRun","postRun","FD_BUFFER_MAX","WASM_PREFIX","INITIAL_MEMORY","pg_extensions","_pgl_initdb","_pgl_backend","_pgl_shutdown","_interactive_write","msgLength","_interactive_one","peek","_set_read_write_cbs","read_cb","write_cb","addFunction","ptr","cb","signature","removeFunction","f","PostgresFactory","T","Partial","moduleOverrides","_default","postgresMod_FS","postgresMod_PostgresMod","postgresMod","default","DumpTarCompressionOptions","PGDATA","FsType","Filesystem","PGlite","File","init","pg","emscriptenOptions","emscriptenOpts","syncToFs","relaxedDurability","initialSyncFs","dumpTar","dbname","compression","closeFs","EmscriptenBuiltinFilesystem","dataDir","_relaxedDurability","BaseFilesystem","debug","FsStats","chmod","path","mode","close","fd","fstat","lstat","mkdir","recursive","options","open","flags","readdir","read","buffer","offset","rename","oldPath","newPath","rmdir","truncate","len","unlink","utimes","atime","mtime","writeFile","encoding","flag","write","dev","ino","nlink","uid","gid","rdev","size","blksize","blocks","ctime","ERRNO_CODES","EBADF","EBADFD","EEXIST","EINVAL","EISDIR","ENODEV","ENOENT","ENOTDIR","ENOTEMPTY","FilesystemType","DebugLevel","RowMode","ParserOptions","pgType","value","SerializerOptions","QueryOptions","rowMode","parsers","serializers","blob","onNotice","notice","paramTypes","ExecProtocolOptions","throwOnError","ExtensionSetupResult","TNamespace","URL","namespaceObj","bundlePath","ExtensionSetup","PGliteInterface","clientOnly","Extension","setup","ExtensionNamespace","Extensions","namespace","InitializedExtensions","TExtensions","K","ExecProtocolResult","DumpDataDirResult","tarball","extension","filename","PGliteOptions","WebAssembly","Module","username","database","fs","extensions","loadDataDir","initialMemory","wasmModule","fsBundle","Results","TemplateStringsArray","DescribeQueryResult","Transaction","waitReady","ready","closed","query","params","sql","sqlStrings","exec","describeQuery","transaction","tx","callback","execProtocolRaw","execProtocol","runExclusive","fn","listen","unlisten","onNotification","offNotification","dumpDataDir","refreshArrayTypes","PGliteInterfaceExtensions","E","ReturnType","Awaited","N","Row","key","rows","affectedRows","rollback","Serializer","Parser","queryParams","serializer","resultFields","parser","BOOL","BYTEA","CHAR","INT8","INT2","INT4","REGPROC","TEXT","OID","TID","XID","CID","JSON","XML","PG_NODE_TREE","SMGR","PATH","POLYGON","CIDR","FLOAT4","FLOAT8","ABSTIME","RELTIME","TINTERVAL","CIRCLE","MACADDR8","MONEY","MACADDR","INET","ACLITEM","BPCHAR","VARCHAR","DATE","TIME","TIMESTAMP","TIMESTAMPTZ","INTERVAL","TIMETZ","BIT","VARBIT","NUMERIC","REFCURSOR","REGPROCEDURE","REGOPER","REGOPERATOR","REGCLASS","REGTYPE","UUID","TXID_SNAPSHOT","PG_LSN","PG_NDISTINCT","PG_DEPENDENCIES","TSVECTOR","TSQUERY","GTSVECTOR","REGCONFIG","REGDICTIONARY","JSONB","REGNAMESPACE","REGROLE","types","Date","string","to","from","serialize","x","parse","number","bigint","json","boolean","date","bytea","typeId","TypeHandler","TypeHandlers","parseType","type","arraySerializer","xs","typarray","arrayParser","types$1_ABSTIME","types$1_ACLITEM","types$1_BIT","types$1_BOOL","types$1_BPCHAR","types$1_BYTEA","types$1_CHAR","types$1_CID","types$1_CIDR","types$1_CIRCLE","types$1_DATE","types$1_FLOAT4","types$1_FLOAT8","types$1_GTSVECTOR","types$1_INET","types$1_INT2","types$1_INT4","types$1_INT8","types$1_INTERVAL","types$1_JSON","types$1_JSONB","types$1_MACADDR","types$1_MACADDR8","types$1_MONEY","types$1_NUMERIC","types$1_OID","types$1_PATH","types$1_PG_DEPENDENCIES","types$1_PG_LSN","types$1_PG_NDISTINCT","types$1_PG_NODE_TREE","types$1_POLYGON","types$1_Parser","types$1_REFCURSOR","types$1_REGCLASS","types$1_REGCONFIG","types$1_REGDICTIONARY","types$1_REGNAMESPACE","types$1_REGOPER","types$1_REGOPERATOR","types$1_REGPROC","types$1_REGPROCEDURE","types$1_REGROLE","types$1_REGTYPE","types$1_RELTIME","types$1_SMGR","types$1_Serializer","types$1_TEXT","types$1_TID","types$1_TIME","types$1_TIMESTAMP","types$1_TIMESTAMPTZ","types$1_TIMETZ","types$1_TINTERVAL","types$1_TSQUERY","types$1_TSVECTOR","types$1_TXID_SNAPSHOT","types$1_TypeHandler","types$1_TypeHandlers","types$1_UUID","types$1_VARBIT","types$1_VARCHAR","types$1_XID","types$1_XML","types$1_arrayParser","types$1_arraySerializer","types$1_parseType","types$1_parsers","types$1_serializers","types$1_types","types$1","BasePGlite","force","Pick","private","execProtocolStream","_handleBlob","_getWrittenBlob","_cleanupBlob","_checkReady","_runExclusiveQuery","_runExclusiveTransaction","_initArrayTypes","O","Symbol","asyncDispose","AsyncDisposable","DEFAULT_RECV_BUF_SIZE","MAX_BUFFER_SIZE","create","execProtocolRawSync","isInTransaction","clone","_runExclusiveListen","A","B","C","D","F","G","I","M","P","Q","R","S","W","a","b","c","d","e","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","y","z"],"sources":["../../../node_modules/.pnpm/@electric-sql+pglite@0.3.15/node_modules/@electric-sql/pglite/dist/pglite-CntadC_p.d.ts"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { createRelationalDb } from "@powerhousedao/reactor";
2
1
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
+ import { createRelationalDb } from "@powerhousedao/reactor";
3
3
  import { Kysely } from "kysely";
4
4
  import { PGliteDialect } from "kysely-pglite-dialect";
5
5
  import deepEqual from "lodash.isequal";
@@ -132,4 +132,4 @@ function createProcessorQuery(ProcessorClass) {
132
132
  //#endregion
133
133
  export { setPGliteDB as i, useRelationalQuery as n, useRelationalDb as r, createProcessorQuery as t };
134
134
 
135
- //# sourceMappingURL=relational-Dj06-YkI.js.map
135
+ //# sourceMappingURL=relational-C_0GdGVN.js.map
@@ -1 +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
+ {"version":3,"file":"relational-C_0GdGVN.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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"}
@@ -0,0 +1,68 @@
1
+ import { t as makePHEventFunctions } from "./make-ph-event-functions-DBq3iWYn.js";
2
+ import { createContext, useContext, useEffect, useState, useSyncExternalStore } from "react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/hooks/loading.ts
5
+ const { useValue: useLoading, setValue: setLoading, addEventHandler: addLoadingEventHandler } = makePHEventFunctions("loading");
6
+ const loading = null;
7
+ //#endregion
8
+ //#region src/renown/initial-user.tsx
9
+ const RENOWN_INITIAL_UNKNOWN = { state: "unknown" };
10
+ const RENOWN_INITIAL_ANONYMOUS = { state: "anonymous" };
11
+ const RenownInitialUserContext = createContext(RENOWN_INITIAL_UNKNOWN);
12
+ function RenownInitialUserProvider({ initialAuth, initialUser, children }) {
13
+ const value = initialAuth ?? (initialUser ? {
14
+ state: "authenticated",
15
+ user: initialUser
16
+ } : RENOWN_INITIAL_UNKNOWN);
17
+ return /* @__PURE__ */ jsx(RenownInitialUserContext.Provider, {
18
+ value,
19
+ children
20
+ });
21
+ }
22
+ /** First-render auth as a three-state value; use this to skip a spinner when anonymous. */
23
+ function useRenownInitialAuth() {
24
+ return useContext(RenownInitialUserContext);
25
+ }
26
+ function useRenownInitialUser() {
27
+ const initial = useRenownInitialAuth();
28
+ return initial.state === "authenticated" ? initial.user : void 0;
29
+ }
30
+ //#endregion
31
+ //#region src/hooks/renown.ts
32
+ const renownEventFunctions = makePHEventFunctions("renown");
33
+ /** Adds an event handler for the renown instance */
34
+ const addRenownEventHandler = renownEventFunctions.addEventHandler;
35
+ /** Returns the renown instance */
36
+ const useRenown = renownEventFunctions.useValue;
37
+ /** Sets the renown instance */
38
+ const setRenown = renownEventFunctions.setValue;
39
+ /** Returns the DID from the renown instance */
40
+ function useDid() {
41
+ return useRenown()?.did;
42
+ }
43
+ /** Returns the current user from the renown instance, subscribing to user events */
44
+ function useUser() {
45
+ const renown = useRenown();
46
+ const initialUser = useRenownInitialUser();
47
+ const instance = renown ? renown : void 0;
48
+ const [user, setUser] = useState(instance ? instance.user : initialUser);
49
+ useEffect(() => {
50
+ if (instance) {
51
+ setUser(instance.user);
52
+ return instance.on("user", setUser);
53
+ }
54
+ }, [instance]);
55
+ return instance ? user : initialUser ?? user;
56
+ }
57
+ /** Returns the login status, subscribing to renown status events */
58
+ function useLoginStatus() {
59
+ const renown = useRenown();
60
+ return useSyncExternalStore((cb) => {
61
+ if (!renown) return () => {};
62
+ return renown.on("status", cb);
63
+ }, () => renown === null ? "loading" : renown?.status, () => void 0);
64
+ }
65
+ //#endregion
66
+ export { useRenown as a, RENOWN_INITIAL_UNKNOWN as c, useRenownInitialUser as d, addLoadingEventHandler as f, useLoading as h, useLoginStatus as i, RenownInitialUserProvider as l, setLoading as m, setRenown as n, useUser as o, loading as p, useDid as r, RENOWN_INITIAL_ANONYMOUS as s, addRenownEventHandler as t, useRenownInitialAuth as u };
67
+
68
+ //# sourceMappingURL=renown-BZabzj4l.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renown-BZabzj4l.js","names":[],"sources":["../src/hooks/loading.ts","../src/renown/initial-user.tsx","../src/hooks/renown.ts"],"sourcesContent":["import type { LOADING } from \"../types/global.js\";\nimport { makePHEventFunctions } from \"./make-ph-event-functions.js\";\n\nexport const {\n useValue: useLoading,\n setValue: setLoading,\n addEventHandler: addLoadingEventHandler,\n} = makePHEventFunctions(\"loading\");\n\nexport const loading: LOADING = null;\n","\"use client\";\n\nimport type { User } from \"@renown/sdk\";\nimport { createContext, useContext, type ReactNode } from \"react\";\n\n/** Whether the first render already knows who (if anyone) is signed in. */\n// \"anonymous\" is load-bearing: it separates a signed-out visitor from an\n// unresolved one, which otherwise both have to render a spinner.\nexport type RenownInitialAuth =\n | { state: \"authenticated\"; user: User }\n | { state: \"anonymous\" }\n | { state: \"unknown\" };\n\nexport const RENOWN_INITIAL_UNKNOWN: RenownInitialAuth = { state: \"unknown\" };\nexport const RENOWN_INITIAL_ANONYMOUS: RenownInitialAuth = {\n state: \"anonymous\",\n};\n\n// Seeds the auth store's first render (server + hydration) from a session\n// cookie or localStorage, enabling authenticated SSR without a flash.\nconst RenownInitialUserContext = createContext<RenownInitialAuth>(\n RENOWN_INITIAL_UNKNOWN,\n);\n\nexport interface RenownInitialUserProviderProps {\n /** Resolved first-render auth (see `RenownProvider`). Takes precedence over `initialUser`. */\n initialAuth?: RenownInitialAuth;\n /** User resolved from a verified session cookie (see `verifyRenownSession`). */\n initialUser?: User;\n children: ReactNode;\n}\n\nexport function RenownInitialUserProvider({\n initialAuth,\n initialUser,\n children,\n}: RenownInitialUserProviderProps) {\n // `initialUser` alone cannot express \"anonymous\" — absence stays \"unknown\".\n const value =\n initialAuth ??\n (initialUser\n ? { state: \"authenticated\" as const, user: initialUser }\n : RENOWN_INITIAL_UNKNOWN);\n return (\n <RenownInitialUserContext.Provider value={value}>\n {children}\n </RenownInitialUserContext.Provider>\n );\n}\n\n/** First-render auth as a three-state value; use this to skip a spinner when anonymous. */\nexport function useRenownInitialAuth(): RenownInitialAuth {\n return useContext(RenownInitialUserContext);\n}\n\nexport function useRenownInitialUser(): User | undefined {\n const initial = useRenownInitialAuth();\n return initial.state === \"authenticated\" ? initial.user : undefined;\n}\n","import type { IRenown, LoginStatus, User } from \"@renown/sdk\";\nimport { useEffect, useState, useSyncExternalStore } from \"react\";\nimport { useRenownInitialUser } from \"../renown/initial-user.js\";\nimport type { LOADING } from \"../types/global.js\";\nimport { loading } from \"./loading.js\";\nimport { makePHEventFunctions } from \"./make-ph-event-functions.js\";\n\nconst renownEventFunctions = makePHEventFunctions(\"renown\");\n\n/** Adds an event handler for the renown instance */\nexport const addRenownEventHandler: () => void =\n renownEventFunctions.addEventHandler;\n\n/** Returns the renown instance */\nexport const useRenown: () => IRenown | LOADING | undefined =\n renownEventFunctions.useValue;\n\n/** Sets the renown instance */\nexport const setRenown: (value: IRenown | LOADING | undefined) => void =\n renownEventFunctions.setValue;\n\n/** Returns the DID from the renown instance */\nexport function useDid() {\n const renown = useRenown();\n return renown?.did;\n}\n\n/** Returns the current user from the renown instance, subscribing to user events */\nexport function useUser(): User | undefined {\n const renown = useRenown();\n // Seed (cookie on the server, localStorage once mounted) covers the first\n // paint; the SDK is authoritative after, so a logout/revoke clears it.\n const initialUser = useRenownInitialUser();\n const instance = renown ? renown : undefined;\n const [user, setUser] = useState<User | undefined>(\n instance ? instance.user : initialUser,\n );\n\n useEffect(() => {\n if (instance) {\n setUser(instance.user);\n return instance.on(\"user\", setUser);\n }\n }, [instance]);\n\n // useState captured only the first render, so defer to the seed until the SDK\n // exists — that is what lands the post-mount localStorage read.\n return instance ? user : (initialUser ?? user);\n}\n\n/** Returns the login status, subscribing to renown status events */\nexport function useLoginStatus(): LoginStatus | \"loading\" | undefined {\n const renown = useRenown();\n return useSyncExternalStore(\n (cb) => {\n if (!renown) {\n return () => {};\n }\n return renown.on(\"status\", cb);\n },\n () => (renown === loading ? \"loading\" : renown?.status),\n () => undefined,\n );\n}\n"],"mappings":";;;;AAGA,MAAa,EACX,UAAU,YACV,UAAU,YACV,iBAAiB,2BACf,qBAAqB,UAAU;AAEnC,MAAa,UAAmB;;;ACIhC,MAAa,yBAA4C,EAAE,OAAO,WAAW;AAC7E,MAAa,2BAA8C,EACzD,OAAO,aACR;AAID,MAAM,2BAA2B,cAC/B,uBACD;AAUD,SAAgB,0BAA0B,EACxC,aACA,aACA,YACiC;CAEjC,MAAM,QACJ,gBACC,cACG;EAAE,OAAO;EAA0B,MAAM;EAAa,GACtD;AACN,QACE,oBAAC,yBAAyB,UAA1B;EAA0C;EACvC;EACiC,CAAA;;;AAKxC,SAAgB,uBAA0C;AACxD,QAAO,WAAW,yBAAyB;;AAG7C,SAAgB,uBAAyC;CACvD,MAAM,UAAU,sBAAsB;AACtC,QAAO,QAAQ,UAAU,kBAAkB,QAAQ,OAAO,KAAA;;;;AClD5D,MAAM,uBAAuB,qBAAqB,SAAS;;AAG3D,MAAa,wBACX,qBAAqB;;AAGvB,MAAa,YACX,qBAAqB;;AAGvB,MAAa,YACX,qBAAqB;;AAGvB,SAAgB,SAAS;AAEvB,QADe,WAAW,EACX;;;AAIjB,SAAgB,UAA4B;CAC1C,MAAM,SAAS,WAAW;CAG1B,MAAM,cAAc,sBAAsB;CAC1C,MAAM,WAAW,SAAS,SAAS,KAAA;CACnC,MAAM,CAAC,MAAM,WAAW,SACtB,WAAW,SAAS,OAAO,YAC5B;AAED,iBAAgB;AACd,MAAI,UAAU;AACZ,WAAQ,SAAS,KAAK;AACtB,UAAO,SAAS,GAAG,QAAQ,QAAQ;;IAEpC,CAAC,SAAS,CAAC;AAId,QAAO,WAAW,OAAQ,eAAe;;;AAI3C,SAAgB,iBAAsD;CACpE,MAAM,SAAS,WAAW;AAC1B,QAAO,sBACJ,OAAO;AACN,MAAI,CAAC,OACH,cAAa;AAEf,SAAO,OAAO,GAAG,UAAU,GAAG;UAEzB,WAAA,OAAqB,YAAY,QAAQ,cAC1C,KAAA,EACP"}