@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.
- package/README.md +283 -0
- package/dist/attachment-service-DTFJRf5j.d.ts +1057 -0
- package/dist/attachment-service-DTFJRf5j.d.ts.map +1 -0
- package/dist/{client-_Gh2Uf0E.js → client-DB8gP4hz.js} +79 -13
- package/dist/client-DB8gP4hz.js.map +1 -0
- package/dist/client-DjkEpwu_.d.ts +14 -0
- package/dist/client-DjkEpwu_.d.ts.map +1 -0
- package/dist/{client-u13cr-Vg.js → client-Zz_l9QzI.js} +30 -3
- package/dist/client-Zz_l9QzI.js.map +1 -0
- package/dist/{document-by-id-dLYFX-xz.js → document-by-id-BSZqTN66.js} +81 -51
- package/dist/document-by-id-BSZqTN66.js.map +1 -0
- package/dist/document-operations-C6nce9dH.js +2928 -0
- package/dist/document-operations-C6nce9dH.js.map +1 -0
- package/dist/global-pg5gy2eZ.d.ts +400 -0
- package/dist/global-pg5gy2eZ.d.ts.map +1 -0
- package/dist/index-CxxxP14A.d.ts +144 -0
- package/dist/index-CxxxP14A.d.ts.map +1 -0
- package/dist/index-DjloxNSR.d.ts +345 -0
- package/dist/index-DjloxNSR.d.ts.map +1 -0
- package/dist/index.d.ts +305 -709
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +608 -1660
- package/dist/index.js.map +1 -1
- package/dist/{inspector-proxy-CvQDDxmT.d.ts → inspector-proxy-CaCFdEG4.d.ts} +4 -2
- package/dist/inspector-proxy-CaCFdEG4.d.ts.map +1 -0
- package/dist/{make-ph-event-functions-BHoLPif5.js → make-ph-event-functions-DBq3iWYn.js} +1 -1
- package/dist/{make-ph-event-functions-BHoLPif5.js.map → make-ph-event-functions-DBq3iWYn.js.map} +1 -1
- package/dist/{index-DS4W07Y8.d.ts → pglite-CntadC_p-BtEalg1H.d.ts} +2 -142
- package/dist/pglite-CntadC_p-BtEalg1H.d.ts.map +1 -0
- package/dist/{relational-Dj06-YkI.js → relational-C_0GdGVN.js} +2 -2
- package/dist/{relational-Dj06-YkI.js.map → relational-C_0GdGVN.js.map} +1 -1
- package/dist/renown-BZabzj4l.js +68 -0
- package/dist/renown-BZabzj4l.js.map +1 -0
- package/dist/{renown-D-1c_Bvx.js → renown-C7a1ygsj.js} +471 -57
- package/dist/renown-C7a1ygsj.js.map +1 -0
- package/dist/src/analytics/index.d.ts +1 -1
- package/dist/src/analytics/index.js +2 -1
- package/dist/src/analytics/index.js.map +1 -1
- package/dist/src/graphql/client.d.ts +3 -2
- package/dist/src/graphql/client.js +1 -1
- package/dist/src/graphql-client/entry.d.ts +4 -0
- package/dist/src/graphql-client/entry.js +3 -0
- package/dist/src/relational/index.d.ts +1 -1
- package/dist/src/relational/index.js +1 -1
- package/dist/src/renown/index.d.ts +2 -2
- package/dist/src/renown/index.js +3 -2
- package/dist/src/rpc/index.d.ts +6 -3
- package/dist/src/rpc/index.d.ts.map +1 -1
- package/dist/src/rpc/index.js +41 -10
- package/dist/src/rpc/index.js.map +1 -1
- package/dist/store-DAJq6vSs.js +37 -0
- package/dist/store-DAJq6vSs.js.map +1 -0
- package/dist/{client-09xv0Dq6.d.ts → types-4rfAFZQd.d.ts} +87 -19
- package/dist/types-4rfAFZQd.d.ts.map +1 -0
- package/dist/{types-CPV0Cnsy.d.ts → types-wGaiXwjh.d.ts} +1 -1
- package/dist/{types-CPV0Cnsy.d.ts.map → types-wGaiXwjh.d.ts.map} +1 -1
- package/package.json +16 -10
- package/dist/client-09xv0Dq6.d.ts.map +0 -1
- package/dist/client-_Gh2Uf0E.js.map +0 -1
- package/dist/client-u13cr-Vg.js.map +0 -1
- package/dist/document-by-id-dLYFX-xz.js.map +0 -1
- package/dist/index-D3bV5rcl.d.ts +0 -216
- package/dist/index-D3bV5rcl.d.ts.map +0 -1
- package/dist/index-DS4W07Y8.d.ts.map +0 -1
- package/dist/inspector-proxy-CvQDDxmT.d.ts.map +0 -1
- 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-
|
|
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":"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"}
|
package/dist/{make-ph-event-functions-BHoLPif5.js.map → make-ph-event-functions-DBq3iWYn.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-ph-event-functions-
|
|
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
|
-
|
|
543
|
-
|
|
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-
|
|
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"}
|