@pol-studios/db 1.0.58 → 1.0.61

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 (52) 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-OK2C54B6.js → chunk-7PBTPCRN.js} +340 -386
  8. package/dist/chunk-7PBTPCRN.js.map +1 -0
  9. package/dist/{chunk-6SDH7M7J.js → chunk-ARALLEDJ.js} +2 -2
  10. package/dist/{chunk-Z456IHCB.js → chunk-F4HW4NT5.js} +1 -1
  11. package/dist/chunk-F4HW4NT5.js.map +1 -0
  12. package/dist/{chunk-LG3OHLGB.js → chunk-FWCHS5NN.js} +16 -337
  13. package/dist/chunk-FWCHS5NN.js.map +1 -0
  14. package/dist/{chunk-4EO55YV2.js → chunk-H4Z73DC4.js} +4 -4
  15. package/dist/{chunk-GWYTROSD.js → chunk-L4DFVMTS.js} +335 -4
  16. package/dist/chunk-L4DFVMTS.js.map +1 -0
  17. package/dist/{chunk-7BGDQT5X.js → chunk-PIPB3JMK.js} +1 -7
  18. package/dist/{chunk-7BGDQT5X.js.map → chunk-PIPB3JMK.js.map} +1 -1
  19. package/dist/{chunk-MEBT5YHA.js → chunk-SNPZMRBC.js} +2 -2
  20. package/dist/{chunk-VYFAMTHI.js → chunk-ZPFZ2ZRW.js} +4 -13
  21. package/dist/{chunk-VYFAMTHI.js.map → chunk-ZPFZ2ZRW.js.map} +1 -1
  22. package/dist/core/index.d.ts +8 -44
  23. package/dist/{executor-D15yjeMo.d.ts → executor-Bu1OlqCl.d.ts} +43 -3
  24. package/dist/hooks/index.d.ts +3 -3
  25. package/dist/hooks/index.js +2 -2
  26. package/dist/{index-CFUuTzXO.d.ts → index-vwVJ0BWj.d.ts} +1 -9
  27. package/dist/index.d.ts +5 -5
  28. package/dist/index.js +21 -13
  29. package/dist/index.native.d.ts +77 -76
  30. package/dist/index.native.js +20 -12
  31. package/dist/index.web.d.ts +21 -44
  32. package/dist/index.web.js +215 -156
  33. package/dist/index.web.js.map +1 -1
  34. package/dist/powersync-bridge/index.d.ts +1 -1
  35. package/dist/powersync-bridge/index.js +1 -1
  36. package/dist/query/index.d.ts +1 -1
  37. package/dist/query/index.js +1 -1
  38. package/dist/types/index.d.ts +3 -3
  39. package/dist/types/index.js +1 -1
  40. package/dist/{useDbCount-Ckb-FhZk.d.ts → useDbCount-dCkdaBpP.d.ts} +41 -83
  41. package/dist/{useResolveFeedback-CuUkdHoR.d.ts → useResolveFeedback-thFi-4h8.d.ts} +429 -5
  42. package/dist/with-auth/index.js +5 -5
  43. package/package.json +1 -1
  44. package/dist/DataLayerContext-BYZtDD0g.d.ts +0 -946
  45. package/dist/chunk-GWYTROSD.js.map +0 -1
  46. package/dist/chunk-LG3OHLGB.js.map +0 -1
  47. package/dist/chunk-OK2C54B6.js.map +0 -1
  48. package/dist/chunk-YRIPM2AN.js.map +0 -1
  49. package/dist/chunk-Z456IHCB.js.map +0 -1
  50. /package/dist/{chunk-6SDH7M7J.js.map → chunk-ARALLEDJ.js.map} +0 -0
  51. /package/dist/{chunk-4EO55YV2.js.map → chunk-H4Z73DC4.js.map} +0 -0
  52. /package/dist/{chunk-MEBT5YHA.js.map → chunk-SNPZMRBC.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-LG3OHLGB.js";
58
+ } from "./chunk-FWCHS5NN.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-H4Z73DC4.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-ZPFZ2ZRW.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,169 +939,219 @@ var defaultSyncControl = {
933
939
  setScope: async () => {
934
940
  console.warn("Scope control not available: PowerSync not initialized");
935
941
  },
936
- // Auto-retry controls
937
- pauseAutoRetry: () => {
938
- console.warn("Pause auto-retry not available: PowerSync not initialized");
939
- },
940
- resumeAutoRetry: () => {
941
- console.warn("Resume auto-retry not available: PowerSync not initialized");
942
- },
943
- isAutoRetryPaused: false,
944
- // Pending mutations
945
942
  addPendingMutation: () => {
946
943
  },
947
944
  removePendingMutation: () => {
948
945
  }
949
946
  };
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
- }));
947
+ function DataLayerProvider(t0) {
948
+ const $ = _c5(38);
949
+ const {
950
+ config,
951
+ children,
952
+ supabaseClient,
953
+ queryClient
954
+ } = t0;
955
+ const isNested = useContext(DataLayerNestingContext);
956
+ const hasWarnedNesting = useRef2(false);
957
+ let t1;
958
+ let t2;
959
+ if ($[0] !== isNested) {
960
+ t1 = () => {
961
+ if (isNested && !hasWarnedNesting.current && typeof __DEV__ !== "undefined" && __DEV__) {
962
+ hasWarnedNesting.current = true;
963
+ console.warn("[DataLayerProvider] Nested DataLayerProvider detected! This usually indicates a setup issue. Remove the outer wrapper.");
1023
964
  }
1024
965
  };
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
- }
966
+ t2 = [isNested];
967
+ $[0] = isNested;
968
+ $[1] = t1;
969
+ $[2] = t2;
970
+ } else {
971
+ t1 = $[1];
972
+ t2 = $[2];
973
+ }
974
+ useEffect(t1, t2);
975
+ let t3;
976
+ if ($[3] !== config.schema || $[4] !== supabaseClient) {
977
+ t3 = createSupabaseAdapter(supabaseClient, config.schema);
978
+ $[3] = config.schema;
979
+ $[4] = supabaseClient;
980
+ $[5] = t3;
981
+ } else {
982
+ t3 = $[5];
983
+ }
984
+ const supabaseAdapter = t3;
985
+ let t4;
986
+ if ($[6] !== config.tables) {
987
+ t4 = (table) => {
988
+ const tableWithoutSchema = table.includes(".") ? stripSchemaPrefix(table) : table;
989
+ return config.tables[table] ?? config.tables[tableWithoutSchema];
1039
990
  };
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
- }));
991
+ $[6] = config.tables;
992
+ $[7] = t4;
993
+ } else {
994
+ t4 = $[7];
995
+ }
996
+ const getTableStrategy = t4;
997
+ let t5;
998
+ if ($[8] !== config.tables) {
999
+ t5 = (table_0) => {
1000
+ const tableWithoutSchema_0 = table_0.includes(".") ? stripSchemaPrefix(table_0) : table_0;
1001
+ const strategy = config.tables[table_0] ?? config.tables[tableWithoutSchema_0];
1002
+ const configKey = config.tables[table_0] ? table_0 : tableWithoutSchema_0;
1003
+ return getPowerSyncAlias(configKey, strategy);
1004
+ };
1005
+ $[8] = config.tables;
1006
+ $[9] = t5;
1007
+ } else {
1008
+ t5 = $[9];
1009
+ }
1010
+ const getTableAlias = t5;
1011
+ const usesPowerSync = _temp7;
1012
+ const getPowerSyncTables = _temp24;
1013
+ let t6;
1014
+ if ($[10] !== supabaseAdapter) {
1015
+ t6 = (_table_0, t72) => {
1016
+ t72 === void 0 ? "read" : t72;
1017
+ return supabaseAdapter;
1018
+ };
1019
+ $[10] = supabaseAdapter;
1020
+ $[11] = t6;
1021
+ } else {
1022
+ t6 = $[11];
1023
+ }
1024
+ const getAdapter = t6;
1025
+ let t7;
1026
+ if ($[12] !== config.tables) {
1027
+ t7 = () => ({
1028
+ isInitialized: true,
1029
+ hasPowerSync: false,
1030
+ hasSupabase: true,
1031
+ configuredTableCount: Object.keys(config.tables).length,
1032
+ powerSyncTables: []
1060
1033
  });
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 {
1034
+ $[12] = config.tables;
1035
+ $[13] = t7;
1036
+ } else {
1037
+ t7 = $[13];
1038
+ }
1039
+ let t8;
1040
+ if ($[14] !== config || $[15] !== getAdapter || $[16] !== getTableAlias || $[17] !== getTableStrategy || $[18] !== t7) {
1041
+ t8 = {
1042
+ getAdapter,
1043
+ getTableStrategy,
1044
+ usesPowerSync,
1045
+ getPowerSyncTables,
1046
+ getTableAlias,
1047
+ getDebugInfo: t7,
1048
+ config,
1049
+ isInitialized: true
1050
+ };
1051
+ $[14] = config;
1052
+ $[15] = getAdapter;
1053
+ $[16] = getTableAlias;
1054
+ $[17] = getTableStrategy;
1055
+ $[18] = t7;
1056
+ $[19] = t8;
1057
+ } else {
1058
+ t8 = $[19];
1059
+ }
1060
+ const registry = t8;
1061
+ const isOnline = typeof navigator !== "undefined" ? navigator.onLine : true;
1062
+ let t9;
1063
+ if ($[20] !== config.schema || $[21] !== getAdapter || $[22] !== queryClient || $[23] !== registry || $[24] !== supabaseClient) {
1064
+ t9 = {
1077
1065
  registry,
1078
1066
  getAdapter,
1079
1067
  powerSync: null,
1080
- // No PowerSync in web builds
1081
1068
  supabase: supabaseClient,
1082
1069
  queryClient,
1083
1070
  schema: config.schema,
1084
- status,
1085
- syncStatus: defaultSyncStatus,
1086
1071
  syncControl: defaultSyncControl
1087
1072
  };
1088
- }, [registry, getAdapter, supabaseClient, queryClient, config.schema, status]);
1089
- const contextValue = useMemo3(() => buildContextValue(), [buildContextValue]);
1090
- useEffect(() => {
1091
- return () => {
1092
- registry.dispose();
1073
+ $[20] = config.schema;
1074
+ $[21] = getAdapter;
1075
+ $[22] = queryClient;
1076
+ $[23] = registry;
1077
+ $[24] = supabaseClient;
1078
+ $[25] = t9;
1079
+ } else {
1080
+ t9 = $[25];
1081
+ }
1082
+ const coreContextValue = t9;
1083
+ let t10;
1084
+ if ($[26] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
1085
+ t10 = {
1086
+ isInitialized: true,
1087
+ currentBackend: "supabase",
1088
+ powerSyncStatus: "unavailable" /* UNAVAILABLE */,
1089
+ isOnline,
1090
+ lastDetection: null,
1091
+ error: null,
1092
+ hasSynced: true
1093
+ };
1094
+ $[26] = t10;
1095
+ } else {
1096
+ t10 = $[26];
1097
+ }
1098
+ const status = t10;
1099
+ let t11;
1100
+ if ($[27] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel")) {
1101
+ t11 = {
1102
+ status,
1103
+ syncStatus: defaultSyncStatus
1093
1104
  };
1094
- }, [registry]);
1095
- if (!contextValue) {
1096
- return null;
1105
+ $[27] = t11;
1106
+ } else {
1107
+ t11 = $[27];
1097
1108
  }
1098
- return /* @__PURE__ */ jsx(DataLayerContext.Provider, { value: contextValue, children });
1109
+ const statusContextValue = t11;
1110
+ let t12;
1111
+ if ($[28] !== coreContextValue) {
1112
+ t12 = {
1113
+ ...coreContextValue,
1114
+ ...statusContextValue
1115
+ };
1116
+ $[28] = coreContextValue;
1117
+ $[29] = t12;
1118
+ } else {
1119
+ t12 = $[29];
1120
+ }
1121
+ const contextValue = t12;
1122
+ let t13;
1123
+ if ($[30] !== children) {
1124
+ t13 = /* @__PURE__ */ jsx(DataLayerStatusContext.Provider, { value: statusContextValue, children });
1125
+ $[30] = children;
1126
+ $[31] = t13;
1127
+ } else {
1128
+ t13 = $[31];
1129
+ }
1130
+ let t14;
1131
+ if ($[32] !== coreContextValue || $[33] !== t13) {
1132
+ t14 = /* @__PURE__ */ jsx(DataLayerCoreContext.Provider, { value: coreContextValue, children: t13 });
1133
+ $[32] = coreContextValue;
1134
+ $[33] = t13;
1135
+ $[34] = t14;
1136
+ } else {
1137
+ t14 = $[34];
1138
+ }
1139
+ let t15;
1140
+ if ($[35] !== contextValue || $[36] !== t14) {
1141
+ t15 = /* @__PURE__ */ jsx(DataLayerNestingContext.Provider, { value: true, children: /* @__PURE__ */ jsx(DataLayerContext.Provider, { value: contextValue, children: t14 }) });
1142
+ $[35] = contextValue;
1143
+ $[36] = t14;
1144
+ $[37] = t15;
1145
+ } else {
1146
+ t15 = $[37];
1147
+ }
1148
+ return t15;
1149
+ }
1150
+ function _temp24() {
1151
+ return [];
1152
+ }
1153
+ function _temp7(_table) {
1154
+ return false;
1099
1155
  }
1100
1156
  export {
1101
1157
  ADAPTER_STRATEGIES,
@@ -1137,7 +1193,10 @@ export {
1137
1193
  DEFAULT_QUERY_TIMEOUT,
1138
1194
  DataExchangeImport,
1139
1195
  DataLayerContext,
1196
+ DataLayerCoreContext,
1197
+ DataLayerNestingContext,
1140
1198
  DataLayerProvider,
1199
+ DataLayerStatusContext,
1141
1200
  Datasheet,
1142
1201
  Dimension,
1143
1202
  DimmerModule,