@terreno/rtk 0.13.3 → 0.14.1

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 (163) hide show
  1. package/dist/authSlice.d.ts +4 -4
  2. package/dist/authSlice.d.ts.map +1 -1
  3. package/dist/authSlice.js +7 -7
  4. package/dist/authSlice.js.map +1 -1
  5. package/dist/authSlice.test.js +2 -10
  6. package/dist/authSlice.test.js.map +1 -1
  7. package/dist/authSliceNative.test.js +11 -3
  8. package/dist/authSliceNative.test.js.map +1 -1
  9. package/dist/betterAuthSlice.d.ts.map +1 -1
  10. package/dist/betterAuthSlice.js +3 -2
  11. package/dist/betterAuthSlice.js.map +1 -1
  12. package/dist/betterAuthSlice.test.js +1 -25
  13. package/dist/betterAuthSlice.test.js.map +1 -1
  14. package/dist/constants.d.ts +3 -0
  15. package/dist/constants.d.ts.map +1 -1
  16. package/dist/constants.js +11 -3
  17. package/dist/constants.js.map +1 -1
  18. package/dist/constants.test.js +85 -2
  19. package/dist/constants.test.js.map +1 -1
  20. package/dist/emptyApi.d.ts +3 -1
  21. package/dist/emptyApi.d.ts.map +1 -1
  22. package/dist/emptyApi.js +7 -2
  23. package/dist/emptyApi.js.map +1 -1
  24. package/dist/index.d.ts +8 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +8 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/isolated/constants.isolated.js +7 -1
  29. package/dist/isolated/constants.isolated.js.map +1 -1
  30. package/dist/isolated/offlineMiddleware.isolated.d.ts +2 -0
  31. package/dist/isolated/offlineMiddleware.isolated.d.ts.map +1 -0
  32. package/dist/isolated/offlineMiddleware.isolated.js +516 -0
  33. package/dist/isolated/offlineMiddleware.isolated.js.map +1 -0
  34. package/dist/isolated/offlineMiddleware.native.isolated.d.ts +2 -0
  35. package/dist/isolated/offlineMiddleware.native.isolated.d.ts.map +1 -0
  36. package/dist/isolated/offlineMiddleware.native.isolated.js +70 -0
  37. package/dist/isolated/offlineMiddleware.native.isolated.js.map +1 -0
  38. package/dist/isolated/useUpgradeCheck.mobile.isolated.d.ts +2 -0
  39. package/dist/isolated/useUpgradeCheck.mobile.isolated.d.ts.map +1 -0
  40. package/dist/{useUpgradeCheck.mobile.test.js → isolated/useUpgradeCheck.mobile.isolated.js} +13 -5
  41. package/dist/isolated/useUpgradeCheck.mobile.isolated.js.map +1 -0
  42. package/dist/isolated/useUpgradeCheck.web.isolated.d.ts +2 -0
  43. package/dist/isolated/useUpgradeCheck.web.isolated.d.ts.map +1 -0
  44. package/dist/{useUpgradeCheck.test.js → isolated/useUpgradeCheck.web.isolated.js} +37 -7
  45. package/dist/isolated/useUpgradeCheck.web.isolated.js.map +1 -0
  46. package/dist/mongooseSlice.d.ts +3 -2
  47. package/dist/mongooseSlice.d.ts.map +1 -1
  48. package/dist/mongooseSlice.js +3 -4
  49. package/dist/mongooseSlice.js.map +1 -1
  50. package/dist/mongooseSlice.test.js +1 -1
  51. package/dist/mongooseSlice.test.js.map +1 -1
  52. package/dist/offlineGate.d.ts +8 -0
  53. package/dist/offlineGate.d.ts.map +1 -0
  54. package/dist/offlineGate.js +20 -0
  55. package/dist/offlineGate.js.map +1 -0
  56. package/dist/offlineGate.test.d.ts +2 -0
  57. package/dist/offlineGate.test.d.ts.map +1 -0
  58. package/dist/offlineGate.test.js +46 -0
  59. package/dist/offlineGate.test.js.map +1 -0
  60. package/dist/offlineMiddleware.d.ts +46 -0
  61. package/dist/offlineMiddleware.d.ts.map +1 -0
  62. package/dist/offlineMiddleware.js +589 -0
  63. package/dist/offlineMiddleware.js.map +1 -0
  64. package/dist/offlineMiddleware.test.d.ts +2 -0
  65. package/dist/offlineMiddleware.test.d.ts.map +1 -0
  66. package/dist/offlineMiddleware.test.js +145 -0
  67. package/dist/offlineMiddleware.test.js.map +1 -0
  68. package/dist/offlineSlice.d.ts +232 -0
  69. package/dist/offlineSlice.d.ts.map +1 -0
  70. package/dist/offlineSlice.js +65 -0
  71. package/dist/offlineSlice.js.map +1 -0
  72. package/dist/offlineSlice.test.d.ts +2 -0
  73. package/dist/offlineSlice.test.d.ts.map +1 -0
  74. package/dist/offlineSlice.test.js +153 -0
  75. package/dist/offlineSlice.test.js.map +1 -0
  76. package/dist/realtime.d.ts +123 -0
  77. package/dist/realtime.d.ts.map +1 -0
  78. package/dist/realtime.js +299 -0
  79. package/dist/realtime.js.map +1 -0
  80. package/dist/realtime.test.d.ts +2 -0
  81. package/dist/realtime.test.d.ts.map +1 -0
  82. package/dist/realtime.test.js +339 -0
  83. package/dist/realtime.test.js.map +1 -0
  84. package/dist/socket.d.ts.map +1 -1
  85. package/dist/socket.js +29 -28
  86. package/dist/socket.js.map +1 -1
  87. package/dist/sync.d.ts +35 -0
  88. package/dist/sync.d.ts.map +1 -0
  89. package/dist/sync.js +205 -0
  90. package/dist/sync.js.map +1 -0
  91. package/dist/tagGenerator.d.ts +20 -1
  92. package/dist/tagGenerator.d.ts.map +1 -1
  93. package/dist/tagGenerator.js +4 -12
  94. package/dist/tagGenerator.js.map +1 -1
  95. package/dist/useFeatureFlags.d.ts +4 -2
  96. package/dist/useFeatureFlags.d.ts.map +1 -1
  97. package/dist/useFeatureFlags.js +3 -5
  98. package/dist/useFeatureFlags.js.map +1 -1
  99. package/dist/useOfflineStatus.d.ts +33 -0
  100. package/dist/useOfflineStatus.d.ts.map +1 -0
  101. package/dist/useOfflineStatus.js +43 -0
  102. package/dist/useOfflineStatus.js.map +1 -0
  103. package/dist/useOfflineStatus.test.d.ts +2 -0
  104. package/dist/useOfflineStatus.test.d.ts.map +1 -0
  105. package/dist/useOfflineStatus.test.js +119 -0
  106. package/dist/useOfflineStatus.test.js.map +1 -0
  107. package/dist/useRealtimeDebug.d.ts +6 -0
  108. package/dist/useRealtimeDebug.d.ts.map +1 -0
  109. package/dist/useRealtimeDebug.js +41 -0
  110. package/dist/useRealtimeDebug.js.map +1 -0
  111. package/dist/useServerStatus.d.ts +29 -0
  112. package/dist/useServerStatus.d.ts.map +1 -0
  113. package/dist/useServerStatus.js +89 -0
  114. package/dist/useServerStatus.js.map +1 -0
  115. package/dist/useUpgradeCheck.d.ts +7 -3
  116. package/dist/useUpgradeCheck.d.ts.map +1 -1
  117. package/dist/useUpgradeCheck.js +27 -13
  118. package/dist/useUpgradeCheck.js.map +1 -1
  119. package/package.json +2 -2
  120. package/src/authSlice.test.ts +2 -11
  121. package/src/authSlice.ts +9 -9
  122. package/src/authSliceNative.test.ts +11 -4
  123. package/src/betterAuthSlice.test.ts +1 -25
  124. package/src/betterAuthSlice.ts +3 -2
  125. package/src/constants.test.ts +99 -1
  126. package/src/constants.ts +14 -3
  127. package/src/emptyApi.ts +11 -3
  128. package/src/index.ts +8 -0
  129. package/src/isolated/constants.isolated.ts +7 -3
  130. package/src/isolated/offlineMiddleware.isolated.ts +696 -0
  131. package/src/isolated/offlineMiddleware.native.isolated.ts +80 -0
  132. package/src/{useUpgradeCheck.mobile.test.ts → isolated/useUpgradeCheck.mobile.isolated.ts} +13 -4
  133. package/src/{useUpgradeCheck.test.ts → isolated/useUpgradeCheck.web.isolated.ts} +48 -6
  134. package/src/mongooseSlice.test.ts +1 -1
  135. package/src/mongooseSlice.ts +4 -5
  136. package/src/offlineGate.test.ts +55 -0
  137. package/src/offlineGate.ts +25 -0
  138. package/src/offlineMiddleware.test.ts +187 -0
  139. package/src/offlineMiddleware.ts +716 -0
  140. package/src/offlineSlice.test.ts +204 -0
  141. package/src/offlineSlice.ts +130 -0
  142. package/src/realtime.test.ts +404 -0
  143. package/src/realtime.ts +408 -0
  144. package/src/socket.ts +33 -32
  145. package/src/sync.ts +310 -0
  146. package/src/tagGenerator.ts +30 -18
  147. package/src/useFeatureFlags.ts +6 -6
  148. package/src/useOfflineStatus.test.ts +157 -0
  149. package/src/useOfflineStatus.ts +82 -0
  150. package/src/useRealtimeDebug.ts +51 -0
  151. package/src/useServerStatus.ts +122 -0
  152. package/src/useUpgradeCheck.ts +35 -13
  153. package/dist/isolated/useUpgradeCheck.isolated.d.ts +0 -2
  154. package/dist/isolated/useUpgradeCheck.isolated.d.ts.map +0 -1
  155. package/dist/isolated/useUpgradeCheck.isolated.js +0 -153
  156. package/dist/isolated/useUpgradeCheck.isolated.js.map +0 -1
  157. package/dist/useUpgradeCheck.mobile.test.d.ts +0 -2
  158. package/dist/useUpgradeCheck.mobile.test.d.ts.map +0 -1
  159. package/dist/useUpgradeCheck.mobile.test.js.map +0 -1
  160. package/dist/useUpgradeCheck.test.d.ts +0 -2
  161. package/dist/useUpgradeCheck.test.d.ts.map +0 -1
  162. package/dist/useUpgradeCheck.test.js.map +0 -1
  163. package/src/isolated/useUpgradeCheck.isolated.ts +0 -201
@@ -1,201 +0,0 @@
1
- /**
2
- * Isolated tests for useUpgradeCheck mobile-only paths.
3
- *
4
- * These run in a separate bun process because they need IsWeb=false,
5
- * which cannot be changed per-test (bun snapshots module exports).
6
- */
7
- import {afterEach, beforeEach, describe, expect, it, mock} from "bun:test";
8
- import {act, renderHook, waitFor} from "@testing-library/react-native";
9
-
10
- // ---------------------------------------------------------------------------
11
- // Mutable refs
12
- // ---------------------------------------------------------------------------
13
- let mockBuildNumber: number | undefined = 42;
14
-
15
- interface MockVersionCheckResponse {
16
- message?: string;
17
- status: "ok" | "warning" | "required";
18
- updateUrl?: string;
19
- }
20
- const mockUnwrap = mock(
21
- (): Promise<MockVersionCheckResponse> =>
22
- Promise.resolve({status: "warning", updateUrl: "https://example.com/update"})
23
- );
24
- const mockTrigger = mock((..._args: unknown[]) => ({unwrap: mockUnwrap}));
25
-
26
- mock.module("../emptyApi", () => ({
27
- useLazyGetVersionCheckQuery: () => [mockTrigger],
28
- }));
29
-
30
- // IsWeb = false so we exercise the mobile onUpdate paths
31
- mock.module("../platform", () => ({
32
- IsWeb: false,
33
- }));
34
-
35
- let appStateListeners: Array<(state: string) => void> = [];
36
- const mockRemove = mock(() => {});
37
- const mockAddEventListener = mock((_event: string, handler: (state: string) => void) => {
38
- appStateListeners.push(handler);
39
- return {remove: mockRemove};
40
- });
41
- const mockOpenURL = mock(() => Promise.resolve(true));
42
-
43
- mock.module("react-native", () => ({
44
- AppState: {
45
- addEventListener: mockAddEventListener,
46
- currentState: "active",
47
- },
48
- Linking: {openURL: mockOpenURL},
49
- Platform: {OS: "ios"},
50
- StyleSheet: {create: (s: unknown) => s},
51
- }));
52
-
53
- mock.module("expo-constants", () => ({
54
- default: {
55
- get expoConfig() {
56
- return {extra: {buildNumber: mockBuildNumber}};
57
- },
58
- },
59
- }));
60
-
61
- mock.module("expo-secure-store", () => ({
62
- deleteItemAsync: async () => {},
63
- getItemAsync: async () => null,
64
- setItemAsync: async () => {},
65
- }));
66
-
67
- mock.module("@react-native-async-storage/async-storage", () => ({
68
- default: {
69
- getItem: async () => null,
70
- removeItem: async () => {},
71
- setItem: async () => {},
72
- },
73
- }));
74
-
75
- mock.module("expo-network", () => ({
76
- getNetworkStateAsync: async () => ({isConnected: true}),
77
- }));
78
-
79
- // Import after all mock.module calls
80
- import {useUpgradeCheck} from "../useUpgradeCheck";
81
-
82
- const flushPromises = (): Promise<void> => new Promise((r) => setTimeout(r, 0));
83
-
84
- // ---------------------------------------------------------------------------
85
- // Setup / teardown
86
- // ---------------------------------------------------------------------------
87
- const warnCalls: unknown[][] = [];
88
- const originalWarn = console.warn;
89
- const originalDebug = console.debug;
90
-
91
- beforeEach(() => {
92
- mockBuildNumber = 42;
93
- appStateListeners = [];
94
-
95
- mockUnwrap.mockClear();
96
- mockUnwrap.mockImplementation(() =>
97
- Promise.resolve({status: "warning" as const, updateUrl: "https://example.com/update"})
98
- );
99
- mockTrigger.mockClear();
100
- mockTrigger.mockImplementation((..._args: unknown[]) => ({unwrap: mockUnwrap}));
101
- mockRemove.mockClear();
102
- mockAddEventListener.mockClear();
103
- mockAddEventListener.mockImplementation((_event: string, handler: (state: string) => void) => {
104
- appStateListeners.push(handler);
105
- return {remove: mockRemove};
106
- });
107
- mockOpenURL.mockClear();
108
- mockOpenURL.mockImplementation(() => Promise.resolve(true));
109
-
110
- warnCalls.length = 0;
111
- console.warn = (...args: unknown[]): void => {
112
- warnCalls.push(args);
113
- };
114
- console.debug = (): void => {};
115
- });
116
-
117
- afterEach(() => {
118
- console.warn = originalWarn;
119
- console.debug = originalDebug;
120
- });
121
-
122
- // ---------------------------------------------------------------------------
123
- // Tests
124
- // ---------------------------------------------------------------------------
125
- describe("useUpgradeCheck (mobile)", () => {
126
- it("canUpdate is true when updateUrl is set", async () => {
127
- const {result} = renderHook(() => useUpgradeCheck());
128
-
129
- await act(async () => {
130
- await flushPromises();
131
- });
132
-
133
- await waitFor(() => {
134
- expect(result.current.canUpdate).toBe(true);
135
- });
136
- });
137
-
138
- it("canUpdate is false when no updateUrl", () => {
139
- mockUnwrap.mockImplementation(() => new Promise(() => {}));
140
- const {result} = renderHook(() => useUpgradeCheck());
141
- expect(result.current.canUpdate).toBe(false);
142
- });
143
-
144
- it("onUpdate calls Linking.openURL with updateUrl", async () => {
145
- const {result} = renderHook(() => useUpgradeCheck());
146
-
147
- await act(async () => {
148
- await flushPromises();
149
- });
150
-
151
- await waitFor(() => {
152
- expect(result.current.canUpdate).toBe(true);
153
- });
154
-
155
- act(() => {
156
- result.current.onUpdate();
157
- });
158
-
159
- expect(mockOpenURL).toHaveBeenCalledWith("https://example.com/update");
160
- });
161
-
162
- it("onUpdate logs warning when no updateUrl on mobile", () => {
163
- mockUnwrap.mockImplementation(() => Promise.resolve({status: "ok" as const}));
164
- const {result} = renderHook(() => useUpgradeCheck());
165
-
166
- act(() => {
167
- result.current.onUpdate();
168
- });
169
-
170
- const noUrlWarn = warnCalls.find(
171
- (args) => typeof args[0] === "string" && args[0].includes("no update URL")
172
- );
173
- expect(noUrlWarn).toBeDefined();
174
- });
175
-
176
- it("onUpdate logs a warning when Linking.openURL rejects", async () => {
177
- const openError = new Error("link failed");
178
- mockOpenURL.mockImplementation(() => Promise.reject(openError));
179
-
180
- const {result} = renderHook(() => useUpgradeCheck());
181
-
182
- await act(async () => {
183
- await flushPromises();
184
- });
185
-
186
- await waitFor(() => {
187
- expect(result.current.canUpdate).toBe(true);
188
- });
189
-
190
- await act(async () => {
191
- result.current.onUpdate();
192
- await flushPromises();
193
- });
194
-
195
- expect(mockOpenURL).toHaveBeenCalledWith("https://example.com/update");
196
- const failureWarn = warnCalls.find(
197
- (args) => typeof args[0] === "string" && args[0].includes("Failed to open update URL")
198
- );
199
- expect(failureWarn).toBeDefined();
200
- });
201
- });