UNPKG

cc-terminal

Version:
66 lines 9.4 kB
// https://jurebajt.com/state-management-in-angular-with-observable-store-services/ import { Injectable } from '@angular/core'; import { Store } from './store'; import { CommandState } from './cc-terminal-command-state'; import * as i0 from "@angular/core"; export class CommandStore extends Store { constructor() { super(new CommandState()); } addKeyValue(command) { this.setState({ ...this.state, commands: this.state.commands.map(c => { if (c.name === command.name) { if (c.details && !c.details.readonly) { if (!c['details'][command.key]) { c['details'][command.key] = null; } // If key not exists, make one return { ...c, details: { ...{ ...c.details, [command.key]: command.value } } }; } else { console.error('You are trying to modify the readonly command, which is not allowed, command name: ' + command.name); return { ...c }; // You are trying modify readonly command, which is not possible. } } return c; }) }); } /** * @description - This function will add the command * * @param command */ addCommand(command) { let _regex = /^[a-zA-Z]+$/; if (command && command.name && _regex.test(command.name)) { if (command && command.details && command.details.hasOwnProperty('output')) { const exists = this.state.commands.map(function (e) { return e.name; }).indexOf(command.name); if (exists === -1) { this.setState({ ...this.state, commands: [...this.state.commands, command] }); } else { console.error('You are trying to add duplicate command, which is not allowed, command name: ' + command.name); // alert('You are trying to add duplicate command, which is not allowed, command name: ' + command.name); // throw 'You are trying to add duplicate command, which is not allowed, command name: ' + command.name; } } else { console.error('To add a new command, we need output property, command name: ' + command.name); } } else { console.error('Command name is not valid to add in command list, command name should be from [a-z | A-Z] without containing space, command name: ' + command.name); } } } /** @nocollapse */ CommandStore.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: CommandStore, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); /** @nocollapse */ CommandStore.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: CommandStore }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: CommandStore, decorators: [{ type: Injectable }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2MtdGVybWluYWwtY29tbWFuZC1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NjLXRlcm1pbmFsL3NyYy9saWIvY2MtdGVybWluYWwtY29tbWFuZC1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxtRkFBbUY7QUFDbkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQW9CLE1BQU0sNkJBQTZCLENBQUM7O0FBRzdFLE1BQU0sT0FBTyxZQUFhLFNBQVEsS0FBbUI7SUFDbkQ7UUFDRSxLQUFLLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBa0Q7UUFDbkUsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNaLEdBQUcsSUFBSSxDQUFDLEtBQUs7WUFDYixRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNwQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUksRUFBRTtvQkFDM0IsSUFBSSxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7d0JBQ3BDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFOzRCQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO3lCQUFFLENBQUMsOEJBQThCO3dCQUNwRyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO3FCQUNqRjt5QkFBTTt3QkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLHFGQUFxRixHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDcEgsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxpRUFBaUU7cUJBQ25GO2lCQUNGO2dCQUNELE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQyxDQUFDO1NBQ0gsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxVQUFVLENBQUMsT0FBeUI7UUFDekMsSUFBSSxNQUFNLEdBQUcsYUFBYSxDQUFDO1FBQzNCLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEQsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDMUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlGLElBQUksTUFBTSxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUNqQixJQUFJLENBQUMsUUFBUSxDQUFDO3dCQUNaLEdBQUcsSUFBSSxDQUFDLEtBQUs7d0JBQ2IsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUM7cUJBQzVDLENBQUMsQ0FBQztpQkFDSjtxQkFBTTtvQkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLCtFQUErRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDOUcseUdBQXlHO29CQUN6Ryx3R0FBd0c7aUJBQ3pHO2FBQ0Y7aUJBQU07Z0JBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQywrREFBK0QsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0Y7U0FDRjthQUFNO1lBQ0wsT0FBTyxDQUFDLEtBQUssQ0FBQyxvSUFBb0ksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDcEs7SUFDSCxDQUFDOzs0SEFqRFUsWUFBWTtnSUFBWixZQUFZOzJGQUFaLFlBQVk7a0JBRHhCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2p1cmViYWp0LmNvbS9zdGF0ZS1tYW5hZ2VtZW50LWluLWFuZ3VsYXItd2l0aC1vYnNlcnZhYmxlLXN0b3JlLXNlcnZpY2VzL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICcuL3N0b3JlJztcbmltcG9ydCB7IENvbW1hbmRTdGF0ZSwgQ29tbWFuZEludGVyZmFjZSB9IGZyb20gJy4vY2MtdGVybWluYWwtY29tbWFuZC1zdGF0ZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb21tYW5kU3RvcmUgZXh0ZW5kcyBTdG9yZTxDb21tYW5kU3RhdGU+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIobmV3IENvbW1hbmRTdGF0ZSgpKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRLZXlWYWx1ZShjb21tYW5kOiB7IG5hbWU6IHN0cmluZywga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkgfSk6IHZvaWQge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgLi4udGhpcy5zdGF0ZSxcbiAgICAgIGNvbW1hbmRzOiB0aGlzLnN0YXRlLmNvbW1hbmRzLm1hcChjID0+IHtcbiAgICAgICAgaWYgKGMubmFtZSA9PT0gY29tbWFuZC5uYW1lKSB7XG4gICAgICAgICAgaWYgKGMuZGV0YWlscyAmJiAhYy5kZXRhaWxzLnJlYWRvbmx5KSB7XG4gICAgICAgICAgICBpZiAoIWNbJ2RldGFpbHMnXVtjb21tYW5kLmtleV0pIHsgY1snZGV0YWlscyddW2NvbW1hbmQua2V5XSA9IG51bGw7IH0gLy8gSWYga2V5IG5vdCBleGlzdHMsIG1ha2Ugb25lXG4gICAgICAgICAgICByZXR1cm4geyAuLi5jLCBkZXRhaWxzOiB7IC4uLnsgLi4uYy5kZXRhaWxzLCBbY29tbWFuZC5rZXldOiBjb21tYW5kLnZhbHVlIH0gfSB9O1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdZb3UgYXJlIHRyeWluZyB0byBtb2RpZnkgdGhlIHJlYWRvbmx5IGNvbW1hbmQsIHdoaWNoIGlzIG5vdCBhbGxvd2VkLCBjb21tYW5kIG5hbWU6ICcgKyBjb21tYW5kLm5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYyB9OyAvLyBZb3UgYXJlIHRyeWluZyBtb2RpZnkgcmVhZG9ubHkgY29tbWFuZCwgd2hpY2ggaXMgbm90IHBvc3NpYmxlLlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYztcbiAgICAgIH0pXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGFkZCB0aGUgY29tbWFuZFxuICAgKlxuICAgKiBAcGFyYW0gY29tbWFuZFxuICAgKi9cbiAgcHVibGljIGFkZENvbW1hbmQoY29tbWFuZDogQ29tbWFuZEludGVyZmFjZSk6IHZvaWQge1xuICAgIGxldCBfcmVnZXggPSAvXlthLXpBLVpdKyQvO1xuICAgIGlmIChjb21tYW5kICYmIGNvbW1hbmQubmFtZSAmJiBfcmVnZXgudGVzdChjb21tYW5kLm5hbWUpKSB7XG4gICAgICBpZiAoY29tbWFuZCAmJiBjb21tYW5kLmRldGFpbHMgJiYgY29tbWFuZC5kZXRhaWxzLmhhc093blByb3BlcnR5KCdvdXRwdXQnKSkge1xuICAgICAgICBjb25zdCBleGlzdHMgPSB0aGlzLnN0YXRlLmNvbW1hbmRzLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gZS5uYW1lOyB9KS5pbmRleE9mKGNvbW1hbmQubmFtZSk7XG4gICAgICAgIGlmIChleGlzdHMgPT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICAuLi50aGlzLnN0YXRlLFxuICAgICAgICAgICAgY29tbWFuZHM6IFsuLi50aGlzLnN0YXRlLmNvbW1hbmRzLCBjb21tYW5kXVxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1lvdSBhcmUgdHJ5aW5nIHRvIGFkZCBkdXBsaWNhdGUgY29tbWFuZCwgd2hpY2ggaXMgbm90IGFsbG93ZWQsIGNvbW1hbmQgbmFtZTogJyArIGNvbW1hbmQubmFtZSk7XG4gICAgICAgICAgLy8gYWxlcnQoJ1lvdSBhcmUgdHJ5aW5nIHRvIGFkZCBkdXBsaWNhdGUgY29tbWFuZCwgd2hpY2ggaXMgbm90IGFsbG93ZWQsIGNvbW1hbmQgbmFtZTogJyArIGNvbW1hbmQubmFtZSk7XG4gICAgICAgICAgLy8gdGhyb3cgJ1lvdSBhcmUgdHJ5aW5nIHRvIGFkZCBkdXBsaWNhdGUgY29tbWFuZCwgd2hpY2ggaXMgbm90IGFsbG93ZWQsIGNvbW1hbmQgbmFtZTogJyArIGNvbW1hbmQubmFtZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignVG8gYWRkIGEgbmV3IGNvbW1hbmQsIHdlIG5lZWQgb3V0cHV0IHByb3BlcnR5LCBjb21tYW5kIG5hbWU6ICcgKyBjb21tYW5kLm5hbWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdDb21tYW5kIG5hbWUgaXMgbm90IHZhbGlkIHRvIGFkZCBpbiBjb21tYW5kIGxpc3QsIGNvbW1hbmQgbmFtZSBzaG91bGQgYmUgZnJvbSBbYS16IHwgQS1aXSB3aXRob3V0IGNvbnRhaW5pbmcgc3BhY2UsIGNvbW1hbmQgbmFtZTogJyArIGNvbW1hbmQubmFtZSk7XG4gICAgfVxuICB9XG59XG4iXX0=