UNPKG

@qodalis/angular-cli

Version:

A lightweight and flexible command-line interface (CLI) tool designed to streamline workflows and automate tasks for developers.

38 lines 5.85 kB
import { BehaviorSubject } from 'rxjs'; import { distinctUntilChanged, map } from 'rxjs/operators'; export class CliStateStore { constructor(services, name, initialState) { this.services = services; this.name = name; this.initialState = initialState; this.state$ = new BehaviorSubject(initialState); this.storageKey = `store-state-${name}`; } getState() { return this.state$.getValue(); } updateState(newState) { this.state$.next({ ...this.getState(), ...newState }); } select(selector) { return this.state$.asObservable().pipe(map(selector), distinctUntilChanged()); } subscribe(callback) { return this.state$.asObservable().subscribe(callback); } reset() { this.state$.next(this.initialState); } async persist() { const keyValueStore = this.services.get('cli-key-value-store'); await keyValueStore.set(this.storageKey, this.getState()); } async initialize() { const keyValueStore = this.services.get('cli-key-value-store'); const state = await keyValueStore.get(this.storageKey); if (state) { this.state$.next(state); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXN0YXRlLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpL3NyYy9saWIvY2xpL3N0YXRlL2NsaS1zdGF0ZS1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsZUFBZSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0QsTUFBTSxPQUFPLGFBQWE7SUFLdEIsWUFDcUIsUUFBNkIsRUFDOUIsSUFBWSxFQUNYLFlBQXNCO1FBRnRCLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBQzlCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWCxpQkFBWSxHQUFaLFlBQVksQ0FBVTtRQUV2QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFXLFlBQVksQ0FBQyxDQUFDO1FBRTFELElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBZSxJQUFJLEVBQUUsQ0FBQztJQUM1QyxDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQU8sQ0FBQztJQUN2QyxDQUFDO0lBRUQsV0FBVyxDQUFDLFFBQTJCO1FBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsR0FBRyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxNQUFNLENBQUksUUFBZ0M7UUFDdEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FDbEMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUNiLG9CQUFvQixFQUFFLENBQ3pCLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQW1DO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELEtBQUs7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1QsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ25DLHFCQUFxQixDQUN4QixDQUFDO1FBRUYsTUFBTSxhQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ1osTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQ25DLHFCQUFxQixDQUN4QixDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQUcsTUFBTSxhQUFhLENBQUMsR0FBRyxDQUFXLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVqRSxJQUFJLEtBQUssRUFBRTtZQUNQLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDbGlTdGF0ZSxcbiAgICBJQ2xpU2VydmljZVByb3ZpZGVyLFxuICAgIElDbGlLZXlWYWx1ZVN0b3JlLFxuICAgIElDbGlTdGF0ZVN0b3JlLFxufSBmcm9tICdAcW9kYWxpcy9jbGktY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGNsYXNzIENsaVN0YXRlU3RvcmUgaW1wbGVtZW50cyBJQ2xpU3RhdGVTdG9yZSB7XG4gICAgcHJpdmF0ZSBzdGF0ZSQ6IEJlaGF2aW9yU3ViamVjdDxDbGlTdGF0ZT47XG5cbiAgICBwcml2YXRlIHN0b3JhZ2VLZXk6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHNlcnZpY2VzOiBJQ2xpU2VydmljZVByb3ZpZGVyLFxuICAgICAgICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGluaXRpYWxTdGF0ZTogQ2xpU3RhdGUsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDbGlTdGF0ZT4oaW5pdGlhbFN0YXRlKTtcblxuICAgICAgICB0aGlzLnN0b3JhZ2VLZXkgPSBgc3RvcmUtc3RhdGUtJHtuYW1lfWA7XG4gICAgfVxuXG4gICAgZ2V0U3RhdGU8VCBleHRlbmRzIENsaVN0YXRlID0gQ2xpU3RhdGU+KCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZSQuZ2V0VmFsdWUoKSBhcyBUO1xuICAgIH1cblxuICAgIHVwZGF0ZVN0YXRlKG5ld1N0YXRlOiBQYXJ0aWFsPENsaVN0YXRlPik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXRlJC5uZXh0KHsgLi4udGhpcy5nZXRTdGF0ZSgpLCAuLi5uZXdTdGF0ZSB9KTtcbiAgICB9XG5cbiAgICBzZWxlY3Q8Sz4oc2VsZWN0b3I6IChzdGF0ZTogQ2xpU3RhdGUpID0+IEspOiBPYnNlcnZhYmxlPEs+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGUkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICAgICAgICBtYXAoc2VsZWN0b3IpLFxuICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgLy8gRW1pdCBvbmx5IHdoZW4gdGhlIHNlbGVjdGVkIHZhbHVlIGNoYW5nZXNcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzdWJzY3JpYmUoY2FsbGJhY2s6IChzdGF0ZTogQ2xpU3RhdGUpID0+IHZvaWQpOiBTdWJzY3JpcHRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGF0ZSQuYXNPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICByZXNldCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGF0ZSQubmV4dCh0aGlzLmluaXRpYWxTdGF0ZSk7XG4gICAgfVxuXG4gICAgYXN5bmMgcGVyc2lzdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qga2V5VmFsdWVTdG9yZSA9IHRoaXMuc2VydmljZXMuZ2V0PElDbGlLZXlWYWx1ZVN0b3JlPihcbiAgICAgICAgICAgICdjbGkta2V5LXZhbHVlLXN0b3JlJyxcbiAgICAgICAgKTtcblxuICAgICAgICBhd2FpdCBrZXlWYWx1ZVN0b3JlLnNldCh0aGlzLnN0b3JhZ2VLZXksIHRoaXMuZ2V0U3RhdGUoKSk7XG4gICAgfVxuXG4gICAgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qga2V5VmFsdWVTdG9yZSA9IHRoaXMuc2VydmljZXMuZ2V0PElDbGlLZXlWYWx1ZVN0b3JlPihcbiAgICAgICAgICAgICdjbGkta2V5LXZhbHVlLXN0b3JlJyxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBzdGF0ZSA9IGF3YWl0IGtleVZhbHVlU3RvcmUuZ2V0PENsaVN0YXRlPih0aGlzLnN0b3JhZ2VLZXkpO1xuXG4gICAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSQubmV4dChzdGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=