mod-arch-core 1.15.3 → 1.15.4

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 (57) hide show
  1. package/package.json +2 -2
  2. package/dist/__tests__/__mocks__/mockGenericResponse.d.ts +0 -8
  3. package/dist/__tests__/__mocks__/mockGenericResponse.d.ts.map +0 -1
  4. package/dist/__tests__/__mocks__/mockGenericResponse.js +0 -6
  5. package/dist/__tests__/__mocks__/mockGenericResponse.js.map +0 -1
  6. package/dist/__tests__/__mocks__/styleMock.d.ts +0 -2
  7. package/dist/__tests__/__mocks__/styleMock.d.ts.map +0 -1
  8. package/dist/__tests__/__mocks__/styleMock.js +0 -3
  9. package/dist/__tests__/__mocks__/styleMock.js.map +0 -1
  10. package/dist/__tests__/unit/jest.setup.d.ts +0 -2
  11. package/dist/__tests__/unit/jest.setup.d.ts.map +0 -1
  12. package/dist/__tests__/unit/jest.setup.js +0 -48
  13. package/dist/__tests__/unit/jest.setup.js.map +0 -1
  14. package/dist/__tests__/unit/testUtils/hooks.d.ts +0 -80
  15. package/dist/__tests__/unit/testUtils/hooks.d.ts.map +0 -1
  16. package/dist/__tests__/unit/testUtils/hooks.js +0 -126
  17. package/dist/__tests__/unit/testUtils/hooks.js.map +0 -1
  18. package/dist/__tests__/unit/testUtils/hooks.spec.d.ts +0 -2
  19. package/dist/__tests__/unit/testUtils/hooks.spec.d.ts.map +0 -1
  20. package/dist/__tests__/unit/testUtils/hooks.spec.js +0 -192
  21. package/dist/__tests__/unit/testUtils/hooks.spec.js.map +0 -1
  22. package/dist/api/__tests__/errorUtils.spec.d.ts +0 -2
  23. package/dist/api/__tests__/errorUtils.spec.d.ts.map +0 -1
  24. package/dist/api/__tests__/errorUtils.spec.js +0 -27
  25. package/dist/api/__tests__/errorUtils.spec.js.map +0 -1
  26. package/dist/config/transform.file.d.ts +0 -3
  27. package/dist/config/transform.file.d.ts.map +0 -1
  28. package/dist/config/transform.file.js +0 -4
  29. package/dist/config/transform.file.js.map +0 -1
  30. package/dist/config/transform.style.d.ts +0 -2
  31. package/dist/config/transform.style.d.ts.map +0 -1
  32. package/dist/config/transform.style.js +0 -4
  33. package/dist/config/transform.style.js.map +0 -1
  34. package/dist/context/__tests__/ModularArchContext.test.d.ts +0 -2
  35. package/dist/context/__tests__/ModularArchContext.test.d.ts.map +0 -1
  36. package/dist/context/__tests__/ModularArchContext.test.js +0 -331
  37. package/dist/context/__tests__/ModularArchContext.test.js.map +0 -1
  38. package/dist/hooks/__tests__/useModularArchContext.test.d.ts +0 -2
  39. package/dist/hooks/__tests__/useModularArchContext.test.d.ts.map +0 -1
  40. package/dist/hooks/__tests__/useModularArchContext.test.js +0 -39
  41. package/dist/hooks/__tests__/useModularArchContext.test.js.map +0 -1
  42. package/dist/hooks/__tests__/useNamespacePersistence.test.d.ts +0 -2
  43. package/dist/hooks/__tests__/useNamespacePersistence.test.d.ts.map +0 -1
  44. package/dist/hooks/__tests__/useNamespacePersistence.test.js +0 -322
  45. package/dist/hooks/__tests__/useNamespacePersistence.test.js.map +0 -1
  46. package/dist/hooks/__tests__/useNamespaceSelector.test.d.ts +0 -2
  47. package/dist/hooks/__tests__/useNamespaceSelector.test.d.ts.map +0 -1
  48. package/dist/hooks/__tests__/useNamespaceSelector.test.js +0 -161
  49. package/dist/hooks/__tests__/useNamespaceSelector.test.js.map +0 -1
  50. package/dist/hooks/__tests__/useNamespaces.test.d.ts +0 -2
  51. package/dist/hooks/__tests__/useNamespaces.test.d.ts.map +0 -1
  52. package/dist/hooks/__tests__/useNamespaces.test.js +0 -62
  53. package/dist/hooks/__tests__/useNamespaces.test.js.map +0 -1
  54. package/dist/jest.config.d.ts +0 -21
  55. package/dist/jest.config.d.ts.map +0 -1
  56. package/dist/jest.config.js +0 -41
  57. package/dist/jest.config.js.map +0 -1
@@ -1,4 +0,0 @@
1
- "use strict";
2
- // Transform style files (CSS, SCSS, SASS, LESS) to empty objects in Jest tests
3
- module.exports = {};
4
- //# sourceMappingURL=transform.style.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transform.style.js","sourceRoot":"","sources":["../../config/transform.style.js"],"names":[],"mappings":";AAAA,+EAA+E;AAC/E,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC"}
@@ -1,2 +0,0 @@
1
- import '@testing-library/jest-dom';
2
- //# sourceMappingURL=ModularArchContext.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModularArchContext.test.d.ts","sourceRoot":"","sources":["../../../context/__tests__/ModularArchContext.test.tsx"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC"}
@@ -1,331 +0,0 @@
1
- import '@testing-library/jest-dom';
2
- import * as React from 'react';
3
- import { render, screen, act, waitFor } from '@testing-library/react';
4
- import { ModularArchContext, ModularArchContextProvider } from '../../context/ModularArchContext';
5
- import { DeploymentMode } from '../../utilities';
6
- import * as useFetchStateModule from '../../utilities/useFetchState';
7
- // Mock the utilities
8
- jest.mock('~/utilities/useFetchState');
9
- jest.mock('~/api/k8s');
10
- const mockUseFetchState = useFetchStateModule.useFetchState;
11
- const mockNamespaces = [{ name: 'namespace-2' }, { name: 'namespace-3' }, { name: 'namespace-1' }];
12
- const createMockConfig = (deploymentMode = DeploymentMode.Standalone, mandatoryNamespace) => ({
13
- deploymentMode,
14
- URL_PREFIX: 'model-registry',
15
- BFF_API_VERSION: 'v1',
16
- ...(mandatoryNamespace && { mandatoryNamespace }),
17
- });
18
- describe('ModularArchContext', () => {
19
- const TestConsumer = () => {
20
- const context = React.useContext(ModularArchContext);
21
- if (!context) {
22
- return React.createElement("div", { "data-testid": "no-context" }, "No context");
23
- }
24
- const { config, namespaces, namespacesLoaded, namespacesLoadError, preferredNamespace, initializationError, scriptLoaded, } = context;
25
- return (React.createElement("div", null,
26
- React.createElement("div", { "data-testid": "deployment-mode" }, config.deploymentMode),
27
- React.createElement("div", { "data-testid": "loading-state" }, namespacesLoaded.toString()),
28
- React.createElement("div", { "data-testid": "error-state" }, namespacesLoadError?.message || 'no-error'),
29
- React.createElement("div", { "data-testid": "init-error" }, initializationError?.message || 'no-init-error'),
30
- React.createElement("div", { "data-testid": "namespaces" }, namespaces.map((ns) => ns.name).join(',')),
31
- React.createElement("div", { "data-testid": "preferred" }, preferredNamespace?.name || 'none'),
32
- React.createElement("div", { "data-testid": "script-loaded" }, scriptLoaded.toString())));
33
- };
34
- beforeEach(() => {
35
- jest.clearAllMocks();
36
- // Reset global window.centraldashboard
37
- delete global.window.centraldashboard;
38
- // Mock fetch for script loading
39
- global.fetch = jest.fn().mockResolvedValue({ ok: false });
40
- });
41
- afterEach(() => {
42
- jest.restoreAllMocks();
43
- });
44
- it('should provide initial empty state for standalone deployment', async () => {
45
- mockUseFetchState.mockReturnValue([[], true, undefined, jest.fn()]);
46
- const config = createMockConfig();
47
- render(React.createElement(ModularArchContextProvider, { config: config },
48
- React.createElement(TestConsumer, null)));
49
- expect(screen.getByTestId('deployment-mode')).toHaveTextContent('standalone');
50
- expect(screen.getByTestId('loading-state')).toHaveTextContent('true');
51
- expect(screen.getByTestId('error-state')).toHaveTextContent('no-error');
52
- expect(screen.getByTestId('namespaces')).toHaveTextContent('');
53
- expect(screen.getByTestId('preferred')).toHaveTextContent('none');
54
- expect(screen.getByTestId('script-loaded')).toHaveTextContent('true');
55
- });
56
- it('should load namespaces and set first namespace as preferred', async () => {
57
- mockUseFetchState.mockReturnValue([mockNamespaces, true, undefined, jest.fn()]);
58
- const config = createMockConfig();
59
- render(React.createElement(ModularArchContextProvider, { config: config },
60
- React.createElement(TestConsumer, null)));
61
- expect(screen.getByTestId('loading-state')).toHaveTextContent('true');
62
- expect(screen.getByTestId('error-state')).toHaveTextContent('no-error');
63
- expect(screen.getByTestId('namespaces')).toHaveTextContent('namespace-1,namespace-2,namespace-3');
64
- expect(screen.getByTestId('preferred')).toHaveTextContent('namespace-1');
65
- });
66
- it('should handle errors during namespace loading', async () => {
67
- const error = new Error('Failed to load namespaces');
68
- mockUseFetchState.mockReturnValue([[], true, error, jest.fn()]);
69
- const config = createMockConfig();
70
- render(React.createElement(ModularArchContextProvider, { config: config },
71
- React.createElement(TestConsumer, null)));
72
- expect(screen.getByTestId('loading-state')).toHaveTextContent('true');
73
- expect(screen.getByTestId('error-state')).toHaveTextContent('Failed to load namespaces');
74
- expect(screen.getByTestId('namespaces')).toHaveTextContent('');
75
- expect(screen.getByTestId('preferred')).toHaveTextContent('none');
76
- });
77
- it('should initialize central dashboard client when kubeflow', async () => {
78
- mockUseFetchState.mockReturnValue([mockNamespaces, true, undefined, jest.fn()]);
79
- // Mock fetch to resolve successfully for script loading
80
- global.fetch.mockResolvedValue({ ok: true });
81
- // Mock window.centraldashboard before rendering
82
- const mockInit = jest.fn((callback) => {
83
- // Simulate the callback being called
84
- callback({
85
- onNamespaceSelected: jest.fn(),
86
- });
87
- });
88
- global.window.centraldashboard = {
89
- CentralDashboardEventHandler: {
90
- init: mockInit,
91
- },
92
- };
93
- // Mock script loading
94
- const originalCreateElement = document.createElement;
95
- const mockScript = {
96
- src: '',
97
- async: true,
98
- onload: null,
99
- onerror: null,
100
- };
101
- document.createElement = jest.fn((tagName) => {
102
- if (tagName === 'script') {
103
- return mockScript;
104
- }
105
- return originalCreateElement.call(document, tagName);
106
- });
107
- const appendChild = jest.spyOn(document.head, 'appendChild').mockImplementation(() => {
108
- setTimeout(() => {
109
- if (mockScript.onload) {
110
- mockScript.onload.call(mockScript, new Event('load'));
111
- }
112
- }, 0);
113
- return mockScript;
114
- });
115
- const config = createMockConfig(DeploymentMode.Kubeflow);
116
- render(React.createElement(ModularArchContextProvider, { config: config },
117
- React.createElement(TestConsumer, null)));
118
- // Wait for script loading effect
119
- await waitFor(() => {
120
- expect(screen.getByTestId('preferred')).toHaveTextContent('namespace-1');
121
- });
122
- expect(mockInit).toHaveBeenCalled();
123
- // Cleanup
124
- document.createElement = originalCreateElement;
125
- appendChild.mockRestore();
126
- });
127
- it('should update preferred namespace when selected', async () => {
128
- mockUseFetchState.mockReturnValue([mockNamespaces, true, undefined, jest.fn()]);
129
- const TestUpdater = () => {
130
- const context = React.useContext(ModularArchContext);
131
- React.useEffect(() => {
132
- if (context) {
133
- act(() => {
134
- context.updatePreferredNamespace({ name: 'namespace-2' });
135
- });
136
- }
137
- }, [context]);
138
- return null;
139
- };
140
- const config = createMockConfig();
141
- render(React.createElement(ModularArchContextProvider, { config: config },
142
- React.createElement(TestConsumer, null),
143
- React.createElement(TestUpdater, null)));
144
- expect(screen.getByTestId('preferred')).toHaveTextContent('namespace-2');
145
- });
146
- it('should handle central dashboard initialization failure gracefully', async () => {
147
- mockUseFetchState.mockReturnValue([mockNamespaces, true, undefined, jest.fn()]);
148
- // Mock fetch to resolve successfully for script loading
149
- global.fetch.mockResolvedValue({ ok: true });
150
- // Mock console.error to avoid test output noise
151
- const consoleSpy = jest.spyOn(console, 'error').mockImplementation();
152
- // Mock window.centraldashboard with an init function that throws an error
153
- const error = new Error('Central dashboard initialization failed');
154
- global.window.centraldashboard = {
155
- CentralDashboardEventHandler: {
156
- init: () => {
157
- throw error;
158
- },
159
- },
160
- };
161
- // Mock script loading
162
- const originalCreateElement = document.createElement;
163
- const mockScript = {
164
- src: '',
165
- async: true,
166
- onload: null,
167
- onerror: null,
168
- };
169
- document.createElement = jest.fn((tagName) => {
170
- if (tagName === 'script') {
171
- return mockScript;
172
- }
173
- return originalCreateElement.call(document, tagName);
174
- });
175
- const appendChild = jest.spyOn(document.head, 'appendChild').mockImplementation(() => {
176
- // Simulate script loaded
177
- setTimeout(() => {
178
- if (mockScript.onload) {
179
- mockScript.onload();
180
- }
181
- }, 0);
182
- return mockScript;
183
- });
184
- const config = createMockConfig(DeploymentMode.Kubeflow);
185
- render(React.createElement(ModularArchContextProvider, { config: config },
186
- React.createElement(TestConsumer, null)));
187
- // Wait for script loading and error handling
188
- await waitFor(() => {
189
- expect(consoleSpy).toHaveBeenCalledWith('Failed to initialize central dashboard client', error);
190
- // Wait for loading to disappear (scriptLoaded = true)
191
- expect(screen.queryByText('Loading...')).not.toBeInTheDocument();
192
- });
193
- expect(screen.getByTestId('init-error')).toHaveTextContent('Central dashboard initialization failed');
194
- expect(screen.getByTestId('preferred')).toHaveTextContent('namespace-1');
195
- // Cleanup
196
- consoleSpy.mockRestore();
197
- document.createElement = originalCreateElement;
198
- appendChild.mockRestore();
199
- });
200
- it('should handle multiple namespace updates correctly', async () => {
201
- mockUseFetchState.mockReturnValue([mockNamespaces, true, undefined, jest.fn()]);
202
- const TestMultipleUpdates = () => {
203
- const context = React.useContext(ModularArchContext);
204
- React.useEffect(() => {
205
- if (context) {
206
- act(() => {
207
- context.updatePreferredNamespace({ name: 'namespace-2' });
208
- context.updatePreferredNamespace({ name: 'namespace-3' });
209
- context.updatePreferredNamespace({ name: 'namespace-1' });
210
- });
211
- }
212
- }, [context]);
213
- return null;
214
- };
215
- const config = createMockConfig();
216
- render(React.createElement(ModularArchContextProvider, { config: config },
217
- React.createElement(TestConsumer, null),
218
- React.createElement(TestMultipleUpdates, null)));
219
- expect(screen.getByTestId('preferred')).toHaveTextContent('namespace-1');
220
- });
221
- it('should show loading spinner when script is not loaded for kubeflow integration', async () => {
222
- mockUseFetchState.mockReturnValue([mockNamespaces, true, undefined, jest.fn()]);
223
- // Mock fetch to simulate script loading delay
224
- let resolvePromise;
225
- const promise = new Promise((resolve) => {
226
- resolvePromise = resolve;
227
- });
228
- global.fetch.mockReturnValue(promise);
229
- const config = createMockConfig(DeploymentMode.Kubeflow);
230
- render(React.createElement(ModularArchContextProvider, { config: config },
231
- React.createElement(TestConsumer, null)));
232
- // Should show loading text
233
- expect(screen.getByText('Loading...')).toBeInTheDocument();
234
- expect(screen.queryByTestId('deployment-mode')).not.toBeInTheDocument();
235
- // Resolve the promise to simulate script loading
236
- act(() => {
237
- resolvePromise({ ok: true });
238
- });
239
- });
240
- it('should throw error when used outside provider', () => {
241
- const TestConsumerWithError = () => {
242
- const context = React.useContext(ModularArchContext);
243
- return React.createElement("div", null, context ? 'Has context' : 'No context');
244
- };
245
- render(React.createElement(TestConsumerWithError, null));
246
- expect(screen.getByText('No context')).toBeInTheDocument();
247
- });
248
- describe('mandatory namespace functionality', () => {
249
- it('should use mandatory namespace when provided in config', async () => {
250
- const mandatoryNamespace = 'mandatory-namespace';
251
- // Mock useFetchState to return only the mandatory namespace
252
- mockUseFetchState.mockReturnValue([
253
- [{ name: mandatoryNamespace }],
254
- true,
255
- undefined,
256
- jest.fn(),
257
- ]);
258
- const config = createMockConfig(DeploymentMode.Federated);
259
- render(React.createElement(ModularArchContextProvider, { config: config },
260
- React.createElement(TestConsumer, null)));
261
- expect(screen.getByTestId('namespaces')).toHaveTextContent(mandatoryNamespace);
262
- expect(screen.getByTestId('preferred')).toHaveTextContent(mandatoryNamespace);
263
- });
264
- it('should not fetch namespaces when mandatory namespace is set', async () => {
265
- const mandatoryNamespace = 'mandatory-namespace';
266
- // Mock useFetchState to return only the mandatory namespace
267
- mockUseFetchState.mockReturnValue([
268
- [{ name: mandatoryNamespace }],
269
- true,
270
- undefined,
271
- jest.fn(),
272
- ]);
273
- const config = createMockConfig(DeploymentMode.Federated, mandatoryNamespace);
274
- render(React.createElement(ModularArchContextProvider, { config: config },
275
- React.createElement(TestConsumer, null)));
276
- // Should show the mandatory namespace as loaded
277
- expect(screen.getByTestId('loading-state')).toHaveTextContent('true');
278
- expect(screen.getByTestId('namespaces')).toHaveTextContent(mandatoryNamespace);
279
- expect(screen.getByTestId('preferred')).toHaveTextContent(mandatoryNamespace);
280
- });
281
- it('should not use kubeflow namespace loader when mandatory namespace is set', async () => {
282
- const mandatoryNamespace = 'mandatory-namespace';
283
- mockUseFetchState.mockReturnValue([
284
- [{ name: mandatoryNamespace }],
285
- true,
286
- undefined,
287
- jest.fn(),
288
- ]);
289
- // Mock fetch to resolve successfully for script loading
290
- global.fetch.mockResolvedValue({ ok: true });
291
- // Mock script loading
292
- const originalCreateElement = document.createElement;
293
- const mockScript = {
294
- src: '',
295
- async: true,
296
- onload: null,
297
- onerror: null,
298
- };
299
- document.createElement = jest.fn((tagName) => {
300
- if (tagName === 'script') {
301
- return mockScript;
302
- }
303
- return originalCreateElement.call(document, tagName);
304
- });
305
- const appendChild = jest.spyOn(document.head, 'appendChild').mockImplementation(() => {
306
- setTimeout(() => {
307
- if (mockScript.onload) {
308
- mockScript.onload.call(mockScript, new Event('load'));
309
- }
310
- }, 0);
311
- return mockScript;
312
- });
313
- // Mock kubeflow window object
314
- global.window.centraldashboard = {
315
- CentralDashboardEventHandler: {
316
- init: jest.fn(),
317
- },
318
- };
319
- const config = createMockConfig(DeploymentMode.Kubeflow, mandatoryNamespace);
320
- render(React.createElement(ModularArchContextProvider, { config: config },
321
- React.createElement(TestConsumer, null)));
322
- await waitFor(() => {
323
- expect(screen.getByTestId('preferred')).toHaveTextContent(mandatoryNamespace);
324
- });
325
- // Cleanup
326
- document.createElement = originalCreateElement;
327
- appendChild.mockRestore();
328
- });
329
- });
330
- });
331
- //# sourceMappingURL=ModularArchContext.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ModularArchContext.test.js","sourceRoot":"","sources":["../../../context/__tests__/ModularArchContext.test.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import '@testing-library/jest-dom';
2
- //# sourceMappingURL=useModularArchContext.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useModularArchContext.test.d.ts","sourceRoot":"","sources":["../../../hooks/__tests__/useModularArchContext.test.tsx"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC"}
@@ -1,39 +0,0 @@
1
- import '@testing-library/jest-dom';
2
- import React from 'react';
3
- import { renderHook } from '@testing-library/react';
4
- import { ModularArchContextProvider } from '../../context/ModularArchContext';
5
- import { DeploymentMode } from '../../utilities';
6
- import { useModularArchContext } from '../useModularArchContext';
7
- // Mock the k8s API module
8
- jest.mock('~/api/k8s', () => ({
9
- getNamespaces: jest.fn(() => jest.fn(() => Promise.resolve([]))),
10
- }));
11
- const mockConfig = {
12
- deploymentMode: DeploymentMode.Standalone,
13
- URL_PREFIX: 'test',
14
- BFF_API_VERSION: 'v1',
15
- };
16
- const wrapper = ({ children }) => (React.createElement(ModularArchContextProvider, { config: mockConfig }, children));
17
- describe('useModularArchContext', () => {
18
- beforeEach(() => {
19
- // Mock fetch for script loading
20
- global.fetch = jest.fn().mockResolvedValue({ ok: false });
21
- });
22
- afterEach(() => {
23
- jest.restoreAllMocks();
24
- });
25
- it('should return full context', () => {
26
- const { result } = renderHook(() => useModularArchContext(), { wrapper });
27
- expect(result.current).toHaveProperty('namespaces');
28
- expect(result.current).toHaveProperty('namespacesLoaded');
29
- expect(result.current).toHaveProperty('scriptLoaded');
30
- });
31
- it('should return config from context', () => {
32
- const { result } = renderHook(() => useModularArchContext(), { wrapper });
33
- expect(result.current.config).toEqual(mockConfig);
34
- });
35
- it('should throw error when used outside provider', () => {
36
- expect(() => renderHook(() => useModularArchContext())).toThrow();
37
- });
38
- });
39
- //# sourceMappingURL=useModularArchContext.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useModularArchContext.test.js","sourceRoot":"","sources":["../../../hooks/__tests__/useModularArchContext.test.tsx"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC;AACnC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,0BAA0B;AAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;CACjE,CAAC,CAAC,CAAC;AAEJ,MAAM,UAAU,GAAG;IACjB,cAAc,EAAE,cAAc,CAAC,UAAU;IACzC,UAAU,EAAE,MAAM;IAClB,eAAe,EAAE,IAAI;CACtB,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAiC,EAAE,EAAE,CAAC,CAC/D,oBAAC,0BAA0B,IAAC,MAAM,EAAE,UAAU,IAAG,QAAQ,CAA8B,CACxF,CAAC;AAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,UAAU,CAAC,GAAG,EAAE;QACd,gCAAgC;QAChC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- import '@testing-library/jest-dom';
2
- //# sourceMappingURL=useNamespacePersistence.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useNamespacePersistence.test.d.ts","sourceRoot":"","sources":["../../../hooks/__tests__/useNamespacePersistence.test.tsx"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC"}