@risingwave/wavelet-sdk 0.2.1 → 0.2.4

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/browser/client.js CHANGED
@@ -92,7 +92,12 @@ export class WaveletClient {
92
92
  ws.onmessage = (event) => {
93
93
  try {
94
94
  const msg = JSON.parse(typeof event.data === 'string' ? event.data : '');
95
- if (msg.type === 'diff') {
95
+ if (msg.type === 'snapshot') {
96
+ handlers.onSnapshot?.({
97
+ rows: msg.rows ?? [],
98
+ });
99
+ }
100
+ else if (msg.type === 'diff') {
96
101
  lastCursor = msg.cursor;
97
102
  handlers.onData({
98
103
  cursor: msg.cursor,
package/browser/react.js CHANGED
@@ -1,4 +1,4 @@
1
- import { useState, useEffect, useRef } from 'react';
1
+ import { useState, useEffect, useRef, useCallback } from 'react';
2
2
  import { WaveletClient } from './client.js';
3
3
  import { WaveletError } from './types.js';
4
4
  let globalClient = null;
@@ -21,21 +21,30 @@ export function useWavelet(queryName, options) {
21
21
  useEffect(() => {
22
22
  const client = getClient();
23
23
  let cancelled = false;
24
- // Initial fetch
25
- client.query(queryName).get(params).then((rows) => {
26
- if (cancelled)
27
- return;
28
- dataRef.current = rows;
29
- setData(rows);
30
- setIsLoading(false);
31
- }).catch((err) => {
32
- if (cancelled)
33
- return;
34
- setError(err instanceof WaveletError ? err : new WaveletError(err.message, 'SERVER_ERROR'));
35
- setIsLoading(false);
36
- });
24
+ const useSnapshotHydration = !params;
25
+ if (!useSnapshotHydration) {
26
+ client.query(queryName).get(params).then((rows) => {
27
+ if (cancelled)
28
+ return;
29
+ dataRef.current = rows;
30
+ setData(rows);
31
+ setIsLoading(false);
32
+ }).catch((err) => {
33
+ if (cancelled)
34
+ return;
35
+ setError(err instanceof WaveletError ? err : new WaveletError(err.message, 'SERVER_ERROR'));
36
+ setIsLoading(false);
37
+ });
38
+ }
37
39
  // Subscribe to updates
38
40
  const unsub = client.query(queryName).subscribe({
41
+ onSnapshot: (snapshot) => {
42
+ if (cancelled || !useSnapshotHydration)
43
+ return;
44
+ dataRef.current = snapshot.rows;
45
+ setData(snapshot.rows);
46
+ setIsLoading(false);
47
+ },
39
48
  onData: (diff) => {
40
49
  if (cancelled)
41
50
  return;
@@ -60,6 +69,84 @@ export function useWavelet(queryName, options) {
60
69
  }, [queryName, keyBy, JSON.stringify(params)]);
61
70
  return { data, isLoading, error };
62
71
  }
72
+ /**
73
+ * Like useWavelet, but tracks which rows changed in the last diff cycle.
74
+ * `changes` is a Map from keyBy value to change type, cleared after `changeDuration` ms.
75
+ * `keyBy` is required.
76
+ */
77
+ export function useWaveletDiff(queryName, options) {
78
+ const { keyBy, params, changeDuration = 500 } = options;
79
+ const [data, setData] = useState([]);
80
+ const [changes, setChanges] = useState(new Map());
81
+ const [isLoading, setIsLoading] = useState(true);
82
+ const [error, setError] = useState(null);
83
+ const dataRef = useRef([]);
84
+ const clearTimerRef = useRef(undefined);
85
+ const applyDiff = useCallback((diff) => {
86
+ const newChanges = new Map();
87
+ dataRef.current = mergeByKey(dataRef.current, diff, keyBy);
88
+ for (const row of diff.inserted) {
89
+ newChanges.set(row[keyBy], 'inserted');
90
+ }
91
+ for (const row of diff.updated) {
92
+ newChanges.set(row[keyBy], 'updated');
93
+ }
94
+ for (const row of diff.deleted) {
95
+ newChanges.set(row[keyBy], 'deleted');
96
+ }
97
+ setData([...dataRef.current]);
98
+ setChanges(newChanges);
99
+ if (clearTimerRef.current)
100
+ clearTimeout(clearTimerRef.current);
101
+ clearTimerRef.current = setTimeout(() => setChanges(new Map()), changeDuration);
102
+ }, [keyBy, changeDuration]);
103
+ useEffect(() => {
104
+ const client = getClient();
105
+ let cancelled = false;
106
+ const useSnapshotHydration = !params;
107
+ if (!useSnapshotHydration) {
108
+ client.query(queryName).get(params).then((rows) => {
109
+ if (cancelled)
110
+ return;
111
+ dataRef.current = rows;
112
+ setData(rows);
113
+ setIsLoading(false);
114
+ }).catch((err) => {
115
+ if (cancelled)
116
+ return;
117
+ setError(err instanceof WaveletError ? err : new WaveletError(err.message, 'SERVER_ERROR'));
118
+ setIsLoading(false);
119
+ });
120
+ }
121
+ const unsub = client.query(queryName).subscribe({
122
+ onSnapshot: (snapshot) => {
123
+ if (cancelled || !useSnapshotHydration)
124
+ return;
125
+ dataRef.current = snapshot.rows;
126
+ setData(snapshot.rows);
127
+ setChanges(new Map());
128
+ setIsLoading(false);
129
+ },
130
+ onData: (diff) => {
131
+ if (cancelled)
132
+ return;
133
+ applyDiff(diff);
134
+ },
135
+ onError: (err) => {
136
+ if (cancelled)
137
+ return;
138
+ setError(err);
139
+ },
140
+ });
141
+ return () => {
142
+ cancelled = true;
143
+ unsub();
144
+ if (clearTimerRef.current)
145
+ clearTimeout(clearTimerRef.current);
146
+ };
147
+ }, [queryName, keyBy, JSON.stringify(params), applyDiff]);
148
+ return { data, changes, isLoading, error };
149
+ }
63
150
  /**
64
151
  * Key-based merge: uses a specified field as primary key.
65
152
  * O(n) using a Map, no JSON.stringify needed.
@@ -127,6 +127,80 @@ const types_js_1 = require("../types.js");
127
127
  });
128
128
  });
129
129
  });
130
+ (0, vitest_1.describe)('query().subscribe()', () => {
131
+ class MockWebSocket {
132
+ static instances = [];
133
+ url;
134
+ onopen = null;
135
+ onmessage = null;
136
+ onclose = null;
137
+ onerror = null;
138
+ constructor(url) {
139
+ this.url = url;
140
+ MockWebSocket.instances.push(this);
141
+ }
142
+ emitOpen() {
143
+ this.onopen?.();
144
+ }
145
+ emitMessage(message) {
146
+ this.onmessage?.({ data: JSON.stringify(message) });
147
+ }
148
+ close(code = 1000, reason = '') {
149
+ this.onclose?.({ code, reason });
150
+ }
151
+ }
152
+ (0, vitest_1.beforeEach)(() => {
153
+ MockWebSocket.instances = [];
154
+ vitest_1.vi.stubGlobal('WebSocket', MockWebSocket);
155
+ });
156
+ (0, vitest_1.afterEach)(() => {
157
+ vitest_1.vi.unstubAllGlobals();
158
+ vitest_1.vi.useRealTimers();
159
+ });
160
+ (0, vitest_1.it)('delivers snapshot frames to onSnapshot', () => {
161
+ const client = new client_js_1.WaveletClient({ url: 'http://localhost:8080' });
162
+ const onSnapshot = vitest_1.vi.fn();
163
+ const onData = vitest_1.vi.fn();
164
+ client.query('leaderboard').subscribe({
165
+ onSnapshot,
166
+ onData,
167
+ });
168
+ const ws = MockWebSocket.instances[0];
169
+ ws.emitOpen();
170
+ ws.emitMessage({
171
+ type: 'snapshot',
172
+ query: 'leaderboard',
173
+ rows: [{ player_id: 'alice', score: 42 }],
174
+ });
175
+ (0, vitest_1.expect)(onSnapshot).toHaveBeenCalledWith({
176
+ rows: [{ player_id: 'alice', score: 42 }],
177
+ });
178
+ (0, vitest_1.expect)(onData).not.toHaveBeenCalled();
179
+ });
180
+ (0, vitest_1.it)('keeps diff delivery unchanged', () => {
181
+ const client = new client_js_1.WaveletClient({ url: 'http://localhost:8080' });
182
+ const onData = vitest_1.vi.fn();
183
+ client.query('leaderboard').subscribe({
184
+ onData,
185
+ });
186
+ const ws = MockWebSocket.instances[0];
187
+ ws.emitOpen();
188
+ ws.emitMessage({
189
+ type: 'diff',
190
+ query: 'leaderboard',
191
+ cursor: '123',
192
+ inserted: [{ player_id: 'alice', score: 42 }],
193
+ updated: [],
194
+ deleted: [],
195
+ });
196
+ (0, vitest_1.expect)(onData).toHaveBeenCalledWith({
197
+ cursor: '123',
198
+ inserted: [{ player_id: 'alice', score: 42 }],
199
+ updated: [],
200
+ deleted: [],
201
+ });
202
+ });
203
+ });
130
204
  (0, vitest_1.describe)('event().emit()', () => {
131
205
  let fetchSpy;
132
206
  (0, vitest_1.beforeEach)(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../src/__tests__/client.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../src/__tests__/client.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAwC,MAAM,YAAY,CAAA;AAGtH,qBAAa,aAAa;IAKZ,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,aAAa,CAAgC;gBAEjC,OAAO,EAAE,oBAAoB;IAmBjD,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAOhE,sCAAsC;IACtC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAI/D,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAOhE,sCAAsC;IACtC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;YAInD,QAAQ;IA0BtB,OAAO,CAAC,cAAc;YA0ER,SAAS;YAkBT,SAAS;CAiBxB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAwC,MAAM,YAAY,CAAA;AAGtH,qBAAa,aAAa;IAKZ,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,aAAa,CAAgC;gBAEjC,OAAO,EAAE,oBAAoB;IAmBjD,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAOhE,sCAAsC;IACtC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAI/D,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAOhE,sCAAsC;IACtC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;YAInD,QAAQ;IA0BtB,OAAO,CAAC,cAAc;YA8ER,SAAS;YAkBT,SAAS;CAiBxB"}
package/dist/client.js CHANGED
@@ -95,7 +95,12 @@ class WaveletClient {
95
95
  ws.onmessage = (event) => {
96
96
  try {
97
97
  const msg = JSON.parse(typeof event.data === 'string' ? event.data : '');
98
- if (msg.type === 'diff') {
98
+ if (msg.type === 'snapshot') {
99
+ handlers.onSnapshot?.({
100
+ rows: msg.rows ?? [],
101
+ });
102
+ }
103
+ else if (msg.type === 'diff') {
99
104
  lastCursor = msg.cursor;
100
105
  handlers.onData({
101
106
  cursor: msg.cursor,
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export { WaveletClient } from './client.js';
2
- export type { WaveletClientOptions, QueryHandle, EventHandle, ViewHandle, StreamHandle, Diff, Unsubscribe } from './types.js';
2
+ export type { WaveletClientOptions, QueryHandle, EventHandle, ViewHandle, StreamHandle, Diff, Snapshot, Unsubscribe } from './types.js';
3
3
  //# sourceMappingURL=index.browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.browser.d.ts","sourceRoot":"","sources":["../src/index.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { WaveletClient } from './client.js';
2
- export type { WaveletClientOptions, QueryHandle, EventHandle, ViewHandle, StreamHandle, Diff, Unsubscribe } from './types.js';
2
+ export type { WaveletClientOptions, QueryHandle, EventHandle, ViewHandle, StreamHandle, Diff, Snapshot, Unsubscribe } from './types.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,YAAY,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA"}
package/dist/react.d.ts CHANGED
@@ -13,4 +13,23 @@ export interface UseWaveletResult<T> {
13
13
  error: WaveletError | null;
14
14
  }
15
15
  export declare function useWavelet<T = Record<string, unknown>>(queryName: string, options?: UseWaveletOptions): UseWaveletResult<T>;
16
+ export type ChangeType = 'inserted' | 'updated' | 'deleted';
17
+ export interface UseWaveletDiffOptions {
18
+ keyBy: string;
19
+ params?: Record<string, string>;
20
+ /** How long change markers persist in ms (default 500) */
21
+ changeDuration?: number;
22
+ }
23
+ export interface UseWaveletDiffResult<T> {
24
+ data: T[];
25
+ changes: Map<unknown, ChangeType>;
26
+ isLoading: boolean;
27
+ error: WaveletError | null;
28
+ }
29
+ /**
30
+ * Like useWavelet, but tracks which rows changed in the last diff cycle.
31
+ * `changes` is a Map from keyBy value to change type, cleared after `changeDuration` ms.
32
+ * `keyBy` is required.
33
+ */
34
+ export declare function useWaveletDiff<T = Record<string, unknown>>(queryName: string, options: UseWaveletDiffOptions): UseWaveletDiffResult<T>;
16
35
  //# sourceMappingURL=react.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAQ,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAIzC,wBAAgB,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAE/D;AAED,wBAAgB,SAAS,IAAI,aAAa,CAQzC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;CAC3B;AAED,wBAAgB,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpD,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAAC,CAAC,CAAC,CAkDrB"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,KAAK,EAAQ,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAIzC,wBAAgB,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAE/D;AAED,wBAAgB,SAAS,IAAI,aAAa,CAQzC;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;CAC3B;AAED,wBAAgB,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpD,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAAC,CAAC,CAAC,CA0DrB;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAA;AAE3D,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,IAAI,EAAE,CAAC,EAAE,CAAA;IACT,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAA;IACjC,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxD,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CAAC,CAAC,CAAC,CA4EzB"}
package/dist/react.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.initWavelet = initWavelet;
4
4
  exports.getClient = getClient;
5
5
  exports.useWavelet = useWavelet;
6
+ exports.useWaveletDiff = useWaveletDiff;
6
7
  const react_1 = require("react");
7
8
  const client_js_1 = require("./client.js");
8
9
  const types_js_1 = require("./types.js");
@@ -26,21 +27,30 @@ function useWavelet(queryName, options) {
26
27
  (0, react_1.useEffect)(() => {
27
28
  const client = getClient();
28
29
  let cancelled = false;
29
- // Initial fetch
30
- client.query(queryName).get(params).then((rows) => {
31
- if (cancelled)
32
- return;
33
- dataRef.current = rows;
34
- setData(rows);
35
- setIsLoading(false);
36
- }).catch((err) => {
37
- if (cancelled)
38
- return;
39
- setError(err instanceof types_js_1.WaveletError ? err : new types_js_1.WaveletError(err.message, 'SERVER_ERROR'));
40
- setIsLoading(false);
41
- });
30
+ const useSnapshotHydration = !params;
31
+ if (!useSnapshotHydration) {
32
+ client.query(queryName).get(params).then((rows) => {
33
+ if (cancelled)
34
+ return;
35
+ dataRef.current = rows;
36
+ setData(rows);
37
+ setIsLoading(false);
38
+ }).catch((err) => {
39
+ if (cancelled)
40
+ return;
41
+ setError(err instanceof types_js_1.WaveletError ? err : new types_js_1.WaveletError(err.message, 'SERVER_ERROR'));
42
+ setIsLoading(false);
43
+ });
44
+ }
42
45
  // Subscribe to updates
43
46
  const unsub = client.query(queryName).subscribe({
47
+ onSnapshot: (snapshot) => {
48
+ if (cancelled || !useSnapshotHydration)
49
+ return;
50
+ dataRef.current = snapshot.rows;
51
+ setData(snapshot.rows);
52
+ setIsLoading(false);
53
+ },
44
54
  onData: (diff) => {
45
55
  if (cancelled)
46
56
  return;
@@ -65,6 +75,84 @@ function useWavelet(queryName, options) {
65
75
  }, [queryName, keyBy, JSON.stringify(params)]);
66
76
  return { data, isLoading, error };
67
77
  }
78
+ /**
79
+ * Like useWavelet, but tracks which rows changed in the last diff cycle.
80
+ * `changes` is a Map from keyBy value to change type, cleared after `changeDuration` ms.
81
+ * `keyBy` is required.
82
+ */
83
+ function useWaveletDiff(queryName, options) {
84
+ const { keyBy, params, changeDuration = 500 } = options;
85
+ const [data, setData] = (0, react_1.useState)([]);
86
+ const [changes, setChanges] = (0, react_1.useState)(new Map());
87
+ const [isLoading, setIsLoading] = (0, react_1.useState)(true);
88
+ const [error, setError] = (0, react_1.useState)(null);
89
+ const dataRef = (0, react_1.useRef)([]);
90
+ const clearTimerRef = (0, react_1.useRef)(undefined);
91
+ const applyDiff = (0, react_1.useCallback)((diff) => {
92
+ const newChanges = new Map();
93
+ dataRef.current = mergeByKey(dataRef.current, diff, keyBy);
94
+ for (const row of diff.inserted) {
95
+ newChanges.set(row[keyBy], 'inserted');
96
+ }
97
+ for (const row of diff.updated) {
98
+ newChanges.set(row[keyBy], 'updated');
99
+ }
100
+ for (const row of diff.deleted) {
101
+ newChanges.set(row[keyBy], 'deleted');
102
+ }
103
+ setData([...dataRef.current]);
104
+ setChanges(newChanges);
105
+ if (clearTimerRef.current)
106
+ clearTimeout(clearTimerRef.current);
107
+ clearTimerRef.current = setTimeout(() => setChanges(new Map()), changeDuration);
108
+ }, [keyBy, changeDuration]);
109
+ (0, react_1.useEffect)(() => {
110
+ const client = getClient();
111
+ let cancelled = false;
112
+ const useSnapshotHydration = !params;
113
+ if (!useSnapshotHydration) {
114
+ client.query(queryName).get(params).then((rows) => {
115
+ if (cancelled)
116
+ return;
117
+ dataRef.current = rows;
118
+ setData(rows);
119
+ setIsLoading(false);
120
+ }).catch((err) => {
121
+ if (cancelled)
122
+ return;
123
+ setError(err instanceof types_js_1.WaveletError ? err : new types_js_1.WaveletError(err.message, 'SERVER_ERROR'));
124
+ setIsLoading(false);
125
+ });
126
+ }
127
+ const unsub = client.query(queryName).subscribe({
128
+ onSnapshot: (snapshot) => {
129
+ if (cancelled || !useSnapshotHydration)
130
+ return;
131
+ dataRef.current = snapshot.rows;
132
+ setData(snapshot.rows);
133
+ setChanges(new Map());
134
+ setIsLoading(false);
135
+ },
136
+ onData: (diff) => {
137
+ if (cancelled)
138
+ return;
139
+ applyDiff(diff);
140
+ },
141
+ onError: (err) => {
142
+ if (cancelled)
143
+ return;
144
+ setError(err);
145
+ },
146
+ });
147
+ return () => {
148
+ cancelled = true;
149
+ unsub();
150
+ if (clearTimerRef.current)
151
+ clearTimeout(clearTimerRef.current);
152
+ };
153
+ }, [queryName, keyBy, JSON.stringify(params), applyDiff]);
154
+ return { data, changes, isLoading, error };
155
+ }
68
156
  /**
69
157
  * Key-based merge: uses a specified field as primary key.
70
158
  * O(n) using a Map, no JSON.stringify needed.
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -8,6 +8,9 @@ export interface Diff<T = Record<string, unknown>> {
8
8
  updated: T[];
9
9
  deleted: T[];
10
10
  }
11
+ export interface Snapshot<T = Record<string, unknown>> {
12
+ rows: T[];
13
+ }
11
14
  export interface QueryHandle<T = Record<string, unknown>> {
12
15
  get(params?: Record<string, string>): Promise<T[]>;
13
16
  subscribe(handlers: SubscribeHandlers<T>): Unsubscribe;
@@ -22,6 +25,7 @@ export interface EventHandle<T = Record<string, unknown>> {
22
25
  export type StreamHandle<T = Record<string, unknown>> = EventHandle<T>;
23
26
  export interface SubscribeHandlers<T> {
24
27
  onOpen?: () => void;
28
+ onSnapshot?: (snapshot: Snapshot<T>) => void;
25
29
  onData: (diff: Diff<T>) => void;
26
30
  onError?: (error: WaveletError) => void;
27
31
  onReconnect?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;CAClD;AAED,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,CAAC,EAAE,CAAA;IACb,OAAO,EAAE,CAAC,EAAE,CAAA;IACZ,OAAO,EAAE,CAAC,EAAE,CAAA;CACb;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;IAClD,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAA;CACvD;AAED,0CAA0C;AAC1C,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;AAEpE,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC;AAED,0CAA0C;AAC1C,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;AAEtE,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;IACvC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAA;AAEpC,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,cAAc,CAAA;AAExH,qBAAa,YAAa,SAAQ,KAAK;aAGnB,IAAI,EAAE,gBAAgB;gBADtC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,gBAAgB;CAKzC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;CAClD;AAED,MAAM,WAAW,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,CAAC,EAAE,CAAA;IACb,OAAO,EAAE,CAAC,EAAE,CAAA;IACZ,OAAO,EAAE,CAAC,EAAE,CAAA;CACb;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACnD,IAAI,EAAE,CAAC,EAAE,CAAA;CACV;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAA;IAClD,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAA;CACvD;AAED,0CAA0C;AAC1C,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;AAEpE,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC;AAED,0CAA0C;AAC1C,MAAM,MAAM,YAAY,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;AAEtE,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC5C,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;IACvC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;CACzB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAA;AAEpC,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,cAAc,CAAA;AAExH,qBAAa,YAAa,SAAQ,KAAK;aAGnB,IAAI,EAAE,gBAAgB;gBADtC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,gBAAgB;CAKzC"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAuCA,MAAa,YAAa,SAAQ,KAAK;IAGnB;IAFlB,YACE,OAAe,EACC,IAAsB;QAEtC,KAAK,CAAC,OAAO,CAAC,CAAA;QAFE,SAAI,GAAJ,IAAI,CAAkB;QAGtC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF;AARD,oCAQC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA4CA,MAAa,YAAa,SAAQ,KAAK;IAGnB;IAFlB,YACE,OAAe,EACC,IAAsB;QAEtC,KAAK,CAAC,OAAO,CAAC,CAAA;QAFE,SAAI,GAAJ,IAAI,CAAkB;QAGtC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAA;IAC5B,CAAC;CACF;AARD,oCAQC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@risingwave/wavelet-sdk",
3
- "version": "0.2.1",
3
+ "version": "0.2.4",
4
4
  "description": "Wavelet TypeScript SDK - subscribe to computed results",
5
5
  "homepage": "https://github.com/risingwavelabs/wavelet",
6
6
  "repository": {