@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.
- package/esm2022/alauda-fe-workload-util-shared.mjs +5 -0
- package/esm2022/index.mjs +6 -0
- package/esm2022/lib/directives/index.mjs +3 -0
- package/esm2022/lib/directives/oam-resource-disabled-container.directive.mjs +53 -0
- package/esm2022/lib/directives/sync-control.directive.mjs +52 -0
- package/esm2022/lib/pipes/index.mjs +4 -0
- package/esm2022/lib/pipes/is-oam-resource.pipe.mjs +17 -0
- package/esm2022/lib/pipes/range.pipe.mjs +17 -0
- package/esm2022/lib/pipes/short-num.pipe.mjs +15 -0
- package/esm2022/lib/services/cluster-api.service.mjs +93 -0
- package/esm2022/lib/services/feature-gate.service.mjs +50 -0
- package/esm2022/lib/services/index.mjs +6 -0
- package/esm2022/lib/services/pod-util.service.mjs +70 -0
- package/esm2022/lib/services/resource-quota.service.mjs +116 -0
- package/esm2022/lib/services/terminal.service.mjs +46 -0
- package/esm2022/lib/typings/account.mjs +2 -0
- package/esm2022/lib/typings/backend-api.mjs +7 -0
- package/esm2022/lib/typings/batch-action.type.mjs +2 -0
- package/esm2022/lib/typings/form.mjs +2 -0
- package/esm2022/lib/typings/helpers.mjs +14 -0
- package/esm2022/lib/typings/index.mjs +10 -0
- package/esm2022/lib/typings/k8s-form-model.mjs +12 -0
- package/esm2022/lib/typings/k8s-resource-definitions/acp-resource-definition.mjs +258 -0
- package/esm2022/lib/typings/k8s-resource-definitions/alu-resource-definition.mjs +281 -0
- package/esm2022/lib/typings/k8s-resource-definitions/index.mjs +142 -0
- package/esm2022/lib/typings/k8s.mjs +143 -0
- package/esm2022/lib/typings/status.mjs +269 -0
- package/esm2022/lib/utils/code-editor-config.mjs +2 -0
- package/esm2022/lib/utils/constants.mjs +61 -0
- package/esm2022/lib/utils/crd.mjs +36 -0
- package/esm2022/lib/utils/format-number.mjs +227 -0
- package/esm2022/lib/utils/helpers.mjs +27 -0
- package/esm2022/lib/utils/index.mjs +14 -0
- package/esm2022/lib/utils/k8s-util.service.mjs +28 -0
- package/esm2022/lib/utils/patterns.mjs +140 -0
- package/esm2022/lib/utils/pod-util.mjs +75 -0
- package/esm2022/lib/utils/resource-status.mjs +86 -0
- package/esm2022/lib/utils/resources-config-util.mjs +28 -0
- package/esm2022/lib/utils/status.mjs +84 -0
- package/esm2022/lib/utils/validator.mjs +11 -0
- package/esm2022/lib/utils/workspace.mjs +25 -0
- package/index.d.ts +5 -0
- package/lib/directives/index.d.ts +2 -0
- package/lib/directives/oam-resource-disabled-container.directive.d.ts +17 -0
- package/lib/directives/sync-control.directive.d.ts +14 -0
- package/lib/pipes/index.d.ts +3 -0
- package/lib/pipes/is-oam-resource.pipe.d.ts +9 -0
- package/lib/pipes/range.pipe.d.ts +7 -0
- package/lib/pipes/short-num.pipe.d.ts +7 -0
- package/lib/services/cluster-api.service.d.ts +38 -0
- package/lib/services/feature-gate.service.d.ts +38 -0
- package/lib/services/index.d.ts +5 -0
- package/lib/services/pod-util.service.d.ts +18 -0
- package/lib/services/resource-quota.service.d.ts +25 -0
- package/lib/services/terminal.service.d.ts +15 -0
- package/lib/typings/account.d.ts +17 -0
- package/lib/typings/backend-api.d.ts +220 -0
- package/lib/typings/batch-action.type.d.ts +35 -0
- package/lib/typings/form.d.ts +10 -0
- package/lib/typings/helpers.d.ts +45 -0
- package/lib/typings/index.d.ts +9 -0
- package/lib/typings/k8s-form-model.d.ts +128 -0
- package/lib/typings/k8s-resource-definitions/acp-resource-definition.d.ts +242 -0
- package/lib/typings/k8s-resource-definitions/alu-resource-definition.d.ts +269 -0
- package/lib/typings/k8s-resource-definitions/index.d.ts +1911 -0
- package/lib/typings/k8s.d.ts +1147 -0
- package/lib/typings/status.d.ts +252 -0
- package/lib/utils/code-editor-config.d.ts +1 -0
- package/lib/utils/constants.d.ts +57 -0
- package/lib/utils/crd.d.ts +21 -0
- package/lib/utils/format-number.d.ts +11 -0
- package/lib/utils/helpers.d.ts +13 -0
- package/lib/utils/index.d.ts +13 -0
- package/lib/utils/k8s-util.service.d.ts +8 -0
- package/lib/utils/patterns.d.ts +132 -0
- package/lib/utils/pod-util.d.ts +19 -0
- package/lib/utils/resource-status.d.ts +8 -0
- package/lib/utils/resources-config-util.d.ts +22 -0
- package/lib/utils/status.d.ts +3 -0
- package/lib/utils/validator.d.ts +4 -0
- package/lib/utils/workspace.d.ts +14 -0
- 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=
|