@alauda-fe/common
Version:
Alauda frontend team common codes.
73 lines • 12.4 kB
JavaScript
/**
* @packageDocumentation
* @module api
*/
import { HttpClient } from '@angular/common/http';
import { Inject, Injectable, isDevMode } from '@angular/core';
import { map } from 'rxjs';
import { TOKEN_RESOURCE_DEFINITIONS } from '../core/constants/tokens';
import { API_GATEWAY, ifExist, publishRef, } from '../core/public-api';
import { EMPTY_API_PREFIX_PARTS, getApiPrefixParts, normalizeApiGroup, normalizeDefinition, } from './helpers';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common/http";
export class K8sApiResourceService {
constructor(http, resourceDefinitions) {
this.http = http;
this.resourceDefinitions = resourceDefinitions;
// @internal
this._listCaches = {};
// @internal
this._typeCaches = {};
}
getDefinition(typeOrDefinition) {
if (isDevMode() && !typeOrDefinition) {
throw new TypeError(`resource type or definition is required, but received: '${String(typeOrDefinition)}'`);
}
const definition = typeof typeOrDefinition === 'string'
? this.resourceDefinitions[typeOrDefinition]
: typeOrDefinition;
if (definition) {
return normalizeDefinition(definition);
}
const type = typeOrDefinition;
if (isDevMode()) {
console.warn(`"${type}" could not be found in \`TOKEN_RESOURCE_DEFINITIONS\`, have you provided it correctly?`);
}
return { type, ...EMPTY_API_PREFIX_PARTS };
}
getApiPath({ cluster, namespace, name, type, apiGroup, apiVersion, }) {
apiGroup = normalizeApiGroup(apiGroup);
/* eslint-disable sonarjs/no-nested-template-literals */
return `${API_GATEWAY}${ifExist(cluster, `/kubernetes/${cluster}`)}/api${apiGroup && 's'}${ifExist(apiGroup, `/${apiGroup}`)}/${apiVersion || 'v1'}${ifExist(namespace, `/namespaces/${namespace}`)}${ifExist(type, `/${type}`)}${ifExist(name, `/${name}`)}`;
/* eslint-enable sonarjs/no-nested-template-literals */
}
getResourceList(resource, cluster) {
const { apiVersion } = resource;
const cached = this._listCaches[cluster] || (this._listCaches[cluster] = {});
return (cached[apiVersion] ||
(cached[apiVersion] = this.http
.get(this.getApiPath({
cluster,
...getApiPrefixParts(apiVersion),
}))
.pipe(map(({ resources }) => resources), publishRef())));
}
getResourceType(resource, cluster) {
const { apiVersion, kind } = resource;
const cached = this._typeCaches[cluster] || (this._typeCaches[cluster] = {});
return (cached[apiVersion] ||
(cached[apiVersion] = this.getResourceList(resource, cluster).pipe(map(resources => resources.find(item => item.kind === kind).name), publishRef())));
}
static { this.ɵfac = function K8sApiResourceService_Factory(t) { return new (t || K8sApiResourceService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(TOKEN_RESOURCE_DEFINITIONS)); }; }
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: K8sApiResourceService, factory: K8sApiResourceService.ɵfac, providedIn: 'root' }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(K8sApiResourceService, [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
type: Inject,
args: [TOKEN_RESOURCE_DEFINITIONS]
}] }], null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiazhzLWFwaS1yZXNvdXJjZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2FwaS9rOHMtYXBpLXJlc291cmNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQWMsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RFLE9BQU8sRUFJTCxXQUFXLEVBQ1gsT0FBTyxFQUNQLFVBQVUsR0FDWCxNQUFNLG9CQUFvQixDQUFDO0FBRTVCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQixtQkFBbUIsR0FDcEIsTUFBTSxXQUFXLENBQUM7OztBQU1uQixNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLFlBQ21CLElBQWdCLEVBRWhCLG1CQUEyQztRQUYzQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBRWhCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFHOUQsWUFBWTtRQUNKLGdCQUFXLEdBR2YsRUFBRSxDQUFDO1FBRVAsWUFBWTtRQUNKLGdCQUFXLEdBQXVELEVBQUUsQ0FBQztJQVQxRSxDQUFDO0lBV0osYUFBYSxDQUNYLGdCQUFnRDtRQUVoRCxJQUFJLFNBQVMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksU0FBUyxDQUNqQiwyREFBMkQsTUFBTSxDQUMvRCxnQkFBZ0IsQ0FDakIsR0FBRyxDQUNMLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQ2QsT0FBTyxnQkFBZ0IsS0FB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ekIscUJBQXFCLFdBQXJCLHFCQUFxQixtQkFGcEIsTUFBTTs7aUZBRVAscUJBQXFCO2NBSGpDLFVBQVU7ZUFBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7c0JBSUksTUFBTTt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwYWNrYWdlRG9jdW1lbnRhdGlvblxuICogQG1vZHVsZSBhcGlcbiAqL1xuXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUT0tFTl9SRVNPVVJDRV9ERUZJTklUSU9OUyB9IGZyb20gJy4uL2NvcmUvY29uc3RhbnRzL3Rva2Vucyc7XG5pbXBvcnQge1xuICBBUElSZXNvdXJjZUl0ZW0sXG4gIEFQSVJlc291cmNlTGlzdCxcbiAgS3ViZXJuZXRlc1Jlc291cmNlLFxuICBBUElfR0FURVdBWSxcbiAgaWZFeGlzdCxcbiAgcHVibGlzaFJlZixcbn0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcblxuaW1wb3J0IHtcbiAgRU1QVFlfQVBJX1BSRUZJWF9QQVJUUyxcbiAgZ2V0QXBpUHJlZml4UGFydHMsXG4gIG5vcm1hbGl6ZUFwaUdyb3VwLFxuICBub3JtYWxpemVEZWZpbml0aW9uLFxufSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IHsgSzhzUmVzb3VyY2VEZWZpbml0aW9uLCBLOHNSZXNvdXJjZURlZmluaXRpb25zIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBLOHNBcGlSZXNvdXJjZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgQEluamVjdChUT0tFTl9SRVNPVVJDRV9ERUZJTklUSU9OUylcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlRGVmaW5pdGlvbnM6IEs4c1Jlc291cmNlRGVmaW5pdGlvbnMsXG4gICkge31cblxuICAvLyBAaW50ZXJuYWxcbiAgcHJpdmF0ZSBfbGlzdENhY2hlczogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPEFQSVJlc291cmNlSXRlbVtdPj5cbiAgPiA9IHt9O1xuXG4gIC8vIEBpbnRlcm5hbFxuICBwcml2YXRlIF90eXBlQ2FjaGVzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPHN0cmluZz4+PiA9IHt9O1xuXG4gIGdldERlZmluaXRpb24oXG4gICAgdHlwZU9yRGVmaW5pdGlvbjogc3RyaW5nIHwgSzhzUmVzb3VyY2VEZWZpbml0aW9uLFxuICApOiBSZXF1aXJlZDxLOHNSZXNvdXJjZURlZmluaXRpb24+IHtcbiAgICBpZiAoaXNEZXZNb2RlKCkgJiYgIXR5cGVPckRlZmluaXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIGByZXNvdXJjZSB0eXBlIG9yIGRlZmluaXRpb24gaXMgcmVxdWlyZWQsIGJ1dCByZWNlaXZlZDogJyR7U3RyaW5nKFxuICAgICAgICAgIHR5cGVPckRlZmluaXRpb24sXG4gICAgICAgICl9J2AsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmluaXRpb24gPVxuICAgICAgdHlwZW9mIHR5cGVPckRlZmluaXRpb24gPT09ICdzdHJpbmcnXG4gICAgICAgID8gdGhpcy5yZXNvdXJjZURlZmluaXRpb25zW3R5cGVPckRlZmluaXRpb25dXG4gICAgICAgIDogdHlwZU9yRGVmaW5pdGlvbjtcblxuICAgIGlmIChkZWZpbml0aW9uKSB7XG4gICAgICByZXR1cm4gbm9ybWFsaXplRGVmaW5pdGlvbihkZWZpbml0aW9uKTtcbiAgICB9XG5cbiAgICBjb25zdCB0eXBlID0gdHlwZU9yRGVmaW5pdGlvbiBhcyBzdHJpbmc7XG4gICAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBcIiR7dHlwZX1cIiBjb3VsZCBub3QgYmUgZm91bmQgaW4gXFxgVE9LRU5fUkVTT1VSQ0VfREVGSU5JVElPTlNcXGAsIGhhdmUgeW91IHByb3ZpZGVkIGl0IGNvcnJlY3RseT9gLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgdHlwZSwgLi4uRU1QVFlfQVBJX1BSRUZJWF9QQVJUUyB9O1xuICB9XG5cbiAgZ2V0QXBpUGF0aCh7XG4gICAgY2x1c3RlcixcbiAgICBuYW1lc3BhY2UsXG4gICAgbmFtZSxcbiAgICB0eXBlLFxuICAgIGFwaUdyb3VwLFxuICAgIGFwaVZlcnNpb24sXG4gIH06IHtcbiAgICBjbHVzdGVyPzogc3RyaW5nO1xuICAgIG5hbWVzcGFjZT86IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xuICAgIHR5cGU/OiBzdHJpbmc7XG4gICAgYXBpR3JvdXA/OiBzdHJpbmc7XG4gICAgYXBpVmVyc2lvbj86IHN0cmluZztcbiAgfSk6IHN0cmluZyB7XG4gICAgYXBpR3JvdXAgPSBub3JtYWxpemVBcGlHcm91cChhcGlHcm91cCk7XG4gICAgLyogZXNsaW50LWRpc2FibGUgc29uYXJqcy9uby1uZXN0ZWQtdGVtcGxhdGUtbGl0ZXJhbHMgKi9cbiAgICByZXR1cm4gYCR7QVBJX0dBVEVXQVl9JHtpZkV4aXN0KGNsdXN0ZXIsIGAva3ViZXJuZXRlcy8ke2NsdXN0ZXJ9YCl9L2FwaSR7XG4gICAgICBhcGlHcm91cCAmJiAncydcbiAgICB9JHtpZkV4aXN0KGFwaUdyb3VwLCBgLyR7YXBpR3JvdXB9YCl9LyR7YXBpVmVyc2lvbiB8fCAndjEnfSR7aWZFeGlzdChcbiAgICAgIG5hbWVzcGFjZSxcbiAgICAgIGAvbmFtZXNwYWNlcy8ke25hbWVzcGFjZX1gLFxuICAgICl9JHtpZkV4aXN0KHR5cGUsIGAvJHt0eXBlfWApfSR7aWZFeGlzdChuYW1lLCBgLyR7bmFtZX1gKX1gO1xuICAgIC8qIGVzbGludC1lbmFibGUgc29uYXJqcy9uby1uZXN0ZWQtdGVtcGxhdGUtbGl0ZXJhbHMgKi9cbiAgfVxuXG4gIGdldFJlc291cmNlTGlzdDxUIGV4dGVuZHMgS3ViZXJuZXRlc1Jlc291cmNlPihyZXNvdXJjZTogVCwgY2x1c3Rlcjogc3RyaW5nKSB7XG4gICAgY29uc3QgeyBhcGlWZXJzaW9uIH0gPSByZXNvdXJjZTtcblxuICAgIGNvbnN0IGNhY2hlZCA9XG4gICAgICB0aGlzLl9saXN0Q2FjaGVzW2NsdXN0ZXJdIHx8ICh0aGlzLl9saXN0Q2FjaGVzW2NsdXN0ZXJdID0ge30pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIGNhY2hlZFthcGlWZXJzaW9uXSB8fFxuICAgICAgKGNhY2hlZFthcGlWZXJzaW9uXSA9IHRoaXMuaHR0cFxuICAgICAgICAuZ2V0PEFQSVJlc291cmNlTGlzdD4oXG4gICAgICAgICAgdGhpcy5nZXRBcGlQYXRoKHtcbiAgICAgICAgICAgIGNsdXN0ZXIsXG4gICAgICAgICAgICAuLi5nZXRBcGlQcmVmaXhQYXJ0cyhhcGlWZXJzaW9uKSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHsgcmVzb3VyY2VzIH0pID0+IHJlc291cmNlcyksXG4gICAgICAgICAgcHVibGlzaFJlZigpLFxuICAgICAgICApKVxuICAgICk7XG4gIH1cblxuICBnZXRSZXNvdXJjZVR5cGU8VCBleHRlbmRzIEt1YmVybmV0ZXNSZXNvdXJjZT4ocmVzb3VyY2U6IFQsIGNsdXN0ZXI6IHN0cmluZykge1xuICAgIGNvbnN0IHsgYXBpVmVyc2lvbiwga2luZCB9ID0gcmVzb3VyY2U7XG5cbiAgICBjb25zdCBjYWNoZWQgPVxuICAgICAgdGhpcy5fdHlwZUNhY2hlc1tjbHVzdGVyXSB8fCAodGhpcy5fdHlwZUNhY2hlc1tjbHVzdGVyXSA9IHt9KTtcblxuICAgIHJldHVybiAoXG4gICAgICBjYWNoZWRbYXBpVmVyc2lvbl0gfHxcbiAgICAgIChjYWNoZWRbYXBpVmVyc2lvbl0gPSB0aGlzLmdldFJlc291cmNlTGlzdChyZXNvdXJjZSwgY2x1c3RlcikucGlwZShcbiAgICAgICAgbWFwKHJlc291cmNlcyA9PiByZXNvdXJjZXMuZmluZChpdGVtID0+IGl0ZW0ua2luZCA9PT0ga2luZCkubmFtZSksXG4gICAgICAgIHB1Ymxpc2hSZWYoKSxcbiAgICAgICkpXG4gICAgKTtcbiAgfVxufVxuIl19