@terreno/rtk 0.13.3 → 0.14.0

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 (144) hide show
  1. package/dist/authSlice.test.js +2 -10
  2. package/dist/authSlice.test.js.map +1 -1
  3. package/dist/authSliceNative.test.js +11 -3
  4. package/dist/authSliceNative.test.js.map +1 -1
  5. package/dist/betterAuthSlice.test.js +1 -25
  6. package/dist/betterAuthSlice.test.js.map +1 -1
  7. package/dist/constants.d.ts +3 -0
  8. package/dist/constants.d.ts.map +1 -1
  9. package/dist/constants.js +11 -3
  10. package/dist/constants.js.map +1 -1
  11. package/dist/constants.test.js +44 -2
  12. package/dist/constants.test.js.map +1 -1
  13. package/dist/emptyApi.d.ts +2 -0
  14. package/dist/emptyApi.d.ts.map +1 -1
  15. package/dist/emptyApi.js +5 -0
  16. package/dist/emptyApi.js.map +1 -1
  17. package/dist/index.d.ts +8 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +8 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/isolated/constants.isolated.js +7 -1
  22. package/dist/isolated/constants.isolated.js.map +1 -1
  23. package/dist/isolated/offlineMiddleware.isolated.d.ts +2 -0
  24. package/dist/isolated/offlineMiddleware.isolated.d.ts.map +1 -0
  25. package/dist/isolated/offlineMiddleware.isolated.js +516 -0
  26. package/dist/isolated/offlineMiddleware.isolated.js.map +1 -0
  27. package/dist/isolated/offlineMiddleware.native.isolated.d.ts +2 -0
  28. package/dist/isolated/offlineMiddleware.native.isolated.d.ts.map +1 -0
  29. package/dist/isolated/offlineMiddleware.native.isolated.js +70 -0
  30. package/dist/isolated/offlineMiddleware.native.isolated.js.map +1 -0
  31. package/dist/isolated/useUpgradeCheck.mobile.isolated.d.ts +2 -0
  32. package/dist/isolated/useUpgradeCheck.mobile.isolated.d.ts.map +1 -0
  33. package/dist/{useUpgradeCheck.mobile.test.js → isolated/useUpgradeCheck.mobile.isolated.js} +13 -5
  34. package/dist/isolated/useUpgradeCheck.mobile.isolated.js.map +1 -0
  35. package/dist/isolated/useUpgradeCheck.web.isolated.d.ts +2 -0
  36. package/dist/isolated/useUpgradeCheck.web.isolated.d.ts.map +1 -0
  37. package/dist/{useUpgradeCheck.test.js → isolated/useUpgradeCheck.web.isolated.js} +37 -7
  38. package/dist/isolated/useUpgradeCheck.web.isolated.js.map +1 -0
  39. package/dist/mongooseSlice.test.js +1 -1
  40. package/dist/mongooseSlice.test.js.map +1 -1
  41. package/dist/offlineGate.d.ts +8 -0
  42. package/dist/offlineGate.d.ts.map +1 -0
  43. package/dist/offlineGate.js +20 -0
  44. package/dist/offlineGate.js.map +1 -0
  45. package/dist/offlineGate.test.d.ts +2 -0
  46. package/dist/offlineGate.test.d.ts.map +1 -0
  47. package/dist/offlineGate.test.js +46 -0
  48. package/dist/offlineGate.test.js.map +1 -0
  49. package/dist/offlineMiddleware.d.ts +46 -0
  50. package/dist/offlineMiddleware.d.ts.map +1 -0
  51. package/dist/offlineMiddleware.js +591 -0
  52. package/dist/offlineMiddleware.js.map +1 -0
  53. package/dist/offlineMiddleware.test.d.ts +2 -0
  54. package/dist/offlineMiddleware.test.d.ts.map +1 -0
  55. package/dist/offlineMiddleware.test.js +145 -0
  56. package/dist/offlineMiddleware.test.js.map +1 -0
  57. package/dist/offlineSlice.d.ts +232 -0
  58. package/dist/offlineSlice.d.ts.map +1 -0
  59. package/dist/offlineSlice.js +65 -0
  60. package/dist/offlineSlice.js.map +1 -0
  61. package/dist/offlineSlice.test.d.ts +2 -0
  62. package/dist/offlineSlice.test.d.ts.map +1 -0
  63. package/dist/offlineSlice.test.js +153 -0
  64. package/dist/offlineSlice.test.js.map +1 -0
  65. package/dist/realtime.d.ts +123 -0
  66. package/dist/realtime.d.ts.map +1 -0
  67. package/dist/realtime.js +299 -0
  68. package/dist/realtime.js.map +1 -0
  69. package/dist/realtime.test.d.ts +2 -0
  70. package/dist/realtime.test.d.ts.map +1 -0
  71. package/dist/realtime.test.js +339 -0
  72. package/dist/realtime.test.js.map +1 -0
  73. package/dist/socket.d.ts.map +1 -1
  74. package/dist/socket.js +29 -28
  75. package/dist/socket.js.map +1 -1
  76. package/dist/sync.d.ts +35 -0
  77. package/dist/sync.d.ts.map +1 -0
  78. package/dist/sync.js +205 -0
  79. package/dist/sync.js.map +1 -0
  80. package/dist/tagGenerator.d.ts +20 -1
  81. package/dist/tagGenerator.d.ts.map +1 -1
  82. package/dist/tagGenerator.js +1 -2
  83. package/dist/tagGenerator.js.map +1 -1
  84. package/dist/useOfflineStatus.d.ts +33 -0
  85. package/dist/useOfflineStatus.d.ts.map +1 -0
  86. package/dist/useOfflineStatus.js +43 -0
  87. package/dist/useOfflineStatus.js.map +1 -0
  88. package/dist/useOfflineStatus.test.d.ts +2 -0
  89. package/dist/useOfflineStatus.test.d.ts.map +1 -0
  90. package/dist/useOfflineStatus.test.js +119 -0
  91. package/dist/useOfflineStatus.test.js.map +1 -0
  92. package/dist/useRealtimeDebug.d.ts +6 -0
  93. package/dist/useRealtimeDebug.d.ts.map +1 -0
  94. package/dist/useRealtimeDebug.js +41 -0
  95. package/dist/useRealtimeDebug.js.map +1 -0
  96. package/dist/useServerStatus.d.ts +29 -0
  97. package/dist/useServerStatus.d.ts.map +1 -0
  98. package/dist/useServerStatus.js +89 -0
  99. package/dist/useServerStatus.js.map +1 -0
  100. package/dist/useUpgradeCheck.d.ts +7 -3
  101. package/dist/useUpgradeCheck.d.ts.map +1 -1
  102. package/dist/useUpgradeCheck.js +27 -13
  103. package/dist/useUpgradeCheck.js.map +1 -1
  104. package/package.json +2 -2
  105. package/src/authSlice.test.ts +2 -11
  106. package/src/authSliceNative.test.ts +11 -4
  107. package/src/betterAuthSlice.test.ts +1 -25
  108. package/src/constants.test.ts +54 -1
  109. package/src/constants.ts +14 -3
  110. package/src/emptyApi.ts +8 -0
  111. package/src/index.ts +8 -0
  112. package/src/isolated/constants.isolated.ts +7 -3
  113. package/src/isolated/offlineMiddleware.isolated.ts +696 -0
  114. package/src/isolated/offlineMiddleware.native.isolated.ts +80 -0
  115. package/src/{useUpgradeCheck.mobile.test.ts → isolated/useUpgradeCheck.mobile.isolated.ts} +13 -4
  116. package/src/{useUpgradeCheck.test.ts → isolated/useUpgradeCheck.web.isolated.ts} +48 -6
  117. package/src/mongooseSlice.test.ts +1 -1
  118. package/src/offlineGate.test.ts +55 -0
  119. package/src/offlineGate.ts +25 -0
  120. package/src/offlineMiddleware.test.ts +187 -0
  121. package/src/offlineMiddleware.ts +718 -0
  122. package/src/offlineSlice.test.ts +204 -0
  123. package/src/offlineSlice.ts +130 -0
  124. package/src/realtime.test.ts +404 -0
  125. package/src/realtime.ts +408 -0
  126. package/src/socket.ts +33 -32
  127. package/src/sync.ts +310 -0
  128. package/src/tagGenerator.ts +29 -11
  129. package/src/useOfflineStatus.test.ts +157 -0
  130. package/src/useOfflineStatus.ts +82 -0
  131. package/src/useRealtimeDebug.ts +51 -0
  132. package/src/useServerStatus.ts +122 -0
  133. package/src/useUpgradeCheck.ts +35 -13
  134. package/dist/isolated/useUpgradeCheck.isolated.d.ts +0 -2
  135. package/dist/isolated/useUpgradeCheck.isolated.d.ts.map +0 -1
  136. package/dist/isolated/useUpgradeCheck.isolated.js +0 -153
  137. package/dist/isolated/useUpgradeCheck.isolated.js.map +0 -1
  138. package/dist/useUpgradeCheck.mobile.test.d.ts +0 -2
  139. package/dist/useUpgradeCheck.mobile.test.d.ts.map +0 -1
  140. package/dist/useUpgradeCheck.mobile.test.js.map +0 -1
  141. package/dist/useUpgradeCheck.test.d.ts +0 -2
  142. package/dist/useUpgradeCheck.test.d.ts.map +0 -1
  143. package/dist/useUpgradeCheck.test.js.map +0 -1
  144. 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
- });