@pol-studios/db 1.0.9 → 1.0.11

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 (113) hide show
  1. package/dist/DataLayerContext-CL6alnkb.d.ts +755 -0
  2. package/dist/UserMetadataContext-B8gVWGMl.d.ts +35 -0
  3. package/dist/UserMetadataContext-DntmpK41.d.ts +33 -0
  4. package/dist/auth/context.d.ts +3 -2
  5. package/dist/auth/context.js +22 -12786
  6. package/dist/auth/context.js.map +1 -1
  7. package/dist/auth/guards.js +12 -7640
  8. package/dist/auth/guards.js.map +1 -1
  9. package/dist/auth/hooks.d.ts +3 -3
  10. package/dist/auth/hooks.js +26 -10591
  11. package/dist/auth/hooks.js.map +1 -1
  12. package/dist/auth/index.d.ts +3 -2
  13. package/dist/auth/index.js +45 -13008
  14. package/dist/auth/index.js.map +1 -1
  15. package/dist/{canvas-UVNDA54X.node → canvas-C4TBBDUL.node} +0 -0
  16. package/dist/canvas-ZQNCL7JL.js +1541 -0
  17. package/dist/canvas-ZQNCL7JL.js.map +1 -0
  18. package/dist/chunk-3PJTNH2L.js +2778 -0
  19. package/dist/chunk-3PJTNH2L.js.map +1 -0
  20. package/dist/chunk-5EFDS7SR.js +205 -0
  21. package/dist/chunk-5EFDS7SR.js.map +1 -0
  22. package/dist/chunk-7SCJNYTE.js +1459 -0
  23. package/dist/chunk-7SCJNYTE.js.map +1 -0
  24. package/dist/chunk-DJ6VLEAL.js +247 -0
  25. package/dist/chunk-DJ6VLEAL.js.map +1 -0
  26. package/dist/chunk-GC3TBUWE.js +14 -0
  27. package/dist/chunk-GC3TBUWE.js.map +1 -0
  28. package/dist/chunk-H3LNH2NT.js +611 -0
  29. package/dist/chunk-H3LNH2NT.js.map +1 -0
  30. package/dist/chunk-H6365JPC.js +1858 -0
  31. package/dist/chunk-H6365JPC.js.map +1 -0
  32. package/dist/chunk-HAWJTZCK.js +86 -0
  33. package/dist/chunk-HAWJTZCK.js.map +1 -0
  34. package/dist/chunk-J4ZVCXZ4.js +1 -0
  35. package/dist/chunk-J4ZVCXZ4.js.map +1 -0
  36. package/dist/chunk-JAATANS3.js +429 -0
  37. package/dist/chunk-JAATANS3.js.map +1 -0
  38. package/dist/chunk-LNJ3WF7V.js +470 -0
  39. package/dist/chunk-LNJ3WF7V.js.map +1 -0
  40. package/dist/chunk-N26IEHZT.js +79 -0
  41. package/dist/chunk-N26IEHZT.js.map +1 -0
  42. package/dist/chunk-NSIAAYW3.js +1 -0
  43. package/dist/chunk-NSIAAYW3.js.map +1 -0
  44. package/dist/chunk-NZON56CB.js +3864 -0
  45. package/dist/chunk-NZON56CB.js.map +1 -0
  46. package/dist/chunk-OQ7U6EQ3.js +7550 -0
  47. package/dist/chunk-OQ7U6EQ3.js.map +1 -0
  48. package/dist/chunk-P4UZ7IXC.js +42 -0
  49. package/dist/chunk-P4UZ7IXC.js.map +1 -0
  50. package/dist/chunk-SM73S2DY.js +11 -0
  51. package/dist/chunk-SM73S2DY.js.map +1 -0
  52. package/dist/chunk-TKWR5AAY.js +415 -0
  53. package/dist/chunk-TKWR5AAY.js.map +1 -0
  54. package/dist/chunk-U5UNPBKB.js +501 -0
  55. package/dist/chunk-U5UNPBKB.js.map +1 -0
  56. package/dist/chunk-WGDJ4IXR.js +921 -0
  57. package/dist/chunk-WGDJ4IXR.js.map +1 -0
  58. package/dist/chunk-WVF7RUW5.js +186 -0
  59. package/dist/chunk-WVF7RUW5.js.map +1 -0
  60. package/dist/chunk-X3HZLNBV.js +2129 -0
  61. package/dist/chunk-X3HZLNBV.js.map +1 -0
  62. package/dist/chunk-XU3SBFAG.js +5205 -0
  63. package/dist/chunk-XU3SBFAG.js.map +1 -0
  64. package/dist/chunk-ZVBHWU7O.js +1412 -0
  65. package/dist/chunk-ZVBHWU7O.js.map +1 -0
  66. package/dist/client/index.d.ts +1 -1
  67. package/dist/client/index.js +54 -163
  68. package/dist/client/index.js.map +1 -1
  69. package/dist/core/index.d.ts +19 -0
  70. package/dist/{index-BFu5_dS8.d.ts → database.types-ChFCG-4M.d.ts} +1 -177
  71. package/dist/dist-NDNRSNOG.js +521 -0
  72. package/dist/dist-NDNRSNOG.js.map +1 -0
  73. package/dist/gen/index.js +188 -1280
  74. package/dist/gen/index.js.map +1 -1
  75. package/dist/hooks/index.d.ts +10 -3
  76. package/dist/hooks/index.js +20 -8695
  77. package/dist/hooks/index.js.map +1 -1
  78. package/dist/index-CQLyNG6A.d.ts +433 -0
  79. package/dist/index.d.ts +12 -8
  80. package/dist/index.js +447 -47848
  81. package/dist/index.js.map +1 -1
  82. package/dist/index.native.d.ts +373 -33
  83. package/dist/index.native.js +432 -25048
  84. package/dist/index.native.js.map +1 -1
  85. package/dist/index.web.d.ts +10 -7
  86. package/dist/index.web.js +585 -43773
  87. package/dist/index.web.js.map +1 -1
  88. package/dist/mutation/index.d.ts +2 -2
  89. package/dist/mutation/index.js +331 -4777
  90. package/dist/mutation/index.js.map +1 -1
  91. package/dist/parser/index.js +45 -3697
  92. package/dist/parser/index.js.map +1 -1
  93. package/dist/pdf-PHXP7RHD.js +20336 -0
  94. package/dist/pdf-PHXP7RHD.js.map +1 -0
  95. package/dist/powersync-bridge/index.d.ts +284 -0
  96. package/dist/powersync-bridge/index.js +22 -0
  97. package/dist/powersync-bridge/index.js.map +1 -0
  98. package/dist/query/index.js +31 -13175
  99. package/dist/query/index.js.map +1 -1
  100. package/dist/realtime/index.js +279 -12541
  101. package/dist/realtime/index.js.map +1 -1
  102. package/dist/{UserMetadataContext-BYYqA6LI.d.ts → setupAuthContext-Kv-THH-h.d.ts} +1 -29
  103. package/dist/types/index.d.ts +5 -1
  104. package/dist/types/index.js +14 -0
  105. package/dist/{useBatchUpsert-CSQVX7w8.d.ts → useBatchUpsert-9OYjibLh.d.ts} +1 -1
  106. package/dist/{useDbCount-RGCuHmHp.d.ts → useDbCount-BG356T9i.d.ts} +3 -719
  107. package/dist/{useReceiptAI-Bn0czE7C.d.ts → useReceiptAI-6HkRpRml.d.ts} +1 -1
  108. package/dist/{useResolveFeedback-CpZPP8Pw.d.ts → useResolveFeedback-BWmatBlE.d.ts} +26 -45
  109. package/dist/{useSupabase-pPhUZHcl.d.ts → useSupabase-DvWVuHHE.d.ts} +2 -1
  110. package/dist/with-auth/index.d.ts +704 -0
  111. package/dist/with-auth/index.js +1221 -0
  112. package/dist/with-auth/index.js.map +1 -0
  113. package/package.json +25 -10
@@ -0,0 +1,470 @@
1
+ import {
2
+ UserMetadata
3
+ } from "./chunk-SM73S2DY.js";
4
+ import {
5
+ useSetupAuth
6
+ } from "./chunk-DJ6VLEAL.js";
7
+ import {
8
+ useDbQuery
9
+ } from "./chunk-WGDJ4IXR.js";
10
+ import {
11
+ useDbUpsert
12
+ } from "./chunk-ZVBHWU7O.js";
13
+ import {
14
+ delay,
15
+ isNullOrWhitespace,
16
+ isUsable
17
+ } from "./chunk-OQ7U6EQ3.js";
18
+ import {
19
+ useSupabase
20
+ } from "./chunk-5EFDS7SR.js";
21
+
22
+ // src/contexts/LiveChangeContext.tsx
23
+ import { c as _c } from "react/compiler-runtime";
24
+ import { createContext } from "react";
25
+ import { jsx } from "react/jsx-runtime";
26
+ var LiveChangeContext = createContext({});
27
+ var LiveChangeContextProvider = (t0) => {
28
+ const $ = _c(13);
29
+ const {
30
+ children,
31
+ changeLog
32
+ } = t0;
33
+ const supabase = useSupabase();
34
+ let t1;
35
+ if ($[0] !== changeLog?.modifiedByUserId || $[1] !== supabase) {
36
+ t1 = supabase.schema("core").from("Profile").select().eq("id", changeLog?.modifiedByUserId).single();
37
+ $[0] = changeLog?.modifiedByUserId;
38
+ $[1] = supabase;
39
+ $[2] = t1;
40
+ } else {
41
+ t1 = $[2];
42
+ }
43
+ const t2 = changeLog?.modifiedByUserId;
44
+ let t3;
45
+ if ($[3] !== t2) {
46
+ t3 = isUsable(t2);
47
+ $[3] = t2;
48
+ $[4] = t3;
49
+ } else {
50
+ t3 = $[4];
51
+ }
52
+ let t4;
53
+ if ($[5] !== t3) {
54
+ t4 = {
55
+ enabled: t3,
56
+ crossOrganization: true
57
+ };
58
+ $[5] = t3;
59
+ $[6] = t4;
60
+ } else {
61
+ t4 = $[6];
62
+ }
63
+ const userRequest = useDbQuery(t1, t4);
64
+ const t5 = userRequest.data?.firstName + " " + userRequest.data?.lastName;
65
+ let t6;
66
+ if ($[7] !== changeLog || $[8] !== t5) {
67
+ t6 = {
68
+ changeLog,
69
+ lastModifiedUserName: t5
70
+ };
71
+ $[7] = changeLog;
72
+ $[8] = t5;
73
+ $[9] = t6;
74
+ } else {
75
+ t6 = $[9];
76
+ }
77
+ let t7;
78
+ if ($[10] !== children || $[11] !== t6) {
79
+ t7 = /* @__PURE__ */ jsx(LiveChangeContext.Provider, { value: t6, children });
80
+ $[10] = children;
81
+ $[11] = t6;
82
+ $[12] = t7;
83
+ } else {
84
+ t7 = $[12];
85
+ }
86
+ return t7;
87
+ };
88
+
89
+ // src/useLiveChangesIndicator.tsx
90
+ import { useCallback, useContext, useEffect, useRef, useState } from "react";
91
+ function useLiveChangesIndicator(value, field) {
92
+ const liveChangesContext = useContext(LiveChangeContext);
93
+ const [showModifiedByName, setShowModifiedByName] = useState(false);
94
+ const isMounted = useRef(false);
95
+ const {
96
+ user
97
+ } = useSetupAuth();
98
+ const checkChanges = useCallback(async () => {
99
+ try {
100
+ const changeLog = liveChangesContext?.changeLog;
101
+ if (isUsable(changeLog) === false) {
102
+ return;
103
+ }
104
+ const changes = changeLog.changes;
105
+ if (isUsable(changes) === false) {
106
+ return;
107
+ }
108
+ const changeOccurredInChangeLog = Object.keys(changes).some((x) => {
109
+ return field ? x === field : changes[x] === value;
110
+ });
111
+ if (changeOccurredInChangeLog === false) {
112
+ return;
113
+ }
114
+ setShowModifiedByName(changeLog.modifiedByUserId !== user?.id);
115
+ await delay(isNullOrWhitespace(liveChangesContext?.lastModifiedUserName) ? 2e3 : 1500);
116
+ } finally {
117
+ setShowModifiedByName(false);
118
+ }
119
+ }, [liveChangesContext?.changeLog]);
120
+ useEffect(() => {
121
+ if (isMounted.current === false) {
122
+ delay(200).then((x) => {
123
+ isMounted.current = true;
124
+ });
125
+ return;
126
+ }
127
+ checkChanges();
128
+ }, [liveChangesContext?.changeLog]);
129
+ return [showModifiedByName, liveChangesContext?.lastModifiedUserName];
130
+ }
131
+
132
+ // src/contexts/UserMetadataContext.tsx
133
+ import { c as _c2 } from "react/compiler-runtime";
134
+ import { createContext as createContext2, useContext as useContext2, useEffect as useEffect2, useState as useState2 } from "react";
135
+ import { jsx as jsx2 } from "react/jsx-runtime";
136
+ var userMetadataContext = createContext2(null);
137
+ function UserMetadataContextProvider(t0) {
138
+ const $ = _c2(35);
139
+ const {
140
+ children
141
+ } = t0;
142
+ const supabase = useSupabase();
143
+ let t1;
144
+ if ($[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
145
+ t1 = {};
146
+ $[0] = t1;
147
+ } else {
148
+ t1 = $[0];
149
+ }
150
+ const [metadata, setMetadataState] = useState2(t1);
151
+ const [isLoading, setIsLoading] = useState2(true);
152
+ const [error, setError] = useState2(null);
153
+ const {
154
+ user
155
+ } = useSetupAuth();
156
+ const userId = user?.id;
157
+ let t2;
158
+ if ($[1] !== supabase || $[2] !== userId) {
159
+ t2 = supabase.schema("core").from("UserMetadata").select(UserMetadata.defaultQuery).eq("userId", userId).order("key");
160
+ $[1] = supabase;
161
+ $[2] = userId;
162
+ $[3] = t2;
163
+ } else {
164
+ t2 = $[3];
165
+ }
166
+ let t3;
167
+ if ($[4] !== userId) {
168
+ t3 = isUsable(userId);
169
+ $[4] = userId;
170
+ $[5] = t3;
171
+ } else {
172
+ t3 = $[5];
173
+ }
174
+ let t4;
175
+ if ($[6] !== t3) {
176
+ t4 = {
177
+ enabled: t3,
178
+ crossOrganization: true
179
+ };
180
+ $[6] = t3;
181
+ $[7] = t4;
182
+ } else {
183
+ t4 = $[7];
184
+ }
185
+ const metadataQuery = useDbQuery(t2, t4);
186
+ let t5;
187
+ if ($[8] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
188
+ t5 = {
189
+ invalidateTables: ["UserMetadata"]
190
+ };
191
+ $[8] = t5;
192
+ } else {
193
+ t5 = $[8];
194
+ }
195
+ const upsertMutation = useDbUpsert("UserMetadata", t5);
196
+ let t6;
197
+ let t7;
198
+ if ($[9] !== metadataQuery.data || $[10] !== metadataQuery.error || $[11] !== metadataQuery.isLoading) {
199
+ t6 = () => {
200
+ if (metadataQuery.data && Array.isArray(metadataQuery.data)) {
201
+ const metadataMap = {};
202
+ metadataQuery.data.forEach((item) => {
203
+ metadataMap[item.key] = item.value;
204
+ });
205
+ setMetadataState(metadataMap);
206
+ setIsLoading(false);
207
+ setError(null);
208
+ } else {
209
+ if (metadataQuery.error) {
210
+ setError(metadataQuery.error);
211
+ setIsLoading(false);
212
+ } else {
213
+ if (metadataQuery.isLoading) {
214
+ setIsLoading(true);
215
+ } else {
216
+ if (metadataQuery.data && !Array.isArray(metadataQuery.data)) {
217
+ setMetadataState({});
218
+ setIsLoading(false);
219
+ }
220
+ }
221
+ }
222
+ }
223
+ };
224
+ t7 = [metadataQuery.data, metadataQuery.error, metadataQuery.isLoading];
225
+ $[9] = metadataQuery.data;
226
+ $[10] = metadataQuery.error;
227
+ $[11] = metadataQuery.isLoading;
228
+ $[12] = t6;
229
+ $[13] = t7;
230
+ } else {
231
+ t6 = $[12];
232
+ t7 = $[13];
233
+ }
234
+ useEffect2(t6, t7);
235
+ let t8;
236
+ if ($[14] !== upsertMutation || $[15] !== userId) {
237
+ t8 = async (key, value) => {
238
+ if (!userId) {
239
+ throw new Error("User not authenticated");
240
+ }
241
+ ;
242
+ try {
243
+ await upsertMutation.mutateAsync({
244
+ userId,
245
+ key,
246
+ value
247
+ });
248
+ setMetadataState((prev) => ({
249
+ ...prev,
250
+ [key]: value
251
+ }));
252
+ } catch (t92) {
253
+ const err = t92;
254
+ setError(err);
255
+ throw err;
256
+ }
257
+ };
258
+ $[14] = upsertMutation;
259
+ $[15] = userId;
260
+ $[16] = t8;
261
+ } else {
262
+ t8 = $[16];
263
+ }
264
+ const setMetadata = t8;
265
+ let t9;
266
+ if ($[17] !== metadata) {
267
+ t9 = (key_0) => metadata[key_0];
268
+ $[17] = metadata;
269
+ $[18] = t9;
270
+ } else {
271
+ t9 = $[18];
272
+ }
273
+ const getMetadata = t9;
274
+ let t10;
275
+ if ($[19] !== supabase || $[20] !== userId) {
276
+ t10 = async (key_1) => {
277
+ if (!userId) {
278
+ throw new Error("User not authenticated");
279
+ }
280
+ ;
281
+ try {
282
+ await supabase.schema("core").from("UserMetadata").delete().eq("userId", userId).eq("key", key_1);
283
+ setMetadataState((prev_0) => {
284
+ const newState = {
285
+ ...prev_0
286
+ };
287
+ delete newState[key_1];
288
+ return newState;
289
+ });
290
+ } catch (t112) {
291
+ const err_0 = t112;
292
+ setError(err_0);
293
+ throw err_0;
294
+ }
295
+ };
296
+ $[19] = supabase;
297
+ $[20] = userId;
298
+ $[21] = t10;
299
+ } else {
300
+ t10 = $[21];
301
+ }
302
+ const removeMetadata = t10;
303
+ let t11;
304
+ if ($[22] !== metadataQuery) {
305
+ t11 = async () => {
306
+ await metadataQuery.refetch();
307
+ };
308
+ $[22] = metadataQuery;
309
+ $[23] = t11;
310
+ } else {
311
+ t11 = $[23];
312
+ }
313
+ const refreshMetadata = t11;
314
+ let t12;
315
+ if ($[24] !== error || $[25] !== getMetadata || $[26] !== isLoading || $[27] !== metadata || $[28] !== refreshMetadata || $[29] !== removeMetadata || $[30] !== setMetadata) {
316
+ t12 = {
317
+ metadata,
318
+ isLoading,
319
+ error,
320
+ setMetadata,
321
+ getMetadata,
322
+ removeMetadata,
323
+ refreshMetadata
324
+ };
325
+ $[24] = error;
326
+ $[25] = getMetadata;
327
+ $[26] = isLoading;
328
+ $[27] = metadata;
329
+ $[28] = refreshMetadata;
330
+ $[29] = removeMetadata;
331
+ $[30] = setMetadata;
332
+ $[31] = t12;
333
+ } else {
334
+ t12 = $[31];
335
+ }
336
+ const contextValue = t12;
337
+ let t13;
338
+ if ($[32] !== children || $[33] !== contextValue) {
339
+ t13 = /* @__PURE__ */ jsx2(userMetadataContext.Provider, { value: contextValue, children });
340
+ $[32] = children;
341
+ $[33] = contextValue;
342
+ $[34] = t13;
343
+ } else {
344
+ t13 = $[34];
345
+ }
346
+ return t13;
347
+ }
348
+ function useUserMetadata() {
349
+ const context = useContext2(userMetadataContext);
350
+ if (!context) {
351
+ throw new Error("useUserMetadata must be used within a UserMetadataContextProvider");
352
+ }
353
+ return context;
354
+ }
355
+ function useUserMetadataValue(key) {
356
+ const $ = _c2(3);
357
+ const {
358
+ getMetadata
359
+ } = useUserMetadata();
360
+ let t0;
361
+ if ($[0] !== getMetadata || $[1] !== key) {
362
+ t0 = getMetadata(key);
363
+ $[0] = getMetadata;
364
+ $[1] = key;
365
+ $[2] = t0;
366
+ } else {
367
+ t0 = $[2];
368
+ }
369
+ return t0;
370
+ }
371
+ function useSetUserMetadata() {
372
+ const $ = _c2(3);
373
+ const {
374
+ setMetadata,
375
+ removeMetadata
376
+ } = useUserMetadata();
377
+ let t0;
378
+ if ($[0] !== removeMetadata || $[1] !== setMetadata) {
379
+ t0 = {
380
+ setMetadata,
381
+ removeMetadata
382
+ };
383
+ $[0] = removeMetadata;
384
+ $[1] = setMetadata;
385
+ $[2] = t0;
386
+ } else {
387
+ t0 = $[2];
388
+ }
389
+ return t0;
390
+ }
391
+ function useUserMetadataState(key, defaultValue, options) {
392
+ const $ = _c2(11);
393
+ const {
394
+ metadata,
395
+ setMetadata,
396
+ isLoading
397
+ } = useUserMetadata();
398
+ const serialize = options?.serialize ?? _temp;
399
+ const deserialize = options?.deserialize ?? _temp2;
400
+ let t0;
401
+ bb0: {
402
+ const rawValue = metadata[key];
403
+ if (!rawValue) {
404
+ t0 = defaultValue;
405
+ break bb0;
406
+ }
407
+ ;
408
+ try {
409
+ let t22;
410
+ if ($[0] !== deserialize || $[1] !== rawValue) {
411
+ t22 = deserialize(rawValue);
412
+ $[0] = deserialize;
413
+ $[1] = rawValue;
414
+ $[2] = t22;
415
+ } else {
416
+ t22 = $[2];
417
+ }
418
+ t0 = t22;
419
+ } catch (t12) {
420
+ const error = t12;
421
+ console.warn(`Failed to deserialize metadata for key "${key}":`, error);
422
+ t0 = defaultValue;
423
+ }
424
+ }
425
+ const currentValue = t0;
426
+ let t1;
427
+ if ($[3] !== key || $[4] !== serialize || $[5] !== setMetadata) {
428
+ t1 = async (value_1) => {
429
+ const serializedValue = serialize(value_1);
430
+ await setMetadata(key, serializedValue);
431
+ };
432
+ $[3] = key;
433
+ $[4] = serialize;
434
+ $[5] = setMetadata;
435
+ $[6] = t1;
436
+ } else {
437
+ t1 = $[6];
438
+ }
439
+ const setValue = t1;
440
+ let t2;
441
+ if ($[7] !== currentValue || $[8] !== isLoading || $[9] !== setValue) {
442
+ t2 = [currentValue, setValue, isLoading];
443
+ $[7] = currentValue;
444
+ $[8] = isLoading;
445
+ $[9] = setValue;
446
+ $[10] = t2;
447
+ } else {
448
+ t2 = $[10];
449
+ }
450
+ return t2;
451
+ }
452
+ function _temp2(value_0) {
453
+ return JSON.parse(value_0);
454
+ }
455
+ function _temp(value) {
456
+ return JSON.stringify(value);
457
+ }
458
+
459
+ export {
460
+ LiveChangeContext,
461
+ LiveChangeContextProvider,
462
+ useLiveChangesIndicator,
463
+ userMetadataContext,
464
+ UserMetadataContextProvider,
465
+ useUserMetadata,
466
+ useUserMetadataValue,
467
+ useSetUserMetadata,
468
+ useUserMetadataState
469
+ };
470
+ //# sourceMappingURL=chunk-LNJ3WF7V.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/contexts/LiveChangeContext.tsx","../src/useLiveChangesIndicator.tsx","../src/contexts/UserMetadataContext.tsx"],"sourcesContent":["import { c as _c } from \"react/compiler-runtime\";\nimport { isUsable } from \"@pol-studios/utils\";\nimport { ReactNode, createContext } from \"react\";\nimport { DbChangeLog } from \"../types\";\nimport { useDbQuery } from \"../useDbQuery\";\nimport useSupabase from \"../useSupabase\";\nexport interface AlertProps {\n title: string;\n description: string;\n}\ninterface Context {\n lastModifiedUserName: string;\n changeLog: DbChangeLog;\n}\ninterface AlertState {\n isOpen: boolean;\n title: string;\n description: string;\n onConfirm: () => void;\n onCancel: () => void;\n}\nexport const LiveChangeContext = createContext({} as Context);\nexport const LiveChangeContextProvider = t0 => {\n const $ = _c(13);\n const {\n children,\n changeLog\n } = t0;\n const supabase = useSupabase();\n let t1;\n if ($[0] !== changeLog?.modifiedByUserId || $[1] !== supabase) {\n t1 = supabase.schema(\"core\").from(\"Profile\").select().eq(\"id\", changeLog?.modifiedByUserId).single();\n $[0] = changeLog?.modifiedByUserId;\n $[1] = supabase;\n $[2] = t1;\n } else {\n t1 = $[2];\n }\n const t2 = changeLog?.modifiedByUserId;\n let t3;\n if ($[3] !== t2) {\n t3 = isUsable(t2);\n $[3] = t2;\n $[4] = t3;\n } else {\n t3 = $[4];\n }\n let t4;\n if ($[5] !== t3) {\n t4 = {\n enabled: t3,\n crossOrganization: true\n };\n $[5] = t3;\n $[6] = t4;\n } else {\n t4 = $[6];\n }\n const userRequest = useDbQuery(t1, t4);\n const t5 = userRequest.data?.firstName + \" \" + userRequest.data?.lastName;\n let t6;\n if ($[7] !== changeLog || $[8] !== t5) {\n t6 = {\n changeLog,\n lastModifiedUserName: t5\n };\n $[7] = changeLog;\n $[8] = t5;\n $[9] = t6;\n } else {\n t6 = $[9];\n }\n let t7;\n if ($[10] !== children || $[11] !== t6) {\n t7 = <LiveChangeContext.Provider value={t6}>{children}</LiveChangeContext.Provider>;\n $[10] = children;\n $[11] = t6;\n $[12] = t7;\n } else {\n t7 = $[12];\n }\n return t7;\n};","import { isNullOrWhitespace } from \"@pol-studios/utils\";\nimport { useCallback, useContext, useEffect, useRef, useState } from \"react\";\nimport { delay } from \"@pol-studios/utils\";\nimport { LiveChangeContext } from \"./contexts/LiveChangeContext\";\nimport { isUsable } from \"@pol-studios/utils\";\nimport { useSetupAuth } from \"./auth\";\nexport default function useLiveChangesIndicator(value: any, field: string | undefined): [boolean, string] {\n const liveChangesContext = useContext(LiveChangeContext);\n const [showModifiedByName, setShowModifiedByName] = useState(false);\n const isMounted = useRef(false);\n const {\n user\n } = useSetupAuth();\n const checkChanges = useCallback(async () => {\n try {\n const changeLog = liveChangesContext?.changeLog;\n if (isUsable(changeLog) === false) {\n return;\n }\n const changes = changeLog.changes;\n if (isUsable(changes) === false) {\n return;\n }\n const changeOccurredInChangeLog = Object.keys(changes).some(x => {\n return field ? x === field : changes[x] === value;\n });\n if (changeOccurredInChangeLog === false) {\n return;\n }\n setShowModifiedByName(changeLog.modifiedByUserId !== user?.id);\n await delay(isNullOrWhitespace(liveChangesContext?.lastModifiedUserName) ? 2000 : 1500);\n } finally {\n setShowModifiedByName(false);\n }\n }, [liveChangesContext?.changeLog]);\n useEffect(() => {\n if (isMounted.current === false) {\n delay(200).then(x => {\n isMounted.current = true;\n });\n return;\n }\n checkChanges();\n }, [liveChangesContext?.changeLog]);\n return [showModifiedByName, liveChangesContext?.lastModifiedUserName];\n}","import { c as _c } from \"react/compiler-runtime\";\nimport { ReactNode, createContext, useContext, useEffect, useMemo, useState, useCallback } from \"react\";\nimport { useDbQuery } from \"../useDbQuery\";\nimport { useDbUpsert } from \"../hooks\";\nimport useSupabase from \"../useSupabase\";\nimport { isUsable } from \"@pol-studios/utils\";\nimport { Database } from \"../useSupabase\";\nimport { useDbRealtimeQuery } from \"../useDbRealtimeQuery\";\nimport { UserMetadata } from \"../gen/public/UserMetadata/query\";\nimport { useSetupAuth } from \"../auth\";\n\n// Type definitions for UserMetadata\nexport type UserMetadataRow = Database[\"core\"][\"Tables\"][\"UserMetadata\"][\"Row\"];\nexport type UserMetadataInsert = Database[\"core\"][\"Tables\"][\"UserMetadata\"][\"Insert\"];\nexport type UserMetadataUpdate = Database[\"core\"][\"Tables\"][\"UserMetadata\"][\"Update\"];\n\n// Context interface\nexport interface UserMetadataContextType {\n metadata: Record<string, string>;\n isLoading: boolean;\n error: Error | null;\n setMetadata: (key: string, value: string) => Promise<void>;\n getMetadata: (key: string) => string | undefined;\n removeMetadata: (key: string) => Promise<void>;\n refreshMetadata: () => Promise<void>;\n}\n\n// Create context\nexport const userMetadataContext = createContext<UserMetadataContextType | null>(null);\n\n// Provider component\nexport function UserMetadataContextProvider(t0) {\n const $ = _c(35);\n const {\n children\n } = t0;\n const supabase = useSupabase();\n let t1;\n if ($[0] === Symbol.for(\"react.memo_cache_sentinel\")) {\n t1 = {};\n $[0] = t1;\n } else {\n t1 = $[0];\n }\n const [metadata, setMetadataState] = useState(t1);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState(null);\n const {\n user\n } = useSetupAuth();\n const userId = user?.id;\n let t2;\n if ($[1] !== supabase || $[2] !== userId) {\n t2 = supabase.schema(\"core\").from(\"UserMetadata\").select(UserMetadata.defaultQuery).eq(\"userId\", userId).order(\"key\");\n $[1] = supabase;\n $[2] = userId;\n $[3] = t2;\n } else {\n t2 = $[3];\n }\n let t3;\n if ($[4] !== userId) {\n t3 = isUsable(userId);\n $[4] = userId;\n $[5] = t3;\n } else {\n t3 = $[5];\n }\n let t4;\n if ($[6] !== t3) {\n t4 = {\n enabled: t3,\n crossOrganization: true\n };\n $[6] = t3;\n $[7] = t4;\n } else {\n t4 = $[7];\n }\n const metadataQuery = useDbQuery(t2, t4);\n let t5;\n if ($[8] === Symbol.for(\"react.memo_cache_sentinel\")) {\n t5 = {\n invalidateTables: [\"UserMetadata\"]\n };\n $[8] = t5;\n } else {\n t5 = $[8];\n }\n const upsertMutation = useDbUpsert(\"UserMetadata\", t5);\n let t6;\n let t7;\n if ($[9] !== metadataQuery.data || $[10] !== metadataQuery.error || $[11] !== metadataQuery.isLoading) {\n t6 = () => {\n if (metadataQuery.data && Array.isArray(metadataQuery.data)) {\n const metadataMap = {};\n metadataQuery.data.forEach(item => {\n metadataMap[item.key] = item.value;\n });\n setMetadataState(metadataMap);\n setIsLoading(false);\n setError(null);\n } else {\n if (metadataQuery.error) {\n setError(metadataQuery.error);\n setIsLoading(false);\n } else {\n if (metadataQuery.isLoading) {\n setIsLoading(true);\n } else {\n if (metadataQuery.data && !Array.isArray(metadataQuery.data)) {\n setMetadataState({});\n setIsLoading(false);\n }\n }\n }\n }\n };\n t7 = [metadataQuery.data, metadataQuery.error, metadataQuery.isLoading];\n $[9] = metadataQuery.data;\n $[10] = metadataQuery.error;\n $[11] = metadataQuery.isLoading;\n $[12] = t6;\n $[13] = t7;\n } else {\n t6 = $[12];\n t7 = $[13];\n }\n useEffect(t6, t7);\n let t8;\n if ($[14] !== upsertMutation || $[15] !== userId) {\n t8 = async (key, value) => {\n if (!userId) {\n throw new Error(\"User not authenticated\");\n }\n ;\n try {\n await upsertMutation.mutateAsync({\n userId,\n key,\n value\n });\n setMetadataState(prev => ({\n ...prev,\n [key]: value\n }));\n } catch (t9) {\n const err = t9;\n setError(err as Error);\n throw err;\n }\n };\n $[14] = upsertMutation;\n $[15] = userId;\n $[16] = t8;\n } else {\n t8 = $[16];\n }\n const setMetadata = t8;\n let t9;\n if ($[17] !== metadata) {\n t9 = key_0 => metadata[key_0];\n $[17] = metadata;\n $[18] = t9;\n } else {\n t9 = $[18];\n }\n const getMetadata = t9;\n let t10;\n if ($[19] !== supabase || $[20] !== userId) {\n t10 = async key_1 => {\n if (!userId) {\n throw new Error(\"User not authenticated\");\n }\n ;\n try {\n await supabase.schema(\"core\").from(\"UserMetadata\").delete().eq(\"userId\", userId).eq(\"key\", key_1);\n setMetadataState(prev_0 => {\n const newState = {\n ...prev_0\n };\n delete newState[key_1];\n return newState;\n });\n } catch (t11) {\n const err_0 = t11;\n setError(err_0 as Error);\n throw err_0;\n }\n };\n $[19] = supabase;\n $[20] = userId;\n $[21] = t10;\n } else {\n t10 = $[21];\n }\n const removeMetadata = t10;\n let t11;\n if ($[22] !== metadataQuery) {\n t11 = async () => {\n await metadataQuery.refetch();\n };\n $[22] = metadataQuery;\n $[23] = t11;\n } else {\n t11 = $[23];\n }\n const refreshMetadata = t11;\n let t12;\n if ($[24] !== error || $[25] !== getMetadata || $[26] !== isLoading || $[27] !== metadata || $[28] !== refreshMetadata || $[29] !== removeMetadata || $[30] !== setMetadata) {\n t12 = {\n metadata,\n isLoading,\n error,\n setMetadata,\n getMetadata,\n removeMetadata,\n refreshMetadata\n };\n $[24] = error;\n $[25] = getMetadata;\n $[26] = isLoading;\n $[27] = metadata;\n $[28] = refreshMetadata;\n $[29] = removeMetadata;\n $[30] = setMetadata;\n $[31] = t12;\n } else {\n t12 = $[31];\n }\n const contextValue = t12;\n let t13;\n if ($[32] !== children || $[33] !== contextValue) {\n t13 = <userMetadataContext.Provider value={contextValue}>{children}</userMetadataContext.Provider>;\n $[32] = children;\n $[33] = contextValue;\n $[34] = t13;\n } else {\n t13 = $[34];\n }\n return t13;\n}\n\n// Hook to use the context\nexport function useUserMetadata() {\n const context = useContext(userMetadataContext);\n if (!context) {\n throw new Error(\"useUserMetadata must be used within a UserMetadataContextProvider\");\n }\n return context;\n}\n\n// Convenience hook for getting a specific metadata value\nexport function useUserMetadataValue(key) {\n const $ = _c(3);\n const {\n getMetadata\n } = useUserMetadata();\n let t0;\n if ($[0] !== getMetadata || $[1] !== key) {\n t0 = getMetadata(key);\n $[0] = getMetadata;\n $[1] = key;\n $[2] = t0;\n } else {\n t0 = $[2];\n }\n return t0;\n}\n\n// Convenience hook for setting a specific metadata value\nexport function useSetUserMetadata() {\n const $ = _c(3);\n const {\n setMetadata,\n removeMetadata\n } = useUserMetadata();\n let t0;\n if ($[0] !== removeMetadata || $[1] !== setMetadata) {\n t0 = {\n setMetadata,\n removeMetadata\n };\n $[0] = removeMetadata;\n $[1] = setMetadata;\n $[2] = t0;\n } else {\n t0 = $[2];\n }\n return t0;\n}\n\n// Advanced state-like hook with JSON serialization support\nexport function useUserMetadataState(key, defaultValue, options) {\n const $ = _c(11);\n const {\n metadata,\n setMetadata,\n isLoading\n } = useUserMetadata();\n const serialize = options?.serialize ?? _temp;\n const deserialize = options?.deserialize ?? _temp2;\n let t0;\n bb0: {\n const rawValue = metadata[key];\n if (!rawValue) {\n t0 = defaultValue;\n break bb0;\n }\n ;\n try {\n let t2;\n if ($[0] !== deserialize || $[1] !== rawValue) {\n t2 = deserialize(rawValue);\n $[0] = deserialize;\n $[1] = rawValue;\n $[2] = t2;\n } else {\n t2 = $[2];\n }\n t0 = t2;\n } catch (t1) {\n const error = t1;\n console.warn(`Failed to deserialize metadata for key \"${key}\":`, error);\n t0 = defaultValue;\n }\n }\n const currentValue = t0;\n let t1;\n if ($[3] !== key || $[4] !== serialize || $[5] !== setMetadata) {\n t1 = async value_1 => {\n const serializedValue = serialize(value_1);\n await setMetadata(key, serializedValue);\n };\n $[3] = key;\n $[4] = serialize;\n $[5] = setMetadata;\n $[6] = t1;\n } else {\n t1 = $[6];\n }\n const setValue = t1;\n let t2;\n if ($[7] !== currentValue || $[8] !== isLoading || $[9] !== setValue) {\n t2 = [currentValue, setValue, isLoading];\n $[7] = currentValue;\n $[8] = isLoading;\n $[9] = setValue;\n $[10] = t2;\n } else {\n t2 = $[10];\n }\n return t2;\n}\nfunction _temp2(value_0) {\n return JSON.parse(value_0);\n}\nfunction _temp(value) {\n return JSON.stringify(value);\n}"],"mappings":"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","names":["_c","createContext","useContext","useEffect","useState","jsx","createContext","_c","useState","useEffect","t9","t11","useContext","t2","t1"]}
@@ -0,0 +1,79 @@
1
+ import {
2
+ __require
3
+ } from "./chunk-P4UZ7IXC.js";
4
+
5
+ // src/powersync-bridge/index.ts
6
+ var _powerSyncAvailable = null;
7
+ function isPowerSyncAvailable() {
8
+ if (_powerSyncAvailable === null) {
9
+ try {
10
+ __require.resolve("@pol-studios/powersync");
11
+ _powerSyncAvailable = true;
12
+ } catch {
13
+ _powerSyncAvailable = false;
14
+ }
15
+ }
16
+ return _powerSyncAvailable;
17
+ }
18
+ function resetPowerSyncAvailabilityCache() {
19
+ _powerSyncAvailable = null;
20
+ }
21
+ function isAbstractPowerSyncDatabase(value) {
22
+ if (typeof value !== "object" || value === null) {
23
+ return false;
24
+ }
25
+ const db = value;
26
+ return typeof db.getAll === "function" && typeof db.get === "function" && typeof db.execute === "function" && typeof db.init === "function" && typeof db.close === "function" && typeof db.connect === "function" && typeof db.disconnect === "function" && typeof db.registerListener === "function" && "connected" in db && "currentStatus" in db;
27
+ }
28
+ function isPowerSyncSyncStatus(value) {
29
+ if (typeof value !== "object" || value === null) {
30
+ return false;
31
+ }
32
+ const status = value;
33
+ return typeof status.connected === "boolean" && typeof status.connecting === "boolean" && typeof status.hasSynced === "boolean" && typeof status.uploading === "boolean" && typeof status.downloading === "boolean";
34
+ }
35
+ function convertToDataLayerSyncStatus(powerSyncStatus, pendingCount = 0) {
36
+ return {
37
+ isConnected: powerSyncStatus.connected,
38
+ isSyncing: powerSyncStatus.uploading || powerSyncStatus.downloading,
39
+ lastSyncedAt: powerSyncStatus.lastSyncedAt,
40
+ pendingUploads: pendingCount,
41
+ error: null
42
+ };
43
+ }
44
+ function convertToDataLayerSyncControl(powerSyncControl) {
45
+ return {
46
+ triggerSync: powerSyncControl.triggerSync,
47
+ startLiveSync: powerSyncControl.resume,
48
+ stopLiveSync: () => {
49
+ powerSyncControl.pause();
50
+ },
51
+ setScope: async (scopeName, values) => {
52
+ powerSyncControl.setScope({
53
+ type: scopeName,
54
+ ids: values
55
+ });
56
+ }
57
+ };
58
+ }
59
+ function createDatabaseGetter(getPowerSyncDb) {
60
+ return getPowerSyncDb;
61
+ }
62
+ function getPowerSyncInstance(options) {
63
+ if (!options.isReady || !options.database) {
64
+ return null;
65
+ }
66
+ return options.database;
67
+ }
68
+
69
+ export {
70
+ isPowerSyncAvailable,
71
+ resetPowerSyncAvailabilityCache,
72
+ isAbstractPowerSyncDatabase,
73
+ isPowerSyncSyncStatus,
74
+ convertToDataLayerSyncStatus,
75
+ convertToDataLayerSyncControl,
76
+ createDatabaseGetter,
77
+ getPowerSyncInstance
78
+ };
79
+ //# sourceMappingURL=chunk-N26IEHZT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/powersync-bridge/index.ts"],"sourcesContent":["/**\n * PowerSync Bridge for @pol-studios/db\n *\n * This module provides integration utilities between @pol-studios/db and\n * @pol-studios/powersync packages. It re-exports key types and provides\n * helper functions for type-safe integration.\n *\n * The @pol-studios/powersync package is an optional peer dependency.\n * This bridge allows the db package to work seamlessly with or without\n * the powersync package installed.\n *\n * @example\n * ```typescript\n * import { isPowerSyncAvailable, usePowerSyncDatabase } from '@pol-studios/db/powersync-bridge';\n *\n * if (isPowerSyncAvailable()) {\n * // Use PowerSync features\n * }\n * ```\n */\n\n// =============================================================================\n// Type Re-exports from @pol-studios/powersync\n// =============================================================================\n\n/**\n * Re-export core types from @pol-studios/powersync for convenience.\n * These types are defined here to avoid runtime dependency on the package.\n */\n\n/**\n * Abstract interface for PowerSync database operations.\n * This matches the interface from @pol-studios/powersync/core.\n */\nexport interface AbstractPowerSyncDatabase {\n /** Execute a query and return all results */\n getAll<T>(sql: string, params?: unknown[]): Promise<T[]>;\n /** Execute a query and return first result or null */\n get<T>(sql: string, params?: unknown[]): Promise<T | null>;\n /** Execute a SQL statement (INSERT, UPDATE, DELETE) */\n execute(sql: string, params?: unknown[]): Promise<{\n rowsAffected: number;\n }>;\n /** Whether the database is currently connected */\n connected: boolean;\n /** Current sync status */\n currentStatus: {\n connected: boolean;\n connecting: boolean;\n hasSynced: boolean;\n lastSyncedAt: Date | null;\n dataFlowStatus?: {\n uploading: boolean;\n downloading: boolean;\n };\n downloadProgress?: {\n downloadedFraction: number;\n downloadedOperations: number;\n totalOperations: number;\n };\n };\n /** Initialize the database */\n init(): Promise<void>;\n /** Close the database connection */\n close(): Promise<void>;\n /** Connect to the PowerSync service */\n connect(connector: unknown): Promise<void>;\n /** Disconnect from the PowerSync service */\n disconnect(): Promise<void>;\n /** Register a listener for status changes */\n registerListener(listener: {\n statusChanged?: (status: unknown) => void;\n }): () => void;\n /** Get the next pending CRUD transaction */\n getNextCrudTransaction(): Promise<unknown>;\n}\n\n/**\n * Sync status from @pol-studios/powersync.\n */\nexport interface PowerSyncSyncStatus {\n /** Whether connected to the PowerSync service */\n connected: boolean;\n /** Whether currently attempting to connect */\n connecting: boolean;\n /** Whether initial sync has completed */\n hasSynced: boolean;\n /** Timestamp of last successful sync */\n lastSyncedAt: Date | null;\n /** Whether currently uploading local changes */\n uploading: boolean;\n /** Whether currently downloading remote changes */\n downloading: boolean;\n /** Download progress details */\n downloadProgress: {\n current: number;\n target: number;\n percentage: number;\n } | null;\n}\n\n/**\n * Connection health status from @pol-studios/powersync.\n */\nexport interface PowerSyncConnectionHealth {\n /** Current connection status */\n status: \"healthy\" | \"degraded\" | \"disconnected\";\n /** Last measured query latency in milliseconds */\n latency: number | null;\n /** Timestamp of the last health check */\n lastHealthCheck: Date | null;\n /** Number of consecutive health check failures */\n consecutiveFailures: number;\n /** Total reconnection attempts since last successful connection */\n reconnectAttempts: number;\n}\n\n/**\n * Sync metrics from @pol-studios/powersync.\n */\nexport interface PowerSyncMetrics {\n /** Total number of sync operations attempted */\n totalSyncs: number;\n /** Number of successful sync operations */\n successfulSyncs: number;\n /** Number of failed sync operations */\n failedSyncs: number;\n /** Duration of the last sync in milliseconds */\n lastSyncDuration: number | null;\n /** Average sync duration in milliseconds */\n averageSyncDuration: number | null;\n /** Total bytes downloaded across all syncs */\n totalDataDownloaded: number;\n /** Total bytes uploaded across all syncs */\n totalDataUploaded: number;\n /** Last sync error details */\n lastError: {\n type: string;\n message: string;\n timestamp: Date;\n } | null;\n}\n\n/**\n * Sync control actions from @pol-studios/powersync.\n */\nexport interface PowerSyncControlActions {\n /** Trigger a sync operation */\n triggerSync: () => Promise<void>;\n /** Pause sync operations */\n pause: () => Promise<void>;\n /** Resume sync operations */\n resume: () => Promise<void>;\n /** Disconnect from the PowerSync service */\n disconnect: () => Promise<void>;\n /** Set the sync scope for selective sync */\n setScope: (scope: {\n type: string;\n ids: string[];\n } | null) => void;\n}\n\n// =============================================================================\n// Availability Check\n// =============================================================================\n\n/**\n * Flag to track whether @pol-studios/powersync is available.\n * This is set lazily on first check.\n */\nlet _powerSyncAvailable: boolean | null = null;\n\n/**\n * Check if @pol-studios/powersync is available.\n *\n * This function performs a lazy check to see if the powersync package\n * is installed and can be imported. The result is cached for subsequent calls.\n *\n * @returns true if @pol-studios/powersync is available, false otherwise\n *\n * @example\n * ```typescript\n * import { isPowerSyncAvailable } from '@pol-studios/db/powersync-bridge';\n *\n * if (isPowerSyncAvailable()) {\n * // Safe to use PowerSync features\n * const { usePowerSync } = await import('@pol-studios/powersync');\n * }\n * ```\n */\nexport function isPowerSyncAvailable(): boolean {\n if (_powerSyncAvailable === null) {\n try {\n // Try to require the package to check availability\n // This will throw if the package is not installed\n require.resolve(\"@pol-studios/powersync\");\n _powerSyncAvailable = true;\n } catch {\n _powerSyncAvailable = false;\n }\n }\n return _powerSyncAvailable;\n}\n\n/**\n * Reset the availability check cache.\n * Useful for testing or when package installation state might change.\n */\nexport function resetPowerSyncAvailabilityCache(): void {\n _powerSyncAvailable = null;\n}\n\n// =============================================================================\n// Type Guards\n// =============================================================================\n\n/**\n * Type guard to check if a value is an AbstractPowerSyncDatabase.\n *\n * @param value - The value to check\n * @returns true if value implements AbstractPowerSyncDatabase interface\n */\nexport function isAbstractPowerSyncDatabase(value: unknown): value is AbstractPowerSyncDatabase {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n const db = value as Record<string, unknown>;\n return typeof db.getAll === \"function\" && typeof db.get === \"function\" && typeof db.execute === \"function\" && typeof db.init === \"function\" && typeof db.close === \"function\" && typeof db.connect === \"function\" && typeof db.disconnect === \"function\" && typeof db.registerListener === \"function\" && \"connected\" in db && \"currentStatus\" in db;\n}\n\n/**\n * Type guard to check if a value is a PowerSyncSyncStatus.\n *\n * @param value - The value to check\n * @returns true if value matches PowerSyncSyncStatus interface\n */\nexport function isPowerSyncSyncStatus(value: unknown): value is PowerSyncSyncStatus {\n if (typeof value !== \"object\" || value === null) {\n return false;\n }\n const status = value as Record<string, unknown>;\n return typeof status.connected === \"boolean\" && typeof status.connecting === \"boolean\" && typeof status.hasSynced === \"boolean\" && typeof status.uploading === \"boolean\" && typeof status.downloading === \"boolean\";\n}\n\n// =============================================================================\n// Conversion Utilities\n// =============================================================================\n\n/**\n * Convert PowerSync sync status to the V3 DataLayer SyncStatus format.\n *\n * This utility helps bridge the sync status from @pol-studios/powersync\n * to the format expected by @pol-studios/db's DataLayerProvider.\n *\n * @param powerSyncStatus - The sync status from @pol-studios/powersync\n * @param pendingCount - Number of pending uploads (from pendingMutations)\n * @returns SyncStatus in @pol-studios/db format\n */\nexport function convertToDataLayerSyncStatus(powerSyncStatus: PowerSyncSyncStatus, pendingCount: number = 0): import(\"../core/types\").SyncStatus {\n return {\n isConnected: powerSyncStatus.connected,\n isSyncing: powerSyncStatus.uploading || powerSyncStatus.downloading,\n lastSyncedAt: powerSyncStatus.lastSyncedAt,\n pendingUploads: pendingCount,\n error: null\n };\n}\n\n/**\n * Convert PowerSync sync control to the V3 DataLayer SyncControl format.\n *\n * @param powerSyncControl - The sync control actions from @pol-studios/powersync\n * @returns SyncControl in @pol-studios/db format\n */\nexport function convertToDataLayerSyncControl(powerSyncControl: PowerSyncControlActions): import(\"../core/types\").SyncControl {\n return {\n triggerSync: powerSyncControl.triggerSync,\n startLiveSync: powerSyncControl.resume,\n stopLiveSync: () => {\n powerSyncControl.pause();\n },\n setScope: async (scopeName: string, values: string[]) => {\n powerSyncControl.setScope({\n type: scopeName,\n ids: values\n });\n }\n };\n}\n\n// =============================================================================\n// Integration Helpers\n// =============================================================================\n\n/**\n * Create a database instance getter that works with PowerSync context.\n *\n * This is useful for integrating PowerSyncProvider with DataLayerProvider\n * by providing a way to get the database instance from the PowerSync context.\n *\n * @param getPowerSyncDb - Function to get the PowerSync database from context\n * @returns A function that returns the database or null\n */\nexport function createDatabaseGetter(getPowerSyncDb: () => AbstractPowerSyncDatabase | null): () => AbstractPowerSyncDatabase | null {\n return getPowerSyncDb;\n}\n\n/**\n * Options for setting up DataLayerProvider with PowerSync integration.\n */\nexport interface PowerSyncIntegrationOptions {\n /**\n * The PowerSync database instance from PowerSyncProvider.\n */\n database: AbstractPowerSyncDatabase | null;\n\n /**\n * Whether the PowerSync database is ready.\n */\n isReady: boolean;\n\n /**\n * Current sync status from PowerSyncProvider.\n */\n syncStatus?: PowerSyncSyncStatus;\n\n /**\n * Sync control actions from PowerSyncProvider.\n */\n syncControl?: PowerSyncControlActions;\n\n /**\n * Number of pending mutations.\n */\n pendingCount?: number;\n}\n\n/**\n * Get the powerSyncInstance prop for DataLayerProvider from PowerSync context values.\n *\n * This helper extracts the necessary values from @pol-studios/powersync hooks\n * and returns them in a format suitable for DataLayerProvider.\n *\n * @param options - The PowerSync integration options\n * @returns The powerSyncInstance to pass to DataLayerProvider, or null if not ready\n *\n * @example\n * ```typescript\n * // Inside a component wrapped with PowerSyncProvider\n * const { db, isReady } = usePowerSync();\n * const { status, pendingCount } = useSyncStatus();\n * const syncControl = useSyncControl();\n *\n * const powerSyncInstance = getPowerSyncInstance({\n * database: db,\n * isReady,\n * syncStatus: status,\n * syncControl,\n * pendingCount,\n * });\n *\n * return (\n * <DataLayerProvider\n * config={config}\n * powerSyncInstance={powerSyncInstance}\n * supabaseClient={supabase}\n * queryClient={queryClient}\n * >\n * {children}\n * </DataLayerProvider>\n * );\n * ```\n */\nexport function getPowerSyncInstance(options: PowerSyncIntegrationOptions): AbstractPowerSyncDatabase | null {\n if (!options.isReady || !options.database) {\n return null;\n }\n return options.database;\n}\n\n// =============================================================================\n// Re-export for Convenience\n// =============================================================================\n\n/**\n * Re-export the PowerSyncDatabase type from the query executor for convenience.\n * This is the minimal interface used internally by @pol-studios/db.\n */\nexport type { PowerSyncDatabase } from \"../query/executor\";"],"mappings":";;;;;AA0KA,IAAI,sBAAsC;AAoBnC,SAAS,uBAAgC;AAC9C,MAAI,wBAAwB,MAAM;AAChC,QAAI;AAGF,gBAAQ,QAAQ,wBAAwB;AACxC,4BAAsB;AAAA,IACxB,QAAQ;AACN,4BAAsB;AAAA,IACxB;AAAA,EACF;AACA,SAAO;AACT;AAMO,SAAS,kCAAwC;AACtD,wBAAsB;AACxB;AAYO,SAAS,4BAA4B,OAAoD;AAC9F,MAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,WAAO;AAAA,EACT;AACA,QAAM,KAAK;AACX,SAAO,OAAO,GAAG,WAAW,cAAc,OAAO,GAAG,QAAQ,cAAc,OAAO,GAAG,YAAY,cAAc,OAAO,GAAG,SAAS,cAAc,OAAO,GAAG,UAAU,cAAc,OAAO,GAAG,YAAY,cAAc,OAAO,GAAG,eAAe,cAAc,OAAO,GAAG,qBAAqB,cAAc,eAAe,MAAM,mBAAmB;AACnV;AAQO,SAAS,sBAAsB,OAA8C;AAClF,MAAI,OAAO,UAAU,YAAY,UAAU,MAAM;AAC/C,WAAO;AAAA,EACT;AACA,QAAM,SAAS;AACf,SAAO,OAAO,OAAO,cAAc,aAAa,OAAO,OAAO,eAAe,aAAa,OAAO,OAAO,cAAc,aAAa,OAAO,OAAO,cAAc,aAAa,OAAO,OAAO,gBAAgB;AAC5M;AAgBO,SAAS,6BAA6B,iBAAsC,eAAuB,GAAuC;AAC/I,SAAO;AAAA,IACL,aAAa,gBAAgB;AAAA,IAC7B,WAAW,gBAAgB,aAAa,gBAAgB;AAAA,IACxD,cAAc,gBAAgB;AAAA,IAC9B,gBAAgB;AAAA,IAChB,OAAO;AAAA,EACT;AACF;AAQO,SAAS,8BAA8B,kBAAgF;AAC5H,SAAO;AAAA,IACL,aAAa,iBAAiB;AAAA,IAC9B,eAAe,iBAAiB;AAAA,IAChC,cAAc,MAAM;AAClB,uBAAiB,MAAM;AAAA,IACzB;AAAA,IACA,UAAU,OAAO,WAAmB,WAAqB;AACvD,uBAAiB,SAAS;AAAA,QACxB,MAAM;AAAA,QACN,KAAK;AAAA,MACP,CAAC;AAAA,IACH;AAAA,EACF;AACF;AAeO,SAAS,qBAAqB,gBAAgG;AACnI,SAAO;AACT;AAoEO,SAAS,qBAAqB,SAAwE;AAC3G,MAAI,CAAC,QAAQ,WAAW,CAAC,QAAQ,UAAU;AACzC,WAAO;AAAA,EACT;AACA,SAAO,QAAQ;AACjB;","names":[]}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=chunk-NSIAAYW3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}