@pol-studios/db 1.0.54 → 1.0.56

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 (77) hide show
  1. package/dist/{DataLayerContext-C7cJtiO8.d.ts → DataLayerContext-BYZtDD0g.d.ts} +1 -1
  2. package/dist/auth/context.js +6 -4
  3. package/dist/auth/hooks.js +7 -5
  4. package/dist/auth/index.js +7 -5
  5. package/dist/{chunk-FIAXWEBK.js → chunk-4EO55YV2.js} +10 -7
  6. package/dist/chunk-4EO55YV2.js.map +1 -0
  7. package/dist/{chunk-DP3YEVSX.js → chunk-6SDH7M7J.js} +26 -10
  8. package/dist/chunk-6SDH7M7J.js.map +1 -0
  9. package/dist/{chunk-UJWETW36.js → chunk-AKIRHA4Q.js} +527 -418
  10. package/dist/chunk-AKIRHA4Q.js.map +1 -0
  11. package/dist/{chunk-2XS2PM62.js → chunk-DDL63KLQ.js} +388 -107
  12. package/dist/chunk-DDL63KLQ.js.map +1 -0
  13. package/dist/{chunk-YA6MUTA7.js → chunk-FI6JAD5G.js} +3 -3
  14. package/dist/{chunk-WQLIGVQR.js → chunk-GWYTROSD.js} +98 -1
  15. package/dist/chunk-GWYTROSD.js.map +1 -0
  16. package/dist/chunk-JOULSXOI.js +415 -0
  17. package/dist/chunk-JOULSXOI.js.map +1 -0
  18. package/dist/{chunk-OKYHI6JG.js → chunk-LF3V3ERS.js} +3 -3
  19. package/dist/{chunk-FMYXG4VN.js → chunk-MEBT5YHA.js} +2 -2
  20. package/dist/{chunk-BZSAPFFB.js → chunk-N4KK5G5T.js} +116 -18
  21. package/dist/chunk-N4KK5G5T.js.map +1 -0
  22. package/dist/chunk-QYAFI34Q.js +64 -0
  23. package/dist/chunk-QYAFI34Q.js.map +1 -0
  24. package/dist/{chunk-3Q74DK5K.js → chunk-VYFAMTHI.js} +2 -2
  25. package/dist/chunk-W7PERM66.js +215 -0
  26. package/dist/chunk-W7PERM66.js.map +1 -0
  27. package/dist/{chunk-ZGQ7Q4ZU.js → chunk-WM25QE7E.js} +2 -2
  28. package/dist/{chunk-HZIVE5AZ.js → chunk-YRIPM2AN.js} +253 -338
  29. package/dist/chunk-YRIPM2AN.js.map +1 -0
  30. package/dist/chunk-YUX6RGLZ.js +1858 -0
  31. package/dist/chunk-YUX6RGLZ.js.map +1 -0
  32. package/dist/{chunk-Z3EJX3VG.js → chunk-Z456IHCB.js} +3 -3
  33. package/dist/core/index.d.ts +24 -1
  34. package/dist/{executor-YJw4m7Q7.d.ts → executor-D15yjeMo.d.ts} +20 -0
  35. package/dist/hooks/index.d.ts +3 -3
  36. package/dist/hooks/index.js +4 -2
  37. package/dist/{index-jVYdTeWx.d.ts → index-CFUuTzXO.d.ts} +1 -1
  38. package/dist/index.d.ts +5 -5
  39. package/dist/index.js +16 -14
  40. package/dist/index.native.d.ts +62 -8
  41. package/dist/index.native.js +16 -14
  42. package/dist/index.web.d.ts +10 -9
  43. package/dist/index.web.js +30 -19
  44. package/dist/index.web.js.map +1 -1
  45. package/dist/mutation/index.js +3 -3
  46. package/dist/parser/index.js +3 -3
  47. package/dist/powersync-bridge/index.d.ts +1 -1
  48. package/dist/query/index.d.ts +4 -83
  49. package/dist/query/index.js +17 -7
  50. package/dist/realtime/index.d.ts +80 -1
  51. package/dist/realtime/index.js +14 -12
  52. package/dist/realtime/index.js.map +1 -1
  53. package/dist/select-parser-BAV7fOaM.d.ts +144 -0
  54. package/dist/types/index.d.ts +3 -3
  55. package/dist/types/index.js +4 -4
  56. package/dist/{useDbCount-DHLJzmkO.d.ts → useDbCount-Ckb-FhZk.d.ts} +1 -1
  57. package/dist/{useResolveFeedback-B0UcYWVI.d.ts → useResolveFeedback-CuUkdHoR.d.ts} +13 -29
  58. package/dist/with-auth/index.js +9 -7
  59. package/dist/with-auth/index.js.map +1 -1
  60. package/package.json +9 -4
  61. package/dist/chunk-2XS2PM62.js.map +0 -1
  62. package/dist/chunk-BZSAPFFB.js.map +0 -1
  63. package/dist/chunk-CTRY7JDP.js +0 -4112
  64. package/dist/chunk-CTRY7JDP.js.map +0 -1
  65. package/dist/chunk-DP3YEVSX.js.map +0 -1
  66. package/dist/chunk-FIAXWEBK.js.map +0 -1
  67. package/dist/chunk-HZIVE5AZ.js.map +0 -1
  68. package/dist/chunk-INEUG6MC.js +0 -521
  69. package/dist/chunk-INEUG6MC.js.map +0 -1
  70. package/dist/chunk-UJWETW36.js.map +0 -1
  71. package/dist/chunk-WQLIGVQR.js.map +0 -1
  72. /package/dist/{chunk-YA6MUTA7.js.map → chunk-FI6JAD5G.js.map} +0 -0
  73. /package/dist/{chunk-OKYHI6JG.js.map → chunk-LF3V3ERS.js.map} +0 -0
  74. /package/dist/{chunk-FMYXG4VN.js.map → chunk-MEBT5YHA.js.map} +0 -0
  75. /package/dist/{chunk-3Q74DK5K.js.map → chunk-VYFAMTHI.js.map} +0 -0
  76. /package/dist/{chunk-ZGQ7Q4ZU.js.map → chunk-WM25QE7E.js.map} +0 -0
  77. /package/dist/{chunk-Z3EJX3VG.js.map → chunk-Z456IHCB.js.map} +0 -0
package/dist/index.web.js CHANGED
@@ -56,7 +56,7 @@ import {
56
56
  useUpsertChangelog,
57
57
  useUpsertChangelogEntry,
58
58
  useUpsertChangelogMedia
59
- } from "./chunk-2XS2PM62.js";
59
+ } from "./chunk-DDL63KLQ.js";
60
60
  import {
61
61
  LiveChangeContext,
62
62
  LiveChangeContextProvider,
@@ -67,7 +67,7 @@ import {
67
67
  useUserMetadataState,
68
68
  useUserMetadataValue,
69
69
  userMetadataContext
70
- } from "./chunk-FIAXWEBK.js";
70
+ } from "./chunk-4EO55YV2.js";
71
71
  import {
72
72
  PostgrestFilter,
73
73
  binarySearch,
@@ -95,7 +95,7 @@ import {
95
95
  removeAliasFromDeclaration,
96
96
  removeFirstPathElement,
97
97
  setFilterValue
98
- } from "./chunk-YA6MUTA7.js";
98
+ } from "./chunk-FI6JAD5G.js";
99
99
  import {
100
100
  useAdvanceQuery,
101
101
  useDbCount,
@@ -104,13 +104,13 @@ import {
104
104
  useDbInsert,
105
105
  useDbUpdate,
106
106
  useDbUpsert
107
- } from "./chunk-3Q74DK5K.js";
107
+ } from "./chunk-VYFAMTHI.js";
108
108
  import {
109
109
  Constants,
110
110
  createCombinedStatus,
111
111
  normalizeFilter,
112
112
  useDbAdvanceFilterQuery
113
- } from "./chunk-Z3EJX3VG.js";
113
+ } from "./chunk-Z456IHCB.js";
114
114
  import {
115
115
  Accessory,
116
116
  Address,
@@ -299,20 +299,20 @@ import {
299
299
  UserMetadata
300
300
  } from "./chunk-SM73S2DY.js";
301
301
  import "./chunk-NSIAAYW3.js";
302
- import "./chunk-FMYXG4VN.js";
302
+ import "./chunk-MEBT5YHA.js";
303
303
  import {
304
304
  DEFAULT_QUERY_TIMEOUT,
305
305
  TIMEOUT_ERROR_MESSAGE,
306
306
  isTimeoutError,
307
307
  useDbQuery as useDbQuery2
308
- } from "./chunk-DP3YEVSX.js";
308
+ } from "./chunk-6SDH7M7J.js";
309
309
  import {
310
310
  DataLayerContext,
311
311
  useDataLayer,
312
312
  useDataLayerOptional,
313
313
  useDbQuery,
314
314
  useDbQueryById
315
- } from "./chunk-WQLIGVQR.js";
315
+ } from "./chunk-GWYTROSD.js";
316
316
  import "./chunk-RT4O5H2E.js";
317
317
  import {
318
318
  useAdvancedFilterQuery,
@@ -321,7 +321,7 @@ import {
321
321
  usePartialAdvancedQuery,
322
322
  usePartialQuery,
323
323
  useQuery
324
- } from "./chunk-OKYHI6JG.js";
324
+ } from "./chunk-LF3V3ERS.js";
325
325
  import {
326
326
  QueryExecutor,
327
327
  RelationshipResolver,
@@ -330,23 +330,30 @@ import {
330
330
  createQueryExecutor,
331
331
  createRelationshipResolver,
332
332
  createResultJoiner,
333
- createSQLBuilder,
333
+ createSQLBuilder
334
+ } from "./chunk-YRIPM2AN.js";
335
+ import {
336
+ getSupabaseUrl,
337
+ setSupabaseUrl
338
+ } from "./chunk-GC3TBUWE.js";
339
+ import {
334
340
  extractColumnNames,
341
+ extractExplicitFkRelations,
342
+ extractExplicitFkTables,
335
343
  extractRelationNames,
336
344
  getRelationSelect,
345
+ hasExplicitFk,
337
346
  hasRelation,
338
347
  parseSelect,
348
+ selectHasExplicitFkSyntax,
339
349
  stringifySelect,
340
350
  tokenizeTopLevel
341
- } from "./chunk-HZIVE5AZ.js";
342
- import {
343
- getSupabaseUrl,
344
- setSupabaseUrl
345
- } from "./chunk-GC3TBUWE.js";
351
+ } from "./chunk-W7PERM66.js";
346
352
  import {
347
353
  useBatchDelete,
348
354
  useBatchUpsert
349
- } from "./chunk-ZGQ7Q4ZU.js";
355
+ } from "./chunk-WM25QE7E.js";
356
+ import "./chunk-QYAFI34Q.js";
350
357
  import {
351
358
  OPERATOR_MAP,
352
359
  PostgrestParser,
@@ -360,14 +367,14 @@ import {
360
367
  parseSelectParam,
361
368
  parseValue,
362
369
  sortSearchParams
363
- } from "./chunk-UJWETW36.js";
370
+ } from "./chunk-JOULSXOI.js";
364
371
  import "./chunk-J4ZVCXZ4.js";
365
372
  import {
366
373
  encode,
367
374
  useInsertMutation,
368
375
  useUpsertItem
369
- } from "./chunk-CTRY7JDP.js";
370
- import "./chunk-INEUG6MC.js";
376
+ } from "./chunk-YUX6RGLZ.js";
377
+ import "./chunk-AKIRHA4Q.js";
371
378
  import {
372
379
  ClientInstanceId,
373
380
  SupabaseProvider,
@@ -1320,6 +1327,8 @@ export {
1320
1327
  encodeObject,
1321
1328
  executeAdvanceQuery,
1322
1329
  extractColumnNames,
1330
+ extractExplicitFkRelations,
1331
+ extractExplicitFkTables,
1323
1332
  extractPathsFromFilters,
1324
1333
  extractRelationNames,
1325
1334
  filterFilterDefinitionsByPaths,
@@ -1333,6 +1342,7 @@ export {
1333
1342
  getSupabaseUrl,
1334
1343
  getTable,
1335
1344
  groupPathsRecursive,
1345
+ hasExplicitFk,
1336
1346
  hasRelation,
1337
1347
  ifDateGetTime,
1338
1348
  isAndFilter,
@@ -1358,6 +1368,7 @@ export {
1358
1368
  parseValue,
1359
1369
  removeAliasFromDeclaration,
1360
1370
  removeFirstPathElement,
1371
+ selectHasExplicitFkSyntax,
1361
1372
  setDefaultOptions,
1362
1373
  setFilterValue,
1363
1374
  setSupabaseUrl,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/useDbInfiniteQuery.ts","../src/useDbInsert.ts","../src/useDbPartialAdvanceQuery.ts","../src/useDbPartialQuery.ts","../src/useDbUpdate.ts","../src/providers/DataLayerProvider.web.tsx"],"sourcesContent":["import { InfiniteData, useInfiniteQuery, UseInfiniteQueryOptions } from \"@tanstack/react-query\";\nimport { isUsable } from \"@pol-studios/utils\";\nimport { useMemo, useRef } from \"react\";\nimport { PostgrestSingleResponse } from \"@supabase/supabase-js\";\nimport { GenericTable, GenericView } from \"./parser/types\";\nimport { encode } from \"@supabase-cache-helpers/postgrest-react-query\";\ntype DataType = Record<string, any>;\nexport function useDbInfiniteQuery<Relation extends GenericTable | GenericView, Result extends DataType, Query extends string = \"*\", RelationName = unknown, Relationships = (Relation extends {\n Relationships: infer R;\n} ? R : unknown), Builder = PromiseLike<PostgrestSingleResponse<Result>>>(query: PromiseLike<PostgrestSingleResponse<Result>>, countPerLoad: number, config?: Omit<UseInfiniteQueryOptions<PostgrestSingleResponse<Result>, Error, InfiniteData<PostgrestSingleResponse<Result>, number>>, \"queryKey\" | \"queryFn\" | \"getNextPageParam\" | \"initialPageParam\"> & {\n crossOrganization?: boolean;\n onQuery?: ({\n pageParam,\n query\n }: {\n pageParam: number;\n query: Builder;\n }) => any;\n enableOnQuery?: boolean;\n}) {\n const initialQueryKey = encode(query, false).join(\"-\");\n const lastKnownQuery = useRef(initialQueryKey);\n const currentPageNumber = useRef(1);\n if (lastKnownQuery.current != initialQueryKey) {\n lastKnownQuery.current = initialQueryKey;\n currentPageNumber.current = 1;\n }\n const isFetching = useRef(false);\n const queryKey = useMemo(() => encode(query, false), [initialQueryKey, config?.crossOrganization]);\n const getQuery = useInfiniteQuery<PostgrestSingleResponse<Result>>({\n ...config,\n queryKey: queryKey,\n queryFn: async ({\n pageParam,\n signal\n }) => {\n let adjustableQuery = query as any;\n const pageNumber = pageParam as number;\n if (config?.onQuery && config?.enableOnQuery) {\n config?.onQuery({\n query: adjustableQuery,\n pageParam: pageNumber\n });\n } else {\n adjustableQuery = adjustableQuery.range((pageNumber - 1) * countPerLoad, pageNumber * countPerLoad - 1);\n }\n adjustableQuery = adjustableQuery.abortSignal(signal);\n updatedCache.current = false;\n const response = (await adjustableQuery) as PostgrestSingleResponse<Result>;\n currentPageNumber.current = pageNumber;\n if (response.error) {\n throw response.error;\n } else {\n return response;\n }\n },\n initialPageParam: 1,\n getNextPageParam: (response_0, allResponses, lastParam) => {\n const pageParam_0 = lastParam as number;\n const resp = response_0 as PostgrestSingleResponse<Result> & {\n count?: number | null;\n };\n if (allResponses.length * countPerLoad >= (resp?.count ?? 0)) {\n return undefined;\n }\n return pageParam_0 + 1;\n }\n });\n const updatedCache = useRef(true);\n return useMemo(() => {\n type PageType = PostgrestSingleResponse<Result> & {\n count?: number | null;\n };\n const pages = getQuery.data?.pages as PageType[] | undefined;\n return {\n ...getQuery,\n count: pages?.[pages.length - 1]?.count,\n data: pages?.flatMap(x => x.data ?? []) as unknown as Result\n };\n }, [getQuery.data, currentPageNumber.current]);\n}","import { c as _c } from \"react/compiler-runtime\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport useSupabase, { Database } from \"./useSupabase\";\nimport { useInsertMutation } from \"@supabase-cache-helpers/postgrest-react-query\";\nimport { PostgrestSingleResponse } from \"@supabase/supabase-js\";\nimport { GetResult } from \"./parser/select-query-parser\";\nimport { GenericSchema } from \"./parser/types\";\nimport { isUsable } from \"@pol-studios/utils\";\nimport { omit } from \"@pol-studios/utils\";\ntype ItemType<T> = T extends Array<infer U> ? U : T;\ntype MutationOption = Parameters<typeof useInsertMutation>[3];\nexport function useDbInsert(relation, t0, query, mutationOption) {\n const $ = _c(11);\n let t1;\n if ($[0] !== t0) {\n t1 = t0 === undefined ? [\"id\"] : t0;\n $[0] = t0;\n $[1] = t1;\n } else {\n t1 = $[1];\n }\n const primaryKeys = t1;\n const supabase = useSupabase();\n const tableName = typeof relation === \"object\" ? relation.table : relation;\n const schemaName = typeof relation === \"object\" ? String(relation.schema) : \"public\";\n let t2;\n if ($[2] !== primaryKeys) {\n t2 = primaryKeys.map(_temp);\n $[2] = primaryKeys;\n $[3] = t2;\n } else {\n t2 = $[3];\n }\n const primaryKeysAsStrings = t2 as string[];\n const t3 = supabase as any;\n let t4;\n if ($[4] !== schemaName || $[5] !== t3 || $[6] !== tableName) {\n t4 = t3.schema(schemaName as \"public\" | \"core\").from(tableName);\n $[4] = schemaName;\n $[5] = t3;\n $[6] = tableName;\n $[7] = t4;\n } else {\n t4 = $[7];\n }\n const mutation = useInsertMutation(t4 as any, primaryKeysAsStrings as any, query, mutationOption);\n let t5;\n if ($[8] !== mutation || $[9] !== primaryKeys) {\n t5 = {\n mutationFn: async item => {\n const primaryKeysNull = primaryKeys.filter(x => x in item === false || isUsable((item as any)[x]) === false).map(_temp2);\n const response = await mutation.mutateAsync([omit(item, primaryKeysNull)]);\n mutation.reset();\n return response?.[0] as RowResult;\n }\n };\n $[8] = mutation;\n $[9] = primaryKeys;\n $[10] = t5;\n } else {\n t5 = $[10];\n }\n const updateMutation = useMutation(t5);\n return updateMutation;\n}\nfunction _temp2(k_0) {\n return String(k_0);\n}\nfunction _temp(k) {\n return String(k);\n}","import { c as _c } from \"react/compiler-runtime\";\nimport { UseQueryOptions, UseQueryResult } from \"@tanstack/react-query\";\nimport { PostgrestSingleResponse } from \"@supabase/supabase-js\";\nimport { encode } from \"@supabase-cache-helpers/postgrest-react-query\";\nimport { useLayoutEffect, useMemo, useState } from \"react\";\nimport { newUuid, omit } from \"@pol-studios/utils\";\nimport { useSessionStorageState } from \"@pol-studios/hooks/storage\";\nimport { QueryState, useDbAdvanceFilterQuery } from \"./useDbAdvanceQuery\";\nexport type UseDbPartialAdvanceQueryResult<T extends Record<string, any>> = ReturnType<typeof useDbPartialAdvanceQuery<T[]>>;\nexport function useDbPartialAdvanceQuery(query, itemCountPerPage, config) {\n const $ = _c(54);\n const initialQuery = encode(query, false);\n const [id, setId] = useState(window.location.pathname);\n const [currentPage, setCurrentPage] = useSessionStorageState(`${id}-currentPage`, 1);\n const page = currentPage ?? 1;\n const t0 = query as any;\n let t1;\n if ($[0] !== itemCountPerPage || $[1] !== page || $[2] !== t0) {\n t1 = t0.range((page - 1) * itemCountPerPage, page * itemCountPerPage - 1);\n $[0] = itemCountPerPage;\n $[1] = page;\n $[2] = t0;\n $[3] = t1;\n } else {\n t1 = $[3];\n }\n const rangedQuery = t1;\n const t2 = config?.filterKey;\n const t3 = currentPage ?? 1;\n let t4;\n if ($[4] !== t3) {\n t4 = t3.toString();\n $[4] = t3;\n $[5] = t4;\n } else {\n t4 = $[5];\n }\n let t5;\n if ($[6] !== config || $[7] !== t2 || $[8] !== t4) {\n t5 = {\n ...config,\n filterKey: t2,\n count: \"exact\",\n key: t4\n };\n $[6] = config;\n $[7] = t2;\n $[8] = t4;\n $[9] = t5;\n } else {\n t5 = $[9];\n }\n const [baseQuery, filter, setFilters] = useDbAdvanceFilterQuery(rangedQuery, t5);\n let t6;\n if ($[10] !== filter) {\n t6 = JSON.stringify(omit(filter, [\"pagination\"]));\n $[10] = filter;\n $[11] = t6;\n } else {\n t6 = $[11];\n }\n const filterKey = t6;\n const select = initialQuery[4].split(\"&\").find(_temp);\n let t7;\n if ($[12] !== filterKey || $[13] !== id || $[14] !== initialQuery[3] || $[15] !== initialQuery[5] || $[16] !== initialQuery[6] || $[17] !== initialQuery[7] || $[18] !== initialQuery[8] || $[19] !== select || $[20] !== setId) {\n t7 = () => {\n const newId = [initialQuery[3], select, initialQuery[5], initialQuery[6], initialQuery[7], initialQuery[8], filterKey].join(\"-\");\n console.log({\n newId,\n id\n });\n setId(newId);\n };\n $[12] = filterKey;\n $[13] = id;\n $[14] = initialQuery[3];\n $[15] = initialQuery[5];\n $[16] = initialQuery[6];\n $[17] = initialQuery[7];\n $[18] = initialQuery[8];\n $[19] = select;\n $[20] = setId;\n $[21] = t7;\n } else {\n t7 = $[21];\n }\n let t8;\n if ($[22] !== filterKey || $[23] !== initialQuery[3] || $[24] !== initialQuery[5] || $[25] !== initialQuery[6] || $[26] !== initialQuery[7] || $[27] !== initialQuery[8] || $[28] !== select) {\n t8 = [initialQuery[3], select, initialQuery[5], initialQuery[6], initialQuery[7], initialQuery[8], filterKey];\n $[22] = filterKey;\n $[23] = initialQuery[3];\n $[24] = initialQuery[5];\n $[25] = initialQuery[6];\n $[26] = initialQuery[7];\n $[27] = initialQuery[8];\n $[28] = select;\n $[29] = t8;\n } else {\n t8 = $[29];\n }\n useLayoutEffect(t7, t8);\n let t9;\n if ($[30] !== setCurrentPage) {\n t9 = () => {\n setCurrentPage(_temp2);\n };\n $[30] = setCurrentPage;\n $[31] = t9;\n } else {\n t9 = $[31];\n }\n const safeFetchNextPage = t9;\n let t10;\n if ($[32] !== setCurrentPage) {\n t10 = () => {\n setCurrentPage(_temp3);\n };\n $[32] = setCurrentPage;\n $[33] = t10;\n } else {\n t10 = $[33];\n }\n const fetchPreviousPage = t10;\n const pageCount = Math.max(Math.ceil((baseQuery.count ?? 0) / itemCountPerPage), 1);\n const t11 = currentPage ?? 1;\n let t12;\n if ($[34] !== baseQuery.count || $[35] !== baseQuery.data || $[36] !== currentPage || $[37] !== itemCountPerPage) {\n t12 = baseQuery.data ? toPagedResponse(baseQuery.data as Result, currentPage ?? 1, baseQuery.count ?? baseQuery.data.length, itemCountPerPage) : null;\n $[34] = baseQuery.count;\n $[35] = baseQuery.data;\n $[36] = currentPage;\n $[37] = itemCountPerPage;\n $[38] = t12;\n } else {\n t12 = $[38];\n }\n const t13 = (currentPage ?? 1) < pageCount;\n const t14 = (currentPage ?? 1) > 1;\n const t15 = baseQuery.count ?? baseQuery.data?.length;\n let t16;\n if ($[39] !== baseQuery || $[40] !== fetchPreviousPage || $[41] !== pageCount || $[42] !== safeFetchNextPage || $[43] !== setCurrentPage || $[44] !== t11 || $[45] !== t12 || $[46] !== t13 || $[47] !== t14 || $[48] !== t15) {\n t16 = {\n ...baseQuery,\n clarification: baseQuery.clarification,\n fetchPreviousPage,\n fetchNextPage: safeFetchNextPage,\n currentPage: t11,\n setCurrentPage,\n data: t12,\n pageCount,\n hasNextPage: t13,\n hasPreviousPage: t14,\n count: t15\n };\n $[39] = baseQuery;\n $[40] = fetchPreviousPage;\n $[41] = pageCount;\n $[42] = safeFetchNextPage;\n $[43] = setCurrentPage;\n $[44] = t11;\n $[45] = t12;\n $[46] = t13;\n $[47] = t14;\n $[48] = t15;\n $[49] = t16;\n } else {\n t16 = $[49];\n }\n const request = t16 as ReturnType<typeof useDbAdvanceFilterQuery<Result>>[0] & {\n currentPage: number;\n setCurrentPage: (value: React.SetStateAction<number>) => void;\n fetchNextPage: () => any;\n fetchPreviousPage: () => any;\n data: {\n Items: Result;\n CurrentPage: number;\n ItemCount: number;\n MaxCountPerPage: number;\n PageCount: number;\n };\n pageCount: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n count: number;\n clarification?: ReturnType<typeof useDbAdvanceFilterQuery<Result>>[0][\"clarification\"];\n };\n let t17;\n if ($[50] !== filter || $[51] !== request || $[52] !== setFilters) {\n t17 = [request, filter, setFilters];\n $[50] = filter;\n $[51] = request;\n $[52] = setFilters;\n $[53] = t17;\n } else {\n t17 = $[53];\n }\n return t17;\n}\nfunction _temp3(currentPage_1) {\n return (currentPage_1 ?? 1) - 1;\n}\nfunction _temp2(currentPage_0) {\n return (currentPage_0 ?? 1) + 1;\n}\nfunction _temp(x) {\n return x.startsWith(\"select=\");\n}\nfunction toPagedResponse<Result extends any[]>(results: Result, currentPage: number, totalCount: number, itemPerPage: number) {\n const newPage = {\n Items: results,\n CurrentPage: currentPage,\n ItemCount: totalCount,\n MaxCountPerPage: itemPerPage,\n PageCount: Math.max(Math.ceil(totalCount / itemPerPage), 1)\n };\n return newPage;\n}\ninterface PagedResponse<T extends any[]> {\n Items: T;\n PageCount: number;\n CurrentPage: number;\n ItemCount: number;\n MaxCountPerPage: number;\n ContinuationToken: string;\n}","import { c as _c } from \"react/compiler-runtime\";\nimport { UseQueryOptions } from \"@tanstack/react-query\";\nimport { PostgrestError, PostgrestSingleResponse } from \"@supabase/supabase-js\";\nimport { encode } from \"@supabase-cache-helpers/postgrest-react-query\";\nimport { useDbQuery } from \"./useDbQuery\";\nimport { useId, useMemo } from \"react\";\nimport { newUuid } from \"@pol-studios/utils\";\nimport { useSessionStorageState } from \"@pol-studios/hooks/storage\";\nexport type UseDbPartialQueryResult<T extends Record<string, any>> = ReturnType<typeof useDbPartialQuery<T[]>>;\ntype ItemType<T> = T extends Array<infer U> ? U : T;\nexport function useDbPartialQuery(query, itemCountPerPage, config) {\n const $ = _c(28);\n let t0;\n if ($[0] !== query) {\n t0 = encode(query, false);\n $[0] = query;\n $[1] = t0;\n } else {\n t0 = $[1];\n }\n const initialQuery = t0;\n let t1;\n if ($[2] !== initialQuery[7] || $[3] !== initialQuery[8]) {\n t1 = [initialQuery[7], initialQuery[8]];\n $[2] = initialQuery[7];\n $[3] = initialQuery[8];\n $[4] = t1;\n } else {\n t1 = $[4];\n }\n const id = t1.join(\"-\");\n const [currentPage, setCurrentPage] = useSessionStorageState(id, 1);\n const page = currentPage ?? 1;\n const t2 = query as any;\n let t3;\n if ($[5] !== itemCountPerPage || $[6] !== page || $[7] !== t2) {\n t3 = t2.range((page - 1) * itemCountPerPage, page * itemCountPerPage - 1);\n $[5] = itemCountPerPage;\n $[6] = page;\n $[7] = t2;\n $[8] = t3;\n } else {\n t3 = $[8];\n }\n const rangedQuery = t3;\n const baseQuery = useDbQuery(rangedQuery, config);\n let t4;\n if ($[9] !== setCurrentPage) {\n t4 = () => {\n setCurrentPage(_temp);\n };\n $[9] = setCurrentPage;\n $[10] = t4;\n } else {\n t4 = $[10];\n }\n const safeFetchNextPage = t4;\n let t5;\n if ($[11] !== setCurrentPage) {\n t5 = () => {\n setCurrentPage(_temp2);\n };\n $[11] = setCurrentPage;\n $[12] = t5;\n } else {\n t5 = $[12];\n }\n const fetchPreviousPage = t5;\n const pageCount = Math.max(Math.ceil((baseQuery.count ?? 0) / itemCountPerPage), 1);\n const t6 = currentPage ?? 1;\n let t7;\n if ($[13] !== baseQuery.count || $[14] !== baseQuery.data || $[15] !== currentPage || $[16] !== itemCountPerPage) {\n t7 = baseQuery.data ? toPagedResponse(baseQuery.data as Result, currentPage ?? 1, baseQuery.count ?? baseQuery.data.length, itemCountPerPage) : null;\n $[13] = baseQuery.count;\n $[14] = baseQuery.data;\n $[15] = currentPage;\n $[16] = itemCountPerPage;\n $[17] = t7;\n } else {\n t7 = $[17];\n }\n const t8 = (currentPage ?? 1) < pageCount;\n const t9 = (currentPage ?? 1) > 1;\n let t10;\n if ($[18] !== baseQuery || $[19] !== fetchPreviousPage || $[20] !== pageCount || $[21] !== safeFetchNextPage || $[22] !== setCurrentPage || $[23] !== t6 || $[24] !== t7 || $[25] !== t8 || $[26] !== t9) {\n t10 = {\n ...baseQuery,\n fetchPreviousPage,\n fetchNextPage: safeFetchNextPage,\n currentPage: t6,\n setCurrentPage,\n data: t7,\n pageCount,\n hasNextPage: t8,\n hasPreviousPage: t9\n };\n $[18] = baseQuery;\n $[19] = fetchPreviousPage;\n $[20] = pageCount;\n $[21] = safeFetchNextPage;\n $[22] = setCurrentPage;\n $[23] = t6;\n $[24] = t7;\n $[25] = t8;\n $[26] = t9;\n $[27] = t10;\n } else {\n t10 = $[27];\n }\n return t10;\n}\nfunction _temp2(currentPage_1) {\n return currentPage_1 - 1;\n}\nfunction _temp(currentPage_0) {\n return currentPage_0 + 1;\n}\nfunction toPagedResponse<Result extends any[]>(results: Result, currentPage: number, totalCount: number, itemPerPage: number) {\n const newPage = {\n Items: results,\n CurrentPage: currentPage,\n ItemCount: totalCount,\n MaxCountPerPage: itemPerPage,\n PageCount: Math.max(Math.ceil(totalCount / itemPerPage), 1)\n };\n return newPage;\n}\ninterface PagedResponse<T extends any[]> {\n Items: T;\n PageCount: number;\n CurrentPage: number;\n ItemCount: number;\n MaxCountPerPage: number;\n ContinuationToken: string;\n}","import { c as _c } from \"react/compiler-runtime\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport useSupabase, { Database } from \"./useSupabase\";\nimport { useUpdateMutation, useUpsertItem } from \"@supabase-cache-helpers/postgrest-react-query\";\nimport { GetResult } from \"./parser/select-query-parser\";\nimport { GenericSchema } from \"./parser/types\";\nimport { isUsable, omit } from \"@pol-studios/utils\";\ntype ItemType<T> = T extends Array<infer U> ? U : T;\ntype MutationOption = Parameters<typeof useUpdateMutation>[3];\nexport function useDbUpdate(relation, t0, query, mutationOption) {\n const $ = _c(14);\n let t1;\n if ($[0] !== t0) {\n t1 = t0 === undefined ? [\"id\"] : t0;\n $[0] = t0;\n $[1] = t1;\n } else {\n t1 = $[1];\n }\n const primaryKeys = t1;\n const supabase = useSupabase();\n const tableName = typeof relation === \"object\" ? relation.table : relation;\n const schemaName = typeof relation === \"object\" ? String(relation.schema) : \"public\";\n let t2;\n if ($[2] !== primaryKeys) {\n t2 = primaryKeys.map(_temp);\n $[2] = primaryKeys;\n $[3] = t2;\n } else {\n t2 = $[3];\n }\n const primaryKeysAsStrings = t2 as string[];\n const t3 = primaryKeysAsStrings as any;\n const t4 = relation as any;\n let t5;\n if ($[4] !== t3 || $[5] !== t4) {\n t5 = {\n primaryKeys: t3,\n table: t4,\n schema: \"public\"\n };\n $[4] = t3;\n $[5] = t4;\n $[6] = t5;\n } else {\n t5 = $[6];\n }\n const upsertItem = useUpsertItem(t5);\n let t6;\n if ($[7] !== primaryKeys || $[8] !== primaryKeysAsStrings || $[9] !== schemaName || $[10] !== supabase || $[11] !== tableName || $[12] !== upsertItem) {\n t6 = {\n mutationFn: async item => {\n let response = null;\n if (primaryKeys.every(x_0 => x_0 in item && isUsable((item as any)[x_0]))) {\n const query_0 = (supabase as any).schema(schemaName as \"public\" | \"core\").from(tableName).update(omit(item as any, primaryKeysAsStrings as any) as any);\n primaryKeys.forEach(x => {\n query_0.eq(String(x), (item as any)[x]);\n });\n const queryResponse = await query_0.select().single().throwOnError();\n if (queryResponse.data) {\n response = queryResponse.data as any;\n upsertItem(response as any);\n }\n }\n return response as any;\n }\n };\n $[7] = primaryKeys;\n $[8] = primaryKeysAsStrings;\n $[9] = schemaName;\n $[10] = supabase;\n $[11] = tableName;\n $[12] = upsertItem;\n $[13] = t6;\n } else {\n t6 = $[13];\n }\n const updateMutation = useMutation(t6);\n return updateMutation;\n}\nfunction _temp(k) {\n return String(k);\n}","/**\n * V3 Data Layer Provider - Web/Browser Version\n *\n * React context provider that initializes adapters and provides context for all V3 hooks.\n * This is a browser-safe version that excludes PowerSync dependencies.\n *\n * For React Native apps that need PowerSync, use the default DataLayerProvider instead.\n */\n\nimport React, { useState, useEffect, useMemo, useCallback, ReactNode, JSX } from \"react\";\nimport type { SupabaseClient } from \"@supabase/supabase-js\";\nimport type { QueryClient } from \"@tanstack/react-query\";\nimport { DataLayerContext, DataLayerContextValue, DataLayerStatus } from \"./DataLayerContext\";\nimport { AdapterRegistry, createAdapterRegistry } from \"../adapters/registry\";\nimport { AdapterAutoDetector, BackendStatus, createAdapterAutoDetector } from \"../adapters/auto-detector\";\nimport { createSupabaseAdapter } from \"../adapters/supabase-adapter\";\nimport type { DataLayerConfig, SyncStatus, SyncControl } from \"../core/types\";\n\n// =============================================================================\n// Props Type\n// =============================================================================\n\n/**\n * Props for DataLayerProvider (Web version)\n */\nexport interface DataLayerProviderProps {\n /** Data layer configuration */\n config: DataLayerConfig;\n\n /** Children to render */\n children: ReactNode;\n\n /** Supabase client (required) */\n supabaseClient: SupabaseClient;\n\n /** React Query client (required) */\n queryClient: QueryClient;\n\n /** Callback when initialization completes */\n onInitialized?: (context: DataLayerContextValue) => void;\n\n /** Callback when error occurs */\n onError?: (error: Error) => void;\n}\n\n// =============================================================================\n// Default Values\n// =============================================================================\n\n/**\n * Default sync status for when PowerSync is not available\n */\nconst defaultSyncStatus: SyncStatus = {\n isConnected: false,\n isSyncing: false,\n lastSyncedAt: null,\n pendingUploads: 0,\n error: null\n};\n\n/**\n * Default sync control for when PowerSync is not available\n */\nconst defaultSyncControl: SyncControl = {\n triggerSync: async () => {\n console.warn(\"Sync not available: PowerSync not initialized\");\n },\n startLiveSync: async () => {\n console.warn(\"Live sync not available: PowerSync not initialized\");\n },\n stopLiveSync: () => {\n console.warn(\"Live sync not available: PowerSync not initialized\");\n },\n setScope: async () => {\n console.warn(\"Scope control not available: PowerSync not initialized\");\n },\n // Auto-retry controls\n pauseAutoRetry: () => {\n console.warn(\"Pause auto-retry not available: PowerSync not initialized\");\n },\n resumeAutoRetry: () => {\n console.warn(\"Resume auto-retry not available: PowerSync not initialized\");\n },\n isAutoRetryPaused: false,\n // Pending mutations\n addPendingMutation: () => {\n // No-op when PowerSync not available\n },\n removePendingMutation: () => {\n // No-op when PowerSync not available\n }\n};\n\n// =============================================================================\n// Provider Component\n// =============================================================================\n\n/**\n * Provider component for the V3 data layer (Web/Browser version).\n *\n * This provider:\n * - Creates and manages the AdapterRegistry\n * - Initializes the AdapterAutoDetector for backend selection\n * - Sets up Supabase adapter (PowerSync not supported in web builds)\n * - Tracks online/offline status\n * - Provides context for all V3 hooks\n *\n * Note: This is the browser-safe version that does NOT support PowerSync.\n * For React Native apps that need PowerSync, use the default DataLayerProvider.\n *\n * @example\n * ```tsx\n * import { DataLayerProvider } from \"@pol-studios/db/web\";\n *\n * function App() {\n * return (\n * <DataLayerProvider\n * config={dataLayerConfig}\n * supabaseClient={supabase}\n * queryClient={queryClient}\n * >\n * <YourApp />\n * </DataLayerProvider>\n * );\n * }\n * ```\n */\nexport function DataLayerProvider({\n config,\n children,\n supabaseClient,\n queryClient,\n onInitialized,\n onError\n}: DataLayerProviderProps): JSX.Element {\n // Create registry (stable across renders)\n const [registry] = useState<AdapterRegistry>(() => createAdapterRegistry(config));\n\n // Track auto-detector instance\n const [autoDetector, setAutoDetector] = useState<AdapterAutoDetector | null>(null);\n\n // Track status\n const [status, setStatus] = useState<DataLayerStatus>({\n isInitialized: false,\n currentBackend: null,\n powerSyncStatus: BackendStatus.UNAVAILABLE,\n isOnline: typeof navigator !== \"undefined\" ? navigator.onLine : true,\n lastDetection: null,\n error: null,\n hasSynced: false // Web builds don't use PowerSync, so never synced\n });\n\n // ===========================================================================\n // Initialization Effect\n // ===========================================================================\n\n useEffect(() => {\n try {\n // Create auto-detector (no PowerSync instance for web builds)\n const detector = createAdapterAutoDetector(null,\n // No PowerSync in web builds\n supabaseClient, {\n preferPowerSync: false\n });\n setAutoDetector(detector);\n\n // Create and set Supabase adapter (always available)\n const supabaseAdapter = createSupabaseAdapter(supabaseClient, config.schema);\n registry.setSupabaseAdapter(supabaseAdapter);\n\n // Initialize registry with dependencies (no PowerSync)\n registry.initialize({\n powerSync: null,\n supabase: supabaseClient,\n queryClient,\n schema: config.schema\n });\n\n // Perform initial detection\n const detection = detector.detect();\n\n // Update status\n setStatus({\n isInitialized: true,\n currentBackend: detection.recommendedBackend,\n powerSyncStatus: detection.powerSyncStatus,\n isOnline: detection.isOnline,\n lastDetection: detection,\n error: null,\n hasSynced: false // Web builds don't use PowerSync, so never synced\n });\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n setStatus(prev => ({\n ...prev,\n error: err\n }));\n onError?.(err);\n }\n }, [supabaseClient, queryClient, config.schema, registry, onError]);\n\n // ===========================================================================\n // Online/Offline Status Effect\n // ===========================================================================\n\n useEffect(() => {\n const handleOnline = () => {\n setStatus(prev => ({\n ...prev,\n isOnline: true\n }));\n // Re-run detection when coming online\n if (autoDetector) {\n const detection = autoDetector.detect();\n setStatus(prev => ({\n ...prev,\n currentBackend: detection.recommendedBackend,\n powerSyncStatus: detection.powerSyncStatus,\n lastDetection: detection\n }));\n }\n };\n const handleOffline = () => {\n setStatus(prev => ({\n ...prev,\n isOnline: false\n }));\n // Re-run detection when going offline\n if (autoDetector) {\n const detection = autoDetector.detect();\n setStatus(prev => ({\n ...prev,\n currentBackend: detection.recommendedBackend,\n powerSyncStatus: detection.powerSyncStatus,\n lastDetection: detection\n }));\n }\n };\n\n // Only add window event listeners in browser environment\n const isBrowser = typeof window !== \"undefined\" && typeof window.addEventListener === \"function\";\n if (isBrowser) {\n window.addEventListener(\"online\", handleOnline);\n window.addEventListener(\"offline\", handleOffline);\n return () => {\n window.removeEventListener(\"online\", handleOnline);\n window.removeEventListener(\"offline\", handleOffline);\n };\n }\n }, [autoDetector]);\n\n // ===========================================================================\n // Backend Change Listener Effect\n // ===========================================================================\n\n useEffect(() => {\n if (!autoDetector) return;\n const unsubscribe = autoDetector.addListener(detection => {\n setStatus(prev => ({\n ...prev,\n currentBackend: detection.recommendedBackend,\n powerSyncStatus: detection.powerSyncStatus,\n isOnline: detection.isOnline,\n lastDetection: detection\n }));\n });\n return unsubscribe;\n }, [autoDetector]);\n\n // ===========================================================================\n // Initialization Callback Effect\n // ===========================================================================\n\n useEffect(() => {\n if (status.isInitialized && !status.error && onInitialized) {\n const contextValue = buildContextValue();\n if (contextValue) {\n onInitialized(contextValue);\n }\n }\n // Only run when initialization state changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [status.isInitialized, status.error]);\n\n // ===========================================================================\n // Helper Functions\n // ===========================================================================\n\n /**\n * Get adapter for a specific table\n */\n const getAdapter = useCallback((table: string, operation: 'read' | 'write' = 'read') => {\n return registry.getAdapter(table, operation);\n }, [registry]);\n\n /**\n * Build the context value object\n */\n const buildContextValue = useCallback((): DataLayerContextValue | null => {\n if (!status.isInitialized) return null;\n return {\n registry,\n getAdapter,\n powerSync: null,\n // No PowerSync in web builds\n supabase: supabaseClient,\n queryClient,\n schema: config.schema,\n status,\n syncStatus: defaultSyncStatus,\n syncControl: defaultSyncControl\n };\n }, [registry, getAdapter, supabaseClient, queryClient, config.schema, status]);\n\n // ===========================================================================\n // Context Value Memoization\n // ===========================================================================\n\n const contextValue = useMemo(() => buildContextValue(), [buildContextValue]);\n\n // ===========================================================================\n // Cleanup Effect\n // ===========================================================================\n\n useEffect(() => {\n return () => {\n // Dispose registry on unmount\n registry.dispose();\n };\n }, [registry]);\n\n // ===========================================================================\n // Render\n // ===========================================================================\n\n // Don't render children until the data layer is initialized.\n // This prevents hooks from being called before the context is ready.\n // The provider will render children once initialization completes.\n if (!contextValue) {\n return null;\n }\n return <DataLayerContext.Provider value={contextValue}>\n {children}\n </DataLayerContext.Provider>;\n}\nexport default DataLayerProvider;"],"mappings":"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","names":["useInfiniteQuery","useDbInfiniteQuery","useInfiniteQuery","useDbInsert","_c","omit","_c","omit","_temp","_temp2","_c","useSessionStorageState","_c","useDbQuery","_temp","_temp2","toPagedResponse","_c","useMutation","isUsable","omit","useDbUpdate","_c","_temp","useMutation","useState","useMemo","useState","contextValue","useMemo"]}
1
+ {"version":3,"sources":["../src/useDbInfiniteQuery.ts","../src/useDbInsert.ts","../src/useDbPartialAdvanceQuery.ts","../src/useDbPartialQuery.ts","../src/useDbUpdate.ts","../src/providers/DataLayerProvider.web.tsx"],"sourcesContent":["import { InfiniteData, useInfiniteQuery, UseInfiniteQueryOptions } from \"@tanstack/react-query\";\nimport { isUsable } from \"@pol-studios/utils\";\nimport { useMemo, useRef } from \"react\";\nimport { PostgrestSingleResponse } from \"@supabase/supabase-js\";\nimport { GenericTable, GenericView } from \"./parser/types\";\nimport { encode } from \"@supabase-cache-helpers/postgrest-react-query\";\ntype DataType = Record<string, any>;\nexport function useDbInfiniteQuery<Relation extends GenericTable | GenericView, Result extends DataType, Query extends string = \"*\", RelationName = unknown, Relationships = (Relation extends {\n Relationships: infer R;\n} ? R : unknown), Builder = PromiseLike<PostgrestSingleResponse<Result>>>(query: PromiseLike<PostgrestSingleResponse<Result>>, countPerLoad: number, config?: Omit<UseInfiniteQueryOptions<PostgrestSingleResponse<Result>, Error, InfiniteData<PostgrestSingleResponse<Result>, number>>, \"queryKey\" | \"queryFn\" | \"getNextPageParam\" | \"initialPageParam\"> & {\n crossOrganization?: boolean;\n onQuery?: ({\n pageParam,\n query\n }: {\n pageParam: number;\n query: Builder;\n }) => any;\n enableOnQuery?: boolean;\n}) {\n const initialQueryKey = encode(query, false).join(\"-\");\n const lastKnownQuery = useRef(initialQueryKey);\n const currentPageNumber = useRef(1);\n if (lastKnownQuery.current != initialQueryKey) {\n lastKnownQuery.current = initialQueryKey;\n currentPageNumber.current = 1;\n }\n const isFetching = useRef(false);\n const queryKey = useMemo(() => encode(query, false), [initialQueryKey, config?.crossOrganization]);\n const getQuery = useInfiniteQuery<PostgrestSingleResponse<Result>>({\n ...config,\n queryKey: queryKey,\n queryFn: async ({\n pageParam,\n signal\n }) => {\n let adjustableQuery = query as any;\n const pageNumber = pageParam as number;\n if (config?.onQuery && config?.enableOnQuery) {\n config?.onQuery({\n query: adjustableQuery,\n pageParam: pageNumber\n });\n } else {\n adjustableQuery = adjustableQuery.range((pageNumber - 1) * countPerLoad, pageNumber * countPerLoad - 1);\n }\n adjustableQuery = adjustableQuery.abortSignal(signal);\n updatedCache.current = false;\n const response = (await adjustableQuery) as PostgrestSingleResponse<Result>;\n currentPageNumber.current = pageNumber;\n if (response.error) {\n throw response.error;\n } else {\n return response;\n }\n },\n initialPageParam: 1,\n getNextPageParam: (response_0, allResponses, lastParam) => {\n const pageParam_0 = lastParam as number;\n const resp = response_0 as PostgrestSingleResponse<Result> & {\n count?: number | null;\n };\n if (allResponses.length * countPerLoad >= (resp?.count ?? 0)) {\n return undefined;\n }\n return pageParam_0 + 1;\n }\n });\n const updatedCache = useRef(true);\n return useMemo(() => {\n type PageType = PostgrestSingleResponse<Result> & {\n count?: number | null;\n };\n const pages = getQuery.data?.pages as PageType[] | undefined;\n return {\n ...getQuery,\n count: pages?.[pages.length - 1]?.count,\n data: pages?.flatMap(x => x.data ?? []) as unknown as Result\n };\n }, [getQuery.data, currentPageNumber.current]);\n}","import { c as _c } from \"react/compiler-runtime\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport useSupabase, { Database } from \"./useSupabase\";\nimport { useInsertMutation } from \"@supabase-cache-helpers/postgrest-react-query\";\nimport { PostgrestSingleResponse } from \"@supabase/supabase-js\";\nimport { GetResult } from \"./parser/select-query-parser\";\nimport { GenericSchema } from \"./parser/types\";\nimport { isUsable } from \"@pol-studios/utils\";\nimport { omit } from \"@pol-studios/utils\";\ntype ItemType<T> = T extends Array<infer U> ? U : T;\ntype MutationOption = Parameters<typeof useInsertMutation>[3];\nexport function useDbInsert(relation, t0, query, mutationOption) {\n const $ = _c(11);\n let t1;\n if ($[0] !== t0) {\n t1 = t0 === undefined ? [\"id\"] : t0;\n $[0] = t0;\n $[1] = t1;\n } else {\n t1 = $[1];\n }\n const primaryKeys = t1;\n const supabase = useSupabase();\n const tableName = typeof relation === \"object\" ? relation.table : relation;\n const schemaName = typeof relation === \"object\" ? String(relation.schema) : \"public\";\n let t2;\n if ($[2] !== primaryKeys) {\n t2 = primaryKeys.map(_temp);\n $[2] = primaryKeys;\n $[3] = t2;\n } else {\n t2 = $[3];\n }\n const primaryKeysAsStrings = t2 as string[];\n const t3 = supabase as any;\n let t4;\n if ($[4] !== schemaName || $[5] !== t3 || $[6] !== tableName) {\n t4 = t3.schema(schemaName as \"public\" | \"core\").from(tableName);\n $[4] = schemaName;\n $[5] = t3;\n $[6] = tableName;\n $[7] = t4;\n } else {\n t4 = $[7];\n }\n const mutation = useInsertMutation(t4 as any, primaryKeysAsStrings as any, query, mutationOption);\n let t5;\n if ($[8] !== mutation || $[9] !== primaryKeys) {\n t5 = {\n mutationFn: async item => {\n const primaryKeysNull = primaryKeys.filter(x => x in item === false || isUsable((item as any)[x]) === false).map(_temp2);\n const response = await mutation.mutateAsync([omit(item, primaryKeysNull)]);\n mutation.reset();\n return response?.[0] as RowResult;\n }\n };\n $[8] = mutation;\n $[9] = primaryKeys;\n $[10] = t5;\n } else {\n t5 = $[10];\n }\n const updateMutation = useMutation(t5);\n return updateMutation;\n}\nfunction _temp2(k_0) {\n return String(k_0);\n}\nfunction _temp(k) {\n return String(k);\n}","import { c as _c } from \"react/compiler-runtime\";\nimport { UseQueryOptions, UseQueryResult } from \"@tanstack/react-query\";\nimport { PostgrestSingleResponse } from \"@supabase/supabase-js\";\nimport { encode } from \"@supabase-cache-helpers/postgrest-react-query\";\nimport { useLayoutEffect, useMemo, useState } from \"react\";\nimport { newUuid, omit } from \"@pol-studios/utils\";\nimport { useSessionStorageState } from \"@pol-studios/hooks/storage\";\nimport { QueryState, useDbAdvanceFilterQuery } from \"./useDbAdvanceQuery\";\nexport type UseDbPartialAdvanceQueryResult<T extends Record<string, any>> = ReturnType<typeof useDbPartialAdvanceQuery<T[]>>;\nexport function useDbPartialAdvanceQuery(query, itemCountPerPage, config) {\n const $ = _c(54);\n const initialQuery = encode(query, false);\n const [id, setId] = useState(window.location.pathname);\n const [currentPage, setCurrentPage] = useSessionStorageState(`${id}-currentPage`, 1);\n const page = currentPage ?? 1;\n const t0 = query as any;\n let t1;\n if ($[0] !== itemCountPerPage || $[1] !== page || $[2] !== t0) {\n t1 = t0.range((page - 1) * itemCountPerPage, page * itemCountPerPage - 1);\n $[0] = itemCountPerPage;\n $[1] = page;\n $[2] = t0;\n $[3] = t1;\n } else {\n t1 = $[3];\n }\n const rangedQuery = t1;\n const t2 = config?.filterKey;\n const t3 = currentPage ?? 1;\n let t4;\n if ($[4] !== t3) {\n t4 = t3.toString();\n $[4] = t3;\n $[5] = t4;\n } else {\n t4 = $[5];\n }\n let t5;\n if ($[6] !== config || $[7] !== t2 || $[8] !== t4) {\n t5 = {\n ...config,\n filterKey: t2,\n count: \"exact\",\n key: t4\n };\n $[6] = config;\n $[7] = t2;\n $[8] = t4;\n $[9] = t5;\n } else {\n t5 = $[9];\n }\n const [baseQuery, filter, setFilters] = useDbAdvanceFilterQuery(rangedQuery, t5);\n let t6;\n if ($[10] !== filter) {\n t6 = JSON.stringify(omit(filter, [\"pagination\"]));\n $[10] = filter;\n $[11] = t6;\n } else {\n t6 = $[11];\n }\n const filterKey = t6;\n const select = initialQuery[4].split(\"&\").find(_temp);\n let t7;\n if ($[12] !== filterKey || $[13] !== id || $[14] !== initialQuery[3] || $[15] !== initialQuery[5] || $[16] !== initialQuery[6] || $[17] !== initialQuery[7] || $[18] !== initialQuery[8] || $[19] !== select || $[20] !== setId) {\n t7 = () => {\n const newId = [initialQuery[3], select, initialQuery[5], initialQuery[6], initialQuery[7], initialQuery[8], filterKey].join(\"-\");\n console.log({\n newId,\n id\n });\n setId(newId);\n };\n $[12] = filterKey;\n $[13] = id;\n $[14] = initialQuery[3];\n $[15] = initialQuery[5];\n $[16] = initialQuery[6];\n $[17] = initialQuery[7];\n $[18] = initialQuery[8];\n $[19] = select;\n $[20] = setId;\n $[21] = t7;\n } else {\n t7 = $[21];\n }\n let t8;\n if ($[22] !== filterKey || $[23] !== initialQuery[3] || $[24] !== initialQuery[5] || $[25] !== initialQuery[6] || $[26] !== initialQuery[7] || $[27] !== initialQuery[8] || $[28] !== select) {\n t8 = [initialQuery[3], select, initialQuery[5], initialQuery[6], initialQuery[7], initialQuery[8], filterKey];\n $[22] = filterKey;\n $[23] = initialQuery[3];\n $[24] = initialQuery[5];\n $[25] = initialQuery[6];\n $[26] = initialQuery[7];\n $[27] = initialQuery[8];\n $[28] = select;\n $[29] = t8;\n } else {\n t8 = $[29];\n }\n useLayoutEffect(t7, t8);\n let t9;\n if ($[30] !== setCurrentPage) {\n t9 = () => {\n setCurrentPage(_temp2);\n };\n $[30] = setCurrentPage;\n $[31] = t9;\n } else {\n t9 = $[31];\n }\n const safeFetchNextPage = t9;\n let t10;\n if ($[32] !== setCurrentPage) {\n t10 = () => {\n setCurrentPage(_temp3);\n };\n $[32] = setCurrentPage;\n $[33] = t10;\n } else {\n t10 = $[33];\n }\n const fetchPreviousPage = t10;\n const pageCount = Math.max(Math.ceil((baseQuery.count ?? 0) / itemCountPerPage), 1);\n const t11 = currentPage ?? 1;\n let t12;\n if ($[34] !== baseQuery.count || $[35] !== baseQuery.data || $[36] !== currentPage || $[37] !== itemCountPerPage) {\n t12 = baseQuery.data ? toPagedResponse(baseQuery.data as Result, currentPage ?? 1, baseQuery.count ?? baseQuery.data.length, itemCountPerPage) : null;\n $[34] = baseQuery.count;\n $[35] = baseQuery.data;\n $[36] = currentPage;\n $[37] = itemCountPerPage;\n $[38] = t12;\n } else {\n t12 = $[38];\n }\n const t13 = (currentPage ?? 1) < pageCount;\n const t14 = (currentPage ?? 1) > 1;\n const t15 = baseQuery.count ?? baseQuery.data?.length;\n let t16;\n if ($[39] !== baseQuery || $[40] !== fetchPreviousPage || $[41] !== pageCount || $[42] !== safeFetchNextPage || $[43] !== setCurrentPage || $[44] !== t11 || $[45] !== t12 || $[46] !== t13 || $[47] !== t14 || $[48] !== t15) {\n t16 = {\n ...baseQuery,\n clarification: baseQuery.clarification,\n fetchPreviousPage,\n fetchNextPage: safeFetchNextPage,\n currentPage: t11,\n setCurrentPage,\n data: t12,\n pageCount,\n hasNextPage: t13,\n hasPreviousPage: t14,\n count: t15\n };\n $[39] = baseQuery;\n $[40] = fetchPreviousPage;\n $[41] = pageCount;\n $[42] = safeFetchNextPage;\n $[43] = setCurrentPage;\n $[44] = t11;\n $[45] = t12;\n $[46] = t13;\n $[47] = t14;\n $[48] = t15;\n $[49] = t16;\n } else {\n t16 = $[49];\n }\n const request = t16 as ReturnType<typeof useDbAdvanceFilterQuery<Result>>[0] & {\n currentPage: number;\n setCurrentPage: (value: React.SetStateAction<number>) => void;\n fetchNextPage: () => any;\n fetchPreviousPage: () => any;\n data: {\n Items: Result;\n CurrentPage: number;\n ItemCount: number;\n MaxCountPerPage: number;\n PageCount: number;\n };\n pageCount: number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n count: number;\n clarification?: ReturnType<typeof useDbAdvanceFilterQuery<Result>>[0][\"clarification\"];\n };\n let t17;\n if ($[50] !== filter || $[51] !== request || $[52] !== setFilters) {\n t17 = [request, filter, setFilters];\n $[50] = filter;\n $[51] = request;\n $[52] = setFilters;\n $[53] = t17;\n } else {\n t17 = $[53];\n }\n return t17;\n}\nfunction _temp3(currentPage_1) {\n return (currentPage_1 ?? 1) - 1;\n}\nfunction _temp2(currentPage_0) {\n return (currentPage_0 ?? 1) + 1;\n}\nfunction _temp(x) {\n return x.startsWith(\"select=\");\n}\nfunction toPagedResponse<Result extends any[]>(results: Result, currentPage: number, totalCount: number, itemPerPage: number) {\n const newPage = {\n Items: results,\n CurrentPage: currentPage,\n ItemCount: totalCount,\n MaxCountPerPage: itemPerPage,\n PageCount: Math.max(Math.ceil(totalCount / itemPerPage), 1)\n };\n return newPage;\n}\ninterface PagedResponse<T extends any[]> {\n Items: T;\n PageCount: number;\n CurrentPage: number;\n ItemCount: number;\n MaxCountPerPage: number;\n ContinuationToken: string;\n}","import { c as _c } from \"react/compiler-runtime\";\nimport { UseQueryOptions } from \"@tanstack/react-query\";\nimport { PostgrestError, PostgrestSingleResponse } from \"@supabase/supabase-js\";\nimport { encode } from \"@supabase-cache-helpers/postgrest-react-query\";\nimport { useDbQuery } from \"./useDbQuery\";\nimport { useId, useMemo } from \"react\";\nimport { newUuid } from \"@pol-studios/utils\";\nimport { useSessionStorageState } from \"@pol-studios/hooks/storage\";\nexport type UseDbPartialQueryResult<T extends Record<string, any>> = ReturnType<typeof useDbPartialQuery<T[]>>;\ntype ItemType<T> = T extends Array<infer U> ? U : T;\nexport function useDbPartialQuery(query, itemCountPerPage, config) {\n const $ = _c(28);\n let t0;\n if ($[0] !== query) {\n t0 = encode(query, false);\n $[0] = query;\n $[1] = t0;\n } else {\n t0 = $[1];\n }\n const initialQuery = t0;\n let t1;\n if ($[2] !== initialQuery[7] || $[3] !== initialQuery[8]) {\n t1 = [initialQuery[7], initialQuery[8]];\n $[2] = initialQuery[7];\n $[3] = initialQuery[8];\n $[4] = t1;\n } else {\n t1 = $[4];\n }\n const id = t1.join(\"-\");\n const [currentPage, setCurrentPage] = useSessionStorageState(id, 1);\n const page = currentPage ?? 1;\n const t2 = query as any;\n let t3;\n if ($[5] !== itemCountPerPage || $[6] !== page || $[7] !== t2) {\n t3 = t2.range((page - 1) * itemCountPerPage, page * itemCountPerPage - 1);\n $[5] = itemCountPerPage;\n $[6] = page;\n $[7] = t2;\n $[8] = t3;\n } else {\n t3 = $[8];\n }\n const rangedQuery = t3;\n const baseQuery = useDbQuery(rangedQuery, config);\n let t4;\n if ($[9] !== setCurrentPage) {\n t4 = () => {\n setCurrentPage(_temp);\n };\n $[9] = setCurrentPage;\n $[10] = t4;\n } else {\n t4 = $[10];\n }\n const safeFetchNextPage = t4;\n let t5;\n if ($[11] !== setCurrentPage) {\n t5 = () => {\n setCurrentPage(_temp2);\n };\n $[11] = setCurrentPage;\n $[12] = t5;\n } else {\n t5 = $[12];\n }\n const fetchPreviousPage = t5;\n const pageCount = Math.max(Math.ceil((baseQuery.count ?? 0) / itemCountPerPage), 1);\n const t6 = currentPage ?? 1;\n let t7;\n if ($[13] !== baseQuery.count || $[14] !== baseQuery.data || $[15] !== currentPage || $[16] !== itemCountPerPage) {\n t7 = baseQuery.data ? toPagedResponse(baseQuery.data as Result, currentPage ?? 1, baseQuery.count ?? baseQuery.data.length, itemCountPerPage) : null;\n $[13] = baseQuery.count;\n $[14] = baseQuery.data;\n $[15] = currentPage;\n $[16] = itemCountPerPage;\n $[17] = t7;\n } else {\n t7 = $[17];\n }\n const t8 = (currentPage ?? 1) < pageCount;\n const t9 = (currentPage ?? 1) > 1;\n let t10;\n if ($[18] !== baseQuery || $[19] !== fetchPreviousPage || $[20] !== pageCount || $[21] !== safeFetchNextPage || $[22] !== setCurrentPage || $[23] !== t6 || $[24] !== t7 || $[25] !== t8 || $[26] !== t9) {\n t10 = {\n ...baseQuery,\n fetchPreviousPage,\n fetchNextPage: safeFetchNextPage,\n currentPage: t6,\n setCurrentPage,\n data: t7,\n pageCount,\n hasNextPage: t8,\n hasPreviousPage: t9\n };\n $[18] = baseQuery;\n $[19] = fetchPreviousPage;\n $[20] = pageCount;\n $[21] = safeFetchNextPage;\n $[22] = setCurrentPage;\n $[23] = t6;\n $[24] = t7;\n $[25] = t8;\n $[26] = t9;\n $[27] = t10;\n } else {\n t10 = $[27];\n }\n return t10;\n}\nfunction _temp2(currentPage_1) {\n return currentPage_1 - 1;\n}\nfunction _temp(currentPage_0) {\n return currentPage_0 + 1;\n}\nfunction toPagedResponse<Result extends any[]>(results: Result, currentPage: number, totalCount: number, itemPerPage: number) {\n const newPage = {\n Items: results,\n CurrentPage: currentPage,\n ItemCount: totalCount,\n MaxCountPerPage: itemPerPage,\n PageCount: Math.max(Math.ceil(totalCount / itemPerPage), 1)\n };\n return newPage;\n}\ninterface PagedResponse<T extends any[]> {\n Items: T;\n PageCount: number;\n CurrentPage: number;\n ItemCount: number;\n MaxCountPerPage: number;\n ContinuationToken: string;\n}","import { c as _c } from \"react/compiler-runtime\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport useSupabase, { Database } from \"./useSupabase\";\nimport { useUpdateMutation, useUpsertItem } from \"@supabase-cache-helpers/postgrest-react-query\";\nimport { GetResult } from \"./parser/select-query-parser\";\nimport { GenericSchema } from \"./parser/types\";\nimport { isUsable, omit } from \"@pol-studios/utils\";\ntype ItemType<T> = T extends Array<infer U> ? U : T;\ntype MutationOption = Parameters<typeof useUpdateMutation>[3];\nexport function useDbUpdate(relation, t0, query, mutationOption) {\n const $ = _c(14);\n let t1;\n if ($[0] !== t0) {\n t1 = t0 === undefined ? [\"id\"] : t0;\n $[0] = t0;\n $[1] = t1;\n } else {\n t1 = $[1];\n }\n const primaryKeys = t1;\n const supabase = useSupabase();\n const tableName = typeof relation === \"object\" ? relation.table : relation;\n const schemaName = typeof relation === \"object\" ? String(relation.schema) : \"public\";\n let t2;\n if ($[2] !== primaryKeys) {\n t2 = primaryKeys.map(_temp);\n $[2] = primaryKeys;\n $[3] = t2;\n } else {\n t2 = $[3];\n }\n const primaryKeysAsStrings = t2 as string[];\n const t3 = primaryKeysAsStrings as any;\n const t4 = relation as any;\n let t5;\n if ($[4] !== t3 || $[5] !== t4) {\n t5 = {\n primaryKeys: t3,\n table: t4,\n schema: \"public\"\n };\n $[4] = t3;\n $[5] = t4;\n $[6] = t5;\n } else {\n t5 = $[6];\n }\n const upsertItem = useUpsertItem(t5);\n let t6;\n if ($[7] !== primaryKeys || $[8] !== primaryKeysAsStrings || $[9] !== schemaName || $[10] !== supabase || $[11] !== tableName || $[12] !== upsertItem) {\n t6 = {\n mutationFn: async item => {\n let response = null;\n if (primaryKeys.every(x_0 => x_0 in item && isUsable((item as any)[x_0]))) {\n const query_0 = (supabase as any).schema(schemaName as \"public\" | \"core\").from(tableName).update(omit(item as any, primaryKeysAsStrings as any) as any);\n primaryKeys.forEach(x => {\n query_0.eq(String(x), (item as any)[x]);\n });\n const queryResponse = await query_0.select().single().throwOnError();\n if (queryResponse.data) {\n response = queryResponse.data as any;\n upsertItem(response as any);\n }\n }\n return response as any;\n }\n };\n $[7] = primaryKeys;\n $[8] = primaryKeysAsStrings;\n $[9] = schemaName;\n $[10] = supabase;\n $[11] = tableName;\n $[12] = upsertItem;\n $[13] = t6;\n } else {\n t6 = $[13];\n }\n const updateMutation = useMutation(t6);\n return updateMutation;\n}\nfunction _temp(k) {\n return String(k);\n}","/**\n * V3 Data Layer Provider - Web/Browser Version\n *\n * React context provider that initializes adapters and provides context for all V3 hooks.\n * This is a browser-safe version that excludes PowerSync dependencies.\n *\n * For React Native apps that need PowerSync, use the default DataLayerProvider instead.\n */\n\nimport React, { useState, useEffect, useMemo, useCallback, ReactNode, JSX } from \"react\";\nimport type { SupabaseClient } from \"@supabase/supabase-js\";\nimport type { QueryClient } from \"@tanstack/react-query\";\nimport { DataLayerContext, DataLayerContextValue, DataLayerStatus } from \"./DataLayerContext\";\nimport { AdapterRegistry, createAdapterRegistry } from \"../adapters/registry\";\nimport { AdapterAutoDetector, BackendStatus, createAdapterAutoDetector } from \"../adapters/auto-detector\";\nimport { createSupabaseAdapter } from \"../adapters/supabase-adapter\";\nimport type { DataLayerConfig, SyncStatus, SyncControl } from \"../core/types\";\n\n// =============================================================================\n// Props Type\n// =============================================================================\n\n/**\n * Props for DataLayerProvider (Web version)\n */\nexport interface DataLayerProviderProps {\n /** Data layer configuration */\n config: DataLayerConfig;\n\n /** Children to render */\n children: ReactNode;\n\n /** Supabase client (required) */\n supabaseClient: SupabaseClient;\n\n /** React Query client (required) */\n queryClient: QueryClient;\n\n /** Callback when initialization completes */\n onInitialized?: (context: DataLayerContextValue) => void;\n\n /** Callback when error occurs */\n onError?: (error: Error) => void;\n}\n\n// =============================================================================\n// Default Values\n// =============================================================================\n\n/**\n * Default sync status for when PowerSync is not available\n */\nconst defaultSyncStatus: SyncStatus = {\n isConnected: false,\n isSyncing: false,\n lastSyncedAt: null,\n pendingUploads: 0,\n error: null\n};\n\n/**\n * Default sync control for when PowerSync is not available\n */\nconst defaultSyncControl: SyncControl = {\n triggerSync: async () => {\n console.warn(\"Sync not available: PowerSync not initialized\");\n },\n startLiveSync: async () => {\n console.warn(\"Live sync not available: PowerSync not initialized\");\n },\n stopLiveSync: () => {\n console.warn(\"Live sync not available: PowerSync not initialized\");\n },\n setScope: async () => {\n console.warn(\"Scope control not available: PowerSync not initialized\");\n },\n // Auto-retry controls\n pauseAutoRetry: () => {\n console.warn(\"Pause auto-retry not available: PowerSync not initialized\");\n },\n resumeAutoRetry: () => {\n console.warn(\"Resume auto-retry not available: PowerSync not initialized\");\n },\n isAutoRetryPaused: false,\n // Pending mutations\n addPendingMutation: () => {\n // No-op when PowerSync not available\n },\n removePendingMutation: () => {\n // No-op when PowerSync not available\n }\n};\n\n// =============================================================================\n// Provider Component\n// =============================================================================\n\n/**\n * Provider component for the V3 data layer (Web/Browser version).\n *\n * This provider:\n * - Creates and manages the AdapterRegistry\n * - Initializes the AdapterAutoDetector for backend selection\n * - Sets up Supabase adapter (PowerSync not supported in web builds)\n * - Tracks online/offline status\n * - Provides context for all V3 hooks\n *\n * Note: This is the browser-safe version that does NOT support PowerSync.\n * For React Native apps that need PowerSync, use the default DataLayerProvider.\n *\n * @example\n * ```tsx\n * import { DataLayerProvider } from \"@pol-studios/db/web\";\n *\n * function App() {\n * return (\n * <DataLayerProvider\n * config={dataLayerConfig}\n * supabaseClient={supabase}\n * queryClient={queryClient}\n * >\n * <YourApp />\n * </DataLayerProvider>\n * );\n * }\n * ```\n */\nexport function DataLayerProvider({\n config,\n children,\n supabaseClient,\n queryClient,\n onInitialized,\n onError\n}: DataLayerProviderProps): JSX.Element {\n // Create registry (stable across renders)\n const [registry] = useState<AdapterRegistry>(() => createAdapterRegistry(config));\n\n // Track auto-detector instance\n const [autoDetector, setAutoDetector] = useState<AdapterAutoDetector | null>(null);\n\n // Track status\n const [status, setStatus] = useState<DataLayerStatus>({\n isInitialized: false,\n currentBackend: null,\n powerSyncStatus: BackendStatus.UNAVAILABLE,\n isOnline: typeof navigator !== \"undefined\" ? navigator.onLine : true,\n lastDetection: null,\n error: null,\n hasSynced: false // Web builds don't use PowerSync, so never synced\n });\n\n // ===========================================================================\n // Initialization Effect\n // ===========================================================================\n\n useEffect(() => {\n try {\n // Create auto-detector (no PowerSync instance for web builds)\n const detector = createAdapterAutoDetector(null,\n // No PowerSync in web builds\n supabaseClient, {\n preferPowerSync: false\n });\n setAutoDetector(detector);\n\n // Create and set Supabase adapter (always available)\n const supabaseAdapter = createSupabaseAdapter(supabaseClient, config.schema);\n registry.setSupabaseAdapter(supabaseAdapter);\n\n // Initialize registry with dependencies (no PowerSync)\n registry.initialize({\n powerSync: null,\n supabase: supabaseClient,\n queryClient,\n schema: config.schema\n });\n\n // Perform initial detection\n const detection = detector.detect();\n\n // Update status\n setStatus({\n isInitialized: true,\n currentBackend: detection.recommendedBackend,\n powerSyncStatus: detection.powerSyncStatus,\n isOnline: detection.isOnline,\n lastDetection: detection,\n error: null,\n hasSynced: false // Web builds don't use PowerSync, so never synced\n });\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n setStatus(prev => ({\n ...prev,\n error: err\n }));\n onError?.(err);\n }\n }, [supabaseClient, queryClient, config.schema, registry, onError]);\n\n // ===========================================================================\n // Online/Offline Status Effect\n // ===========================================================================\n\n useEffect(() => {\n const handleOnline = () => {\n setStatus(prev => ({\n ...prev,\n isOnline: true\n }));\n // Re-run detection when coming online\n if (autoDetector) {\n const detection = autoDetector.detect();\n setStatus(prev => ({\n ...prev,\n currentBackend: detection.recommendedBackend,\n powerSyncStatus: detection.powerSyncStatus,\n lastDetection: detection\n }));\n }\n };\n const handleOffline = () => {\n setStatus(prev => ({\n ...prev,\n isOnline: false\n }));\n // Re-run detection when going offline\n if (autoDetector) {\n const detection = autoDetector.detect();\n setStatus(prev => ({\n ...prev,\n currentBackend: detection.recommendedBackend,\n powerSyncStatus: detection.powerSyncStatus,\n lastDetection: detection\n }));\n }\n };\n\n // Only add window event listeners in browser environment\n const isBrowser = typeof window !== \"undefined\" && typeof window.addEventListener === \"function\";\n if (isBrowser) {\n window.addEventListener(\"online\", handleOnline);\n window.addEventListener(\"offline\", handleOffline);\n return () => {\n window.removeEventListener(\"online\", handleOnline);\n window.removeEventListener(\"offline\", handleOffline);\n };\n }\n }, [autoDetector]);\n\n // ===========================================================================\n // Backend Change Listener Effect\n // ===========================================================================\n\n useEffect(() => {\n if (!autoDetector) return;\n const unsubscribe = autoDetector.addListener(detection => {\n setStatus(prev => ({\n ...prev,\n currentBackend: detection.recommendedBackend,\n powerSyncStatus: detection.powerSyncStatus,\n isOnline: detection.isOnline,\n lastDetection: detection\n }));\n });\n return unsubscribe;\n }, [autoDetector]);\n\n // ===========================================================================\n // Initialization Callback Effect\n // ===========================================================================\n\n useEffect(() => {\n if (status.isInitialized && !status.error && onInitialized) {\n const contextValue = buildContextValue();\n if (contextValue) {\n onInitialized(contextValue);\n }\n }\n // Only run when initialization state changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [status.isInitialized, status.error]);\n\n // ===========================================================================\n // Helper Functions\n // ===========================================================================\n\n /**\n * Get adapter for a specific table\n */\n const getAdapter = useCallback((table: string, operation: 'read' | 'write' = 'read') => {\n return registry.getAdapter(table, operation);\n }, [registry]);\n\n /**\n * Build the context value object\n */\n const buildContextValue = useCallback((): DataLayerContextValue | null => {\n if (!status.isInitialized) return null;\n return {\n registry,\n getAdapter,\n powerSync: null,\n // No PowerSync in web builds\n supabase: supabaseClient,\n queryClient,\n schema: config.schema,\n status,\n syncStatus: defaultSyncStatus,\n syncControl: defaultSyncControl\n };\n }, [registry, getAdapter, supabaseClient, queryClient, config.schema, status]);\n\n // ===========================================================================\n // Context Value Memoization\n // ===========================================================================\n\n const contextValue = useMemo(() => buildContextValue(), [buildContextValue]);\n\n // ===========================================================================\n // Cleanup Effect\n // ===========================================================================\n\n useEffect(() => {\n return () => {\n // Dispose registry on unmount\n registry.dispose();\n };\n }, [registry]);\n\n // ===========================================================================\n // Render\n // ===========================================================================\n\n // Don't render children until the data layer is initialized.\n // This prevents hooks from being called before the context is ready.\n // The provider will render children once initialization completes.\n if (!contextValue) {\n return null;\n }\n return <DataLayerContext.Provider value={contextValue}>\n {children}\n </DataLayerContext.Provider>;\n}\nexport default DataLayerProvider;"],"mappings":"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","names":["useInfiniteQuery","useDbInfiniteQuery","useInfiniteQuery","useDbInsert","_c","omit","_c","omit","_temp","_temp2","_c","useSessionStorageState","_c","useDbQuery","_temp","_temp2","toPagedResponse","_c","useMutation","isUsable","omit","useDbUpdate","_c","_temp","useMutation","useState","useMemo","useState","contextValue","useMemo"]}
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  useBatchDelete,
3
3
  useBatchUpsert
4
- } from "../chunk-ZGQ7Q4ZU.js";
4
+ } from "../chunk-WM25QE7E.js";
5
5
  import {
6
6
  buildNormalizedQuery,
7
7
  useDeleteItem,
8
8
  useInsertMutation,
9
9
  useQueriesForTableLoader,
10
10
  useUpsertItem
11
- } from "../chunk-CTRY7JDP.js";
12
- import "../chunk-INEUG6MC.js";
11
+ } from "../chunk-YUX6RGLZ.js";
12
+ import "../chunk-AKIRHA4Q.js";
13
13
  import {
14
14
  useSupabase
15
15
  } from "../chunk-DMVUEJG2.js";
@@ -25,7 +25,7 @@ import {
25
25
  removeAliasFromDeclaration,
26
26
  removeFirstPathElement,
27
27
  setFilterValue
28
- } from "../chunk-YA6MUTA7.js";
28
+ } from "../chunk-FI6JAD5G.js";
29
29
  import {
30
30
  OPERATOR_MAP,
31
31
  PostgrestParser,
@@ -39,8 +39,8 @@ import {
39
39
  parseSelectParam,
40
40
  parseValue,
41
41
  sortSearchParams
42
- } from "../chunk-UJWETW36.js";
43
- import "../chunk-INEUG6MC.js";
42
+ } from "../chunk-JOULSXOI.js";
43
+ import "../chunk-AKIRHA4Q.js";
44
44
  import "../chunk-7D4SUZUM.js";
45
45
  export {
46
46
  OPERATOR_MAP,
@@ -1,5 +1,5 @@
1
1
  import { SyncControl, SyncStatus } from '../core/index.js';
2
- export { P as PowerSyncDatabase } from '../executor-YJw4m7Q7.js';
2
+ export { P as PowerSyncDatabase } from '../executor-D15yjeMo.js';
3
3
 
4
4
  /**
5
5
  * PowerSync Bridge for @pol-studios/db
@@ -1,6 +1,5 @@
1
- import { ParsedSelect, SelectRelation } from '../core/index.js';
2
- export { BuiltQuery, ColumnInfo, DatabaseSchema, OrderBy, QueryOptions, RelationshipInfo, RelationshipType, ResolvedRelationship, SelectColumn, TableSchema, WhereClause, WhereOperators } from '../core/index.js';
3
- export { P as PowerSyncDatabase, Q as QueryExecutor, e as RelationJoinData, R as RelationshipResolver, b as ResultJoiner, S as SQLBuilder, f as createQueryExecutor, c as createRelationshipResolver, d as createResultJoiner, a as createSQLBuilder } from '../executor-YJw4m7Q7.js';
1
+ export { E as ExtractedExplicitFk, e as extractColumnNames, d as extractExplicitFkRelations, f as extractExplicitFkTables, a as extractRelationNames, g as getRelationSelect, b as hasExplicitFk, h as hasRelation, p as parseSelect, c as selectHasExplicitFkSyntax, s as stringifySelect, t as tokenizeTopLevel } from '../select-parser-BAV7fOaM.js';
2
+ export { P as PowerSyncDatabase, Q as QueryExecutor, e as RelationJoinData, R as RelationshipResolver, b as ResultJoiner, S as SQLBuilder, f as createQueryExecutor, c as createRelationshipResolver, d as createResultJoiner, a as createSQLBuilder } from '../executor-D15yjeMo.js';
4
3
  import { PostgrestSingleResponse, PostgrestError } from '@supabase/supabase-js';
5
4
  import { ItemType } from '@pol-studios/utils';
6
5
  import { UseQuerySingleReturn as UseQuerySingleReturn$1 } from '@supabase-cache-helpers/postgrest-react-query';
@@ -11,85 +10,7 @@ import * as react from 'react';
11
10
  import { Dispatch, SetStateAction } from 'react';
12
11
  import { V as ValueForPropertyType, P as PropertyType, a as FilterConfig } from '../FilterConfig-Bt2Ek74z.js';
13
12
  import { G as GenericTable, h as GenericView } from '../types-CYr9JiUE.js';
14
-
15
- /**
16
- * Select String Parser
17
- *
18
- * Parses Supabase PostgREST select syntax into an AST for local SQLite processing.
19
- *
20
- * Supported Syntax:
21
- * - "*" -> All columns
22
- * - "id, name, status" -> Specific columns
23
- * - "*, RelatedTable(*)" -> All columns + relation
24
- * - "id, RelatedTable(id, name)" -> Specific + relation with specific columns
25
- * - "*, Parent(*, Grandparent(name))" -> Nested relations
26
- * - "*, items:RelatedTable(*)" -> Aliased relation
27
- * - "aliasName:columnName" -> Aliased column
28
- */
29
-
30
- /**
31
- * Tokenize a string at the top level, respecting parentheses nesting.
32
- * Splits by comma but keeps nested parentheses intact.
33
- *
34
- * @example
35
- * tokenizeTopLevel("id, name, Parent(*, Child(name))")
36
- * // Returns: ["id", "name", "Parent(*, Child(name))"]
37
- */
38
- declare function tokenizeTopLevel(input: string): string[];
39
- /**
40
- * Parse a Supabase PostgREST select string into an AST.
41
- *
42
- * @param select - The select string (e.g., "*, RelatedTable(*)")
43
- * @returns Parsed select AST
44
- *
45
- * @example
46
- * parseSelect("*")
47
- * // Returns: { columns: "*", relations: [] }
48
- *
49
- * parseSelect("id, name, status")
50
- * // Returns: {
51
- * // columns: [{ name: "id" }, { name: "name" }, { name: "status" }],
52
- * // relations: []
53
- * // }
54
- *
55
- * parseSelect("*, EquipmentFixture(*)")
56
- * // Returns: {
57
- * // columns: "*",
58
- * // relations: [{ name: "EquipmentFixture", columns: "*", relations: [] }]
59
- * // }
60
- *
61
- * parseSelect("id, name, ProjectDatabase(name, Organization(*))")
62
- * // Returns: {
63
- * // columns: [{ name: "id" }, { name: "name" }],
64
- * // relations: [{
65
- * // name: "ProjectDatabase",
66
- * // columns: [{ name: "name" }],
67
- * // relations: [{ name: "Organization", columns: "*", relations: [] }]
68
- * // }]
69
- * // }
70
- */
71
- declare function parseSelect(select: string): ParsedSelect;
72
- /**
73
- * Convert a parsed select back to a string representation (for debugging)
74
- */
75
- declare function stringifySelect(parsed: ParsedSelect): string;
76
- /**
77
- * Extract all column names from a parsed select (for building SQL queries)
78
- * Does not include relation names.
79
- */
80
- declare function extractColumnNames(parsed: ParsedSelect): string[] | "*";
81
- /**
82
- * Extract all relation names from a parsed select
83
- */
84
- declare function extractRelationNames(parsed: ParsedSelect): string[];
85
- /**
86
- * Check if a select string references a specific relation
87
- */
88
- declare function hasRelation(parsed: ParsedSelect, relationName: string): boolean;
89
- /**
90
- * Get the select configuration for a specific relation
91
- */
92
- declare function getRelationSelect(parsed: ParsedSelect, relationName: string): SelectRelation | undefined;
13
+ export { BuiltQuery, ColumnInfo, DatabaseSchema, ExplicitFkSpec, OrderBy, ParsedSelect, QueryOptions, RelationshipInfo, RelationshipType, ResolvedRelationship, SelectColumn, SelectRelation, TableSchema, WhereClause, WhereOperators } from '../core/index.js';
93
14
 
94
15
  type ConfigurationOptions<T> = {
95
16
  crossOrganization?: boolean;
@@ -720,4 +641,4 @@ declare function usePartialAdvancedQuery<Result extends Record<string, any>[]>(q
720
641
  React.Dispatch<React.SetStateAction<QueryState>>
721
642
  ];
722
643
 
723
- export { ParsedSelect, SelectRelation, type UsePartialAdvancedQueryResult, type UsePartialQueryResult, type UseQuerySingleReturn, extractColumnNames, extractRelationNames, getRelationSelect, hasRelation, parseSelect, stringifySelect, tokenizeTopLevel, useAdvancedFilterQuery, useAdvancedQuery, useInfiniteQuery, usePartialAdvancedQuery, usePartialQuery, useQuery };
644
+ export { type UsePartialAdvancedQueryResult, type UsePartialQueryResult, type UseQuerySingleReturn, useAdvancedFilterQuery, useAdvancedQuery, useInfiniteQuery, usePartialAdvancedQuery, usePartialQuery, useQuery };
@@ -5,7 +5,7 @@ import {
5
5
  usePartialAdvancedQuery,
6
6
  usePartialQuery,
7
7
  useQuery
8
- } from "../chunk-OKYHI6JG.js";
8
+ } from "../chunk-LF3V3ERS.js";
9
9
  import {
10
10
  QueryExecutor,
11
11
  RelationshipResolver,
@@ -14,20 +14,26 @@ import {
14
14
  createQueryExecutor,
15
15
  createRelationshipResolver,
16
16
  createResultJoiner,
17
- createSQLBuilder,
17
+ createSQLBuilder
18
+ } from "../chunk-YRIPM2AN.js";
19
+ import "../chunk-GC3TBUWE.js";
20
+ import {
18
21
  extractColumnNames,
22
+ extractExplicitFkRelations,
23
+ extractExplicitFkTables,
19
24
  extractRelationNames,
20
25
  getRelationSelect,
26
+ hasExplicitFk,
21
27
  hasRelation,
22
28
  parseSelect,
29
+ selectHasExplicitFkSyntax,
23
30
  stringifySelect,
24
31
  tokenizeTopLevel
25
- } from "../chunk-HZIVE5AZ.js";
26
- import "../chunk-GC3TBUWE.js";
27
- import "../chunk-UJWETW36.js";
32
+ } from "../chunk-W7PERM66.js";
33
+ import "../chunk-JOULSXOI.js";
28
34
  import "../chunk-J4ZVCXZ4.js";
29
- import "../chunk-CTRY7JDP.js";
30
- import "../chunk-INEUG6MC.js";
35
+ import "../chunk-YUX6RGLZ.js";
36
+ import "../chunk-AKIRHA4Q.js";
31
37
  import "../chunk-DMVUEJG2.js";
32
38
  import "../chunk-7D4SUZUM.js";
33
39
  export {
@@ -40,10 +46,14 @@ export {
40
46
  createResultJoiner,
41
47
  createSQLBuilder,
42
48
  extractColumnNames,
49
+ extractExplicitFkRelations,
50
+ extractExplicitFkTables,
43
51
  extractRelationNames,
44
52
  getRelationSelect,
53
+ hasExplicitFk,
45
54
  hasRelation,
46
55
  parseSelect,
56
+ selectHasExplicitFkSyntax,
47
57
  stringifySelect,
48
58
  tokenizeTopLevel,
49
59
  useAdvancedFilterQuery,