@pol-studios/db 1.0.57 → 1.0.59

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 (49) hide show
  1. package/dist/DataLayerContext-V5FotiSk.d.ts +563 -0
  2. package/dist/auth/context.js +2 -2
  3. package/dist/auth/hooks.js +3 -3
  4. package/dist/auth/index.js +3 -3
  5. package/dist/{chunk-YRIPM2AN.js → chunk-4PZ744G2.js} +207 -6
  6. package/dist/chunk-4PZ744G2.js.map +1 -0
  7. package/dist/{chunk-6SDH7M7J.js → chunk-ARALLEDJ.js} +2 -2
  8. package/dist/{chunk-Z456IHCB.js → chunk-F4HW4NT5.js} +1 -1
  9. package/dist/chunk-F4HW4NT5.js.map +1 -0
  10. package/dist/{chunk-VSJKGPRI.js → chunk-K46TGKB2.js} +323 -379
  11. package/dist/chunk-K46TGKB2.js.map +1 -0
  12. package/dist/{chunk-GWYTROSD.js → chunk-L4DFVMTS.js} +335 -4
  13. package/dist/chunk-L4DFVMTS.js.map +1 -0
  14. package/dist/{chunk-MEBT5YHA.js → chunk-SNPZMRBC.js} +2 -2
  15. package/dist/{chunk-DDL63KLQ.js → chunk-VADZSRHY.js} +16 -337
  16. package/dist/chunk-VADZSRHY.js.map +1 -0
  17. package/dist/{chunk-4EO55YV2.js → chunk-VSY6766U.js} +4 -4
  18. package/dist/{chunk-VYFAMTHI.js → chunk-WY6MNB6K.js} +2 -2
  19. package/dist/core/index.d.ts +1 -1
  20. package/dist/{executor-D15yjeMo.d.ts → executor-Bu1OlqCl.d.ts} +43 -3
  21. package/dist/hooks/index.d.ts +3 -3
  22. package/dist/hooks/index.js +2 -2
  23. package/dist/{index-CFUuTzXO.d.ts → index-vwVJ0BWj.d.ts} +1 -9
  24. package/dist/index.d.ts +5 -5
  25. package/dist/index.js +20 -12
  26. package/dist/index.native.d.ts +77 -76
  27. package/dist/index.native.js +20 -12
  28. package/dist/index.web.d.ts +21 -44
  29. package/dist/index.web.js +215 -149
  30. package/dist/index.web.js.map +1 -1
  31. package/dist/powersync-bridge/index.d.ts +1 -1
  32. package/dist/query/index.d.ts +1 -1
  33. package/dist/query/index.js +1 -1
  34. package/dist/types/index.d.ts +3 -3
  35. package/dist/types/index.js +1 -1
  36. package/dist/{useDbCount-Ckb-FhZk.d.ts → useDbCount-dCkdaBpP.d.ts} +41 -83
  37. package/dist/{useResolveFeedback-CuUkdHoR.d.ts → useResolveFeedback-thFi-4h8.d.ts} +429 -5
  38. package/dist/with-auth/index.js +5 -5
  39. package/package.json +1 -1
  40. package/dist/DataLayerContext-BYZtDD0g.d.ts +0 -946
  41. package/dist/chunk-DDL63KLQ.js.map +0 -1
  42. package/dist/chunk-GWYTROSD.js.map +0 -1
  43. package/dist/chunk-VSJKGPRI.js.map +0 -1
  44. package/dist/chunk-YRIPM2AN.js.map +0 -1
  45. package/dist/chunk-Z456IHCB.js.map +0 -1
  46. /package/dist/{chunk-6SDH7M7J.js.map → chunk-ARALLEDJ.js.map} +0 -0
  47. /package/dist/{chunk-MEBT5YHA.js.map → chunk-SNPZMRBC.js.map} +0 -0
  48. /package/dist/{chunk-4EO55YV2.js.map → chunk-VSY6766U.js.map} +0 -0
  49. /package/dist/{chunk-VYFAMTHI.js.map → chunk-WY6MNB6K.js.map} +0 -0
package/dist/index.web.js CHANGED
@@ -4,22 +4,21 @@ import {
4
4
  } from "./chunk-ZCOFRJQD.js";
5
5
  import {
6
6
  ADAPTER_STRATEGIES,
7
- AdapterAutoDetector,
8
7
  AdapterRegistry,
9
8
  BUCKETS,
10
- BackendStatus,
11
9
  StorageQueueContext,
12
10
  StorageQueueProvider,
13
11
  SupabaseAdapter,
14
12
  convertFilterToRealtimeQuery,
15
- createAdapterAutoDetector,
16
13
  createAdapterRegistry,
17
14
  createInCondition,
18
15
  createSupabaseAdapter,
19
16
  executeAdvanceQuery,
20
17
  getErrorBody,
18
+ getPowerSyncAlias,
21
19
  getStorageUrl,
22
20
  newTimeActivity,
21
+ stripSchemaPrefix,
23
22
  useAI,
24
23
  useApplyFeedback,
25
24
  useAutosave,
@@ -56,7 +55,7 @@ import {
56
55
  useUpsertChangelog,
57
56
  useUpsertChangelogEntry,
58
57
  useUpsertChangelogMedia
59
- } from "./chunk-DDL63KLQ.js";
58
+ } from "./chunk-VADZSRHY.js";
60
59
  import {
61
60
  LiveChangeContext,
62
61
  LiveChangeContextProvider,
@@ -67,7 +66,7 @@ import {
67
66
  useUserMetadataState,
68
67
  useUserMetadataValue,
69
68
  userMetadataContext
70
- } from "./chunk-4EO55YV2.js";
69
+ } from "./chunk-VSY6766U.js";
71
70
  import {
72
71
  PostgrestFilter,
73
72
  binarySearch,
@@ -104,13 +103,13 @@ import {
104
103
  useDbInsert,
105
104
  useDbUpdate,
106
105
  useDbUpsert
107
- } from "./chunk-VYFAMTHI.js";
106
+ } from "./chunk-WY6MNB6K.js";
108
107
  import {
109
108
  Constants,
110
109
  createCombinedStatus,
111
110
  normalizeFilter,
112
111
  useDbAdvanceFilterQuery
113
- } from "./chunk-Z456IHCB.js";
112
+ } from "./chunk-F4HW4NT5.js";
114
113
  import {
115
114
  Accessory,
116
115
  Address,
@@ -299,20 +298,26 @@ import {
299
298
  UserMetadata
300
299
  } from "./chunk-SM73S2DY.js";
301
300
  import "./chunk-NSIAAYW3.js";
302
- import "./chunk-MEBT5YHA.js";
301
+ import "./chunk-SNPZMRBC.js";
303
302
  import {
304
303
  DEFAULT_QUERY_TIMEOUT,
305
304
  TIMEOUT_ERROR_MESSAGE,
306
305
  isTimeoutError,
307
306
  useDbQuery as useDbQuery2
308
- } from "./chunk-6SDH7M7J.js";
307
+ } from "./chunk-ARALLEDJ.js";
309
308
  import {
309
+ AdapterAutoDetector,
310
+ BackendStatus,
310
311
  DataLayerContext,
312
+ DataLayerCoreContext,
313
+ DataLayerNestingContext,
314
+ DataLayerStatusContext,
315
+ createAdapterAutoDetector,
311
316
  useDataLayer,
312
317
  useDataLayerOptional,
313
318
  useDbQuery,
314
319
  useDbQueryById
315
- } from "./chunk-GWYTROSD.js";
320
+ } from "./chunk-L4DFVMTS.js";
316
321
  import "./chunk-RT4O5H2E.js";
317
322
  import {
318
323
  useAdvancedFilterQuery,
@@ -331,7 +336,7 @@ import {
331
336
  createRelationshipResolver,
332
337
  createResultJoiner,
333
338
  createSQLBuilder
334
- } from "./chunk-YRIPM2AN.js";
339
+ } from "./chunk-4PZ744G2.js";
335
340
  import {
336
341
  getSupabaseUrl,
337
342
  setSupabaseUrl
@@ -911,7 +916,8 @@ function _temp6(k) {
911
916
  }
912
917
 
913
918
  // src/providers/DataLayerProvider.web.tsx
914
- import { useState as useState2, useEffect, useMemo as useMemo3, useCallback } from "react";
919
+ import { c as _c5 } from "react/compiler-runtime";
920
+ import { useRef as useRef2, useEffect, useContext } from "react";
915
921
  import { jsx } from "react/jsx-runtime";
916
922
  var defaultSyncStatus = {
917
923
  isConnected: false,
@@ -933,7 +939,6 @@ var defaultSyncControl = {
933
939
  setScope: async () => {
934
940
  console.warn("Scope control not available: PowerSync not initialized");
935
941
  },
936
- // Auto-retry controls
937
942
  pauseAutoRetry: () => {
938
943
  console.warn("Pause auto-retry not available: PowerSync not initialized");
939
944
  },
@@ -941,161 +946,219 @@ var defaultSyncControl = {
941
946
  console.warn("Resume auto-retry not available: PowerSync not initialized");
942
947
  },
943
948
  isAutoRetryPaused: false,
944
- // Pending mutations
945
949
  addPendingMutation: () => {
946
950
  },
947
951
  removePendingMutation: () => {
948
952
  }
949
953
  };
950
- function DataLayerProvider({
951
- config,
952
- children,
953
- supabaseClient,
954
- queryClient,
955
- onInitialized,
956
- onError
957
- }) {
958
- const [registry] = useState2(() => createAdapterRegistry(config));
959
- const [autoDetector, setAutoDetector] = useState2(null);
960
- const [status, setStatus] = useState2({
961
- isInitialized: false,
962
- currentBackend: null,
963
- powerSyncStatus: "unavailable" /* UNAVAILABLE */,
964
- isOnline: typeof navigator !== "undefined" ? navigator.onLine : true,
965
- lastDetection: null,
966
- error: null,
967
- hasSynced: false
968
- // Web builds don't use PowerSync, so never synced
969
- });
970
- useEffect(() => {
971
- try {
972
- const detector = createAdapterAutoDetector(
973
- null,
974
- // No PowerSync in web builds
975
- supabaseClient,
976
- {
977
- preferPowerSync: false
978
- }
979
- );
980
- setAutoDetector(detector);
981
- const supabaseAdapter = createSupabaseAdapter(supabaseClient, config.schema);
982
- registry.setSupabaseAdapter(supabaseAdapter);
983
- registry.initialize({
984
- powerSync: null,
985
- supabase: supabaseClient,
986
- queryClient,
987
- schema: config.schema
988
- });
989
- const detection = detector.detect();
990
- setStatus({
991
- isInitialized: true,
992
- currentBackend: detection.recommendedBackend,
993
- powerSyncStatus: detection.powerSyncStatus,
994
- isOnline: detection.isOnline,
995
- lastDetection: detection,
996
- error: null,
997
- hasSynced: false
998
- // Web builds don't use PowerSync, so never synced
999
- });
1000
- } catch (error) {
1001
- const err = error instanceof Error ? error : new Error(String(error));
1002
- setStatus((prev) => ({
1003
- ...prev,
1004
- error: err
1005
- }));
1006
- onError?.(err);
1007
- }
1008
- }, [supabaseClient, queryClient, config.schema, registry, onError]);
1009
- useEffect(() => {
1010
- const handleOnline = () => {
1011
- setStatus((prev) => ({
1012
- ...prev,
1013
- isOnline: true
1014
- }));
1015
- if (autoDetector) {
1016
- const detection = autoDetector.detect();
1017
- setStatus((prev) => ({
1018
- ...prev,
1019
- currentBackend: detection.recommendedBackend,
1020
- powerSyncStatus: detection.powerSyncStatus,
1021
- lastDetection: detection
1022
- }));
954
+ function DataLayerProvider(t0) {
955
+ const $ = _c5(38);
956
+ const {
957
+ config,
958
+ children,
959
+ supabaseClient,
960
+ queryClient
961
+ } = t0;
962
+ const isNested = useContext(DataLayerNestingContext);
963
+ const hasWarnedNesting = useRef2(false);
964
+ let t1;
965
+ let t2;
966
+ if ($[0] !== isNested) {
967
+ t1 = () => {
968
+ if (isNested && !hasWarnedNesting.current && typeof __DEV__ !== "undefined" && __DEV__) {
969
+ hasWarnedNesting.current = true;
970
+ console.warn("[DataLayerProvider] Nested DataLayerProvider detected! This usually indicates a setup issue. Remove the outer wrapper.");
1023
971
  }
1024
972
  };
1025
- const handleOffline = () => {
1026
- setStatus((prev) => ({
1027
- ...prev,
1028
- isOnline: false
1029
- }));
1030
- if (autoDetector) {
1031
- const detection = autoDetector.detect();
1032
- setStatus((prev) => ({
1033
- ...prev,
1034
- currentBackend: detection.recommendedBackend,
1035
- powerSyncStatus: detection.powerSyncStatus,
1036
- lastDetection: detection
1037
- }));
1038
- }
973
+ t2 = [isNested];
974
+ $[0] = isNested;
975
+ $[1] = t1;
976
+ $[2] = t2;
977
+ } else {
978
+ t1 = $[1];
979
+ t2 = $[2];
980
+ }
981
+ useEffect(t1, t2);
982
+ let t3;
983
+ if ($[3] !== config.schema || $[4] !== supabaseClient) {
984
+ t3 = createSupabaseAdapter(supabaseClient, config.schema);
985
+ $[3] = config.schema;
986
+ $[4] = supabaseClient;
987
+ $[5] = t3;
988
+ } else {
989
+ t3 = $[5];
990
+ }
991
+ const supabaseAdapter = t3;
992
+ let t4;
993
+ if ($[6] !== config.tables) {
994
+ t4 = (table) => {
995
+ const tableWithoutSchema = table.includes(".") ? stripSchemaPrefix(table) : table;
996
+ return config.tables[table] ?? config.tables[tableWithoutSchema];
1039
997
  };
1040
- const isBrowser = typeof window !== "undefined" && typeof window.addEventListener === "function";
1041
- if (isBrowser) {
1042
- window.addEventListener("online", handleOnline);
1043
- window.addEventListener("offline", handleOffline);
1044
- return () => {
1045
- window.removeEventListener("online", handleOnline);
1046
- window.removeEventListener("offline", handleOffline);
1047
- };
1048
- }
1049
- }, [autoDetector]);
1050
- useEffect(() => {
1051
- if (!autoDetector) return;
1052
- const unsubscribe = autoDetector.addListener((detection) => {
1053
- setStatus((prev) => ({
1054
- ...prev,
1055
- currentBackend: detection.recommendedBackend,
1056
- powerSyncStatus: detection.powerSyncStatus,
1057
- isOnline: detection.isOnline,
1058
- lastDetection: detection
1059
- }));
998
+ $[6] = config.tables;
999
+ $[7] = t4;
1000
+ } else {
1001
+ t4 = $[7];
1002
+ }
1003
+ const getTableStrategy = t4;
1004
+ let t5;
1005
+ if ($[8] !== config.tables) {
1006
+ t5 = (table_0) => {
1007
+ const tableWithoutSchema_0 = table_0.includes(".") ? stripSchemaPrefix(table_0) : table_0;
1008
+ const strategy = config.tables[table_0] ?? config.tables[tableWithoutSchema_0];
1009
+ const configKey = config.tables[table_0] ? table_0 : tableWithoutSchema_0;
1010
+ return getPowerSyncAlias(configKey, strategy);
1011
+ };
1012
+ $[8] = config.tables;
1013
+ $[9] = t5;
1014
+ } else {
1015
+ t5 = $[9];
1016
+ }
1017
+ const getTableAlias = t5;
1018
+ const usesPowerSync = _temp7;
1019
+ const getPowerSyncTables = _temp24;
1020
+ let t6;
1021
+ if ($[10] !== supabaseAdapter) {
1022
+ t6 = (_table_0, t72) => {
1023
+ t72 === void 0 ? "read" : t72;
1024
+ return supabaseAdapter;
1025
+ };
1026
+ $[10] = supabaseAdapter;
1027
+ $[11] = t6;
1028
+ } else {
1029
+ t6 = $[11];
1030
+ }
1031
+ const getAdapter = t6;
1032
+ let t7;
1033
+ if ($[12] !== config.tables) {
1034
+ t7 = () => ({
1035
+ isInitialized: true,
1036
+ hasPowerSync: false,
1037
+ hasSupabase: true,
1038
+ configuredTableCount: Object.keys(config.tables).length,
1039
+ powerSyncTables: []
1060
1040
  });
1061
- return unsubscribe;
1062
- }, [autoDetector]);
1063
- useEffect(() => {
1064
- if (status.isInitialized && !status.error && onInitialized) {
1065
- const contextValue2 = buildContextValue();
1066
- if (contextValue2) {
1067
- onInitialized(contextValue2);
1068
- }
1069
- }
1070
- }, [status.isInitialized, status.error]);
1071
- const getAdapter = useCallback((table, operation = "read") => {
1072
- return registry.getAdapter(table, operation);
1073
- }, [registry]);
1074
- const buildContextValue = useCallback(() => {
1075
- if (!status.isInitialized) return null;
1076
- return {
1041
+ $[12] = config.tables;
1042
+ $[13] = t7;
1043
+ } else {
1044
+ t7 = $[13];
1045
+ }
1046
+ let t8;
1047
+ if ($[14] !== config || $[15] !== getAdapter || $[16] !== getTableAlias || $[17] !== getTableStrategy || $[18] !== t7) {
1048
+ t8 = {
1049
+ getAdapter,
1050
+ getTableStrategy,
1051
+ usesPowerSync,
1052
+ getPowerSyncTables,
1053
+ getTableAlias,
1054
+ getDebugInfo: t7,
1055
+ config,
1056
+ isInitialized: true
1057
+ };
1058
+ $[14] = config;
1059
+ $[15] = getAdapter;
1060
+ $[16] = getTableAlias;
1061
+ $[17] = getTableStrategy;
1062
+ $[18] = t7;
1063
+ $[19] = t8;
1064
+ } else {
1065
+ t8 = $[19];
1066
+ }
1067
+ const registry = t8;
1068
+ const isOnline = typeof navigator !== "undefined" ? navigator.onLine : true;
1069
+ let t9;
1070
+ if ($[20] !== config.schema || $[21] !== getAdapter || $[22] !== queryClient || $[23] !== registry || $[24] !== supabaseClient) {
1071
+ t9 = {
1077
1072
  registry,
1078
1073
  getAdapter,
1079
1074
  powerSync: null,
1080
- // No PowerSync in web builds
1081
1075
  supabase: supabaseClient,
1082
1076
  queryClient,
1083
1077
  schema: config.schema,
1084
- status,
1085
- syncStatus: defaultSyncStatus,
1086
1078
  syncControl: defaultSyncControl
1087
1079
  };
1088
- }, [registry, getAdapter, supabaseClient, queryClient, config.schema, status]);
1089
- const contextValue = useMemo3(() => buildContextValue(), [buildContextValue]);
1090
- useEffect(() => {
1091
- return () => {
1092
- registry.dispose();
1080
+ $[20] = config.schema;
1081
+ $[21] = getAdapter;
1082
+ $[22] = queryClient;
1083
+ $[23] = registry;
1084
+ $[24] = supabaseClient;
1085
+ $[25] = t9;
1086
+ } else {
1087
+ t9 = $[25];
1088
+ }
1089
+ const coreContextValue = t9;
1090
+ let t10;
1091
+ if ($[26] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
1092
+ t10 = {
1093
+ isInitialized: true,
1094
+ currentBackend: "supabase",
1095
+ powerSyncStatus: "unavailable" /* UNAVAILABLE */,
1096
+ isOnline,
1097
+ lastDetection: null,
1098
+ error: null,
1099
+ hasSynced: true
1100
+ };
1101
+ $[26] = t10;
1102
+ } else {
1103
+ t10 = $[26];
1104
+ }
1105
+ const status = t10;
1106
+ let t11;
1107
+ if ($[27] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
1108
+ t11 = {
1109
+ status,
1110
+ syncStatus: defaultSyncStatus
1111
+ };
1112
+ $[27] = t11;
1113
+ } else {
1114
+ t11 = $[27];
1115
+ }
1116
+ const statusContextValue = t11;
1117
+ let t12;
1118
+ if ($[28] !== coreContextValue) {
1119
+ t12 = {
1120
+ ...coreContextValue,
1121
+ ...statusContextValue
1093
1122
  };
1094
- }, [registry]);
1095
- if (!contextValue) {
1096
- return null;
1123
+ $[28] = coreContextValue;
1124
+ $[29] = t12;
1125
+ } else {
1126
+ t12 = $[29];
1127
+ }
1128
+ const contextValue = t12;
1129
+ let t13;
1130
+ if ($[30] !== children) {
1131
+ t13 = /* @__PURE__ */ jsx(DataLayerStatusContext.Provider, { value: statusContextValue, children });
1132
+ $[30] = children;
1133
+ $[31] = t13;
1134
+ } else {
1135
+ t13 = $[31];
1136
+ }
1137
+ let t14;
1138
+ if ($[32] !== coreContextValue || $[33] !== t13) {
1139
+ t14 = /* @__PURE__ */ jsx(DataLayerCoreContext.Provider, { value: coreContextValue, children: t13 });
1140
+ $[32] = coreContextValue;
1141
+ $[33] = t13;
1142
+ $[34] = t14;
1143
+ } else {
1144
+ t14 = $[34];
1097
1145
  }
1098
- return /* @__PURE__ */ jsx(DataLayerContext.Provider, { value: contextValue, children });
1146
+ let t15;
1147
+ if ($[35] !== contextValue || $[36] !== t14) {
1148
+ t15 = /* @__PURE__ */ jsx(DataLayerNestingContext.Provider, { value: true, children: /* @__PURE__ */ jsx(DataLayerContext.Provider, { value: contextValue, children: t14 }) });
1149
+ $[35] = contextValue;
1150
+ $[36] = t14;
1151
+ $[37] = t15;
1152
+ } else {
1153
+ t15 = $[37];
1154
+ }
1155
+ return t15;
1156
+ }
1157
+ function _temp24() {
1158
+ return [];
1159
+ }
1160
+ function _temp7(_table) {
1161
+ return false;
1099
1162
  }
1100
1163
  export {
1101
1164
  ADAPTER_STRATEGIES,
@@ -1137,7 +1200,10 @@ export {
1137
1200
  DEFAULT_QUERY_TIMEOUT,
1138
1201
  DataExchangeImport,
1139
1202
  DataLayerContext,
1203
+ DataLayerCoreContext,
1204
+ DataLayerNestingContext,
1140
1205
  DataLayerProvider,
1206
+ DataLayerStatusContext,
1141
1207
  Datasheet,
1142
1208
  Dimension,
1143
1209
  DimmerModule,