@alauda-fe/common
Version:
Alauda frontend team common codes.
70 lines • 8.94 kB
JavaScript
/**
* @packageDocumentation
* @module license-api
*/
import { HttpClient } from '@angular/common/http';
import { inject, Injectable } from '@angular/core';
import { catchError, map, of, shareReplay, switchMap } from 'rxjs';
import { API_GATEWAY } from '../core/constants/constants';
import * as i0 from "@angular/core";
export const LICENSE_FEATURE_GATE = `${API_GATEWAY}/fg/v1/featuregates/license`;
export const ENTERPRISE_SUPPORT_FEATURE_GATE = `${API_GATEWAY}/fg/v1/featuregates/enterprise-support`;
export function getResourceNum(resource = {}) {
return Object.values(resource).reduce((pre, cur) => cur + pre, 0);
}
export function formatProductName(productName) {
return productName.replaceAll(/\s+/g, '-');
}
export class LicenseApiService {
constructor() {
this.http = inject(HttpClient);
this.licenseExempt$ = this.http
.get(ENTERPRISE_SUPPORT_FEATURE_GATE)
.pipe(map(res => res.status.licenseExempt ?? false), catchError(() => of(true)), shareReplay(1));
}
isLicenseExempt() {
return this.licenseExempt$;
}
getLicense(product) {
return this.http.get(LICENSE_FEATURE_GATE, {
params: { product },
});
}
getEnterpriseSupport(product) {
return this.http.get(ENTERPRISE_SUPPORT_FEATURE_GATE, {
params: product && {
product,
},
});
}
getLicenseResourceLimit(check, resource) {
const params = check === 'version'
? { check, targetVersion: resource }
: { check, resourceNum: resource };
return this.isLicenseExempt().pipe(switchMap(exempt => exempt
? of(true)
: this.http
.get(LICENSE_FEATURE_GATE, {
params,
})
.pipe(map(res => res.status.enabled))));
}
/**
* @deprecated 已经没有使用场景,未考虑 licenseExempt 情况
*/
getLicenseAllowVersion(version) {
return this.http.get(LICENSE_FEATURE_GATE, {
params: {
check: 'version',
targetVersion: version,
},
});
}
static { this.ɵfac = function LicenseApiService_Factory(t) { return new (t || LicenseApiService)(); }; }
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LicenseApiService, factory: LicenseApiService.ɵfac, providedIn: 'root' }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LicenseApiService, [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], null, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGljZW5zZS1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvbGljZW5zZS9saWNlbnNlLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUcxRCxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxHQUFHLFdBQVcsNkJBQTZCLENBQUM7QUFDaEYsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsR0FBRyxXQUFXLHdDQUF3QyxDQUFDO0FBRXRHLE1BQU0sVUFBVSxjQUFjLENBQUMsV0FBbUMsRUFBRTtJQUNsRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLFdBQW1CO0lBQ25ELE9BQU8sV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUdELE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFbUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUxQixtQkFBYyxHQUFHLElBQUksQ0FBQyxJQUFJO2FBQ3hDLEdBQUcsQ0FBK0IsK0JBQStCLENBQUM7YUFDbEUsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxFQUM3QyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzFCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDZixDQUFDO0tBdURMO0lBckRDLGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFlO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQWMsb0JBQW9CLEVBQUU7WUFDdEQsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUFnQjtRQUNuQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQiwrQkFBK0IsRUFDL0I7WUFDRSxNQUFNLEVBQUUsT0FBTyxJQUFJO2dCQUNqQixPQUFPO2FBQ1I7U0FDRixDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsdUJBQXVCLENBQ3JCLEtBQXNDLEVBQ3RDLFFBQWdCO1FBRWhCLE1BQU0sTUFBTSxHQUNWLEtBQUssS0FBSyxTQUFTO1lBQ2pCLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFO1lBQ3BDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUNoQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDakIsTUFBTTtZQUNKLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ1YsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJO2lCQUNOLEdBQUcsQ0FBYyxvQkFBb0IsRUFBRTtnQkFDdEMsTUFBTTthQUNQLENBQUM7aUJBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FDNUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsc0JBQXNCLENBQUMsT0FBZTtRQUNwQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFjLG9CQUFvQixFQUFFO1lBQ3RELE1BQU0sRUFBRTtnQkFDTixLQUFLLEVBQUUsU0FBUztnQkFDaEIsYUFBYSxFQUFFLE9BQU87YUFDdkI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO2tGQS9EVSxpQkFBaUI7dUVBQWpCLGlCQUFpQixXQUFqQixpQkFBaUIsbUJBREosTUFBTTs7aUZBQ25CLGlCQUFpQjtjQUQ3QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgbGljZW5zZS1hcGlcbiAqL1xuXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIG9mLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFQSV9HQVRFV0FZIH0gZnJvbSAnLi4vY29yZS9jb25zdGFudHMvY29uc3RhbnRzJztcbmltcG9ydCB7IEZlYXR1cmVHYXRlLCBGZWF0dXJlR2F0ZUVudGVycHJpc2VTdXBwb3J0IH0gZnJvbSAnLi4vY29yZS9wdWJsaWMtYXBpJztcblxuZXhwb3J0IGNvbnN0IExJQ0VOU0VfRkVBVFVSRV9HQVRFID0gYCR7QVBJX0dBVEVXQVl9L2ZnL3YxL2ZlYXR1cmVnYXRlcy9saWNlbnNlYDtcbmV4cG9ydCBjb25zdCBFTlRFUlBSSVNFX1NVUFBPUlRfRkVBVFVSRV9HQVRFID0gYCR7QVBJX0dBVEVXQVl9L2ZnL3YxL2ZlYXR1cmVnYXRlcy9lbnRlcnByaXNlLXN1cHBvcnRgO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VOdW0ocmVzb3VyY2U6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fSk6IG51bWJlciB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKHJlc291cmNlKS5yZWR1Y2UoKHByZSwgY3VyKSA9PiBjdXIgKyBwcmUsIDApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UHJvZHVjdE5hbWUocHJvZHVjdE5hbWU6IHN0cmluZykge1xuICByZXR1cm4gcHJvZHVjdE5hbWUucmVwbGFjZUFsbCgvXFxzKy9nLCAnLScpO1xufVxuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIExpY2Vuc2VBcGlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbGljZW5zZUV4ZW1wdCQgPSB0aGlzLmh0dHBcbiAgICAuZ2V0PEZlYXR1cmVHYXRlRW50ZXJwcmlzZVN1cHBvcnQ+KEVOVEVSUFJJU0VfU1VQUE9SVF9GRUFUVVJFX0dBVEUpXG4gICAgLnBpcGUoXG4gICAgICBtYXAocmVzID0+IHJlcy5zdGF0dXMubGljZW5zZUV4ZW1wdCA/PyBmYWxzZSksXG4gICAgICBjYXRjaEVycm9yKCgpID0+IG9mKHRydWUpKSxcbiAgICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgICk7XG5cbiAgaXNMaWNlbnNlRXhlbXB0KCkge1xuICAgIHJldHVybiB0aGlzLmxpY2Vuc2VFeGVtcHQkO1xuICB9XG5cbiAgZ2V0TGljZW5zZShwcm9kdWN0OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxGZWF0dXJlR2F0ZT4oTElDRU5TRV9GRUFUVVJFX0dBVEUsIHtcbiAgICAgIHBhcmFtczogeyBwcm9kdWN0IH0sXG4gICAgfSk7XG4gIH1cblxuICBnZXRFbnRlcnByaXNlU3VwcG9ydChwcm9kdWN0Pzogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8RmVhdHVyZUdhdGVFbnRlcnByaXNlU3VwcG9ydD4oXG4gICAgICBFTlRFUlBSSVNFX1NVUFBPUlRfRkVBVFVSRV9HQVRFLFxuICAgICAge1xuICAgICAgICBwYXJhbXM6IHByb2R1Y3QgJiYge1xuICAgICAgICAgIHByb2R1Y3QsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBnZXRMaWNlbnNlUmVzb3VyY2VMaW1pdChcbiAgICBjaGVjazogJ3Jlc291cmNlJyB8ICdub2RlJyB8ICd2ZXJzaW9uJyxcbiAgICByZXNvdXJjZTogbnVtYmVyLFxuICApIHtcbiAgICBjb25zdCBwYXJhbXMgPVxuICAgICAgY2hlY2sgPT09ICd2ZXJzaW9uJ1xuICAgICAgICA/IHsgY2hlY2ssIHRhcmdldFZlcnNpb246IHJlc291cmNlIH1cbiAgICAgICAgOiB7IGNoZWNrLCByZXNvdXJjZU51bTogcmVzb3VyY2UgfTtcbiAgICByZXR1cm4gdGhpcy5pc0xpY2Vuc2VFeGVtcHQoKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKGV4ZW1wdCA9PlxuICAgICAgICBleGVtcHRcbiAgICAgICAgICA/IG9mKHRydWUpXG4gICAgICAgICAgOiB0aGlzLmh0dHBcbiAgICAgICAgICAgICAgLmdldDxGZWF0dXJlR2F0ZT4oTElDRU5TRV9GRUFUVVJFX0dBVEUsIHtcbiAgICAgICAgICAgICAgICBwYXJhbXMsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5waXBlKG1hcChyZXMgPT4gcmVzLnN0YXR1cy5lbmFibGVkKSksXG4gICAgICApLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQg5bey57uP5rKh5pyJ5L2/55So5Zy65pmv77yM5pyq6ICD6JmRIGxpY2Vuc2VFeGVtcHQg5oOF5Ya1XG4gICAqL1xuICBnZXRMaWNlbnNlQWxsb3dWZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEZlYXR1cmVHYXRlPihMSUNFTlNFX0ZFQVRVUkVfR0FURSwge1xuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIGNoZWNrOiAndmVyc2lvbicsXG4gICAgICAgIHRhcmdldFZlcnNpb246IHZlcnNpb24sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=