mod-arch-core 1.0.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 (178) hide show
  1. package/README.md +44 -0
  2. package/dist/__tests__/__mocks__/mockGenericResponse.d.ts +8 -0
  3. package/dist/__tests__/__mocks__/mockGenericResponse.d.ts.map +1 -0
  4. package/dist/__tests__/__mocks__/mockGenericResponse.js +6 -0
  5. package/dist/__tests__/__mocks__/mockGenericResponse.js.map +1 -0
  6. package/dist/__tests__/__mocks__/styleMock.d.ts +2 -0
  7. package/dist/__tests__/__mocks__/styleMock.d.ts.map +1 -0
  8. package/dist/__tests__/__mocks__/styleMock.js +3 -0
  9. package/dist/__tests__/__mocks__/styleMock.js.map +1 -0
  10. package/dist/__tests__/unit/jest.setup.d.ts +2 -0
  11. package/dist/__tests__/unit/jest.setup.d.ts.map +1 -0
  12. package/dist/__tests__/unit/jest.setup.js +48 -0
  13. package/dist/__tests__/unit/jest.setup.js.map +1 -0
  14. package/dist/__tests__/unit/testUtils/hooks.d.ts +80 -0
  15. package/dist/__tests__/unit/testUtils/hooks.d.ts.map +1 -0
  16. package/dist/__tests__/unit/testUtils/hooks.js +126 -0
  17. package/dist/__tests__/unit/testUtils/hooks.js.map +1 -0
  18. package/dist/__tests__/unit/testUtils/hooks.spec.d.ts +2 -0
  19. package/dist/__tests__/unit/testUtils/hooks.spec.d.ts.map +1 -0
  20. package/dist/__tests__/unit/testUtils/hooks.spec.js +192 -0
  21. package/dist/__tests__/unit/testUtils/hooks.spec.js.map +1 -0
  22. package/dist/api/__tests__/errorUtils.spec.d.ts +2 -0
  23. package/dist/api/__tests__/errorUtils.spec.d.ts.map +1 -0
  24. package/dist/api/__tests__/errorUtils.spec.js +27 -0
  25. package/dist/api/__tests__/errorUtils.spec.js.map +1 -0
  26. package/dist/api/apiUtils.d.ts +16 -0
  27. package/dist/api/apiUtils.d.ts.map +1 -0
  28. package/dist/api/apiUtils.js +96 -0
  29. package/dist/api/apiUtils.js.map +1 -0
  30. package/dist/api/const.d.ts +3 -0
  31. package/dist/api/const.d.ts.map +1 -0
  32. package/dist/api/const.js +4 -0
  33. package/dist/api/const.js.map +1 -0
  34. package/dist/api/errorUtils.d.ts +2 -0
  35. package/dist/api/errorUtils.d.ts.map +1 -0
  36. package/dist/api/errorUtils.js +22 -0
  37. package/dist/api/errorUtils.js.map +1 -0
  38. package/dist/api/index.d.ts +7 -0
  39. package/dist/api/index.d.ts.map +1 -0
  40. package/dist/api/index.js +8 -0
  41. package/dist/api/index.js.map +1 -0
  42. package/dist/api/k8s.d.ts +10 -0
  43. package/dist/api/k8s.d.ts.map +1 -0
  44. package/dist/api/k8s.js +16 -0
  45. package/dist/api/k8s.js.map +1 -0
  46. package/dist/api/types.d.ts +19 -0
  47. package/dist/api/types.d.ts.map +1 -0
  48. package/dist/api/types.js +2 -0
  49. package/dist/api/types.js.map +1 -0
  50. package/dist/api/useAPIState.d.ts +3 -0
  51. package/dist/api/useAPIState.d.ts.map +1 -0
  52. package/dist/api/useAPIState.js +22 -0
  53. package/dist/api/useAPIState.js.map +1 -0
  54. package/dist/config/transform.file.d.ts +3 -0
  55. package/dist/config/transform.file.d.ts.map +1 -0
  56. package/dist/config/transform.file.js +4 -0
  57. package/dist/config/transform.file.js.map +1 -0
  58. package/dist/config/transform.style.d.ts +2 -0
  59. package/dist/config/transform.style.d.ts.map +1 -0
  60. package/dist/config/transform.style.js +4 -0
  61. package/dist/config/transform.style.js.map +1 -0
  62. package/dist/context/BrowserStorageContext.d.ts +25 -0
  63. package/dist/context/BrowserStorageContext.d.ts.map +1 -0
  64. package/dist/context/BrowserStorageContext.js +97 -0
  65. package/dist/context/BrowserStorageContext.js.map +1 -0
  66. package/dist/context/ModularArchContext.d.ts +20 -0
  67. package/dist/context/ModularArchContext.d.ts.map +1 -0
  68. package/dist/context/ModularArchContext.js +67 -0
  69. package/dist/context/ModularArchContext.js.map +1 -0
  70. package/dist/context/NotificationContext.d.ts +15 -0
  71. package/dist/context/NotificationContext.d.ts.map +1 -0
  72. package/dist/context/NotificationContext.js +43 -0
  73. package/dist/context/NotificationContext.js.map +1 -0
  74. package/dist/context/__tests__/ModularArchContext.test.d.ts +2 -0
  75. package/dist/context/__tests__/ModularArchContext.test.d.ts.map +1 -0
  76. package/dist/context/__tests__/ModularArchContext.test.js +331 -0
  77. package/dist/context/__tests__/ModularArchContext.test.js.map +1 -0
  78. package/dist/context/index.d.ts +4 -0
  79. package/dist/context/index.d.ts.map +1 -0
  80. package/dist/context/index.js +4 -0
  81. package/dist/context/index.js.map +1 -0
  82. package/dist/hooks/__tests__/useModularArchContext.test.d.ts +2 -0
  83. package/dist/hooks/__tests__/useModularArchContext.test.d.ts.map +1 -0
  84. package/dist/hooks/__tests__/useModularArchContext.test.js +39 -0
  85. package/dist/hooks/__tests__/useModularArchContext.test.js.map +1 -0
  86. package/dist/hooks/__tests__/useNamespaces.test.d.ts +2 -0
  87. package/dist/hooks/__tests__/useNamespaces.test.d.ts.map +1 -0
  88. package/dist/hooks/__tests__/useNamespaces.test.js +62 -0
  89. package/dist/hooks/__tests__/useNamespaces.test.js.map +1 -0
  90. package/dist/hooks/index.d.ts +8 -0
  91. package/dist/hooks/index.d.ts.map +1 -0
  92. package/dist/hooks/index.js +8 -0
  93. package/dist/hooks/index.js.map +1 -0
  94. package/dist/hooks/useModularArchContext.d.ts +5 -0
  95. package/dist/hooks/useModularArchContext.d.ts.map +1 -0
  96. package/dist/hooks/useModularArchContext.js +11 -0
  97. package/dist/hooks/useModularArchContext.js.map +1 -0
  98. package/dist/hooks/useNamespaceSelector.d.ts +10 -0
  99. package/dist/hooks/useNamespaceSelector.d.ts.map +1 -0
  100. package/dist/hooks/useNamespaceSelector.js +13 -0
  101. package/dist/hooks/useNamespaceSelector.js.map +1 -0
  102. package/dist/hooks/useNamespaces.d.ts +6 -0
  103. package/dist/hooks/useNamespaces.d.ts.map +1 -0
  104. package/dist/hooks/useNamespaces.js +34 -0
  105. package/dist/hooks/useNamespaces.js.map +1 -0
  106. package/dist/hooks/useNotification.d.ts +18 -0
  107. package/dist/hooks/useNotification.d.ts.map +1 -0
  108. package/dist/hooks/useNotification.js +74 -0
  109. package/dist/hooks/useNotification.js.map +1 -0
  110. package/dist/hooks/useQueryParamNamespaces.d.ts +2 -0
  111. package/dist/hooks/useQueryParamNamespaces.d.ts.map +1 -0
  112. package/dist/hooks/useQueryParamNamespaces.js +9 -0
  113. package/dist/hooks/useQueryParamNamespaces.js.map +1 -0
  114. package/dist/hooks/useSettings.d.ts +9 -0
  115. package/dist/hooks/useSettings.d.ts.map +1 -0
  116. package/dist/hooks/useSettings.js +72 -0
  117. package/dist/hooks/useSettings.js.map +1 -0
  118. package/dist/hooks/useTimeBasedRefresh.d.ts +4 -0
  119. package/dist/hooks/useTimeBasedRefresh.d.ts.map +1 -0
  120. package/dist/hooks/useTimeBasedRefresh.js +32 -0
  121. package/dist/hooks/useTimeBasedRefresh.js.map +1 -0
  122. package/dist/index.d.ts +6 -0
  123. package/dist/index.d.ts.map +1 -0
  124. package/dist/index.js +11 -0
  125. package/dist/index.js.map +1 -0
  126. package/dist/jest.config.d.ts +21 -0
  127. package/dist/jest.config.d.ts.map +1 -0
  128. package/dist/jest.config.js +41 -0
  129. package/dist/jest.config.js.map +1 -0
  130. package/dist/types/common.d.ts +68 -0
  131. package/dist/types/common.d.ts.map +1 -0
  132. package/dist/types/common.js +14 -0
  133. package/dist/types/common.js.map +1 -0
  134. package/dist/types/index.d.ts +3 -0
  135. package/dist/types/index.d.ts.map +1 -0
  136. package/dist/types/index.js +5 -0
  137. package/dist/types/index.js.map +1 -0
  138. package/dist/types/typeHelpers.d.ts +147 -0
  139. package/dist/types/typeHelpers.d.ts.map +1 -0
  140. package/dist/types/typeHelpers.js +2 -0
  141. package/dist/types/typeHelpers.js.map +1 -0
  142. package/dist/utilities/appUtils.d.ts +2 -0
  143. package/dist/utilities/appUtils.d.ts.map +1 -0
  144. package/dist/utilities/appUtils.js +4 -0
  145. package/dist/utilities/appUtils.js.map +1 -0
  146. package/dist/utilities/const.d.ts +8 -0
  147. package/dist/utilities/const.d.ts.map +1 -0
  148. package/dist/utilities/const.js +9 -0
  149. package/dist/utilities/const.js.map +1 -0
  150. package/dist/utilities/index.d.ts +9 -0
  151. package/dist/utilities/index.d.ts.map +1 -0
  152. package/dist/utilities/index.js +10 -0
  153. package/dist/utilities/index.js.map +1 -0
  154. package/dist/utilities/useDeepCompareMemoize.d.ts +2 -0
  155. package/dist/utilities/useDeepCompareMemoize.d.ts.map +1 -0
  156. package/dist/utilities/useDeepCompareMemoize.js +10 -0
  157. package/dist/utilities/useDeepCompareMemoize.js.map +1 -0
  158. package/dist/utilities/useEventListener.d.ts +2 -0
  159. package/dist/utilities/useEventListener.d.ts.map +1 -0
  160. package/dist/utilities/useEventListener.js +10 -0
  161. package/dist/utilities/useEventListener.js.map +1 -0
  162. package/dist/utilities/useFetchState.d.ts +92 -0
  163. package/dist/utilities/useFetchState.d.ts.map +1 -0
  164. package/dist/utilities/useFetchState.js +153 -0
  165. package/dist/utilities/useFetchState.js.map +1 -0
  166. package/dist/utilities/useGenericObjectState.d.ts +9 -0
  167. package/dist/utilities/useGenericObjectState.d.ts.map +1 -0
  168. package/dist/utilities/useGenericObjectState.js +14 -0
  169. package/dist/utilities/useGenericObjectState.js.map +1 -0
  170. package/dist/utilities/useMakeFetchObject.d.ts +4 -0
  171. package/dist/utilities/useMakeFetchObject.d.ts.map +1 -0
  172. package/dist/utilities/useMakeFetchObject.js +6 -0
  173. package/dist/utilities/useMakeFetchObject.js.map +1 -0
  174. package/dist/utilities/utils.d.ts +26 -0
  175. package/dist/utilities/utils.d.ts.map +1 -0
  176. package/dist/utilities/utils.js +104 -0
  177. package/dist/utilities/utils.js.map +1 -0
  178. package/package.json +92 -0
@@ -0,0 +1,16 @@
1
+ import { APIOptions } from '../api/types';
2
+ import { ModArchBody } from '../types';
3
+ export declare const mergeRequestInit: (opts?: APIOptions, specificOpts?: RequestInit) => RequestInit;
4
+ export declare const restGET: <T>(host: string, path: string, queryParams?: Record<string, unknown>, options?: APIOptions) => Promise<T>;
5
+ /** Standard POST */
6
+ export declare const restCREATE: <T>(host: string, path: string, data: Record<string, unknown>, queryParams?: Record<string, unknown>, options?: APIOptions) => Promise<T>;
7
+ /** POST -- but with file content instead of body data */
8
+ export declare const restFILE: <T>(host: string, path: string, fileContents: string, queryParams?: Record<string, unknown>, options?: APIOptions) => Promise<T>;
9
+ /** POST -- but no body data -- targets simple endpoints */
10
+ export declare const restENDPOINT: <T>(host: string, path: string, queryParams?: Record<string, unknown>, options?: APIOptions) => Promise<T>;
11
+ export declare const restUPDATE: <T>(host: string, path: string, data: Record<string, unknown>, queryParams?: Record<string, unknown>, options?: APIOptions) => Promise<T>;
12
+ export declare const restPATCH: <T>(host: string, path: string, data: Record<string, unknown>, queryParams?: Record<string, unknown>, options?: APIOptions) => Promise<T>;
13
+ export declare const restDELETE: <T>(host: string, path: string, data: Record<string, unknown>, queryParams?: Record<string, unknown>, options?: APIOptions) => Promise<T>;
14
+ export declare const isModArchResponse: <T>(response: unknown) => response is ModArchBody<T>;
15
+ export declare const assembleModArchBody: <T>(data: T) => ModArchBody<T>;
16
+ //# sourceMappingURL=apiUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiUtils.d.ts","sourceRoot":"","sources":["../../api/apiUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,eAAO,MAAM,gBAAgB,GAC3B,OAAM,UAAe,EACrB,eAAc,WAAgB,KAC7B,WAOD,CAAC;AAsEH,eAAO,MAAM,OAAO,GAAI,CAAC,EACvB,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,cAAa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACzC,UAAU,UAAU,KACnB,OAAO,CAAC,CAAC,CAIR,CAAC;AAEL,oBAAoB;AACpB,eAAO,MAAM,UAAU,GAAI,CAAC,EAC1B,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,cAAa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACzC,UAAU,UAAU,KACnB,OAAO,CAAC,CAAC,CAKR,CAAC;AAEL,yDAAyD;AACzD,eAAO,MAAM,QAAQ,GAAI,CAAC,EACxB,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,cAAc,MAAM,EACpB,cAAa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACzC,UAAU,UAAU,KACnB,OAAO,CAAC,CAAC,CAKR,CAAC;AAEL,2DAA2D;AAC3D,eAAO,MAAM,YAAY,GAAI,CAAC,EAC5B,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,cAAa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACzC,UAAU,UAAU,KACnB,OAAO,CAAC,CAAC,CAIR,CAAC;AAEL,eAAO,MAAM,UAAU,GAAI,CAAC,EAC1B,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,cAAa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACzC,UAAU,UAAU,KACnB,OAAO,CAAC,CAAC,CAKR,CAAC;AAEL,eAAO,MAAM,SAAS,GAAI,CAAC,EACzB,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,cAAa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACzC,UAAU,UAAU,KACnB,OAAO,CAAC,CAAC,CAKR,CAAC;AAEL,eAAO,MAAM,UAAU,GAAI,CAAC,EAC1B,MAAM,MAAM,EACZ,MAAM,MAAM,EACZ,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,cAAa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACzC,UAAU,UAAU,KACnB,OAAO,CAAC,CAAC,CAKR,CAAC;AAEL,eAAO,MAAM,iBAAiB,GAAI,CAAC,EAAE,UAAU,OAAO,KAAG,QAAQ,IAAI,WAAW,CAAC,CAAC,CAOjF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,MAAM,CAAC,KAAG,WAAW,CAAC,CAAC,CAE5D,CAAC"}
@@ -0,0 +1,96 @@
1
+ export const mergeRequestInit = (opts = {}, specificOpts = {}) => ({
2
+ ...specificOpts,
3
+ ...(opts.signal && { signal: opts.signal }),
4
+ headers: {
5
+ ...(opts.headers ?? {}),
6
+ ...(specificOpts.headers ?? {}),
7
+ },
8
+ });
9
+ const callRestJSON = (host, path, requestInit, { data, fileContents, queryParams, parseJSON = true }) => {
10
+ const { method, ...otherOptions } = requestInit;
11
+ const sanitizedQueryParams = queryParams
12
+ ? Object.entries(queryParams).reduce((acc, [key, value]) => {
13
+ if (value) {
14
+ return { ...acc, [key]: value };
15
+ }
16
+ return acc;
17
+ }, {})
18
+ : null;
19
+ const searchParams = sanitizedQueryParams
20
+ ? new URLSearchParams(sanitizedQueryParams).toString()
21
+ : null;
22
+ let requestData;
23
+ let contentType;
24
+ let formData;
25
+ if (fileContents) {
26
+ formData = new FormData();
27
+ formData.append('uploadfile', new Blob([fileContents], { type: 'application/x-yaml' }), 'uploadedFile.yml');
28
+ }
29
+ else if (data) {
30
+ // It's OK for contentType and requestData to BOTH be undefined for e.g. a GET request or POST with no body.
31
+ contentType = 'application/json;charset=UTF-8';
32
+ requestData = JSON.stringify(data);
33
+ }
34
+ return fetch(`${host}${path}${searchParams ? `?${searchParams}` : ''}`, {
35
+ ...otherOptions,
36
+ headers: {
37
+ ...otherOptions.headers,
38
+ ...(contentType && { 'Content-Type': contentType }),
39
+ },
40
+ method,
41
+ body: formData ?? requestData,
42
+ }).then((response) => response.text().then((fetchedData) => {
43
+ if (parseJSON) {
44
+ return JSON.parse(fetchedData);
45
+ }
46
+ return fetchedData;
47
+ }));
48
+ };
49
+ export const restGET = (host, path, queryParams = {}, options) => callRestJSON(host, path, mergeRequestInit(options, { method: 'GET' }), {
50
+ queryParams,
51
+ parseJSON: options?.parseJSON,
52
+ });
53
+ /** Standard POST */
54
+ export const restCREATE = (host, path, data, queryParams = {}, options) => callRestJSON(host, path, mergeRequestInit(options, { method: 'POST' }), {
55
+ data,
56
+ queryParams,
57
+ parseJSON: options?.parseJSON,
58
+ });
59
+ /** POST -- but with file content instead of body data */
60
+ export const restFILE = (host, path, fileContents, queryParams = {}, options) => callRestJSON(host, path, mergeRequestInit(options, { method: 'POST' }), {
61
+ fileContents,
62
+ queryParams,
63
+ parseJSON: options?.parseJSON,
64
+ });
65
+ /** POST -- but no body data -- targets simple endpoints */
66
+ export const restENDPOINT = (host, path, queryParams = {}, options) => callRestJSON(host, path, mergeRequestInit(options, { method: 'POST' }), {
67
+ queryParams,
68
+ parseJSON: options?.parseJSON,
69
+ });
70
+ export const restUPDATE = (host, path, data, queryParams = {}, options) => callRestJSON(host, path, mergeRequestInit(options, { method: 'PUT' }), {
71
+ data,
72
+ queryParams,
73
+ parseJSON: options?.parseJSON,
74
+ });
75
+ export const restPATCH = (host, path, data, queryParams = {}, options) => callRestJSON(host, path, mergeRequestInit(options, { method: 'PATCH' }), {
76
+ data,
77
+ queryParams,
78
+ parseJSON: options?.parseJSON,
79
+ });
80
+ export const restDELETE = (host, path, data, queryParams = {}, options) => callRestJSON(host, path, mergeRequestInit(options, { method: 'DELETE' }), {
81
+ data,
82
+ queryParams,
83
+ parseJSON: options?.parseJSON,
84
+ });
85
+ export const isModArchResponse = (response) => {
86
+ if (typeof response === 'object' && response !== null) {
87
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
88
+ const modArchBody = response;
89
+ return modArchBody.data !== undefined;
90
+ }
91
+ return false;
92
+ };
93
+ export const assembleModArchBody = (data) => ({
94
+ data,
95
+ });
96
+ //# sourceMappingURL=apiUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiUtils.js","sourceRoot":"","sources":["../../api/apiUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ModArchBody } from '../types';
2
+ export declare const mockModArchResponse: <T>(data: T) => ModArchBody<T>;
3
+ //# sourceMappingURL=const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../api/const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,MAAM,CAAC,KAAG,WAAW,CAAC,CAAC,CAE5D,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const mockModArchResponse = (data) => ({
2
+ data,
3
+ });
4
+ //# sourceMappingURL=const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../api/const.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAI,IAAO,EAAkB,EAAE,CAAC,CAAC;IAClE,IAAI;CACL,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const handleRestFailures: <T>(promise: Promise<T>) => Promise<T>;
2
+ //# sourceMappingURL=errorUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorUtils.d.ts","sourceRoot":"","sources":["../../api/errorUtils.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,SAAS,OAAO,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAmB/D,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { isCommonStateError } from '../utilities/useFetchState';
2
+ const isError = (e) => typeof e === 'object' && e !== null && 'error' in e;
3
+ export const handleRestFailures = (promise) => promise
4
+ .then((result) => {
5
+ if (isError(result)) {
6
+ throw result;
7
+ }
8
+ return result;
9
+ })
10
+ .catch((e) => {
11
+ if (isError(e)) {
12
+ throw new Error(e.error.message);
13
+ }
14
+ if (isCommonStateError(e)) {
15
+ // Common state errors are handled by useFetchState at storage level, let them deal with it
16
+ throw e;
17
+ }
18
+ // eslint-disable-next-line no-console
19
+ console.error('Unknown API error', e);
20
+ throw new Error('Error communicating with server');
21
+ });
22
+ //# sourceMappingURL=errorUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorUtils.js","sourceRoot":"","sources":["../../api/errorUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,MAAM,OAAO,GAAG,CAAC,CAAU,EAAiB,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,CAAC;AAEnG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAI,OAAmB,EAAc,EAAE,CACvE,OAAO;KACJ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;IACf,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACpB,MAAM,MAAM,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACX,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1B,2FAA2F;QAC3F,MAAM,CAAC,CAAC;IACV,CAAC;IACD,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACtC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './apiUtils';
2
+ export * from './errorUtils';
3
+ export * from './types';
4
+ export * from './useAPIState';
5
+ export * from './k8s';
6
+ export * from './const';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../api/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ // Export all API utilities
2
+ export * from './apiUtils';
3
+ export * from './errorUtils';
4
+ export * from './types';
5
+ export * from './useAPIState';
6
+ export * from './k8s';
7
+ export * from './const';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../api/index.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { APIOptions } from '../api/types';
2
+ import { Namespace, UserSettings } from '../types';
3
+ type K8sApiConfig = {
4
+ BFF_API_VERSION: string;
5
+ URL_PREFIX: string;
6
+ };
7
+ export declare const getUser: (hostPath: string, config: K8sApiConfig) => (opts: APIOptions) => Promise<UserSettings>;
8
+ export declare const getNamespaces: (hostPath: string, config: K8sApiConfig) => (opts: APIOptions) => Promise<Namespace[]>;
9
+ export {};
10
+ //# sourceMappingURL=k8s.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"k8s.d.ts","sourceRoot":"","sources":["../../api/k8s.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGlD,KAAK,YAAY,GAAG;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAGF,eAAO,MAAM,OAAO,GACjB,UAAU,MAAM,EAAE,QAAQ,YAAY,MACtC,MAAM,UAAU,KAAG,OAAO,CAAC,YAAY,CAQpC,CAAC;AAEP,eAAO,MAAM,aAAa,GACvB,UAAU,MAAM,EAAE,QAAQ,YAAY,MACtC,MAAM,UAAU,KAAG,OAAO,CAAC,SAAS,EAAE,CAQnC,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { handleRestFailures } from '../api/errorUtils';
2
+ import { isModArchResponse, restGET } from '../api/apiUtils';
3
+ // Functions now accept config object
4
+ export const getUser = (hostPath, config) => (opts) => handleRestFailures(restGET(hostPath, `${config.URL_PREFIX}/api/${config.BFF_API_VERSION}/user`, {}, opts)).then((response) => {
5
+ if (isModArchResponse(response)) {
6
+ return response.data;
7
+ }
8
+ throw new Error('Invalid response format');
9
+ });
10
+ export const getNamespaces = (hostPath, config) => (opts) => handleRestFailures(restGET(hostPath, `${config.URL_PREFIX}/api/${config.BFF_API_VERSION}/namespaces`, {}, opts)).then((response) => {
11
+ if (isModArchResponse(response)) {
12
+ return response.data;
13
+ }
14
+ throw new Error('Invalid response format');
15
+ });
16
+ //# sourceMappingURL=k8s.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"k8s.js","sourceRoot":"","sources":["../../api/k8s.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAS5D,qCAAqC;AACrC,MAAM,CAAC,MAAM,OAAO,GAClB,CAAC,QAAgB,EAAE,MAAoB,EAAE,EAAE,CAC3C,CAAC,IAAgB,EAAyB,EAAE,CAC1C,kBAAkB,CAChB,OAAO,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,UAAU,QAAQ,MAAM,CAAC,eAAe,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CACvF,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;IAClB,IAAI,iBAAiB,CAAe,QAAQ,CAAC,EAAE,CAAC;QAC9C,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEP,MAAM,CAAC,MAAM,aAAa,GACxB,CAAC,QAAgB,EAAE,MAAoB,EAAE,EAAE,CAC3C,CAAC,IAAgB,EAAwB,EAAE,CACzC,kBAAkB,CAChB,OAAO,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,UAAU,QAAQ,MAAM,CAAC,eAAe,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,CAC7F,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;IAClB,IAAI,iBAAiB,CAAc,QAAQ,CAAC,EAAE,CAAC;QAC7C,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ export type APIOptions = {
2
+ dryRun?: boolean;
3
+ signal?: AbortSignal;
4
+ parseJSON?: boolean;
5
+ headers?: Record<string, string>;
6
+ };
7
+ export type APIError = {
8
+ error: {
9
+ code: string;
10
+ message: string;
11
+ };
12
+ };
13
+ export type APIState<T> = {
14
+ /** If API will successfully call */
15
+ apiAvailable: boolean;
16
+ /** The available API functions */
17
+ api: T;
18
+ };
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../api/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IACxB,oCAAoC;IACpC,YAAY,EAAE,OAAO,CAAC;IACtB,kCAAkC;IAClC,GAAG,EAAE,CAAC,CAAC;CACR,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../api/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import { APIState } from '../api/types';
2
+ export declare const useAPIState: <T>(hostPath: string | null, createAPI: (path: string) => T) => [apiState: APIState<T>, refreshAPIState: () => void];
3
+ //# sourceMappingURL=useAPIState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAPIState.d.ts","sourceRoot":"","sources":["../../api/useAPIState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,eAAO,MAAM,WAAW,GAAI,CAAC,EAC3B,UAAU,MAAM,GAAG,IAAI,EACvB,WAAW,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,KAC7B,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,IAAI,CAuBrD,CAAC"}
@@ -0,0 +1,22 @@
1
+ import * as React from 'react';
2
+ export const useAPIState = (hostPath, createAPI) => {
3
+ const [internalAPIToggleState, setInternalAPIToggleState] = React.useState(false);
4
+ const refreshAPIState = React.useCallback(() => {
5
+ setInternalAPIToggleState((v) => !v);
6
+ }, []);
7
+ const apiState = React.useMemo(() => {
8
+ let path = hostPath;
9
+ if (!path) {
10
+ // TODO: we need to figure out maybe a stopgap or something
11
+ path = '';
12
+ }
13
+ const api = createAPI(path);
14
+ return {
15
+ apiAvailable: !!path,
16
+ api,
17
+ };
18
+ // eslint-disable-next-line react-hooks/exhaustive-deps
19
+ }, [createAPI, hostPath, internalAPIToggleState]);
20
+ return [apiState, refreshAPIState];
21
+ };
22
+ //# sourceMappingURL=useAPIState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAPIState.js","sourceRoot":"","sources":["../../api/useAPIState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,QAAuB,EACvB,SAA8B,EACwB,EAAE;IACxD,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElF,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC7C,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAc,GAAG,EAAE;QAC/C,IAAI,IAAI,GAAG,QAAQ,CAAC;QACpB,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,2DAA2D;YAC3D,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAE5B,OAAO;YACL,YAAY,EAAE,CAAC,CAAC,IAAI;YACpB,GAAG;SACJ,CAAC;QACF,uDAAuD;IACzD,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAElD,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AACrC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _exports: string;
2
+ export = _exports;
3
+ //# sourceMappingURL=transform.file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.file.d.ts","sourceRoot":"","sources":["../../config/transform.file.js"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // Transform file imports (images, fonts, etc.) to filename strings in Jest tests
3
+ module.exports = 'test-file-stub';
4
+ //# sourceMappingURL=transform.file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.file.js","sourceRoot":"","sources":["../../config/transform.file.js"],"names":[],"mappings":";AAAA,iFAAiF;AACjF,MAAM,CAAC,OAAO,GAAG,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transform.style.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.style.d.ts","sourceRoot":"","sources":["../../config/transform.style.js"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,25 @@
1
+ import * as React from 'react';
2
+ export type BrowserStorageContextType = {
3
+ /** Based on parseJSON it can be any jsonify-able item */
4
+ getValue: (storageKey: string, parseJSON: boolean, isSessionStorage?: boolean) => unknown;
5
+ /** Returns a boolean if it was able to json-ify it. */
6
+ setJSONValue: (storageKey: string, value: unknown, isSessionStorage?: boolean) => boolean;
7
+ setStringValue: (storageKey: string, value: string, isSessionStorage?: boolean) => void;
8
+ };
9
+ /**
10
+ * @returns {boolean} if it was successful, false if it was not
11
+ */
12
+ export type SetBrowserStorageHook<T> = (value: T) => boolean;
13
+ /**
14
+ * useBrowserStorage will handle all the effort behind managing localStorage or sessionStorage.
15
+ */
16
+ export declare const useBrowserStorage: <T>(storageKey: string, defaultValue: T, jsonify?: boolean, isSessionStorage?: boolean) => [T, SetBrowserStorageHook<T>];
17
+ type BrowserStorageContextProviderProps = {
18
+ children: React.ReactNode;
19
+ };
20
+ /**
21
+ * @see useBrowserStorage
22
+ */
23
+ export declare const BrowserStorageContextProvider: React.FC<BrowserStorageContextProviderProps>;
24
+ export {};
25
+ //# sourceMappingURL=BrowserStorageContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserStorageContext.d.ts","sourceRoot":"","sources":["../../context/BrowserStorageContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,MAAM,yBAAyB,GAAG;IACtC,yDAAyD;IACzD,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IAC1F,uDAAuD;IACvD,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC;IAC1F,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CACzF,CAAC;AAQF;;GAEG;AACH,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC;AAE7D;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,EACjC,YAAY,MAAM,EAClB,cAAc,CAAC,EACf,iBAAc,EACd,0BAAwB,KACvB,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAwB9B,CAAC;AAEF,KAAK,kCAAkC,GAAG;IACxC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAUF;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAAC,kCAAkC,CA+EtF,CAAC"}
@@ -0,0 +1,97 @@
1
+ import * as React from 'react';
2
+ import { useDeepCompareMemoize } from '../utilities/useDeepCompareMemoize';
3
+ import { useEventListener } from '../utilities/useEventListener';
4
+ const BrowserStorageContext = React.createContext({
5
+ getValue: () => null,
6
+ setJSONValue: () => false,
7
+ setStringValue: () => undefined,
8
+ });
9
+ /**
10
+ * useBrowserStorage will handle all the effort behind managing localStorage or sessionStorage.
11
+ */
12
+ export const useBrowserStorage = (storageKey, defaultValue, jsonify = true, isSessionStorage = false) => {
13
+ const { getValue, setJSONValue, setStringValue } = React.useContext(BrowserStorageContext);
14
+ const setValue = React.useCallback((value) => {
15
+ if (jsonify) {
16
+ return setJSONValue(storageKey, value, isSessionStorage);
17
+ }
18
+ if (typeof value === 'string') {
19
+ setStringValue(storageKey, value, isSessionStorage);
20
+ return true;
21
+ }
22
+ /* eslint-disable-next-line no-console */
23
+ console.error('Was not a string value provided, cannot stringify');
24
+ return false;
25
+ }, [isSessionStorage, jsonify, setJSONValue, setStringValue, storageKey]);
26
+ const value = useDeepCompareMemoize(
27
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
28
+ getValue(storageKey, jsonify, isSessionStorage) ?? defaultValue);
29
+ return [value, setValue];
30
+ };
31
+ const getStorage = (isSessionStorage) => {
32
+ if (isSessionStorage) {
33
+ return sessionStorage;
34
+ }
35
+ return localStorage;
36
+ };
37
+ /**
38
+ * @see useBrowserStorage
39
+ */
40
+ export const BrowserStorageContextProvider = ({ children, }) => {
41
+ const [values, setValues] = React.useState({});
42
+ /**
43
+ * Only listen to other storage changes (windows/tabs) -- which are localStorage.
44
+ * Session storage does not have cross instance storages.
45
+ * See MDN for more: https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage
46
+ */
47
+ useEventListener(window, 'storage', () => {
48
+ // Another browser tab has updated storage, sync up the data
49
+ const keys = Object.keys(values);
50
+ setValues(keys.reduce((acc, key) => {
51
+ const value = localStorage.getItem(key);
52
+ return { ...acc, [key]: value };
53
+ }, {}));
54
+ });
55
+ const getValue = React.useCallback((key, parseJSON, isSessionStorage = false) => {
56
+ const value = getStorage(isSessionStorage).getItem(key);
57
+ if (value === null) {
58
+ return value;
59
+ }
60
+ if (parseJSON) {
61
+ try {
62
+ return JSON.parse(value);
63
+ }
64
+ catch {
65
+ /* eslint-disable-next-line no-console */
66
+ console.warn(`Failed to parse storage value "${key}"`);
67
+ return null;
68
+ }
69
+ }
70
+ else {
71
+ return value;
72
+ }
73
+ }, []);
74
+ const setJSONValue = React.useCallback((storageKey, value, isSessionStorage = false) => {
75
+ try {
76
+ const storageValue = JSON.stringify(value);
77
+ getStorage(isSessionStorage).setItem(storageKey, storageValue);
78
+ setValues((oldValues) => ({ ...oldValues, [storageKey]: storageValue }));
79
+ return true;
80
+ }
81
+ catch {
82
+ /* eslint-disable-next-line no-console */
83
+ console.warn('Could not store a value because it was requested to be stringified but was an invalid value for stringification.');
84
+ return false;
85
+ }
86
+ }, []);
87
+ const setStringValue = React.useCallback((storageKey, value, isSessionStorage = false) => {
88
+ getStorage(isSessionStorage).setItem(storageKey, value);
89
+ setValues((oldValues) => ({ ...oldValues, [storageKey]: value }));
90
+ }, []);
91
+ const contextValue = React.useMemo(() => ({ getValue, setJSONValue, setStringValue }),
92
+ // Also trigger a context update if `values` changes.
93
+ // eslint-disable-next-line react-hooks/exhaustive-deps
94
+ [getValue, setJSONValue, setStringValue, values]);
95
+ return (React.createElement(BrowserStorageContext.Provider, { value: contextValue }, children));
96
+ };
97
+ //# sourceMappingURL=BrowserStorageContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserStorageContext.js","sourceRoot":"","sources":["../../context/BrowserStorageContext.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { ModularArchConfig, Namespace } from '../types';
3
+ export type ModularArchContextType = {
4
+ config: ModularArchConfig;
5
+ namespacesLoaded: boolean;
6
+ namespacesLoadError?: Error;
7
+ namespaces: Namespace[];
8
+ preferredNamespace: Namespace | undefined;
9
+ updatePreferredNamespace: (namespace: Namespace | undefined) => void;
10
+ initializationError?: Error;
11
+ scriptLoaded: boolean;
12
+ };
13
+ type ModularArchContextProviderProps = {
14
+ children: React.ReactNode;
15
+ config: ModularArchConfig;
16
+ };
17
+ export declare const ModularArchContext: React.Context<ModularArchContextType | undefined>;
18
+ export declare const ModularArchContextProvider: React.FC<ModularArchContextProviderProps>;
19
+ export {};
20
+ //# sourceMappingURL=ModularArchContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModularArchContext.d.ts","sourceRoot":"","sources":["../../context/ModularArchContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6C,MAAM,OAAO,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIvD,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,iBAAiB,CAAC;IAE1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,mBAAmB,CAAC,EAAE,KAAK,CAAC;IAC5B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,kBAAkB,EAAE,SAAS,GAAG,SAAS,CAAC;IAC1C,wBAAwB,EAAE,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IACrE,mBAAmB,CAAC,EAAE,KAAK,CAAC;IAE5B,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,KAAK,+BAA+B,GAAG;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,mDAA+D,CAAC;AAE/F,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CA+FhF,CAAC"}
@@ -0,0 +1,67 @@
1
+ import React, { createContext, useEffect, useState } from 'react';
2
+ import { kubeflowScriptLoader, kubeflowNamespaceLoader } from '../utilities';
3
+ import { useNamespacesWithConfig } from '../hooks/useNamespaces';
4
+ export const ModularArchContext = createContext(undefined);
5
+ export const ModularArchContextProvider = ({ children, config, }) => {
6
+ const { deploymentMode, mandatoryNamespace } = config;
7
+ const [scriptLoaded, setScriptLoaded] = useState(false);
8
+ const [preferredNamespace, setPreferredNamespace] = useState(undefined);
9
+ const [initializationError, setInitializationError] = useState();
10
+ // Namespace-related state
11
+ const [unsortedNamespaces, isLoaded, error] = useNamespacesWithConfig(config);
12
+ const namespaces = React.useMemo(() => unsortedNamespaces.toSorted((a, b) => a.name.localeCompare(b.name)), [unsortedNamespaces]);
13
+ const firstNamespace = namespaces.length > 0 ? namespaces[0] : null;
14
+ // Set preferred namespace based on mandatory namespace or first available namespace
15
+ const defaultPreferredNamespace = React.useMemo(() => {
16
+ if (mandatoryNamespace) {
17
+ return { name: mandatoryNamespace };
18
+ }
19
+ return firstNamespace;
20
+ }, [mandatoryNamespace, firstNamespace]);
21
+ // Script loader for kubeflow integration
22
+ useEffect(() => {
23
+ kubeflowScriptLoader(deploymentMode, () => setScriptLoaded(true), (scriptError) => {
24
+ // eslint-disable-next-line no-console
25
+ console.error('Error loading kubeflow script:', scriptError);
26
+ setScriptLoaded(true); // Still set to true to not block the UI
27
+ });
28
+ }, [deploymentMode]);
29
+ // Namespace selector for kubeflow integration
30
+ useEffect(() => {
31
+ // If mandatory namespace is set, don't use kubeflow namespace loader
32
+ if (mandatoryNamespace) {
33
+ return;
34
+ }
35
+ kubeflowNamespaceLoader(deploymentMode, scriptLoaded, (newNamespace) => {
36
+ setPreferredNamespace({ name: newNamespace });
37
+ }, (err) => {
38
+ setInitializationError(err);
39
+ }, mandatoryNamespace);
40
+ }, [deploymentMode, scriptLoaded, mandatoryNamespace]);
41
+ const contextValue = React.useMemo(() => ({
42
+ config,
43
+ namespacesLoaded: isLoaded,
44
+ namespacesLoadError: error,
45
+ namespaces,
46
+ preferredNamespace: preferredNamespace ?? defaultPreferredNamespace ?? undefined,
47
+ updatePreferredNamespace: setPreferredNamespace,
48
+ initializationError,
49
+ scriptLoaded,
50
+ }), [
51
+ config,
52
+ isLoaded,
53
+ error,
54
+ namespaces,
55
+ preferredNamespace,
56
+ defaultPreferredNamespace,
57
+ initializationError,
58
+ scriptLoaded,
59
+ ]);
60
+ // Show loading spinner if script is not loaded yet
61
+ if (!scriptLoaded) {
62
+ return (React.createElement("div", { style: { display: 'flex', justifyContent: 'center', alignItems: 'center', height: '100vh' } },
63
+ React.createElement("div", null, "Loading...")));
64
+ }
65
+ return React.createElement(ModularArchContext.Provider, { value: contextValue }, children);
66
+ };
67
+ //# sourceMappingURL=ModularArchContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModularArchContext.js","sourceRoot":"","sources":["../../context/ModularArchContext.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { Notification, NotificationAction } from '../types';
3
+ type NotificationContextProps = {
4
+ notifications: Notification[];
5
+ notificationCount: number;
6
+ updateNotificationCount: React.Dispatch<React.SetStateAction<number>>;
7
+ dispatch: React.Dispatch<NotificationAction>;
8
+ };
9
+ export declare const NotificationContext: React.Context<NotificationContextProps>;
10
+ type NotificationContextProviderProps = {
11
+ children: React.ReactNode;
12
+ };
13
+ export declare const NotificationContextProvider: React.FC<NotificationContextProviderProps>;
14
+ export {};
15
+ //# sourceMappingURL=NotificationContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotificationContext.d.ts","sourceRoot":"","sources":["../../context/NotificationContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,YAAY,EAA2B,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEpF,KAAK,wBAAwB,GAAG;IAC9B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;CAC9C,CAAC;AAEF,eAAO,MAAM,mBAAmB,yCAO9B,CAAC;AA4BH,KAAK,gCAAgC,GAAG;IACtC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAqBlF,CAAC"}