@ytsaurus/ui 1.21.0 → 1.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +25 -8
  2. package/build/cjs/@types/core.d.ts +1 -1
  3. package/build/cjs/server/ServerFactory.d.ts +3 -0
  4. package/build/cjs/server/ServerFactory.js +3 -0
  5. package/build/cjs/server/ServerFactory.js.map +1 -1
  6. package/build/cjs/server/controllers/availability.js +36 -18
  7. package/build/cjs/server/controllers/availability.js.map +1 -1
  8. package/build/cjs/server/controllers/odin-proxy-api.js +3 -4
  9. package/build/cjs/server/controllers/odin-proxy-api.js.map +1 -1
  10. package/build/cjs/server/index.js +5 -0
  11. package/build/cjs/server/index.js.map +1 -1
  12. package/build/cjs/server/middlewares/check-configuration.d.ts +3 -0
  13. package/build/cjs/server/middlewares/check-configuration.js +28 -0
  14. package/build/cjs/server/middlewares/check-configuration.js.map +1 -0
  15. package/build/cjs/ui/pages/odin/_actions/odin-overview.js +1 -1
  16. package/build/cjs/ui/pages/odin/_actions/odin-overview.js.map +1 -1
  17. package/build/cjs/ui/pages/odin/controls/OdinToolbar.js +2 -1
  18. package/build/cjs/ui/pages/odin/controls/OdinToolbar.js.map +1 -1
  19. package/build/cjs/ui/pages/odin/odin-utils.d.ts +1 -1
  20. package/build/cjs/ui/pages/odin/odin-utils.js +2 -2
  21. package/build/cjs/ui/pages/odin/odin-utils.js.map +1 -1
  22. package/build/esm/@types/core.d.ts +1 -1
  23. package/build/esm/server/ServerFactory.d.ts +3 -0
  24. package/build/esm/server/ServerFactory.js +4 -0
  25. package/build/esm/server/ServerFactory.js.map +1 -1
  26. package/build/esm/server/controllers/availability.js +43 -23
  27. package/build/esm/server/controllers/availability.js.map +1 -1
  28. package/build/esm/server/controllers/odin-proxy-api.js +9 -10
  29. package/build/esm/server/controllers/odin-proxy-api.js.map +1 -1
  30. package/build/esm/server/index.js +5 -0
  31. package/build/esm/server/index.js.map +1 -1
  32. package/build/esm/server/middlewares/check-configuration.d.ts +3 -0
  33. package/build/esm/server/middlewares/check-configuration.js +20 -0
  34. package/build/esm/server/middlewares/check-configuration.js.map +1 -0
  35. package/build/esm/ui/pages/odin/_actions/odin-overview.js +1 -1
  36. package/build/esm/ui/pages/odin/_actions/odin-overview.js.map +1 -1
  37. package/build/esm/ui/pages/odin/controls/OdinToolbar.js +3 -2
  38. package/build/esm/ui/pages/odin/controls/OdinToolbar.js.map +1 -1
  39. package/build/esm/ui/pages/odin/odin-utils.d.ts +1 -1
  40. package/build/esm/ui/pages/odin/odin-utils.js +2 -2
  41. package/build/esm/ui/pages/odin/odin-utils.js.map +1 -1
  42. package/dist/public/build/assets-manifest.json +4 -4
  43. package/dist/public/build/js/main.724df837.js +3 -0
  44. package/dist/public/build/js/{main.53d3bdc5.js.map → main.724df837.js.map} +1 -1
  45. package/dist/public/build/manifest.json +2 -2
  46. package/dist/server/ServerFactory.d.ts +3 -0
  47. package/dist/server/ServerFactory.js +3 -0
  48. package/dist/server/controllers/availability.js +36 -18
  49. package/dist/server/controllers/odin-proxy-api.js +3 -4
  50. package/dist/server/index.js +5 -0
  51. package/dist/server/middlewares/check-configuration.d.ts +3 -0
  52. package/dist/server/middlewares/check-configuration.js +28 -0
  53. package/package.json +2 -2
  54. package/dist/public/build/js/main.53d3bdc5.js +0 -3
  55. /package/dist/public/build/js/{main.53d3bdc5.js.LICENSE.txt → main.724df837.js.LICENSE.txt} +0 -0
@@ -19,7 +19,7 @@ export default class Utils {
19
19
  static request<T = unknown>(path: string, saveCancelToken?: SaveCancelToken): Promise<T>;
20
20
  static isRequestCanceled(error: any): boolean;
21
21
  static checkStatus(cluster: string): Promise<unknown>;
22
- static listMetrics(): Promise<MetricListItem[]>;
22
+ static listMetrics(cluster: string): Promise<MetricListItem[]>;
23
23
  static getMetric(cluster: string, metric: string, from: Date, to: Date, saveCT: SaveCancelToken): Promise<Availability>;
24
24
  static getMetricOfThisDay(cluster: string, metric: string, date: string | null, saveCancelToken: SaveCancelToken): Promise<Availability>;
25
25
  static prepareAvailabilityData(availability: Availability, size: number): Array<MetricData>;
@@ -54,8 +54,8 @@ var Utils = exports.default = /*#__PURE__*/function () {
54
54
  }
55
55
  }, {
56
56
  key: "listMetrics",
57
- value: function listMetrics() {
58
- return Utils.request('/service_list');
57
+ value: function listMetrics(cluster) {
58
+ return Utils.request("/service_list/".concat(cluster));
59
59
  }
60
60
  }, {
61
61
  key: "getMetric",
@@ -1 +1 @@
1
- {"version":3,"names":["_axios","_interopRequireDefault","require","_moment","_odinConstants","_config","obj","__esModule","default","Utils","exports","_classCallCheck","_createClass","key","value","request","path","saveCancelToken","axios","url","ODIN_PATH","method","responseType","withCredentials","ODIN_AUTH","cancelToken","CancelToken","cancel","then","response","data","error","_error$response","isCancel","Promise","reject","isRequestCanceled","checkStatus","cluster","listMetrics","getMetric","metric","from","to","saveCT","moment","toISOString","getMetricOfThisDay","date","startTime","startOf","endTime","add","toDate","prepareAvailabilityData","availability","size","asArray","property","getPropertyName","i","substr","length","Object","hasOwnProperty","call","state","push","computeStat","counts","_countBy","_ref","sum","currentDate","format","DATE_FORMAT","fetchClustersAvailability","hasOdinPage","resolve"],"sources":["odin-utils.ts"],"sourcesContent":["import axios, {Canceler} from 'axios';\nimport _ from 'lodash';\nimport moment from 'moment';\n\nimport {DATE_FORMAT} from './odin-constants';\nimport {hasOdinPage} from '../../config';\n\ntype SaveCancelToken = ({cancel}: {cancel: Canceler}) => void;\ntype Availability = {[key: string]: MetricData};\n\nexport interface MetricListItem {\n display_name: string;\n name: string;\n}\n\nexport interface MetricData {\n message?: string;\n state: 'available' | 'unavailable' | 'partially_available' | 'no_data';\n}\n\nexport default class Utils {\n static ODIN_PATH = '/api/odin/proxy';\n static ODIN_AUTH = 'none';\n\n static request<T = unknown>(path: string, saveCancelToken?: SaveCancelToken): Promise<T> {\n return axios\n .request({\n url: Utils.ODIN_PATH + path,\n method: 'GET',\n responseType: 'json',\n withCredentials: Utils.ODIN_AUTH === 'domain',\n cancelToken: new axios.CancelToken((cancel) => {\n if (typeof saveCancelToken === 'function') {\n saveCancelToken({cancel});\n }\n }),\n })\n .then((response) => {\n return response.data;\n })\n .catch((error) => {\n if (axios.isCancel(error)) {\n return Promise.reject(error);\n }\n return Promise.reject(error.response?.data || error);\n });\n }\n\n static isRequestCanceled(error: any) {\n return axios.isCancel(error);\n }\n\n static checkStatus(cluster: string) {\n return Utils.request('/exists/' + cluster);\n }\n\n static listMetrics() {\n return Utils.request<Array<MetricListItem>>('/service_list');\n }\n\n static getMetric(\n cluster: string,\n metric: string,\n from: Date,\n to: Date,\n saveCT: SaveCancelToken,\n ) {\n return Utils.request<Availability>(\n '/availability/' +\n cluster +\n '?metric=' +\n metric +\n '&start_time=' +\n moment(from).toISOString() +\n '&end_time=' +\n moment(to).toISOString() +\n '&return_state_without_message=0',\n saveCT,\n );\n }\n\n static getMetricOfThisDay(\n cluster: string,\n metric: string,\n date: string | null,\n saveCancelToken: SaveCancelToken,\n ) {\n const startTime = moment(date).startOf('day');\n const endTime = moment(startTime).add(1, 'day');\n return Utils.getMetric(\n cluster,\n metric,\n startTime.toDate(),\n endTime.toDate(),\n saveCancelToken,\n );\n }\n\n static prepareAvailabilityData(availability: Availability, size: number): Array<MetricData> {\n const asArray: Array<MetricData> = [];\n let property: string;\n let data: MetricData;\n\n function getPropertyName(i: number) {\n let property = '00000' + i;\n property = 'at_' + property.substr(property.length - 5);\n return property;\n }\n\n for (let i = 0; i < size; i++) {\n property = getPropertyName(i);\n\n if (availability && Object.hasOwnProperty.call(availability, property)) {\n data = availability[property];\n } else {\n data = {\n state: 'no_data',\n };\n }\n asArray.push(data);\n }\n\n return asArray;\n }\n\n static computeStat(availability: Array<MetricData>) {\n const counts = _.countBy(availability, ({state}) => {\n if (state === 'available') {\n return 'available';\n } else if (state === 'no_data') {\n return 'no_data';\n } else {\n return 'unavailable';\n }\n });\n\n const sum = availability.length;\n\n return {\n from: (counts['available'] || 0) / sum,\n to: (sum - (counts['unavailable'] || 0)) / sum,\n };\n }\n}\n\nexport function currentDate() {\n return moment().startOf('day').format(DATE_FORMAT);\n}\n\nexport const fetchClustersAvailability = hasOdinPage()\n ? () => {\n return axios.request({\n method: 'get',\n url: '/api/odin/clusters/availability',\n }) as Promise<\n {\n id: string;\n availability?: 1 | undefined;\n }[]\n >;\n }\n : () => Promise.resolve([]);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_axios","_interopRequireDefault","require","_moment","_odinConstants","_config","obj","__esModule","default","Utils","exports","_classCallCheck","_createClass","key","value","request","path","saveCancelToken","axios","url","ODIN_PATH","method","responseType","withCredentials","ODIN_AUTH","cancelToken","CancelToken","cancel","then","response","data","error","_error$response","isCancel","Promise","reject","isRequestCanceled","checkStatus","cluster","listMetrics","concat","getMetric","metric","from","to","saveCT","moment","toISOString","getMetricOfThisDay","date","startTime","startOf","endTime","add","toDate","prepareAvailabilityData","availability","size","asArray","property","getPropertyName","i","substr","length","Object","hasOwnProperty","call","state","push","computeStat","counts","_countBy","_ref","sum","currentDate","format","DATE_FORMAT","fetchClustersAvailability","hasOdinPage","resolve"],"sources":["odin-utils.ts"],"sourcesContent":["import axios, {Canceler} from 'axios';\nimport _ from 'lodash';\nimport moment from 'moment';\n\nimport {DATE_FORMAT} from './odin-constants';\nimport {hasOdinPage} from '../../config';\n\ntype SaveCancelToken = ({cancel}: {cancel: Canceler}) => void;\ntype Availability = {[key: string]: MetricData};\n\nexport interface MetricListItem {\n display_name: string;\n name: string;\n}\n\nexport interface MetricData {\n message?: string;\n state: 'available' | 'unavailable' | 'partially_available' | 'no_data';\n}\n\nexport default class Utils {\n static ODIN_PATH = '/api/odin/proxy';\n static ODIN_AUTH = 'none';\n\n static request<T = unknown>(path: string, saveCancelToken?: SaveCancelToken): Promise<T> {\n return axios\n .request({\n url: Utils.ODIN_PATH + path,\n method: 'GET',\n responseType: 'json',\n withCredentials: Utils.ODIN_AUTH === 'domain',\n cancelToken: new axios.CancelToken((cancel) => {\n if (typeof saveCancelToken === 'function') {\n saveCancelToken({cancel});\n }\n }),\n })\n .then((response) => {\n return response.data;\n })\n .catch((error) => {\n if (axios.isCancel(error)) {\n return Promise.reject(error);\n }\n return Promise.reject(error.response?.data || error);\n });\n }\n\n static isRequestCanceled(error: any) {\n return axios.isCancel(error);\n }\n\n static checkStatus(cluster: string) {\n return Utils.request('/exists/' + cluster);\n }\n\n static listMetrics(cluster: string) {\n return Utils.request<Array<MetricListItem>>(`/service_list/${cluster}`);\n }\n\n static getMetric(\n cluster: string,\n metric: string,\n from: Date,\n to: Date,\n saveCT: SaveCancelToken,\n ) {\n return Utils.request<Availability>(\n '/availability/' +\n cluster +\n '?metric=' +\n metric +\n '&start_time=' +\n moment(from).toISOString() +\n '&end_time=' +\n moment(to).toISOString() +\n '&return_state_without_message=0',\n saveCT,\n );\n }\n\n static getMetricOfThisDay(\n cluster: string,\n metric: string,\n date: string | null,\n saveCancelToken: SaveCancelToken,\n ) {\n const startTime = moment(date).startOf('day');\n const endTime = moment(startTime).add(1, 'day');\n return Utils.getMetric(\n cluster,\n metric,\n startTime.toDate(),\n endTime.toDate(),\n saveCancelToken,\n );\n }\n\n static prepareAvailabilityData(availability: Availability, size: number): Array<MetricData> {\n const asArray: Array<MetricData> = [];\n let property: string;\n let data: MetricData;\n\n function getPropertyName(i: number) {\n let property = '00000' + i;\n property = 'at_' + property.substr(property.length - 5);\n return property;\n }\n\n for (let i = 0; i < size; i++) {\n property = getPropertyName(i);\n\n if (availability && Object.hasOwnProperty.call(availability, property)) {\n data = availability[property];\n } else {\n data = {\n state: 'no_data',\n };\n }\n asArray.push(data);\n }\n\n return asArray;\n }\n\n static computeStat(availability: Array<MetricData>) {\n const counts = _.countBy(availability, ({state}) => {\n if (state === 'available') {\n return 'available';\n } else if (state === 'no_data') {\n return 'no_data';\n } else {\n return 'unavailable';\n }\n });\n\n const sum = availability.length;\n\n return {\n from: (counts['available'] || 0) / sum,\n to: (sum - (counts['unavailable'] || 0)) / sum,\n };\n }\n}\n\nexport function currentDate() {\n return moment().startOf('day').format(DATE_FORMAT);\n}\n\nexport const fetchClustersAvailability = hasOdinPage()\n ? () => {\n return axios.request({\n method: 'get',\n url: '/api/odin/clusters/availability',\n }) as Promise<\n {\n id: string;\n availability?: 1 | undefined;\n }[]\n >;\n }\n : () => Promise.resolve([]);\n"],"mappings":"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"}
@@ -51,7 +51,7 @@ export interface YTCoreConfig {
51
51
  * Odin is a service for monitoring the availability of YTsaurus clusters
52
52
  * This parameter sets service base url and enables UI page
53
53
  */
54
- odinBaseUrl?: string;
54
+ odinBaseUrl?: Record<string, string> | string;
55
55
 
56
56
  /**
57
57
  * The OAuthRobot should have read/write access to mapNodePath
@@ -8,6 +8,9 @@ export interface ServerFactory {
8
8
  renderLayout(params: AppLayoutConfig, req: Request, res: Response): Promise<string>;
9
9
  }
10
10
  export declare function rememberApp(v: ExpressKit): void;
11
+ /**
12
+ * @deprecated use req.ctx.config instead of App().config
13
+ */
11
14
  export declare function getApp(): ExpressKit;
12
15
  export declare function configureServerFactory(overrides: Partial<ServerFactory>): void;
13
16
  declare const _default: ServerFactory;
@@ -11,6 +11,10 @@ export function rememberApp(v) {
11
11
  }
12
12
  app = v;
13
13
  }
14
+
15
+ /**
16
+ * @deprecated use req.ctx.config instead of App().config
17
+ */
14
18
  export function getApp() {
15
19
  return app;
16
20
  }
@@ -1 +1 @@
1
- {"version":3,"names":["isLocalClusterId","renderLayout","isLocalModeByEnvironment","app","rememberApp","v","Error","getApp","serverFactory","getExtraRootPages","cluster","getHomeRedirectedUrl","Promise","resolve","undefined","params","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","sent","stop","configureServerFactoryItem","k","redefinition","configureServerFactory","overrides","_forEach","_v","key","Proxy","set"],"sources":["ServerFactory.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport type {ExpressKit} from '@gravity-ui/expresskit';\nimport _ from 'lodash';\nimport {isLocalClusterId} from '../shared/utils';\nimport {ConfigData} from '../shared/yt-types';\nimport renderLayout, {AppLayoutConfig} from './render-layout';\nimport {isLocalModeByEnvironment} from './utils';\n\nexport interface ServerFactory {\n getExtraRootPages(): Array<string>;\n isLocalClusterId(cluster: string): boolean;\n getHomeRedirectedUrl(cluster: string | undefined, req: Request): Promise<string | undefined>;\n renderLayout(params: AppLayoutConfig, req: Request, res: Response): Promise<string>;\n}\n\nlet app: ExpressKit;\n\nexport function rememberApp(v: ExpressKit) {\n if (app) {\n throw new Error('The method must not be called more than once');\n }\n app = v;\n}\n\nexport function getApp() {\n return app!;\n}\n\nconst serverFactory: ServerFactory = {\n getExtraRootPages() {\n return [];\n },\n isLocalClusterId(cluster) {\n return isLocalModeByEnvironment() || isLocalClusterId(cluster);\n },\n getHomeRedirectedUrl() {\n return Promise.resolve(undefined);\n },\n async renderLayout(params) {\n return await renderLayout<ConfigData>(params);\n },\n};\n\nfunction configureServerFactoryItem<K extends keyof ServerFactory>(\n k: K,\n redefinition: ServerFactory[K],\n) {\n serverFactory[k] = redefinition;\n}\n\nexport function configureServerFactory(overrides: Partial<ServerFactory>) {\n _.forEach(overrides, (_v, k) => {\n const key = k as keyof ServerFactory;\n configureServerFactoryItem(key, overrides[key]!);\n });\n}\n\nexport default new Proxy(serverFactory, {\n set: () => {\n throw new Error('Use configureUIFactory(...) method instead of direct modifications');\n },\n});\n"],"mappings":";;;AAGA,SAAQA,gBAAgB,IAAhBA,iBAAgB,QAAO,iBAAiB;AAEhD,OAAOC,aAAY,MAAyB,iBAAiB;AAC7D,SAAQC,wBAAwB,QAAO,SAAS;AAShD,IAAIC,GAAe;AAEnB,OAAO,SAASC,WAAWA,CAACC,CAAa,EAAE;EACvC,IAAIF,GAAG,EAAE;IACL,MAAM,IAAIG,KAAK,CAAC,8CAA8C,CAAC;EACnE;EACAH,GAAG,GAAGE,CAAC;AACX;AAEA,OAAO,SAASE,MAAMA,CAAA,EAAG;EACrB,OAAOJ,GAAG;AACd;AAEA,IAAMK,aAA4B,GAAG;EACjCC,iBAAiB,WAAAA,kBAAA,EAAG;IAChB,OAAO,EAAE;EACb,CAAC;EACDT,gBAAgB,WAAAA,iBAACU,OAAO,EAAE;IACtB,OAAOR,wBAAwB,CAAC,CAAC,IAAIF,iBAAgB,CAACU,OAAO,CAAC;EAClE,CAAC;EACDC,oBAAoB,WAAAA,qBAAA,EAAG;IACnB,OAAOC,OAAO,CAACC,OAAO,CAACC,SAAS,CAAC;EACrC,CAAC;EACKb,YAAY,WAAAA,aAACc,MAAM,EAAE;IAAA,OAAAC,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,UAAAC,QAAA;MAAA,OAAAF,mBAAA,CAAAG,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAAF,QAAA,CAAAE,IAAA;YAAA,OACVvB,aAAY,CAAac,MAAM,CAAC;UAAA;YAAA,OAAAO,QAAA,CAAAG,MAAA,WAAAH,QAAA,CAAAI,IAAA;UAAA;UAAA;YAAA,OAAAJ,QAAA,CAAAK,IAAA;QAAA;MAAA,GAAAR,OAAA;IAAA;EACjD;AACJ,CAAC;AAED,SAASS,0BAA0BA,CAC/BC,CAAI,EACJC,YAA8B,EAChC;EACEtB,aAAa,CAACqB,CAAC,CAAC,GAAGC,YAAY;AACnC;AAEA,OAAO,SAASC,sBAAsBA,CAACC,SAAiC,EAAE;EACtEC,QAAA,CAAUD,SAAS,EAAE,UAACE,EAAE,EAAEL,CAAC,EAAK;IAC5B,IAAMM,GAAG,GAAGN,CAAwB;IACpCD,0BAA0B,CAACO,GAAG,EAAEH,SAAS,CAACG,GAAG,CAAE,CAAC;EACpD,CAAC,CAAC;AACN;AAEA,eAAe,IAAIC,KAAK,CAAC5B,aAAa,EAAE;EACpC6B,GAAG,EAAE,SAAAA,IAAA,EAAM;IACP,MAAM,IAAI/B,KAAK,CAAC,oEAAoE,CAAC;EACzF;AACJ,CAAC,CAAC"}
1
+ {"version":3,"names":["isLocalClusterId","renderLayout","isLocalModeByEnvironment","app","rememberApp","v","Error","getApp","serverFactory","getExtraRootPages","cluster","getHomeRedirectedUrl","Promise","resolve","undefined","params","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","abrupt","sent","stop","configureServerFactoryItem","k","redefinition","configureServerFactory","overrides","_forEach","_v","key","Proxy","set"],"sources":["ServerFactory.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport type {ExpressKit} from '@gravity-ui/expresskit';\nimport _ from 'lodash';\nimport {isLocalClusterId} from '../shared/utils';\nimport {ConfigData} from '../shared/yt-types';\nimport renderLayout, {AppLayoutConfig} from './render-layout';\nimport {isLocalModeByEnvironment} from './utils';\n\nexport interface ServerFactory {\n getExtraRootPages(): Array<string>;\n isLocalClusterId(cluster: string): boolean;\n getHomeRedirectedUrl(cluster: string | undefined, req: Request): Promise<string | undefined>;\n renderLayout(params: AppLayoutConfig, req: Request, res: Response): Promise<string>;\n}\n\nlet app: ExpressKit;\n\nexport function rememberApp(v: ExpressKit) {\n if (app) {\n throw new Error('The method must not be called more than once');\n }\n app = v;\n}\n\n/**\n * @deprecated use req.ctx.config instead of App().config\n */\nexport function getApp() {\n return app!;\n}\n\nconst serverFactory: ServerFactory = {\n getExtraRootPages() {\n return [];\n },\n isLocalClusterId(cluster) {\n return isLocalModeByEnvironment() || isLocalClusterId(cluster);\n },\n getHomeRedirectedUrl() {\n return Promise.resolve(undefined);\n },\n async renderLayout(params) {\n return await renderLayout<ConfigData>(params);\n },\n};\n\nfunction configureServerFactoryItem<K extends keyof ServerFactory>(\n k: K,\n redefinition: ServerFactory[K],\n) {\n serverFactory[k] = redefinition;\n}\n\nexport function configureServerFactory(overrides: Partial<ServerFactory>) {\n _.forEach(overrides, (_v, k) => {\n const key = k as keyof ServerFactory;\n configureServerFactoryItem(key, overrides[key]!);\n });\n}\n\nexport default new Proxy(serverFactory, {\n set: () => {\n throw new Error('Use configureUIFactory(...) method instead of direct modifications');\n },\n});\n"],"mappings":";;;AAGA,SAAQA,gBAAgB,IAAhBA,iBAAgB,QAAO,iBAAiB;AAEhD,OAAOC,aAAY,MAAyB,iBAAiB;AAC7D,SAAQC,wBAAwB,QAAO,SAAS;AAShD,IAAIC,GAAe;AAEnB,OAAO,SAASC,WAAWA,CAACC,CAAa,EAAE;EACvC,IAAIF,GAAG,EAAE;IACL,MAAM,IAAIG,KAAK,CAAC,8CAA8C,CAAC;EACnE;EACAH,GAAG,GAAGE,CAAC;AACX;;AAEA;AACA;AACA;AACA,OAAO,SAASE,MAAMA,CAAA,EAAG;EACrB,OAAOJ,GAAG;AACd;AAEA,IAAMK,aAA4B,GAAG;EACjCC,iBAAiB,WAAAA,kBAAA,EAAG;IAChB,OAAO,EAAE;EACb,CAAC;EACDT,gBAAgB,WAAAA,iBAACU,OAAO,EAAE;IACtB,OAAOR,wBAAwB,CAAC,CAAC,IAAIF,iBAAgB,CAACU,OAAO,CAAC;EAClE,CAAC;EACDC,oBAAoB,WAAAA,qBAAA,EAAG;IACnB,OAAOC,OAAO,CAACC,OAAO,CAACC,SAAS,CAAC;EACrC,CAAC;EACKb,YAAY,WAAAA,aAACc,MAAM,EAAE;IAAA,OAAAC,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,UAAAC,QAAA;MAAA,OAAAF,mBAAA,CAAAG,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAAF,QAAA,CAAAE,IAAA;YAAA,OACVvB,aAAY,CAAac,MAAM,CAAC;UAAA;YAAA,OAAAO,QAAA,CAAAG,MAAA,WAAAH,QAAA,CAAAI,IAAA;UAAA;UAAA;YAAA,OAAAJ,QAAA,CAAAK,IAAA;QAAA;MAAA,GAAAR,OAAA;IAAA;EACjD;AACJ,CAAC;AAED,SAASS,0BAA0BA,CAC/BC,CAAI,EACJC,YAA8B,EAChC;EACEtB,aAAa,CAACqB,CAAC,CAAC,GAAGC,YAAY;AACnC;AAEA,OAAO,SAASC,sBAAsBA,CAACC,SAAiC,EAAE;EACtEC,QAAA,CAAUD,SAAS,EAAE,UAACE,EAAE,EAAEL,CAAC,EAAK;IAC5B,IAAMM,GAAG,GAAGN,CAAwB;IACpCD,0BAA0B,CAACO,GAAG,EAAEH,SAAS,CAACG,GAAG,CAAE,CAAC;EACpD,CAAC,CAAC;AACN;AAEA,eAAe,IAAIC,KAAK,CAAC5B,aAAa,EAAE;EACpC6B,GAAG,EAAE,SAAAA,IAAA,EAAM;IACP,MAAM,IAAI/B,KAAK,CAAC,oEAAoE,CAAC;EACzF;AACJ,CAAC,CAAC"}
@@ -4,7 +4,6 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
4
4
  import axios from 'axios';
5
5
  import { getClustersFromConfig } from '../components/utils';
6
6
  import { sendAndLogError, sendError, sendResponse } from '../utils';
7
- import { getApp } from '../ServerFactory';
8
7
  function getClusterAvailability(clusterConfig, odinPath) {
9
8
  var ODIN_PERIOD = 5;
10
9
  var ODIN_METRIC = 'master';
@@ -22,31 +21,53 @@ function getClusterAvailability(clusterConfig, odinPath) {
22
21
  return response.data;
23
22
  });
24
23
  }
25
- function getAvailability(req, clusters, odinPath) {
26
- var url = "".concat(odinPath, "/is_alive");
27
- return axios.request({
28
- url: url,
29
- responseType: 'json'
30
- }).then(function (res) {
31
- if (res.data !== true) {
24
+ function getAvailability(req, clusters) {
25
+ var odinBaseUrl = req.ctx.config.odinBaseUrl;
26
+ var isMultiOdinBaseUrl = 'string' !== typeof odinBaseUrl;
27
+ var makeOdinIsAliveUrl = function makeOdinIsAliveUrl(odinBaseUrl) {
28
+ return "".concat(odinBaseUrl, "/is_alive");
29
+ };
30
+ var commonIsAlive = isMultiOdinBaseUrl ? Promise.resolve({
31
+ data: true
32
+ }) : axios.request({
33
+ url: makeOdinIsAliveUrl(odinBaseUrl)
34
+ });
35
+ return commonIsAlive.then(function (_ref) {
36
+ var commonAlive = _ref.data;
37
+ if (!commonAlive) {
32
38
  return [];
33
39
  }
34
40
  return Promise.all(_map(clusters, function (clusterConfig) {
35
- var id = clusterConfig.id;
36
- return getClusterAvailability(clusterConfig, odinPath).then(function (availability) {
37
- return {
38
- id: id,
39
- availability: availability
40
- };
41
- })["catch"](function (error) {
42
- req.ctx.logError('getAvailability error', error);
41
+ var odinPath = isMultiOdinBaseUrl ? odinBaseUrl === null || odinBaseUrl === void 0 ? void 0 : odinBaseUrl[clusterConfig.id] : odinBaseUrl;
42
+ if (!odinPath) {
43
+ return {};
44
+ }
45
+ var alive = isMultiOdinBaseUrl ? axios.get(makeOdinIsAliveUrl(odinPath))["catch"](function (e) {
46
+ req.ctx.logError("Error of getting ".concat(odinPath), e);
43
47
  return {
44
- id: id
48
+ data: false
45
49
  };
50
+ }) : Promise.resolve({
51
+ data: true
52
+ });
53
+ return alive.then(function (_ref2) {
54
+ var data = _ref2.data;
55
+ if (data != true) {
56
+ return {};
57
+ }
58
+ return getClusterAvailability(clusterConfig, odinPath).then(function (availability) {
59
+ return {
60
+ id: clusterConfig.id,
61
+ availability: availability
62
+ };
63
+ })["catch"](function (error) {
64
+ req.ctx.logError('getAvailability error', error);
65
+ return {};
66
+ });
46
67
  });
47
68
  }));
48
69
  })["catch"](function (e) {
49
- req.ctx.logError("Error of getting ".concat(url), e);
70
+ req.ctx.logError("Error of getting ".concat(odinBaseUrl), e);
50
71
  return [];
51
72
  });
52
73
  }
@@ -55,13 +76,12 @@ export function getClustersAvailability(_x, _x2) {
55
76
  }
56
77
  function _getClustersAvailability() {
57
78
  _getClustersAvailability = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(req, res) {
58
- var _getApp$config;
59
- var odinPath, clusters;
79
+ var odinBaseUrl, clusters;
60
80
  return _regeneratorRuntime.wrap(function _callee$(_context) {
61
81
  while (1) switch (_context.prev = _context.next) {
62
82
  case 0:
63
- odinPath = (_getApp$config = getApp().config) === null || _getApp$config === void 0 ? void 0 : _getApp$config.odinBaseUrl;
64
- if (odinPath) {
83
+ odinBaseUrl = req.ctx.config.odinBaseUrl;
84
+ if (odinBaseUrl) {
65
85
  _context.next = 4;
66
86
  break;
67
87
  }
@@ -70,7 +90,7 @@ function _getClustersAvailability() {
70
90
  case 4:
71
91
  clusters = getClustersFromConfig();
72
92
  _context.next = 7;
73
- return getAvailability(req, clusters, odinPath).then(function (data) {
93
+ return getAvailability(req, clusters).then(function (data) {
74
94
  return sendResponse(res, data);
75
95
  })["catch"](function (error) {
76
96
  return sendError(res, error);
@@ -1 +1 @@
1
- {"version":3,"names":["axios","getClustersFromConfig","sendAndLogError","sendError","sendResponse","getApp","getClusterAvailability","clusterConfig","odinPath","ODIN_PERIOD","ODIN_METRIC","TIMEOUT","request","url","id","params","period","target","method","timeout","responseType","then","response","data","getAvailability","req","clusters","concat","res","Promise","all","_map","availability","error","ctx","logError","e","getClustersAvailability","_x","_x2","_getClustersAvailability","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_getApp$config","wrap","_callee$","_context","prev","next","config","odinBaseUrl","Error","abrupt","stop"],"sources":["availability.ts"],"sourcesContent":["import axios, {AxiosResponse} from 'axios';\nimport _ from 'lodash';\nimport type {Request, Response} from '@gravity-ui/expresskit';\nimport {getClustersFromConfig} from '../components/utils';\nimport {sendAndLogError, sendError, sendResponse} from '../utils';\nimport {getApp} from '../ServerFactory';\n\nfunction getClusterAvailability(clusterConfig: {id: string}, odinPath: string) {\n const ODIN_PERIOD = 5;\n const ODIN_METRIC = 'master';\n const TIMEOUT = 15 * 1000;\n\n return axios\n .request({\n url: odinPath + '/availability_stat/' + clusterConfig.id,\n params: {\n period: ODIN_PERIOD,\n target: ODIN_METRIC,\n },\n method: 'GET',\n timeout: TIMEOUT,\n responseType: 'json',\n })\n .then((response: AxiosResponse<1 | undefined>) => {\n return response.data;\n });\n}\n\nfunction getAvailability(req: Request, clusters: Record<string, {id: string}>, odinPath: string) {\n const url = `${odinPath}/is_alive`;\n return axios\n .request({url, responseType: 'json'})\n .then((res) => {\n if (res.data !== true) {\n return [];\n }\n return Promise.all(\n _.map(clusters, (clusterConfig) => {\n const id = clusterConfig.id;\n return getClusterAvailability(clusterConfig, odinPath)\n .then((availability) => ({id, availability}))\n .catch((error) => {\n req.ctx.logError('getAvailability error', error);\n return {id};\n });\n }),\n );\n })\n .catch((e) => {\n req.ctx.logError(`Error of getting ${url}`, e);\n return [];\n });\n}\n\nexport async function getClustersAvailability(req: Request, res: Response) {\n const odinPath = getApp().config?.odinBaseUrl;\n if (!odinPath) {\n sendAndLogError(req.ctx, res, 500, new Error('odin base url is not configured'));\n return;\n }\n const clusters = getClustersFromConfig();\n\n await getAvailability(req, clusters, odinPath)\n .then((data: object) => sendResponse(res, data))\n .catch((error) => sendError(res, error));\n}\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAuB,OAAO;AAG1C,SAAQC,qBAAqB,QAAO,qBAAqB;AACzD,SAAQC,eAAe,EAAEC,SAAS,EAAEC,YAAY,QAAO,UAAU;AACjE,SAAQC,MAAM,QAAO,kBAAkB;AAEvC,SAASC,sBAAsBA,CAACC,aAA2B,EAAEC,QAAgB,EAAE;EAC3E,IAAMC,WAAW,GAAG,CAAC;EACrB,IAAMC,WAAW,GAAG,QAAQ;EAC5B,IAAMC,OAAO,GAAG,EAAE,GAAG,IAAI;EAEzB,OAAOX,KAAK,CACPY,OAAO,CAAC;IACLC,GAAG,EAAEL,QAAQ,GAAG,qBAAqB,GAAGD,aAAa,CAACO,EAAE;IACxDC,MAAM,EAAE;MACJC,MAAM,EAAEP,WAAW;MACnBQ,MAAM,EAAEP;IACZ,CAAC;IACDQ,MAAM,EAAE,KAAK;IACbC,OAAO,EAAER,OAAO;IAChBS,YAAY,EAAE;EAClB,CAAC,CAAC,CACDC,IAAI,CAAC,UAACC,QAAsC,EAAK;IAC9C,OAAOA,QAAQ,CAACC,IAAI;EACxB,CAAC,CAAC;AACV;AAEA,SAASC,eAAeA,CAACC,GAAY,EAAEC,QAAsC,EAAElB,QAAgB,EAAE;EAC7F,IAAMK,GAAG,MAAAc,MAAA,CAAMnB,QAAQ,cAAW;EAClC,OAAOR,KAAK,CACPY,OAAO,CAAC;IAACC,GAAG,EAAHA,GAAG;IAAEO,YAAY,EAAE;EAAM,CAAC,CAAC,CACpCC,IAAI,CAAC,UAACO,GAAG,EAAK;IACX,IAAIA,GAAG,CAACL,IAAI,KAAK,IAAI,EAAE;MACnB,OAAO,EAAE;IACb;IACA,OAAOM,OAAO,CAACC,GAAG,CACdC,IAAA,CAAML,QAAQ,EAAE,UAACnB,aAAa,EAAK;MAC/B,IAAMO,EAAE,GAAGP,aAAa,CAACO,EAAE;MAC3B,OAAOR,sBAAsB,CAACC,aAAa,EAAEC,QAAQ,CAAC,CACjDa,IAAI,CAAC,UAACW,YAAY;QAAA,OAAM;UAAClB,EAAE,EAAFA,EAAE;UAAEkB,YAAY,EAAZA;QAAY,CAAC;MAAA,CAAC,CAAC,SACvC,CAAC,UAACC,KAAK,EAAK;QACdR,GAAG,CAACS,GAAG,CAACC,QAAQ,CAAC,uBAAuB,EAAEF,KAAK,CAAC;QAChD,OAAO;UAACnB,EAAE,EAAFA;QAAE,CAAC;MACf,CAAC,CAAC;IACV,CAAC,CACL,CAAC;EACL,CAAC,CAAC,SACI,CAAC,UAACsB,CAAC,EAAK;IACVX,GAAG,CAACS,GAAG,CAACC,QAAQ,qBAAAR,MAAA,CAAqBd,GAAG,GAAIuB,CAAC,CAAC;IAC9C,OAAO,EAAE;EACb,CAAC,CAAC;AACV;AAEA,gBAAsBC,uBAAuBA,CAAAC,EAAA,EAAAC,GAAA;EAAA,OAAAC,wBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAW5C,SAAAF,yBAAA;EAAAA,wBAAA,GAAAG,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,CAXM,SAAAC,QAAuCrB,GAAY,EAAEG,GAAa;IAAA,IAAAmB,cAAA;IAAA,IAAAvC,QAAA,EAAAkB,QAAA;IAAA,OAAAkB,mBAAA,CAAAI,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAC/D5C,QAAQ,IAAAuC,cAAA,GAAG1C,MAAM,CAAC,CAAC,CAACgD,MAAM,cAAAN,cAAA,uBAAfA,cAAA,CAAiBO,WAAW;UAAA,IACxC9C,QAAQ;YAAA0C,QAAA,CAAAE,IAAA;YAAA;UAAA;UACTlD,eAAe,CAACuB,GAAG,CAACS,GAAG,EAAEN,GAAG,EAAE,GAAG,EAAE,IAAI2B,KAAK,CAAC,iCAAiC,CAAC,CAAC;UAAC,OAAAL,QAAA,CAAAM,MAAA;QAAA;UAG/E9B,QAAQ,GAAGzB,qBAAqB,CAAC,CAAC;UAAAiD,QAAA,CAAAE,IAAA;UAAA,OAElC5B,eAAe,CAACC,GAAG,EAAEC,QAAQ,EAAElB,QAAQ,CAAC,CACzCa,IAAI,CAAC,UAACE,IAAY;YAAA,OAAKnB,YAAY,CAACwB,GAAG,EAAEL,IAAI,CAAC;UAAA,EAAC,SAC1C,CAAC,UAACU,KAAK;YAAA,OAAK9B,SAAS,CAACyB,GAAG,EAAEK,KAAK,CAAC;UAAA,EAAC;QAAA;QAAA;UAAA,OAAAiB,QAAA,CAAAO,IAAA;MAAA;IAAA,GAAAX,OAAA;EAAA,CAC/C;EAAA,OAAAN,wBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
1
+ {"version":3,"names":["axios","getClustersFromConfig","sendAndLogError","sendError","sendResponse","getClusterAvailability","clusterConfig","odinPath","ODIN_PERIOD","ODIN_METRIC","TIMEOUT","request","url","id","params","period","target","method","timeout","responseType","then","response","data","getAvailability","req","clusters","odinBaseUrl","ctx","config","isMultiOdinBaseUrl","makeOdinIsAliveUrl","concat","commonIsAlive","Promise","resolve","_ref","commonAlive","all","_map","alive","get","e","logError","_ref2","availability","error","getClustersAvailability","_x","_x2","_getClustersAvailability","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","res","wrap","_callee$","_context","prev","next","Error","abrupt","stop"],"sources":["availability.ts"],"sourcesContent":["import axios, {AxiosResponse} from 'axios';\nimport _ from 'lodash';\nimport type {Request, Response} from '@gravity-ui/expresskit';\nimport {getClustersFromConfig} from '../components/utils';\nimport {sendAndLogError, sendError, sendResponse} from '../utils';\n\nfunction getClusterAvailability(clusterConfig: {id: string}, odinPath: string) {\n const ODIN_PERIOD = 5;\n const ODIN_METRIC = 'master';\n const TIMEOUT = 15 * 1000;\n\n return axios\n .request({\n url: odinPath + '/availability_stat/' + clusterConfig.id,\n params: {\n period: ODIN_PERIOD,\n target: ODIN_METRIC,\n },\n method: 'GET',\n timeout: TIMEOUT,\n responseType: 'json',\n })\n .then((response: AxiosResponse<1 | undefined>) => {\n return response.data;\n });\n}\n\nfunction getAvailability(req: Request, clusters: Record<string, {id: string}>) {\n const odinBaseUrl = req.ctx.config.odinBaseUrl;\n const isMultiOdinBaseUrl = 'string' !== typeof odinBaseUrl;\n const makeOdinIsAliveUrl = (odinBaseUrl: string) => `${odinBaseUrl}/is_alive`;\n\n const commonIsAlive = isMultiOdinBaseUrl\n ? Promise.resolve({data: true})\n : axios.request({url: makeOdinIsAliveUrl(odinBaseUrl)});\n\n return commonIsAlive\n .then(({data: commonAlive}) => {\n if (!commonAlive) {\n return [];\n }\n\n return Promise.all(\n _.map(clusters, (clusterConfig) => {\n const odinPath = isMultiOdinBaseUrl\n ? odinBaseUrl?.[clusterConfig.id]\n : odinBaseUrl;\n\n if (!odinPath) {\n return {};\n }\n\n const alive = isMultiOdinBaseUrl\n ? axios.get(makeOdinIsAliveUrl(odinPath)).catch((e) => {\n req.ctx.logError(`Error of getting ${odinPath}`, e);\n return {data: false};\n })\n : Promise.resolve({data: true});\n\n return alive.then(({data}) => {\n if (data != true) {\n return {};\n }\n\n return getClusterAvailability(clusterConfig, odinPath)\n .then((availability) => ({id: clusterConfig.id, availability}))\n .catch((error) => {\n req.ctx.logError('getAvailability error', error);\n return {};\n });\n });\n }),\n );\n })\n .catch((e) => {\n req.ctx.logError(`Error of getting ${odinBaseUrl}`, e);\n return [];\n });\n}\n\nexport async function getClustersAvailability(req: Request, res: Response) {\n const odinBaseUrl = req.ctx.config.odinBaseUrl;\n\n if (!odinBaseUrl) {\n sendAndLogError(req.ctx, res, 500, new Error('odin base url is not configured'));\n return;\n }\n const clusters = getClustersFromConfig();\n\n await getAvailability(req, clusters)\n .then((data: object) => sendResponse(res, data))\n .catch((error) => sendError(res, error));\n}\n"],"mappings":"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"}
@@ -6,7 +6,6 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
6
6
  import axios from 'axios';
7
7
  import qs from 'qs';
8
8
  import { UNEXPECTED_PIPE_AXIOS_RESPONSE, pipeAxiosResponse, sendAndLogError } from '../utils';
9
- import { getApp } from '../ServerFactory';
10
9
  export function odinProxyApi(_x, _x2) {
11
10
  return _odinProxyApi.apply(this, arguments);
12
11
  }
@@ -43,32 +42,32 @@ function odinProxyApiImpl(_x3, _x4) {
43
42
  }
44
43
  function _odinProxyApiImpl() {
45
44
  _odinProxyApiImpl = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(req, res) {
46
- var _getApp$config;
47
- var odinPath, ctx, query, search, _req$params, action, cluster, allowedActionsUrls, url;
45
+ var _req$params, action, cluster, odinBaseUrl, odinPath, ctx, query, search, allowedActionsUrls, url;
48
46
  return _regeneratorRuntime.wrap(function _callee3$(_context3) {
49
47
  while (1) switch (_context3.prev = _context3.next) {
50
48
  case 0:
51
- odinPath = (_getApp$config = getApp().config) === null || _getApp$config === void 0 ? void 0 : _getApp$config.odinBaseUrl;
49
+ _req$params = req.params, action = _req$params.action, cluster = _req$params.ytAuthCluster;
50
+ odinBaseUrl = req.ctx.config.odinBaseUrl;
51
+ odinPath = typeof odinBaseUrl === 'string' ? odinBaseUrl : odinBaseUrl === null || odinBaseUrl === void 0 ? void 0 : odinBaseUrl[cluster];
52
52
  if (odinPath) {
53
- _context3.next = 3;
53
+ _context3.next = 5;
54
54
  break;
55
55
  }
56
56
  return _context3.abrupt("return", sendAndLogError(req.ctx, res, 500, new Error('Odin base url is not configured')));
57
- case 3:
57
+ case 5:
58
58
  ctx = req.ctx, query = req.query;
59
59
  search = _isEmpty(query) ? '' : "?".concat(qs.stringify(query));
60
- _req$params = req.params, action = _req$params.action, cluster = _req$params.ytAuthCluster;
61
60
  allowedActionsUrls = {
62
61
  service_list: "".concat(odinPath, "/service_list"),
63
62
  exists: "".concat(odinPath, "/").concat(action, "/").concat(cluster),
64
63
  availability: "".concat(odinPath, "/").concat(action, "/").concat(cluster).concat(search)
65
64
  };
66
65
  if (_has(allowedActionsUrls, action)) {
67
- _context3.next = 9;
66
+ _context3.next = 10;
68
67
  break;
69
68
  }
70
69
  return _context3.abrupt("return", sendAndLogError(req.ctx, res, 400, new Error("Odin action - ".concat(action, ", is not supported"))));
71
- case 9:
70
+ case 10:
72
71
  url = allowedActionsUrls[action];
73
72
  return _context3.abrupt("return", axios.request({
74
73
  url: url,
@@ -104,7 +103,7 @@ function _odinProxyApiImpl() {
104
103
  return _ref.apply(this, arguments);
105
104
  };
106
105
  }()));
107
- case 11:
106
+ case 12:
108
107
  case "end":
109
108
  return _context3.stop();
110
109
  }
@@ -1 +1 @@
1
- {"version":3,"names":["axios","qs","UNEXPECTED_PIPE_AXIOS_RESPONSE","pipeAxiosResponse","sendAndLogError","getApp","odinProxyApi","_x","_x2","_odinProxyApi","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","wrap","_callee$","_context","prev","next","odinProxyApiImpl","t0","ctx","method","query","page","headers","referer","stop","_x3","_x4","_odinProxyApiImpl","_callee3","_getApp$config","odinPath","search","_req$params","action","cluster","allowedActionsUrls","url","_callee3$","_context3","config","odinBaseUrl","abrupt","Error","_isEmpty","concat","stringify","params","ytAuthCluster","service_list","exists","availability","_has","request","_objectSpread","getMetadata","data","body","timeout","responseType","then","_ref","_callee2","response","pipedSize","_callee2$","_context2","sent","_x5"],"sources":["odin-proxy-api.ts"],"sourcesContent":["import _ from 'lodash';\nimport axios from 'axios';\nimport qs from 'qs';\n\nimport type {Request, Response} from 'express';\nimport {UNEXPECTED_PIPE_AXIOS_RESPONSE, pipeAxiosResponse, sendAndLogError} from '../utils';\nimport {getApp} from '../ServerFactory';\n\nexport async function odinProxyApi(req: Request, res: Response) {\n try {\n await odinProxyApiImpl(req, res);\n } catch (e: any) {\n await sendAndLogError(req.ctx, res, 500, e, {\n method: 'nodejs',\n query: req.query,\n page: req.headers.referer,\n });\n }\n}\n\nasync function odinProxyApiImpl(req: Request, res: Response) {\n const odinPath = getApp().config?.odinBaseUrl;\n if (!odinPath) {\n return sendAndLogError(req.ctx, res, 500, new Error('Odin base url is not configured'));\n }\n const {ctx, query} = req;\n\n const search = _.isEmpty(query) ? '' : `?${qs.stringify(query)}`;\n const {action, ytAuthCluster: cluster} = req.params;\n\n const allowedActionsUrls: Record<string, string> = {\n service_list: `${odinPath}/service_list`,\n exists: `${odinPath}/${action}/${cluster}`,\n availability: `${odinPath}/${action}/${cluster}${search}`,\n };\n\n if (!_.has(allowedActionsUrls, action)) {\n return sendAndLogError(\n req.ctx,\n res,\n 400,\n new Error(`Odin action - ${action}, is not supported`),\n );\n }\n\n const url = allowedActionsUrls[action];\n\n return axios\n .request({\n url: url,\n method: req.method as any,\n headers: {...ctx.getMetadata(), 'accept-encoding': 'gzip'},\n data: req.body,\n timeout: 100000,\n responseType: 'stream',\n })\n .then(async (response) => {\n const pipedSize = await pipeAxiosResponse(ctx, res, response);\n if (!pipedSize) {\n throw new Error(UNEXPECTED_PIPE_AXIOS_RESPONSE);\n }\n });\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["axios","qs","UNEXPECTED_PIPE_AXIOS_RESPONSE","pipeAxiosResponse","sendAndLogError","odinProxyApi","_x","_x2","_odinProxyApi","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","wrap","_callee$","_context","prev","next","odinProxyApiImpl","t0","ctx","method","query","page","headers","referer","stop","_x3","_x4","_odinProxyApiImpl","_callee3","_req$params","action","cluster","odinBaseUrl","odinPath","search","allowedActionsUrls","url","_callee3$","_context3","params","ytAuthCluster","config","abrupt","Error","_isEmpty","concat","stringify","service_list","exists","availability","_has","request","_objectSpread","getMetadata","data","body","timeout","responseType","then","_ref","_callee2","response","pipedSize","_callee2$","_context2","sent","_x5"],"sources":["odin-proxy-api.ts"],"sourcesContent":["import _ from 'lodash';\nimport axios from 'axios';\nimport qs from 'qs';\n\nimport type {Request, Response} from 'express';\nimport {UNEXPECTED_PIPE_AXIOS_RESPONSE, pipeAxiosResponse, sendAndLogError} from '../utils';\n\nexport async function odinProxyApi(req: Request, res: Response) {\n try {\n await odinProxyApiImpl(req, res);\n } catch (e: any) {\n await sendAndLogError(req.ctx, res, 500, e, {\n method: 'nodejs',\n query: req.query,\n page: req.headers.referer,\n });\n }\n}\n\nasync function odinProxyApiImpl(req: Request, res: Response) {\n const {action, ytAuthCluster: cluster} = req.params;\n const {odinBaseUrl} = req.ctx.config;\n const odinPath = typeof odinBaseUrl === 'string' ? odinBaseUrl : odinBaseUrl?.[cluster];\n\n if (!odinPath) {\n return sendAndLogError(req.ctx, res, 500, new Error('Odin base url is not configured'));\n }\n const {ctx, query} = req;\n\n const search = _.isEmpty(query) ? '' : `?${qs.stringify(query)}`;\n\n const allowedActionsUrls: Record<string, string> = {\n service_list: `${odinPath}/service_list`,\n exists: `${odinPath}/${action}/${cluster}`,\n availability: `${odinPath}/${action}/${cluster}${search}`,\n };\n\n if (!_.has(allowedActionsUrls, action)) {\n return sendAndLogError(\n req.ctx,\n res,\n 400,\n new Error(`Odin action - ${action}, is not supported`),\n );\n }\n\n const url = allowedActionsUrls[action];\n\n return axios\n .request({\n url: url,\n method: req.method as any,\n headers: {...ctx.getMetadata(), 'accept-encoding': 'gzip'},\n data: req.body,\n timeout: 100000,\n responseType: 'stream',\n })\n .then(async (response) => {\n const pipedSize = await pipeAxiosResponse(ctx, res, response);\n if (!pipedSize) {\n throw new Error(UNEXPECTED_PIPE_AXIOS_RESPONSE);\n }\n });\n}\n"],"mappings":"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"}
@@ -9,6 +9,7 @@ import routes from './routes';
9
9
  import { createOAuthAuthorizationResolver } from './middlewares/oauth';
10
10
  import { createAuthMiddleware } from './middlewares/authorization';
11
11
  import { authorizationResolver } from './utils/authorization';
12
+ import { createConfigurationErrorsMidleware } from './middlewares/check-configuration';
12
13
  var nodekit = new NodeKit({
13
14
  configsPath: path.resolve(__dirname, './configs')
14
15
  });
@@ -38,6 +39,10 @@ if (authMiddlewares.length) {
38
39
  nodekit.config.appAuthHandler = createAuthMiddleware();
39
40
  }
40
41
  (_nodekit$config$adjus = (_nodekit$config3 = nodekit.config).adjustAppConfig) === null || _nodekit$config$adjus === void 0 || _nodekit$config$adjus.call(_nodekit$config3, nodekit);
42
+ var configurationErrors = createConfigurationErrorsMidleware(nodekit.config);
43
+ if (configurationErrors) {
44
+ nodekit.config.appBeforeAuthMiddleware = [configurationErrors];
45
+ }
41
46
  var app = new ExpressKit(nodekit, routes);
42
47
  configureApp(app);
43
48
  if (require.main === module) {
@@ -1 +1 @@
1
- {"version":3,"names":["path","NodeKit","ExpressKit","configureApp","createYTAuthorizationResolver","routes","createOAuthAuthorizationResolver","createAuthMiddleware","authorizationResolver","nodekit","configsPath","resolve","__dirname","_nodekit$config","config","appName","appEnv","appInstallation","appDevMode","ctx","log","_nodekit$config2","allowPasswordAuth","ytOAuthSettings","authMiddlewares","push","length","appBeforeAuthMiddleware","concat","_toConsumableArray","appAuthHandler","_nodekit$config$adjus","_nodekit$config3","adjustAppConfig","call","app","require","main","module","run"],"sources":["index.ts"],"sourcesContent":["import path from 'path';\nimport _reduce from 'lodash/reduce';\nimport {NodeKit} from '@gravity-ui/nodekit';\nimport {ExpressKit} from '@gravity-ui/expresskit';\n\nimport {configureApp} from './configure-app';\n\nimport {createYTAuthorizationResolver} from './middlewares/yt-auth';\nimport routes from './routes';\nimport {createOAuthAuthorizationResolver} from './middlewares/oauth';\nimport {createAuthMiddleware} from './middlewares/authorization';\nimport {authorizationResolver} from './utils/authorization';\n\nconst nodekit = new NodeKit({configsPath: path.resolve(__dirname, './configs')});\n\nconst {appName, appEnv, appInstallation, appDevMode} = nodekit.config;\nnodekit.ctx.log('AppConfig details', {\n appName,\n appEnv,\n appInstallation,\n appDevMode,\n});\n\nconst {allowPasswordAuth, ytOAuthSettings} = nodekit.config;\n\nconst authMiddlewares = [];\n\nif (ytOAuthSettings) {\n authMiddlewares.push(authorizationResolver(createOAuthAuthorizationResolver()));\n}\n\nif (allowPasswordAuth) {\n authMiddlewares.push(authorizationResolver(createYTAuthorizationResolver()));\n}\n\nif (authMiddlewares.length) {\n nodekit.config.appBeforeAuthMiddleware = [\n ...(nodekit.config.appBeforeAuthMiddleware || []),\n ...authMiddlewares,\n ];\n\n nodekit.config.appAuthHandler = createAuthMiddleware();\n}\n\nnodekit.config.adjustAppConfig?.(nodekit);\n\nconst app = new ExpressKit(nodekit, routes);\nconfigureApp(app);\n\nif (require.main === module) {\n app.run();\n}\n\nexport default app;\n"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,MAAM;AAEvB,SAAQC,OAAO,QAAO,qBAAqB;AAC3C,SAAQC,UAAU,QAAO,wBAAwB;AAEjD,SAAQC,YAAY,QAAO,iBAAiB;AAE5C,SAAQC,6BAA6B,QAAO,uBAAuB;AACnE,OAAOC,MAAM,MAAM,UAAU;AAC7B,SAAQC,gCAAgC,QAAO,qBAAqB;AACpE,SAAQC,oBAAoB,QAAO,6BAA6B;AAChE,SAAQC,qBAAqB,QAAO,uBAAuB;AAE3D,IAAMC,OAAO,GAAG,IAAIR,OAAO,CAAC;EAACS,WAAW,EAAEV,IAAI,CAACW,OAAO,CAACC,SAAS,EAAE,WAAW;AAAC,CAAC,CAAC;AAEhF,IAAAC,eAAA,GAAuDJ,OAAO,CAACK,MAAM;EAA9DC,OAAO,GAAAF,eAAA,CAAPE,OAAO;EAAEC,MAAM,GAAAH,eAAA,CAANG,MAAM;EAAEC,eAAe,GAAAJ,eAAA,CAAfI,eAAe;EAAEC,UAAU,GAAAL,eAAA,CAAVK,UAAU;AACnDT,OAAO,CAACU,GAAG,CAACC,GAAG,CAAC,mBAAmB,EAAE;EACjCL,OAAO,EAAPA,OAAO;EACPC,MAAM,EAANA,MAAM;EACNC,eAAe,EAAfA,eAAe;EACfC,UAAU,EAAVA;AACJ,CAAC,CAAC;AAEF,IAAAG,gBAAA,GAA6CZ,OAAO,CAACK,MAAM;EAApDQ,iBAAiB,GAAAD,gBAAA,CAAjBC,iBAAiB;EAAEC,eAAe,GAAAF,gBAAA,CAAfE,eAAe;AAEzC,IAAMC,eAAe,GAAG,EAAE;AAE1B,IAAID,eAAe,EAAE;EACjBC,eAAe,CAACC,IAAI,CAACjB,qBAAqB,CAACF,gCAAgC,CAAC,CAAC,CAAC,CAAC;AACnF;AAEA,IAAIgB,iBAAiB,EAAE;EACnBE,eAAe,CAACC,IAAI,CAACjB,qBAAqB,CAACJ,6BAA6B,CAAC,CAAC,CAAC,CAAC;AAChF;AAEA,IAAIoB,eAAe,CAACE,MAAM,EAAE;EACxBjB,OAAO,CAACK,MAAM,CAACa,uBAAuB,MAAAC,MAAA,CAAAC,kBAAA,CAC9BpB,OAAO,CAACK,MAAM,CAACa,uBAAuB,IAAI,EAAE,GAC7CH,eAAe,CACrB;EAEDf,OAAO,CAACK,MAAM,CAACgB,cAAc,GAAGvB,oBAAoB,CAAC,CAAC;AAC1D;AAEA,CAAAwB,qBAAA,IAAAC,gBAAA,GAAAvB,OAAO,CAACK,MAAM,EAACmB,eAAe,cAAAF,qBAAA,eAA9BA,qBAAA,CAAAG,IAAA,CAAAF,gBAAA,EAAiCvB,OAAO,CAAC;AAEzC,IAAM0B,GAAG,GAAG,IAAIjC,UAAU,CAACO,OAAO,EAAEJ,MAAM,CAAC;AAC3CF,YAAY,CAACgC,GAAG,CAAC;AAEjB,IAAIC,OAAO,CAACC,IAAI,KAAKC,MAAM,EAAE;EACzBH,GAAG,CAACI,GAAG,CAAC,CAAC;AACb;AAEA,eAAeJ,GAAG"}
1
+ {"version":3,"names":["path","NodeKit","ExpressKit","configureApp","createYTAuthorizationResolver","routes","createOAuthAuthorizationResolver","createAuthMiddleware","authorizationResolver","createConfigurationErrorsMidleware","nodekit","configsPath","resolve","__dirname","_nodekit$config","config","appName","appEnv","appInstallation","appDevMode","ctx","log","_nodekit$config2","allowPasswordAuth","ytOAuthSettings","authMiddlewares","push","length","appBeforeAuthMiddleware","concat","_toConsumableArray","appAuthHandler","_nodekit$config$adjus","_nodekit$config3","adjustAppConfig","call","configurationErrors","app","require","main","module","run"],"sources":["index.ts"],"sourcesContent":["import path from 'path';\nimport {NodeKit} from '@gravity-ui/nodekit';\nimport {ExpressKit} from '@gravity-ui/expresskit';\n\nimport {configureApp} from './configure-app';\n\nimport {createYTAuthorizationResolver} from './middlewares/yt-auth';\nimport routes from './routes';\nimport {createOAuthAuthorizationResolver} from './middlewares/oauth';\nimport {createAuthMiddleware} from './middlewares/authorization';\nimport {authorizationResolver} from './utils/authorization';\nimport {createConfigurationErrorsMidleware} from './middlewares/check-configuration';\n\nconst nodekit = new NodeKit({configsPath: path.resolve(__dirname, './configs')});\n\nconst {appName, appEnv, appInstallation, appDevMode} = nodekit.config;\nnodekit.ctx.log('AppConfig details', {\n appName,\n appEnv,\n appInstallation,\n appDevMode,\n});\n\nconst {allowPasswordAuth, ytOAuthSettings} = nodekit.config;\n\nconst authMiddlewares = [];\n\nif (ytOAuthSettings) {\n authMiddlewares.push(authorizationResolver(createOAuthAuthorizationResolver()));\n}\n\nif (allowPasswordAuth) {\n authMiddlewares.push(authorizationResolver(createYTAuthorizationResolver()));\n}\n\nif (authMiddlewares.length) {\n nodekit.config.appBeforeAuthMiddleware = [\n ...(nodekit.config.appBeforeAuthMiddleware || []),\n ...authMiddlewares,\n ];\n\n nodekit.config.appAuthHandler = createAuthMiddleware();\n}\n\nnodekit.config.adjustAppConfig?.(nodekit);\n\nconst configurationErrors = createConfigurationErrorsMidleware(nodekit.config);\nif (configurationErrors) {\n nodekit.config.appBeforeAuthMiddleware = [configurationErrors];\n}\n\nconst app = new ExpressKit(nodekit, routes);\nconfigureApp(app);\n\nif (require.main === module) {\n app.run();\n}\n\nexport default app;\n"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,MAAM;AACvB,SAAQC,OAAO,QAAO,qBAAqB;AAC3C,SAAQC,UAAU,QAAO,wBAAwB;AAEjD,SAAQC,YAAY,QAAO,iBAAiB;AAE5C,SAAQC,6BAA6B,QAAO,uBAAuB;AACnE,OAAOC,MAAM,MAAM,UAAU;AAC7B,SAAQC,gCAAgC,QAAO,qBAAqB;AACpE,SAAQC,oBAAoB,QAAO,6BAA6B;AAChE,SAAQC,qBAAqB,QAAO,uBAAuB;AAC3D,SAAQC,kCAAkC,QAAO,mCAAmC;AAEpF,IAAMC,OAAO,GAAG,IAAIT,OAAO,CAAC;EAACU,WAAW,EAAEX,IAAI,CAACY,OAAO,CAACC,SAAS,EAAE,WAAW;AAAC,CAAC,CAAC;AAEhF,IAAAC,eAAA,GAAuDJ,OAAO,CAACK,MAAM;EAA9DC,OAAO,GAAAF,eAAA,CAAPE,OAAO;EAAEC,MAAM,GAAAH,eAAA,CAANG,MAAM;EAAEC,eAAe,GAAAJ,eAAA,CAAfI,eAAe;EAAEC,UAAU,GAAAL,eAAA,CAAVK,UAAU;AACnDT,OAAO,CAACU,GAAG,CAACC,GAAG,CAAC,mBAAmB,EAAE;EACjCL,OAAO,EAAPA,OAAO;EACPC,MAAM,EAANA,MAAM;EACNC,eAAe,EAAfA,eAAe;EACfC,UAAU,EAAVA;AACJ,CAAC,CAAC;AAEF,IAAAG,gBAAA,GAA6CZ,OAAO,CAACK,MAAM;EAApDQ,iBAAiB,GAAAD,gBAAA,CAAjBC,iBAAiB;EAAEC,eAAe,GAAAF,gBAAA,CAAfE,eAAe;AAEzC,IAAMC,eAAe,GAAG,EAAE;AAE1B,IAAID,eAAe,EAAE;EACjBC,eAAe,CAACC,IAAI,CAAClB,qBAAqB,CAACF,gCAAgC,CAAC,CAAC,CAAC,CAAC;AACnF;AAEA,IAAIiB,iBAAiB,EAAE;EACnBE,eAAe,CAACC,IAAI,CAAClB,qBAAqB,CAACJ,6BAA6B,CAAC,CAAC,CAAC,CAAC;AAChF;AAEA,IAAIqB,eAAe,CAACE,MAAM,EAAE;EACxBjB,OAAO,CAACK,MAAM,CAACa,uBAAuB,MAAAC,MAAA,CAAAC,kBAAA,CAC9BpB,OAAO,CAACK,MAAM,CAACa,uBAAuB,IAAI,EAAE,GAC7CH,eAAe,CACrB;EAEDf,OAAO,CAACK,MAAM,CAACgB,cAAc,GAAGxB,oBAAoB,CAAC,CAAC;AAC1D;AAEA,CAAAyB,qBAAA,IAAAC,gBAAA,GAAAvB,OAAO,CAACK,MAAM,EAACmB,eAAe,cAAAF,qBAAA,eAA9BA,qBAAA,CAAAG,IAAA,CAAAF,gBAAA,EAAiCvB,OAAO,CAAC;AAEzC,IAAM0B,mBAAmB,GAAG3B,kCAAkC,CAACC,OAAO,CAACK,MAAM,CAAC;AAC9E,IAAIqB,mBAAmB,EAAE;EACrB1B,OAAO,CAACK,MAAM,CAACa,uBAAuB,GAAG,CAACQ,mBAAmB,CAAC;AAClE;AAEA,IAAMC,GAAG,GAAG,IAAInC,UAAU,CAACQ,OAAO,EAAEL,MAAM,CAAC;AAC3CF,YAAY,CAACkC,GAAG,CAAC;AAEjB,IAAIC,OAAO,CAACC,IAAI,KAAKC,MAAM,EAAE;EACzBH,GAAG,CAACI,GAAG,CAAC,CAAC;AACb;AAEA,eAAeJ,GAAG"}
@@ -0,0 +1,3 @@
1
+ import { AppMiddleware } from '@gravity-ui/expresskit';
2
+ import { AppConfig } from '@gravity-ui/nodekit';
3
+ export declare function createConfigurationErrorsMidleware(config: AppConfig): AppMiddleware | undefined;
@@ -0,0 +1,20 @@
1
+ function checkConfigurationMiddleware(errors) {
2
+ return function checkConfiguration(_req, res) {
3
+ res.setHeader('Content-Type', 'text/html; charset=utf-8');
4
+ var body = "Please fix the problems below:<br>\n <ol>\n ".concat(errors.map(function (i) {
5
+ return "<li>".concat(i, "</li>");
6
+ }).join('\n'), "\n </ol>\n Please refer to the <a target='_blank' href='https://github.com/ytsaurus/ytsaurus-ui/tree/main/packages/ui#migration'>migration notices<a/> for more details.\n ");
7
+ res.status(500).end(body);
8
+ };
9
+ }
10
+ export function createConfigurationErrorsMidleware(config) {
11
+ var configurationErrors = [];
12
+ if (process.env.YT_AUTH_CLUSTER_ID) {
13
+ configurationErrors.push('The YT_AUTH_CLUSTER_ID environment variable is no longer supported, please replace it with ALLOW_PASSWORD_AUTH');
14
+ }
15
+ if ('ytAuthCluster' in config) {
16
+ configurationErrors.push('The config setting `config.ytAuthCluster` is no longer supported, please replace it with `config.allowPasswordAuth` or use ALLOW_PASSWORD_AUTH environment variable');
17
+ }
18
+ return configurationErrors.length > 0 ? checkConfigurationMiddleware([].concat(configurationErrors)) : undefined;
19
+ }
20
+ // #sourceMappingURL=check-configuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["checkConfigurationMiddleware","errors","checkConfiguration","_req","res","setHeader","body","concat","map","i","join","status","end","createConfigurationErrorsMidleware","config","configurationErrors","process","env","YT_AUTH_CLUSTER_ID","push","length","undefined"],"sources":["check-configuration.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport {AppMiddleware} from '@gravity-ui/expresskit';\nimport {AppConfig} from '@gravity-ui/nodekit';\n\nfunction checkConfigurationMiddleware(errors: Array<string>): AppMiddleware {\n return function checkConfiguration(_req: Request, res: Response) {\n res.setHeader('Content-Type', 'text/html; charset=utf-8');\n const body = `Please fix the problems below:<br>\n <ol>\n ${errors.map((i) => `<li>${i}</li>`).join('\\n')}\n </ol>\n Please refer to the <a target='_blank' href='https://github.com/ytsaurus/ytsaurus-ui/tree/main/packages/ui#migration'>migration notices<a/> for more details.\n `;\n res.status(500).end(body);\n };\n}\n\nexport function createConfigurationErrorsMidleware(config: AppConfig) {\n const configurationErrors: Array<string> = [];\n if (process.env.YT_AUTH_CLUSTER_ID) {\n configurationErrors.push(\n 'The YT_AUTH_CLUSTER_ID environment variable is no longer supported, please replace it with ALLOW_PASSWORD_AUTH',\n );\n }\n\n if ('ytAuthCluster' in config) {\n configurationErrors.push(\n 'The config setting `config.ytAuthCluster` is no longer supported, please replace it with `config.allowPasswordAuth` or use ALLOW_PASSWORD_AUTH environment variable',\n );\n }\n\n return configurationErrors.length > 0\n ? checkConfigurationMiddleware([...configurationErrors])\n : undefined;\n}\n"],"mappings":"AAIA,SAASA,4BAA4BA,CAACC,MAAqB,EAAiB;EACxE,OAAO,SAASC,kBAAkBA,CAACC,IAAa,EAAEC,GAAa,EAAE;IAC7DA,GAAG,CAACC,SAAS,CAAC,cAAc,EAAE,0BAA0B,CAAC;IACzD,IAAMC,IAAI,4EAAAC,MAAA,CAEAN,MAAM,CAACO,GAAG,CAAC,UAACC,CAAC;MAAA,cAAAF,MAAA,CAAYE,CAAC;IAAA,CAAO,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,6MAGtD;IACDN,GAAG,CAACO,MAAM,CAAC,GAAG,CAAC,CAACC,GAAG,CAACN,IAAI,CAAC;EAC7B,CAAC;AACL;AAEA,OAAO,SAASO,kCAAkCA,CAACC,MAAiB,EAAE;EAClE,IAAMC,mBAAkC,GAAG,EAAE;EAC7C,IAAIC,OAAO,CAACC,GAAG,CAACC,kBAAkB,EAAE;IAChCH,mBAAmB,CAACI,IAAI,CACpB,gHACJ,CAAC;EACL;EAEA,IAAI,eAAe,IAAIL,MAAM,EAAE;IAC3BC,mBAAmB,CAACI,IAAI,CACpB,qKACJ,CAAC;EACL;EAEA,OAAOJ,mBAAmB,CAACK,MAAM,GAAG,CAAC,GAC/BpB,4BAA4B,IAAAO,MAAA,CAAKQ,mBAAmB,CAAC,CAAC,GACtDM,SAAS;AACnB"}
@@ -34,7 +34,7 @@ export function fetchOdinOverview(cluster) {
34
34
  }
35
35
  });
36
36
  }
37
- return Utils.listMetrics().then(function (clusterMetrics) {
37
+ return Utils.listMetrics(cluster).then(function (clusterMetrics) {
38
38
  if (getCluterHelper(getState) !== cluster) {
39
39
  return;
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_forEach","_map","Utils","ODIN_OVERVIEW_CANCELLED","ODIN_OVERVIEW_FAILED","ODIN_OVERVIEW_HIDDEN_METRICS","ODIN_OVERVIEW_PARTIAL","ODIN_OVERVIEW_SUCCESS","getOdinLastVisitedTab","getOdinOverviewClusterMetrics","getOdinOverviewData","getOdinOverviewDataCluster","getOdinOverviewDateFrom","getOdinOverviewDateTo","getOdinOverviewHiddenMetrics","getOdinOverviewVisiblePresets","reloadSetting","setSetting","Toaster","showErrorPopup","NAMESPACES","ODIN_LAST_VISITED_TAB","ODIN_VISIBLE_METRIC_PRESETS","YA_NAMESPACES","getCluterHelper","gs","COUNT_OF_MINUTES","fetchOdinOverview","cluster","dispatch","getState","data","_ref","cancel","type","clusterMetrics","dataCluster","listMetrics","then","to","Date","from","getTime","dateFrom","dateTo","hiddenMetrics","forEach","_ref2","name","fetchMetricData","error","isRequestCanceled","Promise","reject","_ref3","getMetric","c","d","_objectSpread","_defineProperty","metricData","prepareAvailabilityData","reloadOdinOverviewMetricData","metricName","state","toggleOdinOverviewMetricVisibility","odinOverviewSetAllMetricsVisible","value","oldHhiddenMetrics","toReload","metrics","_ref4","__","odinOverviewShowCreatePresetDialog","showCreatePresetDialog","odinOverviewAddPreset","isDefault","toHide","ODIN","presets","_toConsumableArray","push","hiddenMetricNames","_","odinOverviewToggleDefaultPreset","_error$response","response","message","add","autoHiding","content","title","actions","label","onClick","odinOverviewSetPresetToRemove","presetToRemove","odinOverviewRemovePreset","oldPresets","filter","item","_error$response2","i","length","_error$response3","odinOverviewSelectPreset","preset","find","oldHiddenMetrics","setOdinLastVisitedTab","tab","current","GLOBAL"],"sources":["odin-overview.ts"],"sourcesContent":["import {ThunkAction} from 'redux-thunk';\nimport _forEach from 'lodash/forEach';\nimport _map from 'lodash/map';\n\nimport Utils from '../odin-utils';\nimport {RootState} from '../../../store/reducers';\nimport {OdinOverviewAction, OdinOverviewState} from '../_reducers/odin-overview';\nimport {\n ODIN_OVERVIEW_CANCELLED,\n ODIN_OVERVIEW_FAILED,\n ODIN_OVERVIEW_HIDDEN_METRICS,\n ODIN_OVERVIEW_PARTIAL,\n ODIN_OVERVIEW_SUCCESS,\n} from '../odin-constants';\nimport {\n getOdinLastVisitedTab,\n getOdinOverviewClusterMetrics,\n getOdinOverviewData,\n getOdinOverviewDataCluster,\n getOdinOverviewDateFrom,\n getOdinOverviewDateTo,\n getOdinOverviewHiddenMetrics,\n getOdinOverviewVisiblePresets,\n} from '../_selectors/odin-overview';\nimport {reloadSetting, setSetting} from '../../../store/actions/settings';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {showErrorPopup} from '../../../utils/utils';\nimport {NAMESPACES} from '../../../../shared/constants/settings';\nimport {ODIN_LAST_VISITED_TAB, ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES} from '../odin-settings';\nimport {OdinRootState} from '../_reducers';\n\ntype OdinOverviewThunkAction = ThunkAction<any, OdinRootState & RootState, any, OdinOverviewAction>;\n\nfunction getCluterHelper(gs: () => OdinRootState) {\n return getOdinOverviewDataCluster(gs());\n}\n\nconst COUNT_OF_MINUTES = 30;\n\nexport function fetchOdinOverview(cluster: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n if (getCluterHelper(getState) !== cluster) {\n const data = getOdinOverviewData(getState());\n _forEach(data, ({cancel}) => {\n if (cancel) {\n cancel();\n }\n });\n dispatch({\n type: ODIN_OVERVIEW_PARTIAL,\n data: {data: {}, clusterMetrics: [], dataCluster: cluster},\n });\n }\n\n return Utils.listMetrics()\n .then((clusterMetrics) => {\n if (getCluterHelper(getState) !== cluster) {\n return;\n }\n\n const to = new Date();\n const from = new Date(to.getTime() - COUNT_OF_MINUTES * 60 * 1000);\n dispatch({\n type: ODIN_OVERVIEW_SUCCESS,\n data: {clusterMetrics, dateFrom: from, dateTo: to},\n });\n\n const hiddenMetrics = getOdinOverviewHiddenMetrics(getState());\n clusterMetrics.forEach(({name}) => {\n if (!hiddenMetrics[name]) {\n dispatch(fetchMetricData(cluster, name, from, to));\n }\n });\n })\n .catch((error) => {\n if (Utils.isRequestCanceled(error)) {\n dispatch({type: ODIN_OVERVIEW_CANCELLED});\n } else {\n dispatch({type: ODIN_OVERVIEW_FAILED, data: error});\n }\n return Promise.reject(error);\n });\n };\n}\n\nexport function fetchMetricData(\n cluster: string,\n name: string,\n from: Date,\n to: Date,\n): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n let {cancel} = getOdinOverviewData(getState())[name] || {};\n if (cancel) {\n cancel();\n }\n\n return Utils.getMetric(cluster, name, from, to, (c) => {\n cancel = c.cancel;\n })\n .then((d) => {\n if (getCluterHelper(getState) !== cluster) {\n return;\n }\n\n const data = {\n ...getOdinOverviewData(getState()),\n [name]: {\n cancel,\n metricData: Utils.prepareAvailabilityData(d, COUNT_OF_MINUTES),\n },\n };\n dispatch({type: ODIN_OVERVIEW_PARTIAL, data: {data}});\n })\n .catch((error) => {\n if (!Utils.isRequestCanceled(error)) {\n const data = {\n ...getOdinOverviewData(getState()),\n [name]: {error},\n };\n dispatch({type: ODIN_OVERVIEW_PARTIAL, data: {data}});\n }\n return Promise.reject(error);\n });\n };\n}\n\nexport function reloadOdinOverviewMetricData(metricName: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getOdinOverviewDataCluster(state);\n const from = getOdinOverviewDateFrom(state);\n const to = getOdinOverviewDateTo(state);\n if (from && to) {\n dispatch(fetchMetricData(cluster, metricName, from, to));\n }\n };\n}\n\nexport function toggleOdinOverviewMetricVisibility(metricName: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const hiddenMetrics = {...getOdinOverviewHiddenMetrics(getState())};\n if (hiddenMetrics[metricName]) {\n delete hiddenMetrics[metricName];\n } else {\n hiddenMetrics[metricName] = true;\n }\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n if (!hiddenMetrics[metricName]) {\n dispatch(reloadOdinOverviewMetricData(metricName));\n }\n };\n}\n\nexport function odinOverviewSetAllMetricsVisible(value: boolean): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const oldHhiddenMetrics = getOdinOverviewHiddenMetrics(state);\n let toReload: Array<string> = [];\n const hiddenMetrics: typeof oldHhiddenMetrics = {};\n if (!value) {\n const metrics = getOdinOverviewClusterMetrics(state);\n metrics.forEach(({name}) => {\n hiddenMetrics[name] = true;\n });\n } else {\n toReload = _map(oldHhiddenMetrics, (__: boolean, name: string) => name);\n }\n\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n\n toReload.forEach((name) => {\n dispatch(reloadOdinOverviewMetricData(name));\n });\n };\n}\n\nexport function odinOverviewShowCreatePresetDialog(\n showCreatePresetDialog: boolean,\n): OdinOverviewAction {\n return {type: ODIN_OVERVIEW_PARTIAL, data: {showCreatePresetDialog}};\n}\n\nexport function odinOverviewAddPreset(name: string, isDefault: boolean): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const toHide = getOdinOverviewHiddenMetrics(getState());\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN)).then(() => {\n const presets = [...getOdinOverviewVisiblePresets(getState())];\n presets.push({\n name,\n hiddenMetricNames: _map(toHide, (_, name) => name),\n });\n return dispatch(setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets))\n .then(() => {\n if (isDefault) {\n return dispatch(odinOverviewToggleDefaultPreset(name));\n }\n })\n .catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'add-preset',\n autoHiding: false,\n type: 'error',\n content: message,\n title: 'Failed to crete preset',\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(data),\n },\n ],\n });\n });\n });\n };\n}\n\nexport function odinOverviewSetPresetToRemove(\n name: OdinOverviewState['presetToRemove'],\n): OdinOverviewThunkAction {\n return (dispatch) => {\n dispatch({\n type: ODIN_OVERVIEW_PARTIAL,\n data: {presetToRemove: name},\n });\n };\n}\n\nexport function odinOverviewRemovePreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN))\n .then(() => {\n const oldPresets = getOdinOverviewVisiblePresets(getState());\n const presets = oldPresets.filter((item) => item.name !== name);\n return dispatch(\n setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets),\n );\n })\n .catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'delete-preset',\n autoHiding: false,\n type: 'error',\n content: message,\n title: 'Failed to delete the preset',\n actions: [{label: ' view', onClick: () => showErrorPopup(data)}],\n });\n });\n };\n}\n\nexport function odinOverviewToggleDefaultPreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN)).then(() => {\n const presets = [...getOdinOverviewVisiblePresets(getState())];\n for (let i = 0; i < presets.length; ++i) {\n const item = presets[i];\n if (item.name === name) {\n presets[i] = {...item, isDefault: !item.isDefault};\n } else if (item.isDefault) {\n presets[i] = {...item};\n delete presets[i]['isDefault'];\n }\n }\n return dispatch(\n setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets),\n ).catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'set-deault-preset',\n autoHiding: false,\n type: 'error',\n content: message,\n title: 'Failed to set the preset as default',\n actions: [{label: ' view', onClick: () => showErrorPopup(data)}],\n });\n });\n });\n };\n}\n\nexport function odinOverviewSelectPreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const presets = getOdinOverviewVisiblePresets(state);\n const preset = presets.find((item) => item.name === name);\n if (preset) {\n const {hiddenMetricNames} = preset;\n const hiddenMetrics: OdinOverviewState['hiddenMetrics'] = {};\n hiddenMetricNames.forEach((name) => {\n hiddenMetrics[name] = true;\n });\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n\n const oldHiddenMetrics = getOdinOverviewHiddenMetrics(state);\n _forEach(oldHiddenMetrics, (_, name) => {\n if (!hiddenMetrics[name]) {\n dispatch(reloadOdinOverviewMetricData(name));\n }\n });\n }\n };\n}\n\nexport function setOdinLastVisitedTab(tab: string): ThunkAction<any, any, RootState, any> {\n return (dispatch, getState) => {\n const current = getOdinLastVisitedTab(getState());\n if (current !== tab) {\n dispatch(setSetting(ODIN_LAST_VISITED_TAB, NAMESPACES.GLOBAL, tab));\n }\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_forEach","_map","Utils","ODIN_OVERVIEW_CANCELLED","ODIN_OVERVIEW_FAILED","ODIN_OVERVIEW_HIDDEN_METRICS","ODIN_OVERVIEW_PARTIAL","ODIN_OVERVIEW_SUCCESS","getOdinLastVisitedTab","getOdinOverviewClusterMetrics","getOdinOverviewData","getOdinOverviewDataCluster","getOdinOverviewDateFrom","getOdinOverviewDateTo","getOdinOverviewHiddenMetrics","getOdinOverviewVisiblePresets","reloadSetting","setSetting","Toaster","showErrorPopup","NAMESPACES","ODIN_LAST_VISITED_TAB","ODIN_VISIBLE_METRIC_PRESETS","YA_NAMESPACES","getCluterHelper","gs","COUNT_OF_MINUTES","fetchOdinOverview","cluster","dispatch","getState","data","_ref","cancel","type","clusterMetrics","dataCluster","listMetrics","then","to","Date","from","getTime","dateFrom","dateTo","hiddenMetrics","forEach","_ref2","name","fetchMetricData","error","isRequestCanceled","Promise","reject","_ref3","getMetric","c","d","_objectSpread","_defineProperty","metricData","prepareAvailabilityData","reloadOdinOverviewMetricData","metricName","state","toggleOdinOverviewMetricVisibility","odinOverviewSetAllMetricsVisible","value","oldHhiddenMetrics","toReload","metrics","_ref4","__","odinOverviewShowCreatePresetDialog","showCreatePresetDialog","odinOverviewAddPreset","isDefault","toHide","ODIN","presets","_toConsumableArray","push","hiddenMetricNames","_","odinOverviewToggleDefaultPreset","_error$response","response","message","add","autoHiding","content","title","actions","label","onClick","odinOverviewSetPresetToRemove","presetToRemove","odinOverviewRemovePreset","oldPresets","filter","item","_error$response2","i","length","_error$response3","odinOverviewSelectPreset","preset","find","oldHiddenMetrics","setOdinLastVisitedTab","tab","current","GLOBAL"],"sources":["odin-overview.ts"],"sourcesContent":["import {ThunkAction} from 'redux-thunk';\nimport _forEach from 'lodash/forEach';\nimport _map from 'lodash/map';\n\nimport Utils from '../odin-utils';\nimport {RootState} from '../../../store/reducers';\nimport {OdinOverviewAction, OdinOverviewState} from '../_reducers/odin-overview';\nimport {\n ODIN_OVERVIEW_CANCELLED,\n ODIN_OVERVIEW_FAILED,\n ODIN_OVERVIEW_HIDDEN_METRICS,\n ODIN_OVERVIEW_PARTIAL,\n ODIN_OVERVIEW_SUCCESS,\n} from '../odin-constants';\nimport {\n getOdinLastVisitedTab,\n getOdinOverviewClusterMetrics,\n getOdinOverviewData,\n getOdinOverviewDataCluster,\n getOdinOverviewDateFrom,\n getOdinOverviewDateTo,\n getOdinOverviewHiddenMetrics,\n getOdinOverviewVisiblePresets,\n} from '../_selectors/odin-overview';\nimport {reloadSetting, setSetting} from '../../../store/actions/settings';\nimport {Toaster} from '@gravity-ui/uikit';\nimport {showErrorPopup} from '../../../utils/utils';\nimport {NAMESPACES} from '../../../../shared/constants/settings';\nimport {ODIN_LAST_VISITED_TAB, ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES} from '../odin-settings';\nimport {OdinRootState} from '../_reducers';\n\ntype OdinOverviewThunkAction = ThunkAction<any, OdinRootState & RootState, any, OdinOverviewAction>;\n\nfunction getCluterHelper(gs: () => OdinRootState) {\n return getOdinOverviewDataCluster(gs());\n}\n\nconst COUNT_OF_MINUTES = 30;\n\nexport function fetchOdinOverview(cluster: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n if (getCluterHelper(getState) !== cluster) {\n const data = getOdinOverviewData(getState());\n _forEach(data, ({cancel}) => {\n if (cancel) {\n cancel();\n }\n });\n dispatch({\n type: ODIN_OVERVIEW_PARTIAL,\n data: {data: {}, clusterMetrics: [], dataCluster: cluster},\n });\n }\n\n return Utils.listMetrics(cluster)\n .then((clusterMetrics) => {\n if (getCluterHelper(getState) !== cluster) {\n return;\n }\n\n const to = new Date();\n const from = new Date(to.getTime() - COUNT_OF_MINUTES * 60 * 1000);\n dispatch({\n type: ODIN_OVERVIEW_SUCCESS,\n data: {clusterMetrics, dateFrom: from, dateTo: to},\n });\n\n const hiddenMetrics = getOdinOverviewHiddenMetrics(getState());\n clusterMetrics.forEach(({name}) => {\n if (!hiddenMetrics[name]) {\n dispatch(fetchMetricData(cluster, name, from, to));\n }\n });\n })\n .catch((error) => {\n if (Utils.isRequestCanceled(error)) {\n dispatch({type: ODIN_OVERVIEW_CANCELLED});\n } else {\n dispatch({type: ODIN_OVERVIEW_FAILED, data: error});\n }\n return Promise.reject(error);\n });\n };\n}\n\nexport function fetchMetricData(\n cluster: string,\n name: string,\n from: Date,\n to: Date,\n): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n let {cancel} = getOdinOverviewData(getState())[name] || {};\n if (cancel) {\n cancel();\n }\n\n return Utils.getMetric(cluster, name, from, to, (c) => {\n cancel = c.cancel;\n })\n .then((d) => {\n if (getCluterHelper(getState) !== cluster) {\n return;\n }\n\n const data = {\n ...getOdinOverviewData(getState()),\n [name]: {\n cancel,\n metricData: Utils.prepareAvailabilityData(d, COUNT_OF_MINUTES),\n },\n };\n dispatch({type: ODIN_OVERVIEW_PARTIAL, data: {data}});\n })\n .catch((error) => {\n if (!Utils.isRequestCanceled(error)) {\n const data = {\n ...getOdinOverviewData(getState()),\n [name]: {error},\n };\n dispatch({type: ODIN_OVERVIEW_PARTIAL, data: {data}});\n }\n return Promise.reject(error);\n });\n };\n}\n\nexport function reloadOdinOverviewMetricData(metricName: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const cluster = getOdinOverviewDataCluster(state);\n const from = getOdinOverviewDateFrom(state);\n const to = getOdinOverviewDateTo(state);\n if (from && to) {\n dispatch(fetchMetricData(cluster, metricName, from, to));\n }\n };\n}\n\nexport function toggleOdinOverviewMetricVisibility(metricName: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const hiddenMetrics = {...getOdinOverviewHiddenMetrics(getState())};\n if (hiddenMetrics[metricName]) {\n delete hiddenMetrics[metricName];\n } else {\n hiddenMetrics[metricName] = true;\n }\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n if (!hiddenMetrics[metricName]) {\n dispatch(reloadOdinOverviewMetricData(metricName));\n }\n };\n}\n\nexport function odinOverviewSetAllMetricsVisible(value: boolean): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const oldHhiddenMetrics = getOdinOverviewHiddenMetrics(state);\n let toReload: Array<string> = [];\n const hiddenMetrics: typeof oldHhiddenMetrics = {};\n if (!value) {\n const metrics = getOdinOverviewClusterMetrics(state);\n metrics.forEach(({name}) => {\n hiddenMetrics[name] = true;\n });\n } else {\n toReload = _map(oldHhiddenMetrics, (__: boolean, name: string) => name);\n }\n\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n\n toReload.forEach((name) => {\n dispatch(reloadOdinOverviewMetricData(name));\n });\n };\n}\n\nexport function odinOverviewShowCreatePresetDialog(\n showCreatePresetDialog: boolean,\n): OdinOverviewAction {\n return {type: ODIN_OVERVIEW_PARTIAL, data: {showCreatePresetDialog}};\n}\n\nexport function odinOverviewAddPreset(name: string, isDefault: boolean): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const toHide = getOdinOverviewHiddenMetrics(getState());\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN)).then(() => {\n const presets = [...getOdinOverviewVisiblePresets(getState())];\n presets.push({\n name,\n hiddenMetricNames: _map(toHide, (_, name) => name),\n });\n return dispatch(setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets))\n .then(() => {\n if (isDefault) {\n return dispatch(odinOverviewToggleDefaultPreset(name));\n }\n })\n .catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'add-preset',\n autoHiding: false,\n type: 'error',\n content: message,\n title: 'Failed to crete preset',\n actions: [\n {\n label: ' view',\n onClick: () => showErrorPopup(data),\n },\n ],\n });\n });\n });\n };\n}\n\nexport function odinOverviewSetPresetToRemove(\n name: OdinOverviewState['presetToRemove'],\n): OdinOverviewThunkAction {\n return (dispatch) => {\n dispatch({\n type: ODIN_OVERVIEW_PARTIAL,\n data: {presetToRemove: name},\n });\n };\n}\n\nexport function odinOverviewRemovePreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN))\n .then(() => {\n const oldPresets = getOdinOverviewVisiblePresets(getState());\n const presets = oldPresets.filter((item) => item.name !== name);\n return dispatch(\n setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets),\n );\n })\n .catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'delete-preset',\n autoHiding: false,\n type: 'error',\n content: message,\n title: 'Failed to delete the preset',\n actions: [{label: ' view', onClick: () => showErrorPopup(data)}],\n });\n });\n };\n}\n\nexport function odinOverviewToggleDefaultPreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n return dispatch(reloadSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN)).then(() => {\n const presets = [...getOdinOverviewVisiblePresets(getState())];\n for (let i = 0; i < presets.length; ++i) {\n const item = presets[i];\n if (item.name === name) {\n presets[i] = {...item, isDefault: !item.isDefault};\n } else if (item.isDefault) {\n presets[i] = {...item};\n delete presets[i]['isDefault'];\n }\n }\n return dispatch(\n setSetting(ODIN_VISIBLE_METRIC_PRESETS, YA_NAMESPACES.ODIN, presets),\n ).catch((error: any) => {\n const data = error?.response?.data || error;\n const {message} = data;\n\n new Toaster().add({\n name: 'set-deault-preset',\n autoHiding: false,\n type: 'error',\n content: message,\n title: 'Failed to set the preset as default',\n actions: [{label: ' view', onClick: () => showErrorPopup(data)}],\n });\n });\n });\n };\n}\n\nexport function odinOverviewSelectPreset(name: string): OdinOverviewThunkAction {\n return (dispatch, getState) => {\n const state = getState();\n const presets = getOdinOverviewVisiblePresets(state);\n const preset = presets.find((item) => item.name === name);\n if (preset) {\n const {hiddenMetricNames} = preset;\n const hiddenMetrics: OdinOverviewState['hiddenMetrics'] = {};\n hiddenMetricNames.forEach((name) => {\n hiddenMetrics[name] = true;\n });\n dispatch({\n type: ODIN_OVERVIEW_HIDDEN_METRICS,\n data: {hiddenMetrics},\n });\n\n const oldHiddenMetrics = getOdinOverviewHiddenMetrics(state);\n _forEach(oldHiddenMetrics, (_, name) => {\n if (!hiddenMetrics[name]) {\n dispatch(reloadOdinOverviewMetricData(name));\n }\n });\n }\n };\n}\n\nexport function setOdinLastVisitedTab(tab: string): ThunkAction<any, any, RootState, any> {\n return (dispatch, getState) => {\n const current = getOdinLastVisitedTab(getState());\n if (current !== tab) {\n dispatch(setSetting(ODIN_LAST_VISITED_TAB, NAMESPACES.GLOBAL, tab));\n }\n };\n}\n"],"mappings":"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"}