@alauda-fe/workload-util-shared 0.0.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 (82) hide show
  1. package/esm2022/alauda-fe-workload-util-shared.mjs +5 -0
  2. package/esm2022/index.mjs +6 -0
  3. package/esm2022/lib/directives/index.mjs +3 -0
  4. package/esm2022/lib/directives/oam-resource-disabled-container.directive.mjs +53 -0
  5. package/esm2022/lib/directives/sync-control.directive.mjs +52 -0
  6. package/esm2022/lib/pipes/index.mjs +4 -0
  7. package/esm2022/lib/pipes/is-oam-resource.pipe.mjs +17 -0
  8. package/esm2022/lib/pipes/range.pipe.mjs +17 -0
  9. package/esm2022/lib/pipes/short-num.pipe.mjs +15 -0
  10. package/esm2022/lib/services/cluster-api.service.mjs +93 -0
  11. package/esm2022/lib/services/feature-gate.service.mjs +50 -0
  12. package/esm2022/lib/services/index.mjs +6 -0
  13. package/esm2022/lib/services/pod-util.service.mjs +70 -0
  14. package/esm2022/lib/services/resource-quota.service.mjs +116 -0
  15. package/esm2022/lib/services/terminal.service.mjs +46 -0
  16. package/esm2022/lib/typings/account.mjs +2 -0
  17. package/esm2022/lib/typings/backend-api.mjs +7 -0
  18. package/esm2022/lib/typings/batch-action.type.mjs +2 -0
  19. package/esm2022/lib/typings/form.mjs +2 -0
  20. package/esm2022/lib/typings/helpers.mjs +14 -0
  21. package/esm2022/lib/typings/index.mjs +10 -0
  22. package/esm2022/lib/typings/k8s-form-model.mjs +12 -0
  23. package/esm2022/lib/typings/k8s-resource-definitions/acp-resource-definition.mjs +258 -0
  24. package/esm2022/lib/typings/k8s-resource-definitions/alu-resource-definition.mjs +281 -0
  25. package/esm2022/lib/typings/k8s-resource-definitions/index.mjs +142 -0
  26. package/esm2022/lib/typings/k8s.mjs +143 -0
  27. package/esm2022/lib/typings/status.mjs +269 -0
  28. package/esm2022/lib/utils/code-editor-config.mjs +2 -0
  29. package/esm2022/lib/utils/constants.mjs +61 -0
  30. package/esm2022/lib/utils/crd.mjs +36 -0
  31. package/esm2022/lib/utils/format-number.mjs +227 -0
  32. package/esm2022/lib/utils/helpers.mjs +27 -0
  33. package/esm2022/lib/utils/index.mjs +14 -0
  34. package/esm2022/lib/utils/k8s-util.service.mjs +28 -0
  35. package/esm2022/lib/utils/patterns.mjs +140 -0
  36. package/esm2022/lib/utils/pod-util.mjs +75 -0
  37. package/esm2022/lib/utils/resource-status.mjs +86 -0
  38. package/esm2022/lib/utils/resources-config-util.mjs +28 -0
  39. package/esm2022/lib/utils/status.mjs +84 -0
  40. package/esm2022/lib/utils/validator.mjs +11 -0
  41. package/esm2022/lib/utils/workspace.mjs +25 -0
  42. package/index.d.ts +5 -0
  43. package/lib/directives/index.d.ts +2 -0
  44. package/lib/directives/oam-resource-disabled-container.directive.d.ts +17 -0
  45. package/lib/directives/sync-control.directive.d.ts +14 -0
  46. package/lib/pipes/index.d.ts +3 -0
  47. package/lib/pipes/is-oam-resource.pipe.d.ts +9 -0
  48. package/lib/pipes/range.pipe.d.ts +7 -0
  49. package/lib/pipes/short-num.pipe.d.ts +7 -0
  50. package/lib/services/cluster-api.service.d.ts +38 -0
  51. package/lib/services/feature-gate.service.d.ts +38 -0
  52. package/lib/services/index.d.ts +5 -0
  53. package/lib/services/pod-util.service.d.ts +18 -0
  54. package/lib/services/resource-quota.service.d.ts +25 -0
  55. package/lib/services/terminal.service.d.ts +15 -0
  56. package/lib/typings/account.d.ts +17 -0
  57. package/lib/typings/backend-api.d.ts +220 -0
  58. package/lib/typings/batch-action.type.d.ts +35 -0
  59. package/lib/typings/form.d.ts +10 -0
  60. package/lib/typings/helpers.d.ts +45 -0
  61. package/lib/typings/index.d.ts +9 -0
  62. package/lib/typings/k8s-form-model.d.ts +128 -0
  63. package/lib/typings/k8s-resource-definitions/acp-resource-definition.d.ts +242 -0
  64. package/lib/typings/k8s-resource-definitions/alu-resource-definition.d.ts +269 -0
  65. package/lib/typings/k8s-resource-definitions/index.d.ts +1911 -0
  66. package/lib/typings/k8s.d.ts +1147 -0
  67. package/lib/typings/status.d.ts +252 -0
  68. package/lib/utils/code-editor-config.d.ts +1 -0
  69. package/lib/utils/constants.d.ts +57 -0
  70. package/lib/utils/crd.d.ts +21 -0
  71. package/lib/utils/format-number.d.ts +11 -0
  72. package/lib/utils/helpers.d.ts +13 -0
  73. package/lib/utils/index.d.ts +13 -0
  74. package/lib/utils/k8s-util.service.d.ts +8 -0
  75. package/lib/utils/patterns.d.ts +132 -0
  76. package/lib/utils/pod-util.d.ts +19 -0
  77. package/lib/utils/resource-status.d.ts +8 -0
  78. package/lib/utils/resources-config-util.d.ts +22 -0
  79. package/lib/utils/status.d.ts +3 -0
  80. package/lib/utils/validator.d.ts +4 -0
  81. package/lib/utils/workspace.d.ts +14 -0
  82. package/package.json +36 -0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxhdWRhLWZlLXdvcmtsb2FkLXV0aWwtc2hhcmVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy93b3JrbG9hZC91dGlsLXNoYXJlZC9zcmMvYWxhdWRhLWZlLXdvcmtsb2FkLXV0aWwtc2hhcmVkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,6 @@
1
+ export * from './lib/directives';
2
+ export * from './lib/pipes';
3
+ export * from './lib/services';
4
+ export * from './lib/typings';
5
+ export * from './lib/utils';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3dvcmtsb2FkL3V0aWwtc2hhcmVkL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9kaXJlY3RpdmVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3BpcGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGluZ3MnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdXRpbHMnO1xuIl19
@@ -0,0 +1,3 @@
1
+ export * from './oam-resource-disabled-container.directive';
2
+ export * from './sync-control.directive';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3dvcmtsb2FkL3V0aWwtc2hhcmVkL3NyYy9saWIvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMsMEJBQTBCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL29hbS1yZXNvdXJjZS1kaXNhYmxlZC1jb250YWluZXIuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vc3luYy1jb250cm9sLmRpcmVjdGl2ZSc7XG4iXX0=
@@ -0,0 +1,53 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { DisabledContainerComponent, TranslateService, ValueHook, } from '@alauda-fe/common';
3
+ import { ChangeDetectorRef, Directive, Input } from '@angular/core';
4
+ import { distinctUntilChanged } from 'rxjs';
5
+ import { isOamResource } from '../pipes/is-oam-resource.pipe';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@alauda-fe/common";
8
+ /**
9
+ * @description acl-disabled-container 增强指令。
10
+ *
11
+ * 需要注意对 acl-disabled-container的副作用,一旦满足 isOam 的条件,禁用的 tip 会一直保留,并且优先级最高,除非数据源本身发生变化。
12
+ */
13
+ export class OamResourceDisabledContainerDirective {
14
+ constructor(disabledContainer, translate, cdr) {
15
+ this.disabledContainer = disabledContainer;
16
+ this.translate = translate;
17
+ this.cdr = cdr;
18
+ }
19
+ static { this.ɵfac = function OamResourceDisabledContainerDirective_Factory(t) { return new (t || OamResourceDisabledContainerDirective)(i0.ɵɵdirectiveInject(i1.DisabledContainerComponent), i0.ɵɵdirectiveInject(i1.TranslateService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); }; }
20
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: OamResourceDisabledContainerDirective, selectors: [["acl-disabled-container", "rcIsOamDisabled", ""]], inputs: { rcIsOamDisabled: "rcIsOamDisabled" }, standalone: true }); }
21
+ }
22
+ __decorate([
23
+ ValueHook(function (resource) {
24
+ const oamDisabledTooltip = this.translate.get('oam_asset_action_disabled_tip');
25
+ if (isOamResource(resource)) {
26
+ this.disabledContainer.isDisabled$
27
+ .pipe(distinctUntilChanged())
28
+ .subscribe(() => {
29
+ Promise.resolve().then(() => {
30
+ this.disabledContainer.isDisabled = true;
31
+ this.cdr.markForCheck();
32
+ });
33
+ });
34
+ this.disabledContainer.tooltip$
35
+ .pipe(distinctUntilChanged())
36
+ .subscribe(() => {
37
+ this.disabledContainer.tooltip = oamDisabledTooltip;
38
+ this.cdr.markForCheck();
39
+ });
40
+ }
41
+ }),
42
+ __metadata("design:type", Object)
43
+ ], OamResourceDisabledContainerDirective.prototype, "rcIsOamDisabled", void 0);
44
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OamResourceDisabledContainerDirective, [{
45
+ type: Directive,
46
+ args: [{
47
+ standalone: true,
48
+ selector: 'acl-disabled-container[rcIsOamDisabled]',
49
+ }]
50
+ }], () => [{ type: i1.DisabledContainerComponent }, { type: i1.TranslateService }, { type: i0.ChangeDetectorRef }], { rcIsOamDisabled: [{
51
+ type: Input
52
+ }] }); })();
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2FtLXJlc291cmNlLWRpc2FibGVkLWNvbnRhaW5lci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3dvcmtsb2FkL3V0aWwtc2hhcmVkL3NyYy9saWIvZGlyZWN0aXZlcy9vYW0tcmVzb3VyY2UtZGlzYWJsZWQtY29udGFpbmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLDBCQUEwQixFQUUxQixnQkFBZ0IsRUFDaEIsU0FBUyxHQUNWLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBRTlEOzs7O0dBSUc7QUFLSCxNQUFNLE9BQU8scUNBQXFDO0lBNEJoRCxZQUNtQixpQkFBNkMsRUFDN0MsU0FBMkIsRUFDM0IsR0FBc0I7UUFGdEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUE0QjtRQUM3QyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtJQUN0QyxDQUFDO3NHQWhDTyxxQ0FBcUM7b0VBQXJDLHFDQUFxQzs7QUEwQmhEO0lBekJDLFNBQVMsQ0FBQyxVQUVULFFBQTRCO1FBRTVCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQzNDLCtCQUErQixDQUNoQyxDQUFDO1FBQ0YsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVztpQkFDL0IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7aUJBQzVCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO29CQUN6QyxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMxQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVE7aUJBQzVCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2lCQUM1QixTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQyxDQUFDOzs4RUFFa0M7aUZBMUJ6QixxQ0FBcUM7Y0FKakQsU0FBUztlQUFDO2dCQUNULFVBQVUsRUFBRSxJQUFJO2dCQUNoQixRQUFRLEVBQUUseUNBQXlDO2FBQ3BEOzBIQTJCQyxlQUFlO2tCQURkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXNhYmxlZENvbnRhaW5lckNvbXBvbmVudCxcbiAgS3ViZXJuZXRlc1Jlc291cmNlLFxuICBUcmFuc2xhdGVTZXJ2aWNlLFxuICBWYWx1ZUhvb2ssXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBpc09hbVJlc291cmNlIH0gZnJvbSAnLi4vcGlwZXMvaXMtb2FtLXJlc291cmNlLnBpcGUnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBhY2wtZGlzYWJsZWQtY29udGFpbmVyIOWinuW8uuaMh+S7pOOAglxuICpcbiAqIOmcgOimgeazqOaEj+WvuSBhY2wtZGlzYWJsZWQtY29udGFpbmVy55qE5Ymv5L2c55So77yM5LiA5pem5ruh6LazIGlzT2FtIOeahOadoeS7tu+8jOemgeeUqOeahCB0aXAg5Lya5LiA55u05L+d55WZ77yM5bm25LiU5LyY5YWI57qn5pyA6auY77yM6Zmk6Z2e5pWw5o2u5rqQ5pys6Lqr5Y+R55Sf5Y+Y5YyW44CCXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FjbC1kaXNhYmxlZC1jb250YWluZXJbcmNJc09hbURpc2FibGVkXScsXG59KVxuZXhwb3J0IGNsYXNzIE9hbVJlc291cmNlRGlzYWJsZWRDb250YWluZXJEaXJlY3RpdmUge1xuICBAVmFsdWVIb29rKGZ1bmN0aW9uIChcbiAgICB0aGlzOiBPYW1SZXNvdXJjZURpc2FibGVkQ29udGFpbmVyRGlyZWN0aXZlLFxuICAgIHJlc291cmNlOiBLdWJlcm5ldGVzUmVzb3VyY2UsXG4gICkge1xuICAgIGNvbnN0IG9hbURpc2FibGVkVG9vbHRpcCA9IHRoaXMudHJhbnNsYXRlLmdldChcbiAgICAgICdvYW1fYXNzZXRfYWN0aW9uX2Rpc2FibGVkX3RpcCcsXG4gICAgKTtcbiAgICBpZiAoaXNPYW1SZXNvdXJjZShyZXNvdXJjZSkpIHtcbiAgICAgIHRoaXMuZGlzYWJsZWRDb250YWluZXIuaXNEaXNhYmxlZCRcbiAgICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmRpc2FibGVkQ29udGFpbmVyLmlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5kaXNhYmxlZENvbnRhaW5lci50b29sdGlwJFxuICAgICAgICAucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRpc2FibGVkQ29udGFpbmVyLnRvb2x0aXAgPSBvYW1EaXNhYmxlZFRvb2x0aXA7XG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSlcbiAgQElucHV0KClcbiAgcmNJc09hbURpc2FibGVkOiBLdWJlcm5ldGVzUmVzb3VyY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaXNhYmxlZENvbnRhaW5lcjogRGlzYWJsZWRDb250YWluZXJDb21wb25lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHt9XG59XG4iXX0=
@@ -0,0 +1,52 @@
1
+ import { Directive, EventEmitter, Injector, } from '@angular/core';
2
+ import { FormControlDirective, FormControlName, } from '@angular/forms';
3
+ import { takeUntil } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ const formDirectives = [FormControlName, FormControlDirective];
6
+ export class SyncControlDirective {
7
+ constructor(injector) {
8
+ this.injector = injector;
9
+ this.destroy$$ = new EventEmitter();
10
+ }
11
+ ngOnDestroy() {
12
+ this.destroy$$.emit();
13
+ this.destroy$$.complete();
14
+ }
15
+ ngAfterViewInit() {
16
+ const control = this.getControl();
17
+ if (!control) {
18
+ return;
19
+ }
20
+ control.valueChanges.pipe(takeUntil(this.destroy$$)).subscribe(value => {
21
+ control.setValue(value, { emitEvent: false });
22
+ });
23
+ }
24
+ getControl() {
25
+ let foundDirective;
26
+ for (const directive of formDirectives) {
27
+ foundDirective = this.getDirective(directive);
28
+ if (foundDirective) {
29
+ return foundDirective.control;
30
+ }
31
+ }
32
+ }
33
+ getDirective(directive) {
34
+ return (this.injector.get(directive,
35
+ // setting 'notFoundValue' to 'undefined' will make the method throw an error
36
+ null, {
37
+ optional: true,
38
+ self: true,
39
+ }) || undefined);
40
+ }
41
+ static { this.ɵfac = function SyncControlDirective_Factory(t) { return new (t || SyncControlDirective)(i0.ɵɵdirectiveInject(i0.Injector)); }; }
42
+ static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: SyncControlDirective, selectors: [["", "syncControl", ""]], standalone: true }); }
43
+ }
44
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SyncControlDirective, [{
45
+ type: Directive,
46
+ args: [{
47
+ standalone: true,
48
+ // eslint-disable-next-line @angular-eslint/directive-selector
49
+ selector: '[syncControl]',
50
+ }]
51
+ }], () => [{ type: i0.Injector }], null); })();
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1jb250cm9sLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvd29ya2xvYWQvdXRpbC1zaGFyZWQvc3JjL2xpYi9kaXJlY3RpdmVzL3N5bmMtY29udHJvbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osUUFBUSxHQUdULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsZUFBZSxHQUNoQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRWpDLE1BQU0sY0FBYyxHQUFHLENBQUMsZUFBZSxFQUFFLG9CQUFvQixDQUFDLENBQUM7QUFPL0QsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUE2QixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBRjlCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0lBRUosQ0FBQztJQUVuRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRWxDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNyRSxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLGNBQXNELENBQUM7UUFFM0QsS0FBSyxNQUFNLFNBQVMsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUN2QyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUU5QyxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQixPQUFPLGNBQWMsQ0FBQyxPQUFPLENBQUM7WUFDaEMsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sWUFBWSxDQUNsQixTQUFZO1FBRVosT0FBTyxDQUNMLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUNmLFNBQVM7UUFDVCw2RUFBNkU7UUFDN0UsSUFBSSxFQUNKO1lBQ0UsUUFBUSxFQUFFLElBQUk7WUFDZCxJQUFJLEVBQUUsSUFBSTtTQUNYLENBQ0YsSUFBSSxTQUFTLENBQ2YsQ0FBQztJQUNKLENBQUM7cUZBaERVLG9CQUFvQjtvRUFBcEIsb0JBQW9COztpRkFBcEIsb0JBQW9CO2NBTGhDLFNBQVM7ZUFBQztnQkFDVCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsOERBQThEO2dCQUM5RCxRQUFRLEVBQUUsZUFBZTthQUMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIERpcmVjdGl2ZSxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBUeXBlLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFic3RyYWN0Q29udHJvbCxcbiAgRm9ybUNvbnRyb2xEaXJlY3RpdmUsXG4gIEZvcm1Db250cm9sTmFtZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmNvbnN0IGZvcm1EaXJlY3RpdmVzID0gW0Zvcm1Db250cm9sTmFtZSwgRm9ybUNvbnRyb2xEaXJlY3RpdmVdO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbc3luY0NvbnRyb2xdJyxcbn0pXG5leHBvcnQgY2xhc3MgU3luY0NvbnRyb2xEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkJCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge31cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmRlc3Ryb3kkJC5lbWl0KCk7XG4gICAgdGhpcy5kZXN0cm95JCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5nZXRDb250cm9sKCk7XG5cbiAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkJCkpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICBjb250cm9sLnNldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRDb250cm9sKCk6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgbGV0IGZvdW5kRGlyZWN0aXZlOiBGb3JtQ29udHJvbE5hbWUgfCBGb3JtQ29udHJvbERpcmVjdGl2ZTtcblxuICAgIGZvciAoY29uc3QgZGlyZWN0aXZlIG9mIGZvcm1EaXJlY3RpdmVzKSB7XG4gICAgICBmb3VuZERpcmVjdGl2ZSA9IHRoaXMuZ2V0RGlyZWN0aXZlKGRpcmVjdGl2ZSk7XG5cbiAgICAgIGlmIChmb3VuZERpcmVjdGl2ZSkge1xuICAgICAgICByZXR1cm4gZm91bmREaXJlY3RpdmUuY29udHJvbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldERpcmVjdGl2ZTxUIGV4dGVuZHMgVHlwZTxhbnk+PihcbiAgICBkaXJlY3RpdmU6IFQsXG4gICk6IChUIGV4dGVuZHMgVHlwZTxpbmZlciBSPiA/IFIgOiBuZXZlcikgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmluamVjdG9yLmdldChcbiAgICAgICAgZGlyZWN0aXZlLFxuICAgICAgICAvLyBzZXR0aW5nICdub3RGb3VuZFZhbHVlJyB0byAndW5kZWZpbmVkJyB3aWxsIG1ha2UgdGhlIG1ldGhvZCB0aHJvdyBhbiBlcnJvclxuICAgICAgICBudWxsLFxuICAgICAgICB7XG4gICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgICAgc2VsZjogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICkgfHwgdW5kZWZpbmVkXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,4 @@
1
+ export * from './is-oam-resource.pipe';
2
+ export * from './range.pipe';
3
+ export * from './short-num.pipe';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3dvcmtsb2FkL3V0aWwtc2hhcmVkL3NyYy9saWIvcGlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9pcy1vYW0tcmVzb3VyY2UucGlwZSc7XG5leHBvcnQgKiBmcm9tICcuL3JhbmdlLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9zaG9ydC1udW0ucGlwZSc7XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { LABELS, METADATA } from '@alauda-fe/common';
2
+ import { Pipe } from '@angular/core';
3
+ import { get } from 'lodash-es';
4
+ import * as i0 from "@angular/core";
5
+ export const isOamResource = (resource) => !!get(resource, [METADATA, LABELS, 'app.oam.dev/name']);
6
+ export class isOamResourcePipe {
7
+ constructor() {
8
+ this.transform = isOamResource;
9
+ }
10
+ static { this.ɵfac = function isOamResourcePipe_Factory(t) { return new (t || isOamResourcePipe)(); }; }
11
+ static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "rcIsOamResource", type: isOamResourcePipe, pure: true, standalone: true }); }
12
+ }
13
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(isOamResourcePipe, [{
14
+ type: Pipe,
15
+ args: [{ name: 'rcIsOamResource', standalone: true }]
16
+ }], null, null); })();
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtb2FtLXJlc291cmNlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3dvcmtsb2FkL3V0aWwtc2hhcmVkL3NyYy9saWIvcGlwZXMvaXMtb2FtLXJlc291cmNlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFzQixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDekUsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFFaEMsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQStCLFFBQVcsRUFBRSxFQUFFLENBQ3pFLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7QUFHMUQsTUFBTSxPQUFPLGlCQUFpQjtJQUQ5QjtRQUVFLGNBQVMsR0FBRyxhQUFhLENBQUM7S0FDM0I7a0ZBRlksaUJBQWlCO3lGQUFqQixpQkFBaUI7O2lGQUFqQixpQkFBaUI7Y0FEN0IsSUFBSTtlQUFDLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLdWJlcm5ldGVzUmVzb3VyY2UsIExBQkVMUywgTUVUQURBVEEgfSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5pbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5leHBvcnQgY29uc3QgaXNPYW1SZXNvdXJjZSA9IDxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPihyZXNvdXJjZTogVCkgPT5cbiAgISFnZXQocmVzb3VyY2UsIFtNRVRBREFUQSwgTEFCRUxTLCAnYXBwLm9hbS5kZXYvbmFtZSddKTtcblxuQFBpcGUoeyBuYW1lOiAncmNJc09hbVJlc291cmNlJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxuZXhwb3J0IGNsYXNzIGlzT2FtUmVzb3VyY2VQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSA9IGlzT2FtUmVzb3VyY2U7XG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class RangePipe {
4
+ transform(value) {
5
+ return Array.from({ length: value }, (_, index) => index);
6
+ }
7
+ static { this.ɵfac = function RangePipe_Factory(t) { return new (t || RangePipe)(); }; }
8
+ static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "range", type: RangePipe, pure: true, standalone: true }); }
9
+ }
10
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RangePipe, [{
11
+ type: Pipe,
12
+ args: [{
13
+ standalone: true,
14
+ name: 'range',
15
+ }]
16
+ }], null, null); })();
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2UucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvd29ya2xvYWQvdXRpbC1zaGFyZWQvc3JjL2xpYi9waXBlcy9yYW5nZS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQU1wRCxNQUFNLE9BQU8sU0FBUztJQUNwQixTQUFTLENBQUMsS0FBYTtRQUNyQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDOzBFQUhVLFNBQVM7K0VBQVQsU0FBUzs7aUZBQVQsU0FBUztjQUpyQixJQUFJO2VBQUM7Z0JBQ0osVUFBVSxFQUFFLElBQUk7Z0JBQ2hCLElBQUksRUFBRSxPQUFPO2FBQ2QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBQaXBlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgbmFtZTogJ3JhbmdlJyxcbn0pXG5leHBvcnQgY2xhc3MgUmFuZ2VQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogbnVtYmVyKTogbnVtYmVyW10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHsgbGVuZ3RoOiB2YWx1ZSB9LCAoXywgaW5kZXgpID0+IGluZGV4KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,15 @@
1
+ import { shortNum } from '@alauda-fe/common';
2
+ import { Pipe } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class ShortNumPipe {
5
+ transform(value, digits) {
6
+ return shortNum(value, digits);
7
+ }
8
+ static { this.ɵfac = function ShortNumPipe_Factory(t) { return new (t || ShortNumPipe)(); }; }
9
+ static { this.ɵpipe = /*@__PURE__*/ i0.ɵɵdefinePipe({ name: "shortNum", type: ShortNumPipe, pure: true, standalone: true }); }
10
+ }
11
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ShortNumPipe, [{
12
+ type: Pipe,
13
+ args: [{ standalone: true, name: 'shortNum' }]
14
+ }], null, null); })();
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnQtbnVtLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3dvcmtsb2FkL3V0aWwtc2hhcmVkL3NyYy9saWIvcGlwZXMvc2hvcnQtbnVtLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUdwRCxNQUFNLE9BQU8sWUFBWTtJQUN2QixTQUFTLENBQUMsS0FBc0IsRUFBRSxNQUFlO1FBQy9DLE9BQU8sUUFBUSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNqQyxDQUFDOzZFQUhVLFlBQVk7a0ZBQVosWUFBWTs7aUZBQVosWUFBWTtjQUR4QixJQUFJO2VBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaG9ydE51bSB9IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQFBpcGUoeyBzdGFuZGFsb25lOiB0cnVlLCBuYW1lOiAnc2hvcnROdW0nIH0pXG5leHBvcnQgY2xhc3MgU2hvcnROdW1QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBkaWdpdHM/OiBudW1iZXIpIHtcbiAgICByZXR1cm4gc2hvcnROdW0odmFsdWUsIGRpZ2l0cyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,93 @@
1
+ import { CacheStore, compareVersion, K8sApiService, K8sUtilService, publishRef, skipError, TRUE, } from '@alauda-fe/common';
2
+ import { isPublicCloud } from '@alauda-fe/network';
3
+ import { Injectable } from '@angular/core';
4
+ import { combineLatest, map, of, shareReplay } from 'rxjs';
5
+ import { RESOURCE_TYPES } from '../typings';
6
+ import { HARDWARE_ARCHITECTURE_MAPPER } from '../utils/constants';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@alauda-fe/common";
9
+ export class ClusterApiService {
10
+ constructor(k8sApi, k8sUtil) {
11
+ this.k8sApi = k8sApi;
12
+ this.k8sUtil = k8sUtil;
13
+ this.globalClusterVersion$ = this.k8sApi
14
+ .getResource({
15
+ type: RESOURCE_TYPES.PRODUCT_BASE,
16
+ name: 'base',
17
+ })
18
+ .pipe(shareReplay(1));
19
+ this.globalInfoCache = new CacheStore({
20
+ fetcher: cluster => cluster
21
+ ? this.k8sApi
22
+ .getResource({
23
+ type: RESOURCE_TYPES.CONFIG_MAP,
24
+ cluster,
25
+ namespace: 'kube-public',
26
+ name: 'global-info',
27
+ })
28
+ .pipe(skipError(null))
29
+ : of(null),
30
+ share: () => shareReplay(1),
31
+ });
32
+ }
33
+ isClusterNonUpgraded(cluster) {
34
+ return combineLatest([
35
+ this.globalClusterVersion$,
36
+ typeof cluster === 'string'
37
+ ? this.k8sApi.getGlobalResource({
38
+ type: RESOURCE_TYPES.CLUSTER_MODULE,
39
+ name: cluster,
40
+ })
41
+ : of(cluster),
42
+ ]).pipe(map(([global, current]) => {
43
+ const globalVersion = global.status.version.split('-')[0];
44
+ const currentVersion = current.spec.version.split('-')[0];
45
+ return globalVersion !== currentVersion;
46
+ }));
47
+ }
48
+ gteVersion(cluster, version) {
49
+ const clusterModule$ = typeof cluster === 'string'
50
+ ? this.k8sApi.getGlobalResource({
51
+ type: RESOURCE_TYPES.CLUSTER_MODULE,
52
+ name: cluster,
53
+ })
54
+ : of(cluster);
55
+ return clusterModule$.pipe(map(module => compareVersion.gte(module.spec.version.split('-')[0], version)), publishRef());
56
+ }
57
+ getGlobalInfo(cluster) {
58
+ return this.globalInfoCache
59
+ .fetch(cluster)
60
+ .pipe(map(configMap => configMap?.data));
61
+ }
62
+ getClusterType(cluster) {
63
+ return this.getGlobalInfo(cluster).pipe(map(configMap => configMap?.clusterType));
64
+ }
65
+ isPublicCloud(cluster) {
66
+ return this.getClusterType(cluster).pipe(map(clusterType => isPublicCloud(clusterType)));
67
+ }
68
+ getClusterArches(cluster) {
69
+ return this.k8sApi
70
+ .getGlobalResource({
71
+ type: RESOURCE_TYPES.CLUSTER,
72
+ name: cluster,
73
+ namespaced: true,
74
+ })
75
+ .pipe(map(c => {
76
+ const isArchAmd64 = this.k8sUtil.getLabel(c, 'arch-amd64') === TRUE;
77
+ const isArchArm64 = this.k8sUtil.getLabel(c, 'arch-arm64') === TRUE;
78
+ return [
79
+ ...(isArchAmd64 ? [HARDWARE_ARCHITECTURE_MAPPER.amd64] : []),
80
+ ...(isArchArm64 ? [HARDWARE_ARCHITECTURE_MAPPER.arm64] : []),
81
+ ];
82
+ }));
83
+ }
84
+ static { this.ɵfac = function ClusterApiService_Factory(t) { return new (t || ClusterApiService)(i0.ɵɵinject(i1.K8sApiService), i0.ɵɵinject(i1.K8sUtilService)); }; }
85
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ClusterApiService, factory: ClusterApiService.ɵfac, providedIn: 'root' }); }
86
+ }
87
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ClusterApiService, [{
88
+ type: Injectable,
89
+ args: [{
90
+ providedIn: 'root',
91
+ }]
92
+ }], () => [{ type: i1.K8sApiService }, { type: i1.K8sUtilService }], null); })();
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvd29ya2xvYWQvdXRpbC1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9jbHVzdGVyLWFwaS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsY0FBYyxFQUVkLGFBQWEsRUFDYixjQUFjLEVBQ2QsVUFBVSxFQUNWLFNBQVMsRUFDVCxJQUFJLEdBRUwsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQWUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNELE9BQU8sRUFBaUIsY0FBYyxFQUFnQixNQUFNLFlBQVksQ0FBQztBQUN6RSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBeUJsRSxNQUFNLE9BQU8saUJBQWlCO0lBMEI1QixZQUNtQixNQUFtQyxFQUNuQyxPQUF1QjtRQUR2QixXQUFNLEdBQU4sTUFBTSxDQUE2QjtRQUNuQyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQTNCMUMsMEJBQXFCLEdBQUcsSUFBSSxDQUFDLE1BQU07YUFDaEMsV0FBVyxDQUFjO1lBQ3hCLElBQUksRUFBRSxjQUFjLENBQUMsWUFBWTtZQUNqQyxJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUM7YUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFUCxvQkFBZSxHQUFHLElBQUksVUFBVSxDQUcvQztZQUNBLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRSxDQUNqQixPQUFPO2dCQUNMLENBQUMsQ0FBQyxJQUFJLENBQUMs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QUNqQixJQUFJLEVBQUUsY0FBYyxDQUFDLE9BQU87WUFDNUIsSUFBSSxFQUFFLE9BQU87WUFDYixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDO2FBQ0QsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNOLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsS0FBSyxJQUFJLENBQUM7WUFDcEUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztZQUNwRSxPQUFPO2dCQUNMLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDNUQsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQzdELENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztrRkFwR1UsaUJBQWlCO3VFQUFqQixpQkFBaUIsV0FBakIsaUJBQWlCLG1CQUZoQixNQUFNOztpRkFFUCxpQkFBaUI7Y0FIN0IsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2FjaGVTdG9yZSxcbiAgY29tcGFyZVZlcnNpb24sXG4gIENvbmZpZ01hcCxcbiAgSzhzQXBpU2VydmljZSxcbiAgSzhzVXRpbFNlcnZpY2UsXG4gIHB1Ymxpc2hSZWYsXG4gIHNraXBFcnJvcixcbiAgVFJVRSxcbiAgUHJvZHVjdEJhc2UsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IENsdXN0ZXJUeXBlLCBpc1B1YmxpY0Nsb3VkIH0gZnJvbSAnQGFsYXVkYS1mZS9uZXR3b3JrJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1hcCwgb2YsIHNoYXJlUmVwbGF5IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENsdXN0ZXJNb2R1bGUsIFJFU09VUkNFX1RZUEVTLCBSZXNvdXJjZVR5cGUgfSBmcm9tICcuLi90eXBpbmdzJztcbmltcG9ydCB7IEhBUkRXQVJFX0FSQ0hJVEVDVFVSRV9NQVBQRVIgfSBmcm9tICcuLi91dGlscy9jb25zdGFudHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJHbG9iYWxJbmZvIHtcbiAgY2hhcnRNdXNldW1VUkw6IHN0cmluZztcbiAgY2x1c3Rlck5hbWU6IHN0cmluZztcbiAgY2x1c3RlclR5cGU6IENsdXN0ZXJUeXBlO1xuICBnbG9iYWxDbHVzdGVyTmFtZTogc3RyaW5nO1xuICBsYWJlbEJhc2VEb21haW46IHN0cmluZztcbiAgb2lkY0NsaWVudElEOiBzdHJpbmc7XG4gIG9pZGNDbGllbnRTZWNyZXQ6IHN0cmluZztcbiAgb2lkY0lzc3Vlcjogc3RyaW5nO1xuICBvaWRjUmVzcG9uc2VUeXBlOiAnY29kZSc7XG4gIG9pZGNTY29wZXM6IHN0cmluZztcbiAgcGxhdGZvcm1IdHRwUG9ydDogc3RyaW5nO1xuICBwbGF0Zm9ybUh0dHBzUG9ydDogc3RyaW5nO1xuICBwbGF0Zm9ybU5vZGVTZWxlY3Rvcjogc3RyaW5nO1xuICBwbGF0Zm9ybVVSTDogc3RyaW5nO1xuICByZWdpc3RyeUFkZHJlc3M6IHN0cmluZztcbiAgc3lzdGVtQWxiSW5ncmVzc0NsYXNzTmFtZTogc3RyaW5nO1xuICBzeXN0ZW1OYW1lc3BhY2U6IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENsdXN0ZXJBcGlTZXJ2aWNlIHtcbiAgZ2xvYmFsQ2x1c3RlclZlcnNpb24kID0gdGhpcy5rOHNBcGlcbiAgICAuZ2V0UmVzb3VyY2U8UHJvZHVjdEJhc2U+KHtcbiAgICAgIHR5cGU6IFJFU09VUkNFX1RZUEVTLlBST0RVQ1RfQkFTRSxcbiAgICAgIG5hbWU6ICdiYXNlJyxcbiAgICB9KVxuICAgIC5waXBlKHNoYXJlUmVwbGF5KDEpKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGdsb2JhbEluZm9DYWNoZSA9IG5ldyBDYWNoZVN0b3JlPFxuICAgIHN0cmluZyxcbiAgICBDb25maWdNYXA8Q2x1c3Rlckdsb2JhbEluZm8+XG4gID4oe1xuICAgIGZldGNoZXI6IGNsdXN0ZXIgPT5cbiAgICAgIGNsdXN0ZXJcbiAgICAgICAgPyB0aGlzLms4c0FwaVxuICAgICAgICAgICAgLmdldFJlc291cmNlKHtcbiAgICAgICAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuQ09ORklHX01BUCxcbiAgICAgICAgICAgICAgY2x1c3RlcixcbiAgICAgICAgICAgICAgbmFtZXNwYWNlOiAna3ViZS1wdWJsaWMnLFxuICAgICAgICAgICAgICBuYW1lOiAnZ2xvYmFsLWluZm8nLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKHNraXBFcnJvcihudWxsKSlcbiAgICAgICAgOiBvZihudWxsKSxcbiAgICBzaGFyZTogKCkgPT4gc2hhcmVSZXBsYXkoMSksXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgazhzQXBpOiBLOHNBcGlTZXJ2aWNlPFJlc291cmNlVHlwZT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNVdGlsOiBLOHNVdGlsU2VydmljZSxcbiAgKSB7fVxuXG4gIGlzQ2x1c3Rlck5vblVwZ3JhZGVkKGNsdXN0ZXI6IHN0cmluZyB8IENsdXN0ZXJNb2R1bGUpIHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmdsb2JhbENsdXN0ZXJWZXJzaW9uJCxcbiAgICAgIHR5cGVvZiBjbHVzdGVyID09PSAnc3RyaW5nJ1xuICAgICAgICA/IHRoaXMuazhzQXBpLmdldEdsb2JhbFJlc291cmNlPENsdXN0ZXJNb2R1bGU+KHtcbiAgICAgICAgICAgIHR5cGU6IFJFU09VUkNFX1RZUEVTLkNMVVNURVJfTU9EVUxFLFxuICAgICAgICAgICAgbmFtZTogY2x1c3RlcixcbiAgICAgICAgICB9KVxuICAgICAgICA6IG9mKGNsdXN0ZXIpLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtnbG9iYWwsIGN1cnJlbnRdKSA9PiB7XG4gICAgICAgIGNvbnN0IGdsb2JhbFZlcnNpb24gPSBnbG9iYWwuc3RhdHVzLnZlcnNpb24uc3BsaXQoJy0nKVswXTtcbiAgICAgICAgY29uc3QgY3VycmVudFZlcnNpb24gPSBjdXJyZW50LnNwZWMudmVyc2lvbi5zcGxpdCgnLScpWzBdO1xuICAgICAgICByZXR1cm4gZ2xvYmFsVmVyc2lvbiAhPT0gY3VycmVudFZlcnNpb247XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgZ3RlVmVyc2lvbihjbHVzdGVyOiBzdHJpbmcgfCBDbHVzdGVyTW9kdWxlLCB2ZXJzaW9uOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjbHVzdGVyTW9kdWxlJCA9XG4gICAgICB0eXBlb2YgY2x1c3RlciA9PT0gJ3N0cmluZydcbiAgICAgICAgPyB0aGlzLms4c0FwaS5nZXRHbG9iYWxSZXNvdXJjZTxDbHVzdGVyTW9kdWxlPih7XG4gICAgICAgICAgICB0eXBlOiBSRVNPVVJDRV9UWVBFUy5DTFVTVEVSX01PRFVMRSxcbiAgICAgICAgICAgIG5hbWU6IGNsdXN0ZXIsXG4gICAgICAgICAgfSlcbiAgICAgICAgOiBvZihjbHVzdGVyKTtcbiAgICByZXR1cm4gY2x1c3Rlck1vZHVsZSQucGlwZShcbiAgICAgIG1hcChtb2R1bGUgPT5cbiAgICAgICAgY29tcGFyZVZlcnNpb24uZ3RlKG1vZHVsZS5zcGVjLnZlcnNpb24uc3BsaXQoJy0nKVswXSwgdmVyc2lvbiksXG4gICAgICApLFxuICAgICAgcHVibGlzaFJlZigpLFxuICAgICk7XG4gIH1cblxuICBnZXRHbG9iYWxJbmZvKGNsdXN0ZXI/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5nbG9iYWxJbmZvQ2FjaGVcbiAgICAgIC5mZXRjaChjbHVzdGVyKVxuICAgICAgLnBpcGUobWFwKGNvbmZpZ01hcCA9PiBjb25maWdNYXA/LmRhdGEpKTtcbiAgfVxuXG4gIGdldENsdXN0ZXJUeXBlKGNsdXN0ZXI/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRHbG9iYWxJbmZvKGNsdXN0ZXIpLnBpcGUoXG4gICAgICBtYXAoY29uZmlnTWFwID0+IGNvbmZpZ01hcD8uY2x1c3RlclR5cGUpLFxuICAgICk7XG4gIH1cblxuICBpc1B1YmxpY0Nsb3VkKGNsdXN0ZXI/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRDbHVzdGVyVHlwZShjbHVzdGVyKS5waXBlKFxuICAgICAgbWFwKGNsdXN0ZXJUeXBlID0+IGlzUHVibGljQ2xvdWQoY2x1c3RlclR5cGUpKSxcbiAgICApO1xuICB9XG5cbiAgZ2V0Q2x1c3RlckFyY2hlcyhjbHVzdGVyPzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuazhzQXBpXG4gICAgICAuZ2V0R2xvYmFsUmVzb3VyY2Uoe1xuICAgICAgICB0eXBlOiBSRVNPVVJDRV9UWVBFUy5DTFVTVEVSLFxuICAgICAgICBuYW1lOiBjbHVzdGVyLFxuICAgICAgICBuYW1lc3BhY2VkOiB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoYyA9PiB7XG4gICAgICAgICAgY29uc3QgaXNBcmNoQW1kNjQgPSB0aGlzLms4c1V0aWwuZ2V0TGFiZWwoYywgJ2FyY2gtYW1kNjQnKSA9PT0gVFJVRTtcbiAgICAgICAgICBjb25zdCBpc0FyY2hBcm02NCA9IHRoaXMuazhzVXRpbC5nZXRMYWJlbChjLCAnYXJjaC1hcm02NCcpID09PSBUUlVFO1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi4oaXNBcmNoQW1kNjQgPyBbSEFSRFdBUkVfQVJDSElURUNUVVJFX01BUFBFUi5hbWQ2NF0gOiBbXSksXG4gICAgICAgICAgICAuLi4oaXNBcmNoQXJtNjQgPyBbSEFSRFdBUkVfQVJDSElURUNUVVJFX01BUFBFUi5hcm02NF0gOiBbXSksXG4gICAgICAgICAgXTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,50 @@
1
+ import { API_GATEWAY, } from '@alauda-fe/common';
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { Injectable } from '@angular/core';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ // http://confluence.alauda.cn/pages/viewpage.action?pageId=54853992
7
+ export class FeatureGateApiService {
8
+ constructor(http) {
9
+ this.http = http;
10
+ }
11
+ getGlobalGateList() {
12
+ return this.http.get(`${API_GATEWAY}/fg/v1/featuregates`);
13
+ }
14
+ getGlobalGate(name) {
15
+ return this.http.get(`${API_GATEWAY}/fg/v1/featuregates/${name}`);
16
+ }
17
+ getClusterGateList(cluster) {
18
+ return this.http.get(`${API_GATEWAY}/fg/v1/${cluster}/featuregates`);
19
+ }
20
+ getClusterGate(cluster, name) {
21
+ return this.http.get(`${API_GATEWAY}/fg/v1/${cluster}/featuregates/${name}`);
22
+ }
23
+ static { this.ɵfac = function FeatureGateApiService_Factory(t) { return new (t || FeatureGateApiService)(i0.ɵɵinject(i1.HttpClient)); }; }
24
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: FeatureGateApiService, factory: FeatureGateApiService.ɵfac, providedIn: 'root' }); }
25
+ }
26
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FeatureGateApiService, [{
27
+ type: Injectable,
28
+ args: [{
29
+ providedIn: 'root',
30
+ }]
31
+ }], () => [{ type: i1.HttpClient }], null); })();
32
+ export function toMap(items) {
33
+ return items.reduce((acc, curr) => ({
34
+ ...acc,
35
+ [curr.metadata.name]: curr.status.enabled,
36
+ }), {});
37
+ }
38
+ export var DependencyType;
39
+ (function (DependencyType) {
40
+ DependencyType["Any"] = "any";
41
+ DependencyType["All"] = "all";
42
+ })(DependencyType || (DependencyType = {}));
43
+ export var FeatureStage;
44
+ (function (FeatureStage) {
45
+ FeatureStage["Alpha"] = "Alpha";
46
+ FeatureStage["Beta"] = "Beta";
47
+ FeatureStage["GA"] = "GA";
48
+ FeatureStage["EOF"] = "EOF";
49
+ })(FeatureStage || (FeatureStage = {}));
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1nYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3dvcmtsb2FkL3V0aWwtc2hhcmVkL3NyYy9saWIvc2VydmljZXMvZmVhdHVyZS1nYXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFdBQVcsR0FHWixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFFM0Msb0VBQW9FO0FBSXBFLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFBNkIsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUFHLENBQUM7SUFFakQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsR0FBRyxXQUFXLHFCQUFxQixDQUNwQyxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLEdBQUcsV0FBVyx1QkFBdUIsSUFBSSxFQUFFLENBQzVDLENBQUM7SUFDSixDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBZTtRQUNoQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixHQUFHLFdBQVcsVUFBVSxPQUFPLGVBQWUsQ0FDL0MsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjLENBQUMsT0FBZSxFQUFFLElBQVk7UUFDMUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsR0FBRyxXQUFXLFVBQVUsT0FBTyxpQkFBaUIsSUFBSSxFQUFFLENBQ3ZELENBQUM7SUFDSixDQUFDO3NGQXpCVSxxQkFBcUI7dUVBQXJCLHFCQUFxQixXQUFyQixxQkFBcUIsbUJBRnBCLE1BQU07O2lGQUVQLHFCQUFxQjtjQUhqQyxVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7O0FBNkJELE1BQU0sVUFBVSxLQUFLLENBQUMsS0FBb0I7SUFDeEMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUNqQixDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDZCxHQUFHLEdBQUc7UUFDTixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO0tBQzFDLENBQUMsRUFDRixFQUFFLENBQ0gsQ0FBQztBQUNKLENBQUM7QUFpQkQsTUFBTSxDQUFOLElBQVksY0FHWDtBQUhELFdBQVksY0FBYztJQUN4Qiw2QkFBVyxDQUFBO0lBQ1gsNkJBQVcsQ0FBQTtBQUNiLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QjtBQUVELE1BQU0sQ0FBTixJQUFZLFlBS1g7QUFMRCxXQUFZLFlBQVk7SUFDdEIsK0JBQWUsQ0FBQTtJQUNmLDZCQUFhLENBQUE7SUFDYix5QkFBUyxDQUFBO0lBQ1QsMkJBQVcsQ0FBQTtBQUNiLENBQUMsRUFMVyxZQUFZLEtBQVosWUFBWSxRQUt2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFQSV9HQVRFV0FZLFxuICBLdWJlcm5ldGVzUmVzb3VyY2UsXG4gIEt1YmVybmV0ZXNSZXNvdXJjZUxpc3QsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIGh0dHA6Ly9jb25mbHVlbmNlLmFsYXVkYS5jbi9wYWdlcy92aWV3cGFnZS5hY3Rpb24/cGFnZUlkPTU0ODUzOTkyXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgRmVhdHVyZUdhdGVBcGlTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuXG4gIGdldEdsb2JhbEdhdGVMaXN0KCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEt1YmVybmV0ZXNSZXNvdXJjZUxpc3Q8RmVhdHVyZUdhdGU+PihcbiAgICAgIGAke0FQSV9HQVRFV0FZfS9mZy92MS9mZWF0dXJlZ2F0ZXNgLFxuICAgICk7XG4gIH1cblxuICBnZXRHbG9iYWxHYXRlKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEZlYXR1cmVHYXRlPihcbiAgICAgIGAke0FQSV9HQVRFV0FZfS9mZy92MS9mZWF0dXJlZ2F0ZXMvJHtuYW1lfWAsXG4gICAgKTtcbiAgfVxuXG4gIGdldENsdXN0ZXJHYXRlTGlzdChjbHVzdGVyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxLdWJlcm5ldGVzUmVzb3VyY2VMaXN0PEZlYXR1cmVHYXRlPj4oXG4gICAgICBgJHtBUElfR0FURVdBWX0vZmcvdjEvJHtjbHVzdGVyfS9mZWF0dXJlZ2F0ZXNgLFxuICAgICk7XG4gIH1cblxuICBnZXRDbHVzdGVyR2F0ZShjbHVzdGVyOiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEZlYXR1cmVHYXRlPihcbiAgICAgIGAke0FQSV9HQVRFV0FZfS9mZy92MS8ke2NsdXN0ZXJ9L2ZlYXR1cmVnYXRlcy8ke25hbWV9YCxcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b01hcChpdGVtczogRmVhdHVyZUdhdGVbXSk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+IHtcbiAgcmV0dXJuIGl0ZW1zLnJlZHVjZShcbiAgICAoYWNjLCBjdXJyKSA9PiAoe1xuICAgICAgLi4uYWNjLFxuICAgICAgW2N1cnIubWV0YWRhdGEubmFtZV06IGN1cnIuc3RhdHVzLmVuYWJsZWQsXG4gICAgfSksXG4gICAge30sXG4gICk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUdhdGUgZXh0ZW5kcyBLdWJlcm5ldGVzUmVzb3VyY2Uge1xuICBzcGVjOiB7XG4gICAgZGVwZW5kZW5jeToge1xuICAgICAgdHlwZTogRGVwZW5kZW5jeVR5cGU7XG4gICAgICBmZWF0dXJlR2F0ZXM6IHN0cmluZ1tdO1xuICAgIH07XG4gICAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIHN0YWdlOiBGZWF0dXJlU3RhZ2U7XG4gIH07XG4gIHN0YXR1czoge1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gIH07XG59XG5cbmV4cG9ydCBlbnVtIERlcGVuZGVuY3lUeXBlIHtcbiAgQW55ID0gJ2FueScsXG4gIEFsbCA9ICdhbGwnLFxufVxuXG5leHBvcnQgZW51bSBGZWF0dXJlU3RhZ2Uge1xuICBBbHBoYSA9ICdBbHBoYScsXG4gIEJldGEgPSAnQmV0YScsXG4gIEdBID0gJ0dBJyxcbiAgRU9GID0gJ0VPRicsXG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export * from './cluster-api.service';
2
+ export * from './feature-gate.service';
3
+ export * from './pod-util.service';
4
+ export * from './resource-quota.service';
5
+ export * from './terminal.service';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3dvcmtsb2FkL3V0aWwtc2hhcmVkL3NyYy9saWIvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLG9CQUFvQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jbHVzdGVyLWFwaS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZmVhdHVyZS1nYXRlLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wb2QtdXRpbC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcmVzb3VyY2UtcXVvdGEuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Rlcm1pbmFsLnNlcnZpY2UnO1xuIl19
@@ -0,0 +1,70 @@
1
+ import { DialogService } from '@alauda/ui';
2
+ import { K8sApiService, TRUE, TranslateService, catchPromise, } from '@alauda-fe/common';
3
+ import { Injectable } from '@angular/core';
4
+ import { concatMapTo } from 'rxjs';
5
+ import { RESOURCE_TYPES } from '../typings';
6
+ import { TerminalService } from './terminal.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@alauda/ui";
9
+ import * as i2 from "@alauda-fe/common";
10
+ import * as i3 from "./terminal.service";
11
+ export const DEBUG_CONTAINER_SUFFIX = '-debug';
12
+ export class PodUtilService {
13
+ constructor(dialog, translate, k8sApi, terminal) {
14
+ this.dialog = dialog;
15
+ this.translate = translate;
16
+ this.k8sApi = k8sApi;
17
+ this.terminal = terminal;
18
+ }
19
+ deletePod(pod, cluster) {
20
+ return catchPromise(this.dialog.confirm({
21
+ title: this.translate.get('pod_delete_confirm', {
22
+ name: pod.metadata.name,
23
+ }),
24
+ content: this.translate.get('pod_delete_confirm_hint'),
25
+ confirmText: this.translate.get('delete'),
26
+ cancelText: this.translate.get('cancel'),
27
+ })).pipe(concatMapTo(this.k8sApi.deleteResource({
28
+ type: RESOURCE_TYPES.POD,
29
+ cluster,
30
+ resource: pod,
31
+ })));
32
+ }
33
+ handleExecInfo(pod, container, baseParams, data) {
34
+ if (!data) {
35
+ return;
36
+ }
37
+ const podName = pod.metadata.name;
38
+ this.terminal.openTerminal({
39
+ pods: podName,
40
+ selectedPod: podName,
41
+ container: container.name,
42
+ namespace: pod.metadata.namespace,
43
+ cluster: baseParams.cluster,
44
+ user: data.user,
45
+ command: data.command,
46
+ });
47
+ }
48
+ handleDebugInfo(pod, container, baseParams) {
49
+ const podName = pod.metadata.name;
50
+ const containerName = [container.name, DEBUG_CONTAINER_SUFFIX].join('');
51
+ this.terminal.openTerminal({
52
+ pods: podName,
53
+ selectedPod: podName,
54
+ container: containerName,
55
+ namespace: pod.metadata.namespace,
56
+ cluster: baseParams.cluster,
57
+ // 本期 debug 用户固定,后续支持自定义
58
+ user: 'root',
59
+ command: '/bin/sh',
60
+ isDebug: TRUE,
61
+ });
62
+ }
63
+ static { this.ɵfac = function PodUtilService_Factory(t) { return new (t || PodUtilService)(i0.ɵɵinject(i1.DialogService), i0.ɵɵinject(i2.TranslateService), i0.ɵɵinject(i2.K8sApiService), i0.ɵɵinject(i3.TerminalService)); }; }
64
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PodUtilService, factory: PodUtilService.ɵfac, providedIn: 'root' }); }
65
+ }
66
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PodUtilService, [{
67
+ type: Injectable,
68
+ args: [{ providedIn: 'root' }]
69
+ }], () => [{ type: i1.DialogService }, { type: i2.TranslateService }, { type: i2.K8sApiService }, { type: i3.TerminalService }], null); })();
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9kLXV0aWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvd29ya2xvYWQvdXRpbC1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9wb2QtdXRpbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDM0MsT0FBTyxFQUNMLGFBQWEsRUFDYixJQUFJLEVBQ0osZ0JBQWdCLEVBQ2hCLFlBQVksR0FJYixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVuQyxPQUFPLEVBQVksY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBRXRELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFFckQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsUUFBUSxDQUFDO0FBRy9DLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFlBQ21CLE1BQXFCLEVBQ3JCLFNBQTJCLEVBQzNCLE1BQXFCLEVBQ3JCLFFBQXlCO1FBSHpCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUN6QyxDQUFDO0lBRUosU0FBUyxDQUFDLEdBQVEsRUFBRSxPQUFlO1FBQ2pDLE9BQU8sWUFBWSxDQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUU7Z0JBQzlDLElBQUksRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUk7YUFDeEIsQ0FBQztZQUNGLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQztZQUN0RCxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ3pDLFVBQVUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7U0FDekMsQ0FBQyxDQUNILENBQUMsSUFBSSxDQUNKLFdBQVcsQ0FDVCxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBTTtZQUM5QixJQUFJLEVBQUUsY0FBYyxDQUFDLEdBQUc7WUFDeEIsT0FBTztZQUNQLFFBQVEsRUFBRSxHQUFHO1NBQ2QsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjLENBQ1osR0FBUSxFQUNSLFNBQW9CLEVBQ3BCLFVBQXFCLEVBQ3JCLElBQWM7UUFFZCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ3pCLElBQUksRUFBRSxPQUFPO1lBQ2IsV0FBVyxFQUFFLE9BQU87WUFDcEIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxJQUFJO1lBQ3pCLFNBQVMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVM7WUFDakMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPO1lBQzNCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVEsRUFBRSxTQUFvQixFQUFFLFVBQXFCO1FBQ25FLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2xDLE1BQU0sYUFBYSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxzQkFBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUN6QixJQUFJLEVBQUUsT0FBTztZQUNiLFdBQVcsRUFBRSxPQUFPO1lBQ3BCLFNBQVMsRUFBRSxhQUFhO1lBQ3hCLFNBQVMsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVM7WUFDakMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPO1lBQzNCLHdCQUF3QjtZQUN4QixJQUFJLEVBQUUsTUFBTTtZQUNaLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrRUFoRVUsY0FBYzt1RUFBZCxjQUFjLFdBQWQsY0FBYyxtQkFERCxNQUFNOztpRkFDbkIsY0FBYztjQUQxQixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHtcbiAgSzhzQXBpU2VydmljZSxcbiAgVFJVRSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbiAgY2F0Y2hQcm9taXNlLFxuICBDb250YWluZXIsXG4gIFBvZCxcbiAgV29ya3NwYWNlLFxufSBmcm9tICdAYWxhdWRhLWZlL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb25jYXRNYXBUbyB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBFeGVjSW5mbywgUkVTT1VSQ0VfVFlQRVMgfSBmcm9tICcuLi90eXBpbmdzJztcblxuaW1wb3J0IHsgVGVybWluYWxTZXJ2aWNlIH0gZnJvbSAnLi90ZXJtaW5hbC5zZXJ2aWNlJztcblxuZXhwb3J0IGNvbnN0IERFQlVHX0NPTlRBSU5FUl9TVUZGSVggPSAnLWRlYnVnJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQb2RVdGlsU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nOiBEaWFsb2dTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgazhzQXBpOiBLOHNBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdGVybWluYWw6IFRlcm1pbmFsU2VydmljZSxcbiAgKSB7fVxuXG4gIGRlbGV0ZVBvZChwb2Q6IFBvZCwgY2x1c3Rlcjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGNhdGNoUHJvbWlzZShcbiAgICAgIHRoaXMuZGlhbG9nLmNvbmZpcm0oe1xuICAgICAgICB0aXRsZTogdGhpcy50cmFuc2xhdGUuZ2V0KCdwb2RfZGVsZXRlX2NvbmZpcm0nLCB7XG4gICAgICAgICAgbmFtZTogcG9kLm1ldGFkYXRhLm5hbWUsXG4gICAgICAgIH0pLFxuICAgICAgICBjb250ZW50OiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ3BvZF9kZWxldGVfY29uZmlybV9oaW50JyksXG4gICAgICAgIGNvbmZpcm1UZXh0OiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ2RlbGV0ZScpLFxuICAgICAgICBjYW5jZWxUZXh0OiB0aGlzLnRyYW5zbGF0ZS5nZXQoJ2NhbmNlbCcpLFxuICAgICAgfSksXG4gICAgKS5waXBlKFxuICAgICAgY29uY2F0TWFwVG8oXG4gICAgICAgIHRoaXMuazhzQXBpLmRlbGV0ZVJlc291cmNlPFBvZD4oe1xuICAgICAgICAgIHR5cGU6IFJFU09VUkNFX1RZUEVTLlBPRCxcbiAgICAgICAgICBjbHVzdGVyLFxuICAgICAgICAgIHJlc291cmNlOiBwb2QsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgaGFuZGxlRXhlY0luZm8oXG4gICAgcG9kOiBQb2QsXG4gICAgY29udGFpbmVyOiBDb250YWluZXIsXG4gICAgYmFzZVBhcmFtczogV29ya3NwYWNlLFxuICAgIGRhdGE6IEV4ZWNJbmZvLFxuICApIHtcbiAgICBpZiAoIWRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgcG9kTmFtZSA9IHBvZC5tZXRhZGF0YS5uYW1lO1xuICAgIHRoaXMudGVybWluYWwub3BlblRlcm1pbmFsKHtcbiAgICAgIHBvZHM6IHBvZE5hbWUsXG4gICAgICBzZWxlY3RlZFBvZDogcG9kTmFtZSxcbiAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLm5hbWUsXG4gICAgICBuYW1lc3BhY2U6IHBvZC5tZXRhZGF0YS5uYW1lc3BhY2UsXG4gICAgICBjbHVzdGVyOiBiYXNlUGFyYW1zLmNsdXN0ZXIsXG4gICAgICB1c2VyOiBkYXRhLnVzZXIsXG4gICAgICBjb21tYW5kOiBkYXRhLmNvbW1hbmQsXG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVEZWJ1Z0luZm8ocG9kOiBQb2QsIGNvbnRhaW5lcjogQ29udGFpbmVyLCBiYXNlUGFyYW1zOiBXb3Jrc3BhY2UpIHtcbiAgICBjb25zdCBwb2ROYW1lID0gcG9kLm1ldGFkYXRhLm5hbWU7XG4gICAgY29uc3QgY29udGFpbmVyTmFtZSA9IFtjb250YWluZXIubmFtZSwgREVCVUdfQ09OVEFJTkVSX1NVRkZJWF0uam9pbignJyk7XG4gICAgdGhpcy50ZXJtaW5hbC5vcGVuVGVybWluYWwoe1xuICAgICAgcG9kczogcG9kTmFtZSxcbiAgICAgIHNlbGVjdGVkUG9kOiBwb2ROYW1lLFxuICAgICAgY29udGFpbmVyOiBjb250YWluZXJOYW1lLFxuICAgICAgbmFtZXNwYWNlOiBwb2QubWV0YWRhdGEubmFtZXNwYWNlLFxuICAgICAgY2x1c3RlcjogYmFzZVBhcmFtcy5jbHVzdGVyLFxuICAgICAgLy8g5pys5pyfIGRlYnVnIOeUqOaIt+WbuuWumu+8jOWQjue7reaUr+aMgeiHquWumuS5iVxuICAgICAgdXNlcjogJ3Jvb3QnLFxuICAgICAgY29tbWFuZDogJy9iaW4vc2gnLFxuICAgICAgaXNEZWJ1ZzogVFJVRSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,116 @@
1
+ import { K8sApiService, K8sUtilService, PUBLIC_NAMESPACE, matchLabelsToString, publishRef, skipError, RESOURCE_TYPES, } from '@alauda-fe/common';
2
+ import { Injectable } from '@angular/core';
3
+ import { keys } from 'lodash-es';
4
+ import { forkJoin, map, switchMap } from 'rxjs';
5
+ import { DEFAULT, TYPE } from '../utils';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@alauda-fe/common";
8
+ export class ResourceQuotaUtilService {
9
+ constructor(k8sUtil, k8sApi) {
10
+ this.k8sUtil = k8sUtil;
11
+ this.k8sApi = k8sApi;
12
+ this.limitRange$Cache = new Map();
13
+ this.resourceQuota$Cache = new Map();
14
+ }
15
+ getLimitRange$({ cluster, namespace, }) {
16
+ let limitRange$;
17
+ const cacheKey = [cluster, namespace].join(',');
18
+ if ((limitRange$ = this.limitRange$Cache.get(cacheKey))) {
19
+ return limitRange$;
20
+ }
21
+ limitRange$ = this.k8sApi
22
+ .getResource({
23
+ cluster,
24
+ namespace,
25
+ type: RESOURCE_TYPES.LIMIT_RANGE,
26
+ name: DEFAULT,
27
+ })
28
+ .pipe(skipError(null), publishRef());
29
+ this.limitRange$Cache.set(cacheKey, limitRange$);
30
+ return limitRange$;
31
+ }
32
+ getAvailableCustomResourceKeysInNodes(workspace) {
33
+ return this.k8sApi
34
+ .getResource({
35
+ type: RESOURCE_TYPES.NAMESPACE,
36
+ cluster: workspace.cluster,
37
+ name: workspace.namespace,
38
+ })
39
+ .pipe(switchMap(namespace => this.k8sApi
40
+ .getResourceList({
41
+ type: RESOURCE_TYPES.NODE,
42
+ cluster: workspace.cluster,
43
+ })
44
+ .pipe(map(({ items }) => {
45
+ const groupInNamespace = this.k8sUtil.getLabel(namespace, 'node-group-name', 'acp');
46
+ const availableNodes = items?.filter(node => {
47
+ const groupInNode = this.k8sUtil.getLabel(node, 'node-group-name', 'acp');
48
+ const groupInNodeSharedMode = this.k8sUtil.getLabel(node, 'node-group-share-mode', 'acp');
49
+ return (!groupInNode ||
50
+ groupInNodeSharedMode === 'Share' ||
51
+ groupInNode === groupInNamespace);
52
+ });
53
+ const allocatableInAllNodes = availableNodes?.reduce((acc, curr) => {
54
+ return {
55
+ ...acc,
56
+ ...curr?.status?.allocatable,
57
+ };
58
+ }, []);
59
+ return keys(allocatableInAllNodes);
60
+ }))));
61
+ }
62
+ getResourceQuota$({ cluster, namespace }) {
63
+ let resourceQuota$;
64
+ const cacheKey = [cluster, namespace].join(',');
65
+ if ((resourceQuota$ = this.resourceQuota$Cache.get(cacheKey))) {
66
+ return resourceQuota$;
67
+ }
68
+ resourceQuota$ = forkJoin([
69
+ this.k8sApi
70
+ .getResourceList({
71
+ type: RESOURCE_TYPES.CONFIG_MAP,
72
+ cluster,
73
+ namespace: PUBLIC_NAMESPACE,
74
+ queryParams: {
75
+ labelSelector: matchLabelsToString({
76
+ [this.k8sUtil.normalizeType(TYPE, 'features')]: 'CustomResourceLimitation',
77
+ }),
78
+ },
79
+ })
80
+ .pipe(map(res => res.items), skipError([])),
81
+ this.k8sApi
82
+ .getResource({
83
+ type: RESOURCE_TYPES.RESOURCE_QUOTA,
84
+ cluster,
85
+ namespace,
86
+ name: DEFAULT,
87
+ })
88
+ .pipe(skipError(null)),
89
+ this.getAvailableCustomResourceKeysInNodes({
90
+ namespace,
91
+ cluster,
92
+ }),
93
+ ]).pipe(map(([configMaps, resourceQuota, availableKeys]) => {
94
+ return {
95
+ customResourceConfigs: configMaps
96
+ .map(c => c.data)
97
+ .filter(config => availableKeys.includes(config?.key)),
98
+ resourceQuota,
99
+ };
100
+ }), publishRef());
101
+ this.resourceQuota$Cache.set(cacheKey, resourceQuota$);
102
+ return resourceQuota$;
103
+ }
104
+ deleteCache({ cluster, namespace }) {
105
+ const cacheKey = [cluster, namespace].join(',');
106
+ this.limitRange$Cache.delete(cacheKey);
107
+ this.resourceQuota$Cache.delete(cacheKey);
108
+ }
109
+ static { this.ɵfac = function ResourceQuotaUtilService_Factory(t) { return new (t || ResourceQuotaUtilService)(i0.ɵɵinject(i1.K8sUtilService), i0.ɵɵinject(i1.K8sApiService)); }; }
110
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ResourceQuotaUtilService, factory: ResourceQuotaUtilService.ɵfac, providedIn: 'root' }); }
111
+ }
112
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ResourceQuotaUtilService, [{
113
+ type: Injectable,
114
+ args: [{ providedIn: 'root' }]
115
+ }], () => [{ type: i1.K8sUtilService }, { type: i1.K8sApiService }], null); })();
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtcXVvdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL21vZHVsZXMvd29ya2xvYWQvdXRpbC1zaGFyZWQvc3JjL2xpYi9zZXJ2aWNlcy9yZXNvdXJjZS1xdW90YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLEVBQ2IsY0FBYyxFQUNkLGdCQUFnQixFQUVoQixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLFNBQVMsRUFRVCxjQUFjLEdBRWYsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFjLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTVELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFHekMsTUFBTSxPQUFPLHdCQUF3QjtJQVVuQyxZQUNtQixPQUF1QixFQUN2QixNQUFtQztRQURuQyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixXQUFNLEdBQU4sTUFBTSxDQUE2QjtRQVhyQyxxQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBa0MsQ0FBQztRQUM3RCx3QkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFNM0MsQ0FBQztJQUtELENBQUM7SUFFSixjQUFjLENBQUMsRUFDYixPQUFPLEVBQ1AsU0FBUyxHQUlWO1FBQ0MsSUFBSSxXQUFtQyxDQUFDO1FBRXhDLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENB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RUFBRSxTQUFTLEVBQTBDO1FBQ3hFLE1BQU0sUUFBUSxHQUFHLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQzt5RkFsS1Usd0JBQXdCO3VFQUF4Qix3QkFBd0IsV0FBeEIsd0JBQXdCLG1CQURYLE1BQU07O2lGQUNuQix3QkFBd0I7Y0FEcEMsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEs4c0FwaVNlcnZpY2UsXG4gIEs4c1V0aWxTZXJ2aWNlLFxuICBQVUJMSUNfTkFNRVNQQUNFLFxuICBTdHJpbmdNYXAsXG4gIG1hdGNoTGFiZWxzVG9TdHJpbmcsXG4gIHB1Ymxpc2hSZWYsXG4gIHNraXBFcnJvcixcbiAgTGltaXRSYW5nZSxcbiAgQ29uZmlnTWFwLFxuICBXb3Jrc3BhY2UsXG4gIE5hbWVzcGFjZSxcbiAgS3ViZXJuZXRlc1Jlc291cmNlLFxuICBOb2RlLFxuICBSZXNvdXJjZVR5cGUsXG4gIFJFU09VUkNFX1RZUEVTLFxuICBSZXNvdXJjZVJlcXVpcmVtZW50cyxcbn0gZnJvbSAnQGFsYXVkYS1mZS9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsga2V5cyB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmb3JrSm9pbiwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgREVGQVVMVCwgVFlQRSB9IGZyb20gJy4uL3V0aWxzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBSZXNvdXJjZVF1b3RhVXRpbFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGxpbWl0UmFuZ2UkQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgT2JzZXJ2YWJsZTxMaW1pdFJhbmdlPj4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVF1b3RhJENhY2hlID0gbmV3IE1hcDxcbiAgICBzdHJpbmcsXG4gICAgT2JzZXJ2YWJsZTx7XG4gICAgICByZXNvdXJjZVF1b3RhOiBSZXNvdXJjZVJlcXVpcmVtZW50cztcbiAgICAgIGN1c3RvbVJlc291cmNlQ29uZmlnczogU3RyaW5nTWFwW107XG4gICAgfT5cbiAgPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgazhzVXRpbDogSzhzVXRpbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrOHNBcGk6IEs4c0FwaVNlcnZpY2U8UmVzb3VyY2VUeXBlPixcbiAgKSB7fVxuXG4gIGdldExpbWl0UmFuZ2UkKHtcbiAgICBjbHVzdGVyLFxuICAgIG5hbWVzcGFjZSxcbiAgfToge1xuICAgIGNsdXN0ZXI6IHN0cmluZztcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcbiAgfSkge1xuICAgIGxldCBsaW1pdFJhbmdlJDogT2JzZXJ2YWJsZTxMaW1pdFJhbmdlPjtcblxuICAgIGNvbnN0IGNhY2hlS2V5ID0gW2NsdXN0ZXIsIG5hbWVzcGFjZV0uam9pbignLCcpO1xuXG4gICAgaWYgKChsaW1pdFJhbmdlJCA9IHRoaXMubGltaXRSYW5nZSRDYWNoZS5nZXQoY2FjaGVLZXkpKSkge1xuICAgICAgcmV0dXJuIGxpbWl0UmFuZ2UkO1xuICAgIH1cblxuICAgIGxpbWl0UmFuZ2UkID0gdGhpcy5rOHNBcGlcbiAgICAgIC5nZXRSZXNvdXJjZTxMaW1pdFJhbmdlPih7XG4gICAgICAgIGNsdXN0ZXIsXG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuTElNSVRfUkFOR0UsXG4gICAgICAgIG5hbWU6IERFRkFVTFQsXG4gICAgICB9KVxuICAgICAgLnBpcGUoc2tpcEVycm9yKG51bGwgYXMgTGltaXRSYW5nZSksIHB1Ymxpc2hSZWYoKSk7XG5cbiAgICB0aGlzLmxpbWl0UmFuZ2UkQ2FjaGUuc2V0KGNhY2hlS2V5LCBsaW1pdFJhbmdlJCk7XG5cbiAgICByZXR1cm4gbGltaXRSYW5nZSQ7XG4gIH1cblxuICBnZXRBdmFpbGFibGVDdXN0b21SZXNvdXJjZUtleXNJbk5vZGVzKFxuICAgIHdvcmtzcGFjZTogV29ya3NwYWNlLFxuICApOiBPYnNlcnZhYmxlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuazhzQXBpXG4gICAgICAuZ2V0UmVzb3VyY2U8TmFtZXNwYWNlPih7XG4gICAgICAgIHR5cGU6IFJFU09VUkNFX1RZUEVTLk5BTUVTUEFDRSxcbiAgICAgICAgY2x1c3Rlcjogd29ya3NwYWNlLmNsdXN0ZXIsXG4gICAgICAgIG5hbWU6IHdvcmtzcGFjZS5uYW1lc3BhY2UsXG4gICAgICB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcChuYW1lc3BhY2UgPT5cbiAgICAgICAgICB0aGlzLms4c0FwaVxuICAgICAgICAgICAgLmdldFJlc291cmNlTGlzdDxOb2RlPih7XG4gICAgICAgICAgICAgIHR5cGU6IFJFU09VUkNFX1RZUEVTLk5PREUsXG4gICAgICAgICAgICAgIGNsdXN0ZXI6IHdvcmtzcGFjZS5jbHVzdGVyLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICBtYXAoKHsgaXRlbXMgfSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyb3VwSW5OYW1lc3BhY2UgPSB0aGlzLms4c1V0aWwuZ2V0TGFiZWwoXG4gICAgICAgICAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAgICAgICAgICAnbm9kZS1ncm91cC1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICdhY3AnLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlTm9kZXMgPSBpdGVtcz8uZmlsdGVyKG5vZGUgPT4ge1xuICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBJbk5vZGUgPSB0aGlzLms4c1V0aWwuZ2V0TGFiZWwoXG4gICAgICAgICAgICAgICAgICAgIG5vZGUgYXMgS3ViZXJuZXRlc1Jlc291cmNlLFxuICAgICAgICAgICAgICAgICAgICAnbm9kZS1ncm91cC1uYW1lJyxcbiAgICAgICAgICAgICAgICAgICAgJ2FjcCcsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZ3JvdXBJbk5vZGVTaGFyZWRNb2RlID0gdGhpcy5rOHNVdGlsLmdldExhYmVsKFxuICAgICAgICAgICAgICAgICAgICBub2RlIGFzIEt1YmVybmV0ZXNSZXNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgJ25vZGUtZ3JvdXAtc2hhcmUtbW9kZScsXG4gICAgICAgICAgICAgICAgICAgICdhY3AnLFxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICFncm91cEluTm9kZSB8fFxuICAgICAgICAgICAgICAgICAgICBncm91cEluTm9kZVNoYXJlZE1vZGUgPT09ICdTaGFyZScgfHxcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBJbk5vZGUgPT09IGdyb3VwSW5OYW1lc3BhY2VcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdGFibGVJbkFsbE5vZGVzID0gYXZhaWxhYmxlTm9kZXM/LnJlZHVjZShcbiAgICAgICAgICAgICAgICAgIChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgICAgICAgICAgLi4uY3Vycj8uc3RhdHVzPy5hbGxvY2F0YWJsZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBbXSBhcyBzdHJpbmdbXSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHJldHVybiBrZXlzKGFsbG9jYXRhYmxlSW5BbGxOb2Rlcyk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gIH1cblxuICBnZXRSZXNvdXJjZVF1b3RhJCh7IGNsdXN0ZXIsIG5hbWVzcGFjZSB9OiBXb3Jrc3BhY2UpIHtcbiAgICBsZXQgcmVzb3VyY2VRdW90YSQ6IE9ic2VydmFibGU8e1xuICAgICAgcmVzb3VyY2VRdW90YTogUmVzb3VyY2VSZXF1aXJlbWVudHM7XG4gICAgICBjdXN0b21SZXNvdXJjZUNvbmZpZ3M6IFN0cmluZ01hcFtdO1xuICAgIH0+O1xuXG4gICAgY29uc3QgY2FjaGVLZXkgPSBbY2x1c3RlciwgbmFtZXNwYWNlXS5qb2luKCcsJyk7XG5cbiAgICBpZiAoKHJlc291cmNlUXVvdGEkID0gdGhpcy5yZXNvdXJjZVF1b3RhJENhY2hlLmdldChjYWNoZUtleSkpKSB7XG4gICAgICByZXR1cm4gcmVzb3VyY2VRdW90YSQ7XG4gICAgfVxuXG4gICAgcmVzb3VyY2VRdW90YSQgPSBmb3JrSm9pbihbXG4gICAgICB0aGlzLms4c0FwaVxuICAgICAgICAuZ2V0UmVzb3VyY2VMaXN0PENvbmZpZ01hcD4oe1xuICAgICAgICAgIHR5cGU6IFJFU09VUkNFX1RZUEVTLkNPTkZJR19NQVAsXG4gICAgICAgICAgY2x1c3RlcixcbiAgICAgICAgICBuYW1lc3BhY2U6IFBVQkxJQ19OQU1FU1BBQ0UsXG4gICAgICAgICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgICAgICAgIGxhYmVsU2VsZWN0b3I6IG1hdGNoTGFiZWxzVG9TdHJpbmcoe1xuICAgICAgICAgICAgICBbdGhpcy5rOHNVdGlsLm5vcm1hbGl6ZVR5cGUoVFlQRSwgJ2ZlYXR1cmVzJyldOlxuICAgICAgICAgICAgICAgICdDdXN0b21SZXNvdXJjZUxpbWl0YXRpb24nLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKHJlcyA9PiByZXMuaXRlbXMpLFxuICAgICAgICAgIHNraXBFcnJvcihbXSBhcyBDb25maWdNYXBbXSksXG4gICAgICAgICksXG4gICAgICB0aGlzLms4c0FwaVxuICAgICAgICAuZ2V0UmVzb3VyY2U8YW55Pih7XG4gICAgICAgICAgdHlwZTogUkVTT1VSQ0VfVFlQRVMuUkVTT1VSQ0VfUVVPVEEsXG4gICAgICAgICAgY2x1c3RlcixcbiAgICAgICAgICBuYW1lc3BhY2UsXG4gICAgICAgICAgbmFtZTogREVGQVVMVCxcbiAgICAgICAgfSlcbiAgICAgICAgLnBpcGUoc2tpcEVycm9yKG51bGwgYXMgUmVzb3VyY2VSZXF1aXJlbWVudHMpKSxcbiAgICAgIHRoaXMuZ2V0QXZhaWxhYmxlQ3VzdG9tUmVzb3VyY2VLZXlzSW5Ob2Rlcyh7XG4gICAgICAgIG5hbWVzcGFjZSxcbiAgICAgICAgY2x1c3RlcixcbiAgICAgIH0gYXMgV29ya3NwYWNlKSxcbiAgICBdKS5waXBlKFxuICAgICAgbWFwKChbY29uZmlnTWFwcywgcmVzb3VyY2VRdW90YSwgYXZhaWxhYmxlS2V5c10pID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjdXN0b21SZXNvdXJjZUNvbmZpZ3M6IGNvbmZpZ01hcHNcbiAgICAgICAgICAgIC5tYXAoYyA9PiBjLmRhdGEpXG4gICAgICAgICAgICAuZmlsdGVyKGNvbmZpZyA9PiBhdmFpbGFibGVLZXlzLmluY2x1ZGVzKGNvbmZpZz8ua2V5KSksXG4gICAgICAgICAgcmVzb3VyY2VRdW90YSxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICAgcHVibGlzaFJlZigpLFxuICAgICk7XG5cbiAgICB0aGlzLnJlc291cmNlUXVvdGEkQ2FjaGUuc2V0KGNhY2hlS2V5LCByZXNvdXJjZVF1b3RhJCk7XG5cbiAgICByZXR1cm4gcmVzb3VyY2VRdW90YSQ7XG4gIH1cblxuICBkZWxldGVDYWNoZSh7IGNsdXN0ZXIsIG5hbWVzcGFjZSB9OiB7IGNsdXN0ZXI6IHN0cmluZzsgbmFtZXNwYWNlOiBzdHJpbmcgfSkge1xuICAgIGNvbnN0IGNhY2hlS2V5ID0gW2NsdXN0ZXIsIG5hbWVzcGFjZV0uam9pbignLCcpO1xuICAgIHRoaXMubGltaXRSYW5nZSRDYWNoZS5kZWxldGUoY2FjaGVLZXkpO1xuICAgIHRoaXMucmVzb3VyY2VRdW90YSRDYWNoZS5kZWxldGUoY2FjaGVLZXkpO1xuICB9XG59XG4iXX0=