Skip to content

Commit 59a27a5

Browse files
vchaindzclaude
andcommitted
feat: Integrate latest JSONIC client with React compatibility solution
- Update to latest JSONIC WASM files (jsonic_wasm.js, jsonic_wasm_bg.wasm, jsonic_wasm.d.ts) - Add React bindings with createJSONICHooks pattern that accepts React as parameter - Implement React compatibility factory pattern to resolve forwardRef issues - Enhanced setup-react-global.ts with JSONIC-specific React integration - Ensures React ecosystem is properly available before any component initialization - Follows latest ../jsonic client implementation for maximum compatibility 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent 452799e commit 59a27a5

File tree

7 files changed

+196
-898
lines changed

7 files changed

+196
-898
lines changed

public/data/database.jsonic

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

public/data/database.jsonic.gz

-4 Bytes
Binary file not shown.

public/jsonic_wasm.d.ts

Lines changed: 3 additions & 191 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ export class JsonDB {
5555
*/
5656
query(query_json: string): any;
5757
/**
58-
* Query documents with options (sort, projection, etc.)
58+
* Query documents with options (sort, projection, etc.) - optimized version
5959
*/
6060
query_with_options(query_json: string, options_json: string): any;
6161
/**
@@ -89,157 +89,6 @@ export class JsonDB {
8989
*/
9090
clear(): any;
9191
}
92-
/**
93-
* Query subscription for reactive updates
94-
*/
95-
export class QuerySubscription {
96-
free(): void;
97-
/**
98-
* Create a new subscription
99-
*/
100-
constructor(query: string);
101-
/**
102-
* Pause the subscription
103-
*/
104-
pause(): void;
105-
/**
106-
* Resume the subscription
107-
*/
108-
resume(): void;
109-
/**
110-
* Set update callback
111-
*/
112-
on_update(callback: Function): void;
113-
/**
114-
* Trigger an update
115-
*/
116-
notify(update: any): void;
117-
/**
118-
* Get subscription ID
119-
*/
120-
readonly id: string;
121-
/**
122-
* Check if subscription is active
123-
*/
124-
readonly active: boolean;
125-
}
126-
/**
127-
* Reactive database with real-time updates
128-
*/
129-
export class ReactiveDB {
130-
free(): void;
131-
/**
132-
* Create a new reactive database
133-
*/
134-
constructor();
135-
/**
136-
* Enable cross-tab synchronization
137-
*/
138-
enable_cross_tab_sync(channel_name: string): void;
139-
/**
140-
* Create a reactive view
141-
*/
142-
create_view(query: string): ReactiveView;
143-
/**
144-
* Subscribe to query changes
145-
*/
146-
subscribe(query: string, callback: Function): QuerySubscription;
147-
/**
148-
* Broadcast a change to all tabs
149-
*/
150-
broadcast_change(change: any): void;
151-
/**
152-
* Process a local change and notify subscribers
153-
*/
154-
process_change(change: any): void;
155-
}
156-
/**
157-
* Utilities for working with reactive features
158-
*/
159-
export class ReactiveUtils {
160-
private constructor();
161-
free(): void;
162-
/**
163-
* Check if SharedArrayBuffer is available
164-
*/
165-
static is_shared_memory_available(): boolean;
166-
/**
167-
* Check if BroadcastChannel is available
168-
*/
169-
static is_broadcast_channel_available(): boolean;
170-
/**
171-
* Create a change event
172-
*/
173-
static create_change_event(change_type: string, document_id: string, document: any): any;
174-
/**
175-
* Create an update notification
176-
*/
177-
static create_update(added: Array<any>, removed: Array<any>, updated: Array<any>): any;
178-
}
179-
/**
180-
* JavaScript-friendly reactive view
181-
*/
182-
export class ReactiveView {
183-
free(): void;
184-
/**
185-
* Create a new reactive view with a query
186-
*/
187-
constructor(query: string);
188-
/**
189-
* Set callback for updates
190-
*/
191-
on_update(callback: Function): void;
192-
/**
193-
* Enable cross-tab synchronization
194-
*/
195-
enable_cross_tab(channel_name: string): void;
196-
/**
197-
* Broadcast an update to other tabs
198-
*/
199-
broadcast_update(data: any): void;
200-
/**
201-
* Get the view ID
202-
*/
203-
readonly id: string;
204-
/**
205-
* Get the query
206-
*/
207-
readonly query: string;
208-
}
209-
/**
210-
* SharedArrayBuffer wrapper for zero-copy data transfer
211-
*/
212-
export class SharedBuffer {
213-
free(): void;
214-
/**
215-
* Create a new shared buffer
216-
*/
217-
constructor(size: number);
218-
/**
219-
* Write data to the buffer
220-
*/
221-
write(data: Uint8Array): number;
222-
/**
223-
* Read data from the buffer
224-
*/
225-
read(length: number): Uint8Array;
226-
/**
227-
* Reset the buffer position
228-
*/
229-
reset(): void;
230-
/**
231-
* Get the underlying SharedArrayBuffer
232-
*/
233-
readonly buffer: SharedArrayBuffer;
234-
/**
235-
* Get current position
236-
*/
237-
readonly position: number;
238-
/**
239-
* Get buffer size
240-
*/
241-
readonly size: number;
242-
}
24392
/**
24493
* WASM bindings for SharedArrayBuffer
24594
*/
@@ -275,41 +124,6 @@ export interface InitOutput {
275124
readonly jsondb_list_indexes: (a: number, b: number) => void;
276125
readonly jsondb_aggregate: (a: number, b: number, c: number, d: number) => void;
277126
readonly jsondb_clear: (a: number, b: number) => void;
278-
readonly __wbg_reactiveview_free: (a: number, b: number) => void;
279-
readonly reactiveview_new: (a: number, b: number, c: number) => void;
280-
readonly reactiveview_id: (a: number, b: number) => void;
281-
readonly reactiveview_query: (a: number, b: number) => void;
282-
readonly reactiveview_on_update: (a: number, b: number) => void;
283-
readonly reactiveview_enable_cross_tab: (a: number, b: number, c: number, d: number) => void;
284-
readonly reactiveview_broadcast_update: (a: number, b: number, c: number) => void;
285-
readonly __wbg_querysubscription_free: (a: number, b: number) => void;
286-
readonly querysubscription_new: (a: number, b: number) => number;
287-
readonly querysubscription_id: (a: number, b: number) => void;
288-
readonly querysubscription_active: (a: number) => number;
289-
readonly querysubscription_pause: (a: number) => void;
290-
readonly querysubscription_resume: (a: number) => void;
291-
readonly querysubscription_on_update: (a: number, b: number) => void;
292-
readonly querysubscription_notify: (a: number, b: number, c: number) => void;
293-
readonly __wbg_reactivedb_free: (a: number, b: number) => void;
294-
readonly reactivedb_new: () => number;
295-
readonly reactivedb_enable_cross_tab_sync: (a: number, b: number, c: number, d: number) => void;
296-
readonly reactivedb_create_view: (a: number, b: number, c: number, d: number) => void;
297-
readonly reactivedb_subscribe: (a: number, b: number, c: number, d: number) => number;
298-
readonly reactivedb_broadcast_change: (a: number, b: number, c: number) => void;
299-
readonly reactivedb_process_change: (a: number, b: number, c: number) => void;
300-
readonly __wbg_sharedbuffer_free: (a: number, b: number) => void;
301-
readonly sharedbuffer_new: (a: number, b: number) => void;
302-
readonly sharedbuffer_buffer: (a: number) => number;
303-
readonly sharedbuffer_write: (a: number, b: number, c: number, d: number) => void;
304-
readonly sharedbuffer_read: (a: number, b: number, c: number) => void;
305-
readonly sharedbuffer_reset: (a: number) => void;
306-
readonly sharedbuffer_position: (a: number) => number;
307-
readonly sharedbuffer_size: (a: number) => number;
308-
readonly __wbg_reactiveutils_free: (a: number, b: number) => void;
309-
readonly reactiveutils_is_shared_memory_available: () => number;
310-
readonly reactiveutils_is_broadcast_channel_available: () => number;
311-
readonly reactiveutils_create_change_event: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
312-
readonly reactiveutils_create_update: (a: number, b: number, c: number, d: number) => void;
313127
readonly init: () => void;
314128
readonly __wbg_wasmsharedbuffer_free: (a: number, b: number) => void;
315129
readonly wasmsharedbuffer_new: (a: number) => number;
@@ -320,11 +134,9 @@ export interface InitOutput {
320134
readonly wasmsharedbuffer_reset: (a: number) => void;
321135
readonly __wbindgen_export_0: (a: number, b: number) => number;
322136
readonly __wbindgen_export_1: (a: number, b: number, c: number, d: number) => number;
323-
readonly __wbindgen_export_2: (a: number) => void;
324-
readonly __wbindgen_export_3: (a: number, b: number, c: number) => void;
325-
readonly __wbindgen_export_4: WebAssembly.Table;
137+
readonly __wbindgen_export_2: (a: number, b: number, c: number) => void;
138+
readonly __wbindgen_export_3: (a: number) => void;
326139
readonly __wbindgen_add_to_stack_pointer: (a: number) => number;
327-
readonly __wbindgen_export_5: (a: number, b: number, c: number) => void;
328140
}
329141

330142
export type SyncInitInput = BufferSource | WebAssembly.Module;

0 commit comments

Comments
 (0)