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 @@
1
+ {"version":3,"file":"useNamespaceSelector.d.ts","sourceRoot":"","sources":["../../hooks/useNamespaceSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGpC,eAAO,MAAM,oBAAoB,QAAO;IACtC,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;CAY7B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { useModularArchContext } from './useModularArchContext';
2
+ export const useNamespaceSelector = () => {
3
+ const context = useModularArchContext();
4
+ return {
5
+ namespacesLoaded: context.namespacesLoaded,
6
+ namespacesLoadError: context.namespacesLoadError,
7
+ namespaces: context.namespaces,
8
+ preferredNamespace: context.preferredNamespace,
9
+ updatePreferredNamespace: context.updatePreferredNamespace,
10
+ initializationError: context.initializationError,
11
+ };
12
+ };
13
+ //# sourceMappingURL=useNamespaceSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNamespaceSelector.js","sourceRoot":"","sources":["../../hooks/useNamespaceSelector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAOlC,EAAE;IACF,MAAM,OAAO,GAAG,qBAAqB,EAAE,CAAC;IAExC,OAAO;QACL,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;QAC9C,wBAAwB,EAAE,OAAO,CAAC,wBAAwB;QAC1D,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;KACjD,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { FetchState } from '../utilities/useFetchState';
2
+ import { Namespace, ModularArchConfig } from '../types';
3
+ export declare const useNamespacesWithConfig: (config: ModularArchConfig) => FetchState<Namespace[]>;
4
+ declare const useNamespaces: () => FetchState<Namespace[]>;
5
+ export default useNamespaces;
6
+ //# sourceMappingURL=useNamespaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNamespaces.d.ts","sourceRoot":"","sources":["../../hooks/useNamespaces.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,UAAU,EAA6B,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAMvD,eAAO,MAAM,uBAAuB,GAAI,QAAQ,iBAAiB,KAAG,UAAU,CAAC,SAAS,EAAE,CA2BzF,CAAC;AAGF,QAAA,MAAM,aAAa,QAAO,UAAU,CAAC,SAAS,EAAE,CAG/C,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,34 @@
1
+ import * as React from 'react';
2
+ import { useFetchState } from '../utilities/useFetchState';
3
+ import { getNamespaces } from '../api/k8s';
4
+ import { DeploymentMode } from '../utilities';
5
+ import { useModularArchContext } from './useModularArchContext';
6
+ // Create a version that accepts config directly (for use in context provider)
7
+ export const useNamespacesWithConfig = (config) => {
8
+ const { BFF_API_VERSION, URL_PREFIX, deploymentMode, mandatoryNamespace } = config;
9
+ const modArchConfig = React.useMemo(() => ({
10
+ BFF_API_VERSION,
11
+ URL_PREFIX,
12
+ }), [BFF_API_VERSION, URL_PREFIX]);
13
+ const listNamespaces = React.useMemo(() => getNamespaces('', modArchConfig), [modArchConfig]);
14
+ const callback = React.useCallback((opts) => {
15
+ // If mandatory namespace is set, return only that namespace
16
+ if (mandatoryNamespace) {
17
+ return Promise.resolve([{ name: mandatoryNamespace }]);
18
+ }
19
+ if (deploymentMode === DeploymentMode.Kubeflow) {
20
+ return Promise.resolve([]);
21
+ }
22
+ return listNamespaces({
23
+ ...opts,
24
+ });
25
+ }, [deploymentMode, listNamespaces, mandatoryNamespace]);
26
+ return useFetchState(callback, [], { initialPromisePurity: true });
27
+ };
28
+ // Regular hook that uses context (for use in components)
29
+ const useNamespaces = () => {
30
+ const { config } = useModularArchContext();
31
+ return useNamespacesWithConfig(config);
32
+ };
33
+ export default useNamespaces;
34
+ //# sourceMappingURL=useNamespaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNamespaces.js","sourceRoot":"","sources":["../../hooks/useNamespaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAyC,MAAM,2BAA2B,CAAC;AAEjG,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,8EAA8E;AAC9E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAyB,EAA2B,EAAE;IAC5F,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAC;IACnF,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CACjC,GAAG,EAAE,CAAC,CAAC;QACL,eAAe;QACf,UAAU;KACX,CAAC,EACF,CAAC,eAAe,EAAE,UAAU,CAAC,CAC9B,CAAC;IACF,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9F,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAChC,CAAC,IAAI,EAAE,EAAE;QACP,4DAA4D;QAC5D,IAAI,kBAAkB,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,cAAc,KAAK,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC/C,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,cAAc,CAAC;YACpB,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC,EACD,CAAC,cAAc,EAAE,cAAc,EAAE,kBAAkB,CAAC,CACrD,CAAC;IACF,OAAO,aAAa,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF,yDAAyD;AACzD,MAAM,aAAa,GAAG,GAA4B,EAAE;IAClD,MAAM,EAAE,MAAM,EAAE,GAAG,qBAAqB,EAAE,CAAC;IAC3C,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ declare enum NotificationTypes {
3
+ SUCCESS = "success",
4
+ ERROR = "error",
5
+ INFO = "info",
6
+ WARNING = "warning"
7
+ }
8
+ type NotificationProps = (title: string, message?: React.ReactNode) => void;
9
+ type NotificationRemoveProps = (id: number | undefined) => void;
10
+ type NotificationTypeFunc = {
11
+ [key in NotificationTypes]: NotificationProps;
12
+ };
13
+ interface NotificationFunc extends NotificationTypeFunc {
14
+ remove: NotificationRemoveProps;
15
+ }
16
+ export declare const useNotification: () => NotificationFunc;
17
+ export {};
18
+ //# sourceMappingURL=useNotification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNotification.d.ts","sourceRoot":"","sources":["../../hooks/useNotification.ts"],"names":[],"mappings":"AAAA,OAAO,KAAqB,MAAM,OAAO,CAAC;AAI1C,aAAK,iBAAiB;IACpB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,KAAK,iBAAiB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC;AAE5E,KAAK,uBAAuB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;AAEhE,KAAK,oBAAoB,GAAG;KACzB,GAAG,IAAI,iBAAiB,GAAG,iBAAiB;CAC9C,CAAC;AAEF,UAAU,gBAAiB,SAAQ,oBAAoB;IACrD,MAAM,EAAE,uBAAuB,CAAC;CACjC;AAED,eAAO,MAAM,eAAe,QAAO,gBAuFlC,CAAC"}
@@ -0,0 +1,74 @@
1
+ import React, { useContext } from 'react';
2
+ import { AlertVariant, NotificationActionTypes } from '../types';
3
+ import { NotificationContext } from '../context/NotificationContext';
4
+ var NotificationTypes;
5
+ (function (NotificationTypes) {
6
+ NotificationTypes["SUCCESS"] = "success";
7
+ NotificationTypes["ERROR"] = "error";
8
+ NotificationTypes["INFO"] = "info";
9
+ NotificationTypes["WARNING"] = "warning";
10
+ })(NotificationTypes || (NotificationTypes = {}));
11
+ export const useNotification = () => {
12
+ const { notificationCount, updateNotificationCount, dispatch } = useContext(NotificationContext);
13
+ const success = React.useCallback((title, message) => {
14
+ updateNotificationCount(notificationCount + 1);
15
+ dispatch({
16
+ type: NotificationActionTypes.ADD_NOTIFICATION,
17
+ payload: {
18
+ status: AlertVariant.success,
19
+ title,
20
+ timestamp: new Date(),
21
+ message,
22
+ id: notificationCount,
23
+ },
24
+ });
25
+ }, [dispatch, notificationCount, updateNotificationCount]);
26
+ const warning = React.useCallback((title, message) => {
27
+ updateNotificationCount(notificationCount + 1);
28
+ dispatch({
29
+ type: NotificationActionTypes.ADD_NOTIFICATION,
30
+ payload: {
31
+ status: AlertVariant.warning,
32
+ title,
33
+ timestamp: new Date(),
34
+ message,
35
+ id: notificationCount,
36
+ },
37
+ });
38
+ }, [dispatch, notificationCount, updateNotificationCount]);
39
+ const error = React.useCallback((title, message) => {
40
+ updateNotificationCount(notificationCount + 1);
41
+ dispatch({
42
+ type: NotificationActionTypes.ADD_NOTIFICATION,
43
+ payload: {
44
+ status: AlertVariant.danger,
45
+ title,
46
+ timestamp: new Date(),
47
+ message,
48
+ id: notificationCount,
49
+ },
50
+ });
51
+ }, [dispatch, notificationCount, updateNotificationCount]);
52
+ const info = React.useCallback((title, message) => {
53
+ updateNotificationCount(notificationCount + 1);
54
+ dispatch({
55
+ type: NotificationActionTypes.ADD_NOTIFICATION,
56
+ payload: {
57
+ status: AlertVariant.info,
58
+ title,
59
+ timestamp: new Date(),
60
+ message,
61
+ id: notificationCount,
62
+ },
63
+ });
64
+ }, [dispatch, notificationCount, updateNotificationCount]);
65
+ const remove = React.useCallback((id) => {
66
+ dispatch({
67
+ type: NotificationActionTypes.DELETE_NOTIFICATION,
68
+ payload: { id },
69
+ });
70
+ }, [dispatch]);
71
+ const notification = React.useMemo(() => ({ success, error, info, warning, remove }), [success, error, info, warning, remove]);
72
+ return notification;
73
+ };
74
+ //# sourceMappingURL=useNotification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNotification.js","sourceRoot":"","sources":["../../hooks/useNotification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const useQueryParamNamespaces: () => Record<string, unknown>;
2
+ //# sourceMappingURL=useQueryParamNamespaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useQueryParamNamespaces.d.ts","sourceRoot":"","sources":["../../hooks/useQueryParamNamespaces.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB,QAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAMhE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { useDeepCompareMemoize } from '../utilities/useDeepCompareMemoize';
2
+ import { useNamespaceSelector } from './useNamespaceSelector';
3
+ export const useQueryParamNamespaces = () => {
4
+ const { preferredNamespace: namespaceSelector } = useNamespaceSelector();
5
+ // When mandatoryNamespace is set in config, preferredNamespace will be that mandatory namespace
6
+ const namespace = namespaceSelector?.name;
7
+ return useDeepCompareMemoize({ namespace });
8
+ };
9
+ //# sourceMappingURL=useQueryParamNamespaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useQueryParamNamespaces.js","sourceRoot":"","sources":["../../hooks/useQueryParamNamespaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAA4B,EAAE;IACnE,MAAM,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,GAAG,oBAAoB,EAAE,CAAC;IACzE,gGAAgG;IAChG,MAAM,SAAS,GAAG,iBAAiB,EAAE,IAAI,CAAC;IAE1C,OAAO,qBAAqB,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;AAC9C,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ConfigSettings, UserSettings } from '../types';
2
+ export declare const useSettings: () => {
3
+ configSettings: ConfigSettings | null;
4
+ userSettings: UserSettings | null;
5
+ loaded: boolean;
6
+ loadError: Error | undefined;
7
+ };
8
+ export declare const fetchConfig: () => Promise<ConfigSettings>;
9
+ //# sourceMappingURL=useSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSettings.d.ts","sourceRoot":"","sources":["../../hooks/useSettings.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAKvD,eAAO,MAAM,WAAW,QAAO;IAC7B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC;CAmE9B,CAAC;AAIF,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,cAAc,CAMzD,CAAC"}
@@ -0,0 +1,72 @@
1
+ import * as React from 'react';
2
+ import { POLL_INTERVAL } from '../utilities/const';
3
+ import { useDeepCompareMemoize } from '../utilities/useDeepCompareMemoize';
4
+ import useTimeBasedRefresh from '../hooks/useTimeBasedRefresh';
5
+ import { getNamespaces, getUser } from '../api/k8s';
6
+ import { useModularArchContext } from './useModularArchContext';
7
+ export const useSettings = () => {
8
+ const { config: modularArchConfig } = useModularArchContext();
9
+ const { BFF_API_VERSION, URL_PREFIX } = modularArchConfig;
10
+ const modArchConfig = React.useMemo(() => ({
11
+ BFF_API_VERSION,
12
+ URL_PREFIX,
13
+ }), [BFF_API_VERSION, URL_PREFIX]);
14
+ const [loaded, setLoaded] = React.useState(false);
15
+ const [loadError, setLoadError] = React.useState();
16
+ const [config, setConfig] = React.useState(null);
17
+ const [user, setUser] = React.useState(null);
18
+ const userRest = React.useMemo(() => getUser('', modArchConfig), [modArchConfig]);
19
+ const namespaceRest = React.useMemo(() => getNamespaces('', modArchConfig), [modArchConfig]);
20
+ const setRefreshMarker = useTimeBasedRefresh();
21
+ React.useEffect(() => {
22
+ let watchHandle;
23
+ let cancelled = false;
24
+ const watchConfig = () => {
25
+ Promise.all([fetchConfig(), userRest({})])
26
+ .then(([fetchedConfig, fetchedUser]) => {
27
+ if (cancelled) {
28
+ return;
29
+ }
30
+ setConfig(fetchedConfig);
31
+ setUser(fetchedUser);
32
+ setLoaded(true);
33
+ setLoadError(undefined);
34
+ })
35
+ .catch((e) => {
36
+ if (e?.message?.includes('Error getting Oauth Info for user')) {
37
+ // NOTE: this endpoint only requests oauth because of the security layer, this is not an ironclad use-case
38
+ // Something went wrong on the server with the Oauth, let us just log them out and refresh for them
39
+ /* eslint-disable-next-line no-console */
40
+ console.error('Something went wrong with the oauth token, please log out...', e.message, e);
41
+ setRefreshMarker(new Date());
42
+ return;
43
+ }
44
+ setLoadError(e);
45
+ });
46
+ watchHandle = setTimeout(watchConfig, POLL_INTERVAL);
47
+ };
48
+ watchConfig();
49
+ return () => {
50
+ cancelled = true;
51
+ clearTimeout(watchHandle);
52
+ };
53
+ }, [setRefreshMarker, userRest, namespaceRest]);
54
+ const retConfig = useDeepCompareMemoize(config);
55
+ const retUser = useDeepCompareMemoize(user);
56
+ return {
57
+ configSettings: retConfig,
58
+ userSettings: retUser,
59
+ loaded,
60
+ loadError,
61
+ };
62
+ };
63
+ // Mock a settings config call
64
+ // TODO: [Data Flow] replace with the actual call once we have the endpoint
65
+ export const fetchConfig = async () => ({
66
+ common: {
67
+ featureFlags: {
68
+ modelRegistry: true,
69
+ },
70
+ },
71
+ });
72
+ //# sourceMappingURL=useSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSettings.js","sourceRoot":"","sources":["../../hooks/useSettings.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export type SetTime = (refreshDateMarker: Date) => void;
2
+ declare const useTimeBasedRefresh: () => SetTime;
3
+ export default useTimeBasedRefresh;
4
+ //# sourceMappingURL=useTimeBasedRefresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTimeBasedRefresh.d.ts","sourceRoot":"","sources":["../../hooks/useTimeBasedRefresh.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,OAAO,GAAG,CAAC,iBAAiB,EAAE,IAAI,KAAK,IAAI,CAAC;AAExD,QAAA,MAAM,mBAAmB,QAAO,OAsC/B,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,32 @@
1
+ import * as React from 'react';
2
+ import { useBrowserStorage } from '../context';
3
+ import { logout } from '../utilities/appUtils';
4
+ const useTimeBasedRefresh = () => {
5
+ const KEY_NAME = 'kf.dashboard.last.auto.refresh';
6
+ const [lastRefreshTimestamp, setLastRefreshTimestamp] = useBrowserStorage(KEY_NAME, '0', false, true);
7
+ const ref = React.useRef({ lastRefreshTimestamp, setLastRefreshTimestamp });
8
+ ref.current = { lastRefreshTimestamp, setLastRefreshTimestamp };
9
+ return React.useCallback((refreshDateMarker) => {
10
+ // Intentionally avoid referential changes. We want the value at call time.
11
+ // Recomputing the ref is not needed and will impact usage in hooks if it does.
12
+ const lastDate = new Date(ref.current.lastRefreshTimestamp);
13
+ const setNewDateString = ref.current.setLastRefreshTimestamp;
14
+ /* eslint-disable no-console */
15
+ // Print into the console in case we are not refreshing or the browser has preserve log enabled
16
+ console.warn('Attempting to re-trigger an auto refresh');
17
+ console.log('Last refresh was on:', lastDate);
18
+ console.log('Refreshing requested after:', refreshDateMarker);
19
+ lastDate.setHours(lastDate.getHours() + 1);
20
+ if (lastDate < refreshDateMarker) {
21
+ setNewDateString(refreshDateMarker.toString());
22
+ console.log('Logging out and refreshing');
23
+ logout().then(() => window.location.reload());
24
+ }
25
+ else {
26
+ console.error(`We should have refreshed but it appears the last time we auto-refreshed was less than an hour ago. '${KEY_NAME}' session storage setting can be cleared for this to refresh again within the hour from the last refresh.`);
27
+ }
28
+ /* eslint-enable no-console */
29
+ }, []);
30
+ };
31
+ export default useTimeBasedRefresh;
32
+ //# sourceMappingURL=useTimeBasedRefresh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTimeBasedRefresh.js","sourceRoot":"","sources":["../../hooks/useTimeBasedRefresh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9C,MAAM,mBAAmB,GAAG,GAAY,EAAE;IACxC,MAAM,QAAQ,GAAG,gCAAgC,CAAC;IAClD,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,iBAAiB,CACvE,QAAQ,EACR,GAAG,EACH,KAAK,EACL,IAAI,CACL,CAAC;IACF,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAGrB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,CAAC,CAAC;IACtD,GAAG,CAAC,OAAO,GAAG,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,CAAC;IAEhE,OAAO,KAAK,CAAC,WAAW,CAAU,CAAC,iBAAiB,EAAE,EAAE;QACtD,2EAA2E;QAC3E,+EAA+E;QAC/E,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC5D,MAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC;QAE7D,+BAA+B;QAC/B,+FAA+F;QAC/F,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,iBAAiB,CAAC,CAAC;QAE9D,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,QAAQ,GAAG,iBAAiB,EAAE,CAAC;YACjC,gBAAgB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC1C,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CACX,uGAAuG,QAAQ,2GAA2G,CAC3N,CAAC;QACJ,CAAC;QACD,8BAA8B;IAChC,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from './api';
2
+ export * from './hooks';
3
+ export * from './context';
4
+ export * from './utilities';
5
+ export * from './types';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,cAAc,OAAO,CAAC;AAGtB,cAAc,SAAS,CAAC;AAGxB,cAAc,WAAW,CAAC;AAG1B,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ // Export API utilities
2
+ export * from './api';
3
+ // Export hooks
4
+ export * from './hooks';
5
+ // Export context
6
+ export * from './context';
7
+ // Export utilities
8
+ export * from './utilities';
9
+ // Export types
10
+ export * from './types';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,cAAc,OAAO,CAAC;AAEtB,eAAe;AACf,cAAc,SAAS,CAAC;AAExB,iBAAiB;AACjB,cAAc,WAAW,CAAC;AAE1B,mBAAmB;AACnB,cAAc,aAAa,CAAC;AAE5B,eAAe;AACf,cAAc,SAAS,CAAC"}
@@ -0,0 +1,21 @@
1
+ export let roots: string[];
2
+ export let testMatch: string[];
3
+ export let testPathIgnorePatterns: string[];
4
+ export let modulePathIgnorePatterns: string[];
5
+ export let clearMocks: boolean;
6
+ export let moduleDirectories: string[];
7
+ export let moduleNameMapper: {
8
+ '\\.(css|less|sass|scss)$': string;
9
+ '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': string;
10
+ '~/(.*)': string;
11
+ };
12
+ export let testEnvironment: string;
13
+ export let transform: {
14
+ '^.+\\.(t|j)sx?$': string;
15
+ };
16
+ export let transformIgnorePatterns: string[];
17
+ export let snapshotSerializers: never[];
18
+ export let setupFilesAfterEnv: string[];
19
+ export let coverageDirectory: string;
20
+ export let collectCoverageFrom: string[];
21
+ //# sourceMappingURL=jest.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.config.d.ts","sourceRoot":"","sources":["../jest.config.js"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ // For a detailed explanation regarding each configuration property, visit:
3
+ // https://jestjs.io/docs/en/configuration.html
4
+ module.exports = {
5
+ roots: ['<rootDir>/'],
6
+ testMatch: [
7
+ '**/__tests__/unit/**/?(*.)+(spec|test).ts?(x)',
8
+ '**/__tests__/?(*.)+(spec|test).ts?(x)',
9
+ ],
10
+ testPathIgnorePatterns: ['<rootDir>/node_modules/', '<rootDir>/dist/'],
11
+ modulePathIgnorePatterns: ['<rootDir>/node_modules/', '<rootDir>/dist/'],
12
+ // Automatically clear mock calls and instances between every test
13
+ clearMocks: true,
14
+ // An array of directory names to be searched recursively up from the requiring module's location
15
+ moduleDirectories: ['node_modules', '<rootDir>/'],
16
+ // A map from regular expressions to module names that allow to stub out resources with a single module
17
+ moduleNameMapper: {
18
+ '\\.(css|less|sass|scss)$': '<rootDir>/config/transform.style.js',
19
+ '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '<rootDir>/config/transform.file.js',
20
+ '~/(.*)': '<rootDir>/$1',
21
+ },
22
+ // The test environment that will be used for testing.
23
+ testEnvironment: 'jest-environment-jsdom',
24
+ // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module
25
+ transform: {
26
+ '^.+\\.(t|j)sx?$': 'ts-jest', // Process .js, .jsx, .ts, .tsx files with ts-jest
27
+ },
28
+ // include projects from node_modules as required
29
+ transformIgnorePatterns: ['node_modules/(?!yaml|lodash-es|uuid|delaunator)'],
30
+ // A list of paths to snapshot serializer modules Jest should use for snapshot testing
31
+ snapshotSerializers: [],
32
+ setupFilesAfterEnv: ['<rootDir>/__tests__/unit/jest.setup.ts'],
33
+ coverageDirectory: 'jest-coverage',
34
+ collectCoverageFrom: [
35
+ '<rootDir>/**/*.{ts,tsx}',
36
+ '!<rootDir>/__tests__/**',
37
+ '!<rootDir>/__mocks__/**',
38
+ '!**/*.spec.{ts,tsx}',
39
+ ],
40
+ };
41
+ //# sourceMappingURL=jest.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../jest.config.js"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,+CAA+C;AAE/C,MAAM,CAAC,OAAO,GAAG;IACf,KAAK,EAAE,CAAC,YAAY,CAAC;IACrB,SAAS,EAAE;QACT,+CAA+C;QAC/C,uCAAuC;KACxC;IACD,sBAAsB,EAAE,CAAC,yBAAyB,EAAE,iBAAiB,CAAC;IACtE,wBAAwB,EAAE,CAAC,yBAAyB,EAAE,iBAAiB,CAAC;IACxE,kEAAkE;IAClE,UAAU,EAAE,IAAI;IAEhB,iGAAiG;IACjG,iBAAiB,EAAE,CAAC,cAAc,EAAE,YAAY,CAAC;IAEjD,uGAAuG;IACvG,gBAAgB,EAAE;QAChB,0BAA0B,EAAE,qCAAqC;QACjE,qFAAqF,EACnF,oCAAoC;QACtC,QAAQ,EAAE,cAAc;KACzB;IAED,sDAAsD;IACtD,eAAe,EAAE,wBAAwB;IAEzC,oIAAoI;IACpI,SAAS,EAAE;QACT,iBAAiB,EAAE,SAAS,EAAE,kDAAkD;KACjF;IAED,iDAAiD;IACjD,uBAAuB,EAAE,CAAC,iDAAiD,CAAC;IAE5E,sFAAsF;IACtF,mBAAmB,EAAE,EAAE;IAEvB,kBAAkB,EAAE,CAAC,wCAAwC,CAAC;IAE9D,iBAAiB,EAAE,eAAe;IAElC,mBAAmB,EAAE;QACnB,yBAAyB;QACzB,yBAAyB;QACzB,yBAAyB;QACzB,qBAAqB;KACtB;CACF,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { DeploymentMode } from '../utilities';
2
+ export type ModularArchConfig = {
3
+ deploymentMode: DeploymentMode;
4
+ URL_PREFIX: string;
5
+ BFF_API_VERSION: string;
6
+ mandatoryNamespace?: string;
7
+ };
8
+ export type ModArchBody<T> = {
9
+ data: T;
10
+ metadata?: Record<string, unknown>;
11
+ };
12
+ export type UserSettings = {
13
+ userId: string;
14
+ clusterAdmin?: boolean;
15
+ };
16
+ export type ConfigSettings = {
17
+ common: CommonConfig;
18
+ };
19
+ export type CommonConfig = {
20
+ featureFlags: FeatureFlag;
21
+ };
22
+ export type FeatureFlag = {
23
+ modelRegistry: boolean;
24
+ };
25
+ export type KeyValuePair = {
26
+ key: string;
27
+ value: string;
28
+ };
29
+ export type Namespace = {
30
+ name: string;
31
+ };
32
+ export type UpdateObjectAtPropAndValue<T> = <K extends keyof T>(propKey: K, propValue: T[K]) => void;
33
+ export type FetchStateObject<T, E = Error> = {
34
+ data: T;
35
+ loaded: boolean;
36
+ error?: E;
37
+ refresh: () => void;
38
+ };
39
+ export declare enum AlertVariant {
40
+ success = "success",
41
+ danger = "danger",
42
+ warning = "warning",
43
+ info = "info",
44
+ custom = "custom"
45
+ }
46
+ export type Notification = {
47
+ id?: number;
48
+ status: AlertVariant;
49
+ title: string;
50
+ message?: React.ReactNode;
51
+ hidden?: boolean;
52
+ read?: boolean;
53
+ timestamp: Date;
54
+ };
55
+ export declare enum NotificationActionTypes {
56
+ ADD_NOTIFICATION = "add_notification",
57
+ DELETE_NOTIFICATION = "delete_notification"
58
+ }
59
+ export type NotificationAction = {
60
+ type: NotificationActionTypes.ADD_NOTIFICATION;
61
+ payload: Notification;
62
+ } | {
63
+ type: NotificationActionTypes.DELETE_NOTIFICATION;
64
+ payload: {
65
+ id: Notification['id'];
66
+ };
67
+ };
68
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../types/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IAExB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAC3B,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,0BAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,EAC5D,OAAO,EAAE,CAAC,EACV,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,KACZ,IAAI,CAAC;AAEV,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI;IAC3C,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,oBAAY,uBAAuB;IACjC,gBAAgB,qBAAqB;IACrC,mBAAmB,wBAAwB;CAC5C;AAED,MAAM,MAAM,kBAAkB,GAC1B;IACE,IAAI,EAAE,uBAAuB,CAAC,gBAAgB,CAAC;IAC/C,OAAO,EAAE,YAAY,CAAC;CACvB,GACD;IACE,IAAI,EAAE,uBAAuB,CAAC,mBAAmB,CAAC;IAClD,OAAO,EAAE;QAAE,EAAE,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;CACrC,CAAC"}
@@ -0,0 +1,14 @@
1
+ export var AlertVariant;
2
+ (function (AlertVariant) {
3
+ AlertVariant["success"] = "success";
4
+ AlertVariant["danger"] = "danger";
5
+ AlertVariant["warning"] = "warning";
6
+ AlertVariant["info"] = "info";
7
+ AlertVariant["custom"] = "custom";
8
+ })(AlertVariant || (AlertVariant = {}));
9
+ export var NotificationActionTypes;
10
+ (function (NotificationActionTypes) {
11
+ NotificationActionTypes["ADD_NOTIFICATION"] = "add_notification";
12
+ NotificationActionTypes["DELETE_NOTIFICATION"] = "delete_notification";
13
+ })(NotificationActionTypes || (NotificationActionTypes = {}));
14
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../types/common.ts"],"names":[],"mappings":"AAqDA,MAAM,CAAN,IAAY,YAMX;AAND,WAAY,YAAY;IACtB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,6BAAa,CAAA;IACb,iCAAiB,CAAA;AACnB,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB;AAYD,MAAM,CAAN,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IACjC,gEAAqC,CAAA;IACrC,sEAA2C,CAAA;AAC7C,CAAC,EAHW,uBAAuB,KAAvB,uBAAuB,QAGlC"}
@@ -0,0 +1,3 @@
1
+ export * from './typeHelpers';
2
+ export * from './common';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAEA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Export all type definitions
2
+ // Add specific exports as needed for all type definitions
3
+ export * from './typeHelpers';
4
+ export * from './common';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAC9B,0DAA0D;AAC1D,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC"}