@alauda-fe/common
Version:
Alauda frontend team common codes.
44 lines • 6.47 kB
JavaScript
/**
* @packageDocumentation
* @module license
*/
import { inject, Injectable, InjectionToken } from '@angular/core';
import { catchError, map, of, shareReplay, switchMap } from 'rxjs';
import { getSubdomainAnnotation } from '../core/public-api';
import { formatProductName, LicenseApiService } from './license-api';
import { LicenseStatus } from './license.type';
import * as i0 from "@angular/core";
const FAILED_STATUS_MAPPER = {
Expired: LicenseStatus.EXPIRED,
Forbidden: LicenseStatus.NO_PERMISSION,
NotExist: LicenseStatus.UNAUTHORIZED,
};
// each platform inject this token to specify product name
export const LICENSE_PRODUCT_NAME_TOKEN = new InjectionToken('product_name');
export class LicenseService {
constructor() {
this.productName = inject(LICENSE_PRODUCT_NAME_TOKEN);
this.licenseApi = inject(LicenseApiService);
this.status$ = this.licenseApi.isLicenseExempt().pipe(switchMap(exempted => {
if (exempted) {
return of(LicenseStatus.AUTHORIZED);
}
return this.licenseApi
.getLicense(formatProductName(this.productName))
.pipe(catchError(() => of(null)), map(featureGate => {
if (featureGate?.status?.enabled) {
return LicenseStatus.AUTHORIZED;
}
const reason = getSubdomainAnnotation('license', 'reason', featureGate);
return ((reason && FAILED_STATUS_MAPPER[reason]) || LicenseStatus.INVALID);
}));
}), shareReplay(1));
}
static { this.ɵfac = function LicenseService_Factory(t) { return new (t || LicenseService)(); }; }
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: LicenseService, factory: LicenseService.ɵfac, providedIn: 'root' }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(LicenseService, [{
type: Injectable,
args: [{ providedIn: 'root' }]
}], null, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGljZW5zZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vc3JjL2xpY2Vuc2UvbGljZW5zZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVILE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVuRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckUsT0FBTyxFQUFzQixhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFbkUsTUFBTSxvQkFBb0IsR0FBa0M7SUFDMUQsT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPO0lBQzlCLFNBQVMsRUFBRSxhQUFhLENBQUMsYUFBYTtJQUN0QyxRQUFRLEVBQUUsYUFBYSxDQUFDLFlBQVk7Q0FDckMsQ0FBQztBQUVGLDBEQUEwRDtBQUMxRCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FDckMsSUFBSSxjQUFjLENBQXFCLGNBQWMsQ0FBQyxDQUFDO0FBR3pELE1BQU0sT0FBTyxjQUFjO0lBRDNCO1FBRW1CLGdCQUFXLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDakQsZUFBVSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXhELFlBQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksQ0FDOUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ25CLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVO2lCQUNuQixVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2lCQUMvQyxJQUFJLENBQ0gsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUMxQixHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ2hCLElBQUksV0FBVyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztvQkFDakMsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDO2dCQUNsQyxDQUFDO2dCQUNELE1BQU0sTUFBTSxHQUFHLHNCQUFzQixDQUNuQyxTQUFTLEVBQ1QsUUFBUSxFQUNSLFdBQVcsQ0FDWixDQUFDO2dCQUNGLE9BQU8sQ0FDTCxDQUFDLE1BQU0sSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQ2xFLENBQUM7WUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ04sQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7S0FDSDsrRUE5QlksY0FBYzt1RUFBZCxjQUFjLFdBQWQsY0FBYyxtQkFERCxNQUFNOztpRkFDbkIsY0FBYztjQUQxQixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFja2FnZURvY3VtZW50YXRpb25cbiAqIEBtb2R1bGUgbGljZW5zZVxuICovXG5cbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgZ2V0U3ViZG9tYWluQW5ub3RhdGlvbiB9IGZyb20gJy4uL2NvcmUvcHVibGljLWFwaSc7XG5cbmltcG9ydCB7IGZvcm1hdFByb2R1Y3ROYW1lLCBMaWNlbnNlQXBpU2VydmljZSB9IGZyb20gJy4vbGljZW5zZS1hcGknO1xuaW1wb3J0IHsgTGljZW5zZVByb2R1Y3ROYW1lLCBMaWNlbnNlU3RhdHVzIH0gZnJvbSAnLi9saWNlbnNlLnR5cGUnO1xuXG5jb25zdCBGQUlMRURfU1RBVFVTX01BUFBFUjogUmVjb3JkPHN0cmluZywgTGljZW5zZVN0YXR1cz4gPSB7XG4gIEV4cGlyZWQ6IExpY2Vuc2VTdGF0dXMuRVhQSVJFRCxcbiAgRm9yYmlkZGVuOiBMaWNlbnNlU3RhdHVzLk5PX1BFUk1JU1NJT04sXG4gIE5vdEV4aXN0OiBMaWNlbnNlU3RhdHVzLlVOQVVUSE9SSVpFRCxcbn07XG5cbi8vIGVhY2ggcGxhdGZvcm0gaW5qZWN0IHRoaXMgdG9rZW4gdG8gc3BlY2lmeSBwcm9kdWN0IG5hbWVcbmV4cG9ydCBjb25zdCBMSUNFTlNFX1BST0RVQ1RfTkFNRV9UT0tFTiA9XG4gIG5ldyBJbmplY3Rpb25Ub2tlbjxMaWNlbnNlUHJvZHVjdE5hbWU+KCdwcm9kdWN0X25hbWUnKTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMaWNlbnNlU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdE5hbWUgPSBpbmplY3QoTElDRU5TRV9QUk9EVUNUX05BTUVfVE9LRU4pO1xuICBwcml2YXRlIHJlYWRvbmx5IGxpY2Vuc2VBcGkgPSBpbmplY3QoTGljZW5zZUFwaVNlcnZpY2UpO1xuXG4gIHN0YXR1cyQgPSB0aGlzLmxpY2Vuc2VBcGkuaXNMaWNlbnNlRXhlbXB0KCkucGlwZShcbiAgICBzd2l0Y2hNYXAoZXhlbXB0ZWQgPT4ge1xuICAgICAgaWYgKGV4ZW1wdGVkKSB7XG4gICAgICAgIHJldHVybiBvZihMaWNlbnNlU3RhdHVzLkFVVEhPUklaRUQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMubGljZW5zZUFwaVxuICAgICAgICAuZ2V0TGljZW5zZShmb3JtYXRQcm9kdWN0TmFtZSh0aGlzLnByb2R1Y3ROYW1lKSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoKSA9PiBvZihudWxsKSksXG4gICAgICAgICAgbWFwKGZlYXR1cmVHYXRlID0+IHtcbiAgICAgICAgICAgIGlmIChmZWF0dXJlR2F0ZT8uc3RhdHVzPy5lbmFibGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBMaWNlbnNlU3RhdHVzLkFVVEhPUklaRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCByZWFzb24gPSBnZXRTdWJkb21haW5Bbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAnbGljZW5zZScsXG4gICAgICAgICAgICAgICdyZWFzb24nLFxuICAgICAgICAgICAgICBmZWF0dXJlR2F0ZSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAocmVhc29uICYmIEZBSUxFRF9TVEFUVVNfTUFQUEVSW3JlYXNvbl0pIHx8IExpY2Vuc2VTdGF0dXMuSU5WQUxJRFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICB9KSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgKTtcbn1cbiJdfQ==