@alauda-fe/common
Version:
Alauda frontend team common codes.
47 lines • 7.56 kB
JavaScript
import { HttpClient } from '@angular/common/http';
import { Inject, Injectable } from '@angular/core';
import { bufferTime, filter, fromEvent, merge, switchMap, withLatestFrom, } from 'rxjs';
import { PageVisibilityService } from '../api/page-visibility.service';
import { getGlobalEnvironments } from '../core/constants/public-api';
import { API_GATEWAY, TOKEN_DISABLE_SESSION_MANAGE, skipError, } from '../public-api';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common/http";
import * as i2 from "../api/page-visibility.service";
const EVENT_TRIGGERS = ['click', 'keypress'];
export const HEARTBEAT_POLLING = 15_000;
export const SESSION_MANAGE_KEY = 'session-manage-construct-time';
export class SessionManageService {
constructor(http, pageVisibility, disabled) {
this.http = http;
this.pageVisibility = pageVisibility;
this.visibility$ = this.pageVisibility.getPageVisibility();
this.userAction$ = merge(...EVENT_TRIGGERS.map(ev => fromEvent(document, ev)))
.pipe(bufferTime(HEARTBEAT_POLLING), withLatestFrom(this.visibility$))
.pipe(filter(([_, visible]) => visible), switchMap(([i]) => this.http
.get(`${API_GATEWAY}/auth/v1/heartbeat`, {
params: { action: !!i.length },
})
.pipe(
// 错误由 HttpInterceptor 处理,仅由 HttpInterceptor 主动结束此流,自身一直进行心跳
skipError())));
if (!disabled && getGlobalEnvironments('CPAAS_SESSION_SWITCH') === 'on') {
sessionStorage.setItem(SESSION_MANAGE_KEY, String(Date.now()));
this.subscription = this.userAction$.subscribe();
}
}
complete() {
this.subscription?.unsubscribe();
}
static { this.ɵfac = function SessionManageService_Factory(t) { return new (t || SessionManageService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.PageVisibilityService), i0.ɵɵinject(TOKEN_DISABLE_SESSION_MANAGE)); }; }
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: SessionManageService, factory: SessionManageService.ɵfac, providedIn: 'root' }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SessionManageService, [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], () => [{ type: i1.HttpClient }, { type: i2.PageVisibilityService }, { type: undefined, decorators: [{
type: Inject,
args: [TOKEN_DISABLE_SESSION_MANAGE]
}] }], null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1tYW5hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL3NyYy9hdXRob3JpemF0aW9uL3Nlc3Npb24tbWFuYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFFTCxVQUFVLEVBQ1YsTUFBTSxFQUNOLFNBQVMsRUFDVCxLQUFLLEVBQ0wsU0FBUyxFQUNULGNBQWMsR0FDZixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JFLE9BQU8sRUFDTCxXQUFXLEVBQ1gsNEJBQTRCLEVBQzVCLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7OztBQUV2QixNQUFNLGNBQWMsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM3QyxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsK0JBQStCLENBQUM7QUFLbEUsTUFBTSxPQUFPLG9CQUFvQjtJQXNCL0IsWUFDbUIsSUFBZ0IsRUFDaEIsY0FBcUMsRUFDaEIsUUFBaUI7UUFGdEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUF0QnZDLGdCQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBRXRELGdCQUFXLEdBQUcsS0FBSyxDQUNsQyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQ3JEO2FBQ0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDckUsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFDakMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ2hCLElBQUksQ0FBQyxJQUFJO2FBQ04sR0FBRyxDQUFDLEdBQUcsV0FBVyxvQkFBb0IsRUFBRTtZQUN2QyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7U0FDL0IsQ0FBQzthQUNELElBQUk7UUFDSCw0REFBNEQ7UUFDNUQsU0FBUyxFQUFFLENBQ1osQ0FDSixDQUNGLENBQUM7UUFPRixJQUFJLENBQUMsUUFBUSxJQUFJLHFCQUFxQixDQUFDLHNCQUFzQixDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDeEUsY0FBYyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxDQUFDO3FGQW5DVSxvQkFBb0IsaUZBeUJyQiw0QkFBNEI7dUVBekIzQixvQkFBb0IsV0FBcEIsb0JBQW9CLG1CQUZuQixNQUFNOztpRkFFUCxvQkFBb0I7Y0FIaEMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COztzQkEwQkksTUFBTTt1QkFBQyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTdWJzY3JpcHRpb24sXG4gIGJ1ZmZlclRpbWUsXG4gIGZpbHRlcixcbiAgZnJvbUV2ZW50LFxuICBtZXJnZSxcbiAgc3dpdGNoTWFwLFxuICB3aXRoTGF0ZXN0RnJvbSxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFBhZ2VWaXNpYmlsaXR5U2VydmljZSB9IGZyb20gJy4uL2FwaS9wYWdlLXZpc2liaWxpdHkuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRHbG9iYWxFbnZpcm9ubWVudHMgfSBmcm9tICcuLi9jb3JlL2NvbnN0YW50cy9wdWJsaWMtYXBpJztcbmltcG9ydCB7XG4gIEFQSV9HQVRFV0FZLFxuICBUT0tFTl9ESVNBQkxFX1NFU1NJT05fTUFOQUdFLFxuICBza2lwRXJyb3IsXG59IGZyb20gJy4uL3B1YmxpYy1hcGknO1xuXG5jb25zdCBFVkVOVF9UUklHR0VSUyA9IFsnY2xpY2snLCAna2V5cHJlc3MnXTtcbmV4cG9ydCBjb25zdCBIRUFSVEJFQVRfUE9MTElORyA9IDE1XzAwMDtcbmV4cG9ydCBjb25zdCBTRVNTSU9OX01BTkFHRV9LRVkgPSAnc2Vzc2lvbi1tYW5hZ2UtY29uc3RydWN0LXRpbWUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2Vzc2lvbk1hbmFnZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IHZpc2liaWxpdHkkID0gdGhpcy5wYWdlVmlzaWJpbGl0eS5nZXRQYWdlVmlzaWJpbGl0eSgpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlckFjdGlvbiQgPSBtZXJnZShcbiAgICAuLi5FVkVOVF9UUklHR0VSUy5tYXAoZXYgPT4gZnJvbUV2ZW50KGRvY3VtZW50LCBldikpLFxuICApXG4gICAgLnBpcGUoYnVmZmVyVGltZShIRUFSVEJFQVRfUE9MTElORyksIHdpdGhMYXRlc3RGcm9tKHRoaXMudmlzaWJpbGl0eSQpKVxuICAgIC5waXBlKFxuICAgICAgZmlsdGVyKChbXywgdmlzaWJsZV0pID0+IHZpc2libGUpLFxuICAgICAgc3dpdGNoTWFwKChbaV0pID0+XG4gICAgICAgIHRoaXMuaHR0cFxuICAgICAgICAgIC5nZXQoYCR7QVBJX0dBVEVXQVl9L2F1dGgvdjEvaGVhcnRiZWF0YCwge1xuICAgICAgICAgICAgcGFyYW1zOiB7IGFjdGlvbjogISFpLmxlbmd0aCB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAvLyDplJnor6/nlLEgSHR0cEludGVyY2VwdG9yIOWkhOeQhu+8jOS7heeUsSBIdHRwSW50ZXJjZXB0b3Ig5Li75Yqo57uT5p2f5q2k5rWB77yM6Ieq6Lqr5LiA55u06L+b6KGM5b+D6LezXG4gICAgICAgICAgICBza2lwRXJyb3IoKSxcbiAgICAgICAgICApLFxuICAgICAgKSxcbiAgICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VWaXNpYmlsaXR5OiBQYWdlVmlzaWJpbGl0eVNlcnZpY2UsXG4gICAgQEluamVjdChUT0tFTl9ESVNBQkxFX1NFU1NJT05fTUFOQUdFKSBkaXNhYmxlZDogYm9vbGVhbixcbiAgKSB7XG4gICAgaWYgKCFkaXNhYmxlZCAmJiBnZXRHbG9iYWxFbnZpcm9ubWVudHMoJ0NQQUFTX1NFU1NJT05fU1dJVENIJykgPT09ICdvbicpIHtcbiAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oU0VTU0lPTl9NQU5BR0VfS0VZLCBTdHJpbmcoRGF0ZS5ub3coKSkpO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnVzZXJBY3Rpb24kLnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNvbXBsZXRlKCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=