UNPKG

@qodalis/angular-cli

Version:

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

64 lines 7.92 kB
import { Injectable } from '@angular/core'; import * as i0 from "@angular/core"; import * as i1 from "../storage/cli-key-value-store"; export class CliCommandHistoryService { constructor(store) { this.store = store; this.storageKey = 'cli-command-history'; this.commandHistory = []; } async addCommand(command) { const normalizedCommand = command.trim(); if (normalizedCommand) { if (this.commandHistory.length > 0) { const lastCommand = this.commandHistory[this.commandHistory.length - 1]; if (lastCommand === normalizedCommand) { return; } } this.commandHistory.push(command); await this.saveHistory(); } } getLastIndex() { return this.commandHistory.length; } getHistory() { return [...this.commandHistory]; } async clearHistory() { this.commandHistory = []; await this.saveHistory(); } getCommand(index) { return this.commandHistory[index]; } async saveHistory() { //save only last 500 commands const trimmedHistory = this.commandHistory.slice(-500); return await this.store.set(this.storageKey, trimmedHistory); } async loadHistory() { const savedOldHistory = localStorage.getItem('cliCommandHistory'); if (savedOldHistory) { localStorage.removeItem('cliCommandHistory'); await this.store.set(this.storageKey, JSON.parse(savedOldHistory)); } const savedHistory = await this.store.get(this.storageKey); if (savedHistory) { this.commandHistory = savedHistory; } } async initialize() { await this.loadHistory(); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliCommandHistoryService, deps: [{ token: i1.CliKeyValueStore }], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliCommandHistoryService, providedIn: 'root' }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliCommandHistoryService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.CliKeyValueStore }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLWNvbW1hbmQtaGlzdG9yeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpL3NyYy9saWIvY2xpL3NlcnZpY2VzL2NsaS1jb21tYW5kLWhpc3Rvcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLHdCQUF3QjtJQUlqQyxZQUE2QixLQUF1QjtRQUF2QixVQUFLLEdBQUwsS0FBSyxDQUFrQjtRQUhuQyxlQUFVLEdBQUcscUJBQXFCLENBQUM7UUFDNUMsbUJBQWMsR0FBYSxFQUFFLENBQUM7SUFFaUIsQ0FBQztJQUVqRCxLQUFLLENBQUMsVUFBVSxDQUFDLE9BQWU7UUFDbkMsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxpQkFBaUIsRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDaEMsTUFBTSxXQUFXLEdBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEQsSUFBSSxXQUFXLEtBQUssaUJBQWlCLEVBQUU7b0JBQ25DLE9BQU87aUJBQ1Y7YUFDSjtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQzVCO0lBQ0wsQ0FBQztJQUVNLFlBQVk7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQ3RDLENBQUM7SUFFTSxVQUFVO1FBQ2IsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWTtRQUNyQixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQWE7UUFDM0IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTyxLQUFLLENBQUMsV0FBVztRQUNyQiw2QkFBNkI7UUFDN0IsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2RCxPQUFPLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sS0FBSyxDQUFDLFdBQVc7UUFDckIsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ2xFLElBQUksZUFBZSxFQUFFO1lBQ2pCLFlBQVksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUM3QyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1NBQ3RFO1FBRUQsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBVyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFckUsSUFBSSxZQUFZLEVBQUU7WUFDZCxJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQztTQUN0QztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVTtRQUNuQixNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QixDQUFDOytHQTVEUSx3QkFBd0I7bUhBQXhCLHdCQUF3QixjQUZyQixNQUFNOzs0RkFFVCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2xpS2V5VmFsdWVTdG9yZSB9IGZyb20gJy4uL3N0b3JhZ2UvY2xpLWtleS12YWx1ZS1zdG9yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENsaUNvbW1hbmRIaXN0b3J5U2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlS2V5ID0gJ2NsaS1jb21tYW5kLWhpc3RvcnknO1xuICAgIHByaXZhdGUgY29tbWFuZEhpc3Rvcnk6IHN0cmluZ1tdID0gW107XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBDbGlLZXlWYWx1ZVN0b3JlKSB7fVxuXG4gICAgcHVibGljIGFzeW5jIGFkZENvbW1hbmQoY29tbWFuZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRDb21tYW5kID0gY29tbWFuZC50cmltKCk7XG4gICAgICAgIGlmIChub3JtYWxpemVkQ29tbWFuZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY29tbWFuZEhpc3RvcnkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RDb21tYW5kID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb21tYW5kSGlzdG9yeVt0aGlzLmNvbW1hbmRIaXN0b3J5Lmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgICAgIGlmIChsYXN0Q29tbWFuZCA9PT0gbm9ybWFsaXplZENvbW1hbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY29tbWFuZEhpc3RvcnkucHVzaChjb21tYW5kKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2F2ZUhpc3RvcnkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRMYXN0SW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tbWFuZEhpc3RvcnkubGVuZ3RoO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRIaXN0b3J5KCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIFsuLi50aGlzLmNvbW1hbmRIaXN0b3J5XTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2xlYXJIaXN0b3J5KCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aGlzLmNvbW1hbmRIaXN0b3J5ID0gW107XG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZUhpc3RvcnkoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q29tbWFuZChpbmRleDogbnVtYmVyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tbWFuZEhpc3RvcnlbaW5kZXhdO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgc2F2ZUhpc3RvcnkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIC8vc2F2ZSBvbmx5IGxhc3QgNTAwIGNvbW1hbmRzXG4gICAgICAgIGNvbnN0IHRyaW1tZWRIaXN0b3J5ID0gdGhpcy5jb21tYW5kSGlzdG9yeS5zbGljZSgtNTAwKTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc3RvcmUuc2V0KHRoaXMuc3RvcmFnZUtleSwgdHJpbW1lZEhpc3RvcnkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgbG9hZEhpc3RvcnkoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGNvbnN0IHNhdmVkT2xkSGlzdG9yeSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjbGlDb21tYW5kSGlzdG9yeScpO1xuICAgICAgICBpZiAoc2F2ZWRPbGRIaXN0b3J5KSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnY2xpQ29tbWFuZEhpc3RvcnknKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc3RvcmUuc2V0KHRoaXMuc3RvcmFnZUtleSwgSlNPTi5wYXJzZShzYXZlZE9sZEhpc3RvcnkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNhdmVkSGlzdG9yeSA9IGF3YWl0IHRoaXMuc3RvcmUuZ2V0PHN0cmluZ1tdPih0aGlzLnN0b3JhZ2VLZXkpO1xuXG4gICAgICAgIGlmIChzYXZlZEhpc3RvcnkpIHtcbiAgICAgICAgICAgIHRoaXMuY29tbWFuZEhpc3RvcnkgPSBzYXZlZEhpc3Rvcnk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgaW5pdGlhbGl6ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5sb2FkSGlzdG9yeSgpO1xuICAgIH1cbn1cbiJdfQ==