@qodalis/cli-todo 0.0.5 → 2.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +14 -22
- package/public-api.d.mts +48 -0
- package/public-api.d.ts +48 -2
- package/public-api.js +521 -0
- package/public-api.js.map +1 -0
- package/public-api.mjs +512 -0
- package/public-api.mjs.map +1 -0
- package/umd/cli-entrypoint.global.js +3308 -0
- package/README.md +0 -34
- package/esm2022/lib/cli-todo.module.mjs +0 -19
- package/esm2022/lib/processors/cli-todo-command-processor.mjs +0 -179
- package/esm2022/lib/version.mjs +0 -3
- package/esm2022/public-api.mjs +0 -6
- package/esm2022/qodalis-cli-todo.mjs +0 -5
- package/fesm2022/qodalis-cli-todo.mjs +0 -208
- package/fesm2022/qodalis-cli-todo.mjs.map +0 -1
- package/index.d.ts +0 -5
- package/lib/cli-todo.module.d.ts +0 -6
- package/lib/processors/cli-todo-command-processor.d.ts +0 -23
- package/lib/version.d.ts +0 -1
- package/umd/index.js +0 -218
package/README.md
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# Cli extension
|
|
2
|
-
|
|
3
|
-
The `@qodalis/cli-todo` package is a powerful CLI extension designed to help you manage your tasks efficiently. With a simple and intuitive command structure, you can add, list, complete, and remove TODO items directly from your command line.
|
|
4
|
-
|
|
5
|
-
# Features
|
|
6
|
-
|
|
7
|
-
Add tasks with a single command.
|
|
8
|
-
View all your TODO items in a clear, organized list.
|
|
9
|
-
Mark tasks as complete to keep track of your progress.
|
|
10
|
-
Remove tasks when they are no longer needed.
|
|
11
|
-
Persistent storage for your tasks across CLI sessions.
|
|
12
|
-
|
|
13
|
-
# Installation
|
|
14
|
-
|
|
15
|
-
```bash
|
|
16
|
-
packages add @qodalis/cli-todo
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
This command downloads and registers the extension for use within the CLI environment.
|
|
20
|
-
|
|
21
|
-
# Usage
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
todo ls
|
|
25
|
-
todo add <task description>
|
|
26
|
-
todo add Buy groceries
|
|
27
|
-
todo add Finish the project report
|
|
28
|
-
todo complete <task ID>
|
|
29
|
-
todo complete 1
|
|
30
|
-
todo rm <task ID>
|
|
31
|
-
|
|
32
|
-
todo ls
|
|
33
|
-
[ ] #2 - Finish the project report
|
|
34
|
-
```
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { resolveCommandProcessorProvider } from '@qodalis/angular-cli';
|
|
3
|
-
import { CliTodoCommandProcessor } from './processors/cli-todo-command-processor';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class CliTodoModule {
|
|
6
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule }); }
|
|
8
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule, providers: [resolveCommandProcessorProvider(CliTodoCommandProcessor)] }); }
|
|
9
|
-
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule, decorators: [{
|
|
11
|
-
type: NgModule,
|
|
12
|
-
args: [{
|
|
13
|
-
declarations: [],
|
|
14
|
-
imports: [],
|
|
15
|
-
exports: [],
|
|
16
|
-
providers: [resolveCommandProcessorProvider(CliTodoCommandProcessor)],
|
|
17
|
-
}]
|
|
18
|
-
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXRvZG8ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9kby9zcmMvbGliL2NsaS10b2RvLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOztBQVFsRixNQUFNLE9BQU8sYUFBYTsrR0FBYixhQUFhO2dIQUFiLGFBQWE7Z0hBQWIsYUFBYSxhQUZYLENBQUMsK0JBQStCLENBQUMsdUJBQXVCLENBQUMsQ0FBQzs7NEZBRTVELGFBQWE7a0JBTnpCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxFQUFFO29CQUNYLE9BQU8sRUFBRSxFQUFFO29CQUNYLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDLHVCQUF1QixDQUFDLENBQUM7aUJBQ3hFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJlc29sdmVDb21tYW5kUHJvY2Vzc29yUHJvdmlkZXIgfSBmcm9tICdAcW9kYWxpcy9hbmd1bGFyLWNsaSc7XG5pbXBvcnQgeyBDbGlUb2RvQ29tbWFuZFByb2Nlc3NvciB9IGZyb20gJy4vcHJvY2Vzc29ycy9jbGktdG9kby1jb21tYW5kLXByb2Nlc3Nvcic7XG5cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbXSxcbiAgICBpbXBvcnRzOiBbXSxcbiAgICBleHBvcnRzOiBbXSxcbiAgICBwcm92aWRlcnM6IFtyZXNvbHZlQ29tbWFuZFByb2Nlc3NvclByb3ZpZGVyKENsaVRvZG9Db21tYW5kUHJvY2Vzc29yKV0sXG59KVxuZXhwb3J0IGNsYXNzIENsaVRvZG9Nb2R1bGUge31cbiJdfQ==
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { CliForegroundColor, CliIcon, DefaultLibraryAuthor, } from '@qodalis/cli-core';
|
|
3
|
-
import { LIBRARY_VERSION } from '../version';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class CliTodoCommandProcessor {
|
|
6
|
-
constructor() {
|
|
7
|
-
this.command = 'todo';
|
|
8
|
-
this.description = 'A command-line tool for managing your tasks efficiently. Add, list, complete, and remove TODO items with simple commands.';
|
|
9
|
-
this.author = DefaultLibraryAuthor;
|
|
10
|
-
this.version = LIBRARY_VERSION;
|
|
11
|
-
this.processors = [];
|
|
12
|
-
this.metadata = {
|
|
13
|
-
icon: '📝',
|
|
14
|
-
};
|
|
15
|
-
this.stateConfiguration = {
|
|
16
|
-
initialState: {
|
|
17
|
-
todos: this.loadFromOldStorage() ?? [],
|
|
18
|
-
},
|
|
19
|
-
};
|
|
20
|
-
this.todos = [];
|
|
21
|
-
this.nextId = 1;
|
|
22
|
-
this.registerSubProcessors();
|
|
23
|
-
}
|
|
24
|
-
async processCommand(command, context) {
|
|
25
|
-
context.executor.showHelp(command, context);
|
|
26
|
-
}
|
|
27
|
-
writeDescription(context) {
|
|
28
|
-
const { writer } = context;
|
|
29
|
-
writer.writeln(this.description);
|
|
30
|
-
writer.writeln();
|
|
31
|
-
writer.writeln('📋 Commands:');
|
|
32
|
-
writer.writeln(` ${writer.wrapInColor('todo ls', CliForegroundColor.Cyan)} 📃 List all TODO items`);
|
|
33
|
-
writer.writeln(` ${writer.wrapInColor('todo add <text>', CliForegroundColor.Cyan)} ➕ Add a new TODO item`);
|
|
34
|
-
writer.writeln(` ${writer.wrapInColor('todo rm <id>', CliForegroundColor.Cyan)} 🗑 Remove a TODO item by ID`);
|
|
35
|
-
writer.writeln(` ${writer.wrapInColor('todo rm --all', CliForegroundColor.Cyan)} 🗑 Remove all TODO items`);
|
|
36
|
-
writer.writeln(` ${writer.wrapInColor('todo complete <id>', CliForegroundColor.Cyan)} ✔ Mark a TODO as completed`);
|
|
37
|
-
writer.writeln();
|
|
38
|
-
writer.writeln('📝 Examples:');
|
|
39
|
-
writer.writeln(` todo add Buy milk ${writer.wrapInColor('# Add a new task', CliForegroundColor.Green)}`);
|
|
40
|
-
writer.writeln(` todo ls ${writer.wrapInColor('# View all tasks', CliForegroundColor.Green)}`);
|
|
41
|
-
writer.writeln(` todo complete 1 ${writer.wrapInColor('# Mark task #1 done', CliForegroundColor.Green)}`);
|
|
42
|
-
writer.writeln(` todo rm 2 ${writer.wrapInColor('# Delete task #2', CliForegroundColor.Green)}`);
|
|
43
|
-
}
|
|
44
|
-
async initialize(context) {
|
|
45
|
-
context.state
|
|
46
|
-
.select((x) => x['todos'])
|
|
47
|
-
.subscribe((todos) => {
|
|
48
|
-
this.todos = todos;
|
|
49
|
-
this.nextId =
|
|
50
|
-
this.todos.length > 0
|
|
51
|
-
? Math.max(...this.todos.map((t) => t.id)) + 1
|
|
52
|
-
: 1;
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
lineThroughText(text) {
|
|
56
|
-
return text
|
|
57
|
-
.split('')
|
|
58
|
-
.map((char) => char + '\u0336')
|
|
59
|
-
.join('');
|
|
60
|
-
}
|
|
61
|
-
registerSubProcessors() {
|
|
62
|
-
this.processors = [
|
|
63
|
-
{
|
|
64
|
-
command: 'ls',
|
|
65
|
-
description: 'List all TODO items',
|
|
66
|
-
processCommand: async (_, context) => {
|
|
67
|
-
if (this.todos.length === 0) {
|
|
68
|
-
context.writer.writeWarning('No TODO items found.');
|
|
69
|
-
context.writer.writeln('Use "todo add <text>" to add a new TODO item.');
|
|
70
|
-
context.process.output(JSON.stringify(this.todos));
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
this.todos.forEach((todo) => {
|
|
74
|
-
context.writer.writeln(`[${todo.completed ? context.writer.wrapInColor(CliIcon.CheckIcon, CliForegroundColor.Green) : ' '}] #${todo.id} - ${todo.text}`);
|
|
75
|
-
});
|
|
76
|
-
context.process.output(this.todos);
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
{
|
|
80
|
-
command: 'add',
|
|
81
|
-
description: 'Add a new TODO item',
|
|
82
|
-
allowUnlistedCommands: true,
|
|
83
|
-
valueRequired: true,
|
|
84
|
-
processCommand: async (command, context) => {
|
|
85
|
-
const text = command.value;
|
|
86
|
-
if (!text) {
|
|
87
|
-
context.writer.writeError('Please provide a TODO description.');
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
const newItem = {
|
|
91
|
-
id: this.nextId++,
|
|
92
|
-
text,
|
|
93
|
-
completed: false,
|
|
94
|
-
};
|
|
95
|
-
this.todos.push(newItem);
|
|
96
|
-
await this.saveToStorage(context);
|
|
97
|
-
context.writer.writeSuccess(`Added TODO: "${text}"`);
|
|
98
|
-
context.process.output(newItem.id.toString());
|
|
99
|
-
},
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
command: 'rm',
|
|
103
|
-
description: 'Remove a TODO item by ID',
|
|
104
|
-
allowUnlistedCommands: true,
|
|
105
|
-
parameters: [
|
|
106
|
-
{
|
|
107
|
-
name: 'all',
|
|
108
|
-
description: 'Remove all TODO items',
|
|
109
|
-
type: 'boolean',
|
|
110
|
-
defaultValue: false,
|
|
111
|
-
aliases: ['a'],
|
|
112
|
-
required: false,
|
|
113
|
-
},
|
|
114
|
-
],
|
|
115
|
-
processCommand: async (command, context) => {
|
|
116
|
-
if (command.args['all'] || command.args['a']) {
|
|
117
|
-
this.todos = [];
|
|
118
|
-
await this.saveToStorage(context);
|
|
119
|
-
context.writer.writeSuccess('Removed all TODO items.');
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
const id = parseInt(command.value, 10);
|
|
123
|
-
if (isNaN(id)) {
|
|
124
|
-
context.writer.writeError('Please provide a valid TODO ID.');
|
|
125
|
-
return;
|
|
126
|
-
}
|
|
127
|
-
const index = this.todos.findIndex((todo) => todo.id === id);
|
|
128
|
-
if (index === -1) {
|
|
129
|
-
context.writer.writeInfo(`TODO item with ID ${id} not found.`);
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
this.todos.splice(index, 1);
|
|
133
|
-
await this.saveToStorage(context);
|
|
134
|
-
context.writer.writeSuccess(`Removed TODO item with ID ${id}.`);
|
|
135
|
-
},
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
command: 'complete',
|
|
139
|
-
description: 'Mark a TODO item as completed by ID',
|
|
140
|
-
allowUnlistedCommands: true,
|
|
141
|
-
valueRequired: true,
|
|
142
|
-
processCommand: async (command, context) => {
|
|
143
|
-
const id = parseInt(command.value || '', 10);
|
|
144
|
-
if (isNaN(id)) {
|
|
145
|
-
context.writer.writeln('Please provide a valid TODO ID.');
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
const todo = this.todos.find((todo) => todo.id === id);
|
|
149
|
-
if (!todo) {
|
|
150
|
-
context.writer.writeError(`TODO item with ID ${id} not found.`);
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
if (todo.completed) {
|
|
154
|
-
context.writer.writeInfo(`TODO item with ID ${id} is already completed.`);
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
todo.completed = true;
|
|
158
|
-
await this.saveToStorage(context);
|
|
159
|
-
context.writer.writeSuccess(`Marked TODO item with ID ${id} as completed.`);
|
|
160
|
-
},
|
|
161
|
-
},
|
|
162
|
-
];
|
|
163
|
-
}
|
|
164
|
-
loadFromOldStorage() {
|
|
165
|
-
const data = localStorage.getItem('todo-items');
|
|
166
|
-
return data ? JSON.parse(data) : [];
|
|
167
|
-
}
|
|
168
|
-
async saveToStorage(context) {
|
|
169
|
-
context.state.updateState({ todos: this.todos });
|
|
170
|
-
await context.state.persist();
|
|
171
|
-
localStorage.removeItem('todo-items');
|
|
172
|
-
}
|
|
173
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoCommandProcessor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
174
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoCommandProcessor }); }
|
|
175
|
-
}
|
|
176
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoCommandProcessor, decorators: [{
|
|
177
|
-
type: Injectable
|
|
178
|
-
}], ctorParameters: function () { return []; } });
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXRvZG8tY29tbWFuZC1wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90b2RvL3NyYy9saWIvcHJvY2Vzc29ycy9jbGktdG9kby1jb21tYW5kLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDSCxrQkFBa0IsRUFDbEIsT0FBTyxFQUlQLG9CQUFvQixHQUd2QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7O0FBSzdDLE1BQU0sT0FBTyx1QkFBdUI7SUEwQmhDO1FBekJBLFlBQU8sR0FBRyxNQUFNLENBQUM7UUFFakIsZ0JBQVcsR0FDUCwySEFBMkgsQ0FBQztRQUVoSSxXQUFNLEdBQUcsb0JBQW9CLENBQUM7UUFFOUIsWUFBTyxHQUFHLGVBQWUsQ0FBQztRQUUxQixlQUFVLEdBQXdDLEVBQUUsQ0FBQztRQUVyRCxhQUFRLEdBQXNDO1lBQzFDLElBQUksRUFBRSxJQUFJO1NBQ2IsQ0FBQztRQUVGLHVCQUFrQixHQUF1QztZQUNyRCxZQUFZLEVBQUU7Z0JBQ1YsS0FBSyxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUU7YUFDekM7U0FDSixDQUFDO1FBRU0sVUFBSyxHQUFlLEVBQUUsQ0FBQztRQUV2QixXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBR2YsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELEtBQUssQ0FBQyxjQUFjLENBQ2hCLE9BQTBCLEVBQzFCLE9BQTZCO1FBRTdCLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBNkI7UUFDMUMsTUFBTSxFQUFFLE1BQU0s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SyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRWpELE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM5QixZQUFZLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzFDLENBQUM7K0dBNU5RLHVCQUF1QjttSEFBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDbGlGb3JlZ3JvdW5kQ29sb3IsXG4gICAgQ2xpSWNvbixcbiAgICBDbGlQcm9jZXNzQ29tbWFuZCxcbiAgICBDbGlQcm9jZXNzb3JNZXRhZGF0YSxcbiAgICBDbGlTdGF0ZUNvbmZpZ3VyYXRpb24sXG4gICAgRGVmYXVsdExpYnJhcnlBdXRob3IsXG4gICAgSUNsaUNvbW1hbmRQcm9jZXNzb3IsXG4gICAgSUNsaUV4ZWN1dGlvbkNvbnRleHQsXG59IGZyb20gJ0Bxb2RhbGlzL2NsaS1jb3JlJztcbmltcG9ydCB7IExJQlJBUllfVkVSU0lPTiB9IGZyb20gJy4uL3ZlcnNpb24nO1xuXG50eXBlIFRvZG9JdGVtID0geyBpZDogbnVtYmVyOyB0ZXh0OiBzdHJpbmc7IGNvbXBsZXRlZDogYm9vbGVhbiB9O1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2xpVG9kb0NvbW1hbmRQcm9jZXNzb3IgaW1wbGVtZW50cyBJQ2xpQ29tbWFuZFByb2Nlc3NvciB7XG4gICAgY29tbWFuZCA9ICd0b2RvJztcblxuICAgIGRlc2NyaXB0aW9uID1cbiAgICAgICAgJ0EgY29tbWFuZC1saW5lIHRvb2wgZm9yIG1hbmFnaW5nIHlvdXIgdGFza3MgZWZmaWNpZW50bHkuIEFkZCwgbGlzdCwgY29tcGxldGUsIGFuZCByZW1vdmUgVE9ETyBpdGVtcyB3aXRoIHNpbXBsZSBjb21tYW5kcy4nO1xuXG4gICAgYXV0aG9yID0gRGVmYXVsdExpYnJhcnlBdXRob3I7XG5cbiAgICB2ZXJzaW9uID0gTElCUkFSWV9WRVJTSU9OO1xuXG4gICAgcHJvY2Vzc29ycz86IElDbGlDb21tYW5kUHJvY2Vzc29yW10gfCB1bmRlZmluZWQgPSBbXTtcblxuICAgIG1ldGFkYXRhPzogQ2xpUHJvY2Vzc29yTWV0YWRhdGEgfCB1bmRlZmluZWQgPSB7XG4gICAgICAgIGljb246ICfwn5OdJyxcbiAgICB9O1xuXG4gICAgc3RhdGVDb25maWd1cmF0aW9uPzogQ2xpU3RhdGVDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkID0ge1xuICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgIHRvZG9zOiB0aGlzLmxvYWRGcm9tT2xkU3RvcmFnZSgpID8/IFtdLFxuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBwcml2YXRlIHRvZG9zOiBUb2RvSXRlbVtdID0gW107XG5cbiAgICBwcml2YXRlIG5leHRJZCA9IDE7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5yZWdpc3RlclN1YlByb2Nlc3NvcnMoKTtcbiAgICB9XG5cbiAgICBhc3luYyBwcm9jZXNzQ29tbWFuZChcbiAgICAgICAgY29tbWFuZDogQ2xpUHJvY2Vzc0NvbW1hbmQsXG4gICAgICAgIGNvbnRleHQ6IElDbGlFeGVjdXRpb25Db250ZXh0LFxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb250ZXh0LmV4ZWN1dG9yLnNob3dIZWxwKGNvbW1hbmQsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIHdyaXRlRGVzY3JpcHRpb24oY29udGV4dDogSUNsaUV4ZWN1dGlvbkNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyB3cml0ZXIgfSA9IGNvbnRleHQ7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKHRoaXMuZGVzY3JpcHRpb24hKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oJ/Cfk4sgQ29tbWFuZHM6Jyk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKGAgICR7d3JpdGVyLndyYXBJbkNvbG9yKCd0b2RvIGxzJywgQ2xpRm9yZWdyb3VuZENvbG9yLkN5YW4pfSAgICAgICAgICAgICAgIPCfk4MgTGlzdCBhbGwgVE9ETyBpdGVtc2ApO1xuICAgICAgICB3cml0ZXIud3JpdGVsbihgICAke3dyaXRlci53cmFwSW5Db2xvcigndG9kbyBhZGQgPHRleHQ+JywgQ2xpRm9yZWdyb3VuZENvbG9yLkN5YW4pfSAgICAgICAg4p6VIEFkZCBhIG5ldyBUT0RPIGl0ZW1gKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oYCAgJHt3cml0ZXIud3JhcEluQ29sb3IoJ3RvZG8gcm0gPGlkPicsIENsaUZvcmVncm91bmRDb2xvci5DeWFuKX0gICAgICAgICAgIPCfl5EgIFJlbW92ZSBhIFRPRE8gaXRlbSBieSBJRGApO1xuICAgICAgICB3cml0ZXIud3JpdGVsbihgICAke3dyaXRlci53cmFwSW5Db2xvcigndG9kbyBybSAtLWFsbCcsIENsaUZvcmVncm91bmRDb2xvci5DeWFuKX0gICAgICAgICAg8J+XkSAgUmVtb3ZlIGFsbCBUT0RPIGl0ZW1zYCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKGAgICR7d3JpdGVyLndyYXBJbkNvbG9yKCd0b2RvIGNvbXBsZXRlIDxpZD4nLCBDbGlGb3JlZ3JvdW5kQ29sb3IuQ3lhbil9ICAgICDinJQgIE1hcmsgYSBUT0RPIGFzIGNvbXBsZXRlZGApO1xuICAgICAgICB3cml0ZXIud3JpdGVsbigpO1xuICAgICAgICB3cml0ZXIud3JpdGVsbign8J+TnSBFeGFtcGxlczonKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oYCAgdG9kbyBhZGQgQnV5IG1pbGsgICAgICAgICAgICAgICAgJHt3cml0ZXIud3JhcEluQ29sb3IoJyMgQWRkIGEgbmV3IHRhc2snLCBDbGlGb3JlZ3JvdW5kQ29sb3IuR3JlZW4pfWApO1xuICAgICAgICB3cml0ZXIud3JpdGVsbihgICB0b2RvIGxzICAgICAgICAgICAgICAgICAgICAgICAgICAke3dyaXRlci53cmFwSW5Db2xvcignIyBWaWV3IGFsbCB0YXNrcycsIENsaUZvcmVncm91bmRDb2xvci5HcmVlbil9YCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKGAgIHRvZG8gY29tcGxldGUgMSAgICAgICAgICAgICAgICAgICR7d3JpdGVyLndyYXBJbkNvbG9yKCcjIE1hcmsgdGFzayAjMSBkb25lJywgQ2xpRm9yZWdyb3VuZENvbG9yLkdyZWVuKX1gKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oYCAgdG9kbyBybSAyICAgICAgICAgICAgICAgICAgICAgICAgJHt3cml0ZXIud3JhcEluQ29sb3IoJyMgRGVsZXRlIHRhc2sgIzInLCBDbGlGb3JlZ3JvdW5kQ29sb3IuR3JlZW4pfWApO1xuICAgIH1cblxuICAgIGFzeW5jIGluaXRpYWxpemUoY29udGV4dDogSUNsaUV4ZWN1dGlvbkNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29udGV4dC5zdGF0ZVxuICAgICAgICAgICAgLnNlbGVjdDxUb2RvSXRlbVtdPigoeCkgPT4geFsndG9kb3MnXSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHRvZG9zKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2RvcyA9IHRvZG9zO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0SWQgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZG9zLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgID8gTWF0aC5tYXgoLi4udGhpcy50b2Rvcy5tYXAoKHQpID0+IHQuaWQpKSArIDFcbiAgICAgICAgICAgICAgICAgICAgICAgIDogMTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgbGluZVRocm91Z2hUZXh0KHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0ZXh0XG4gICAgICAgICAgICAuc3BsaXQoJycpXG4gICAgICAgICAgICAubWFwKChjaGFyKSA9PiBjaGFyICsgJ1xcdTAzMzYnKVxuICAgICAgICAgICAgLmpvaW4oJycpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVnaXN0ZXJTdWJQcm9jZXNzb3JzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb2Nlc3NvcnMgPSBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29tbWFuZDogJ2xzJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0xpc3QgYWxsIFRPRE8gaXRlbXMnLFxuICAgICAgICAgICAgICAgIHByb2Nlc3NDb21tYW5kOiBhc3luYyAoXywgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b2Rvcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlV2FybmluZygnTm8gVE9ETyBpdGVtcyBmb3VuZC4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlbG4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZSBcInRvZG8gYWRkIDx0ZXh0PlwiIHRvIGFkZCBhIG5ldyBUT0RPIGl0ZW0uJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnByb2Nlc3Mub3V0cHV0KEpTT04uc3RyaW5naWZ5KHRoaXMudG9kb3MpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvZG9zLmZvckVhY2goKHRvZG8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlbG4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYFske3RvZG8uY29tcGxldGVkID8gY29udGV4dC53cml0ZXIud3JhcEluQ29sb3IoQ2xpSWNvbi5DaGVja0ljb24sIENsaUZvcmVncm91bmRDb2xvci5HcmVlbikgOiAnICd9XSAjJHt0b2RvLmlkfSAtICR7dG9kby50ZXh0fWAsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnByb2Nlc3Mub3V0cHV0KHRoaXMudG9kb3MpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbW1hbmQ6ICdhZGQnLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQWRkIGEgbmV3IFRPRE8gaXRlbScsXG4gICAgICAgICAgICAgICAgYWxsb3dVbmxpc3RlZENvbW1hbmRzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1hbmQ6IGFzeW5jIChjb21tYW5kLCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHQgPSBjb21tYW5kLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBwcm92aWRlIGEgVE9ETyBkZXNjcmlwdGlvbi4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0l0ZW0gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogdGhpcy5uZXh0SWQrKyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQsXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9kb3MucHVzaChuZXdJdGVtKTtcblxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNhdmVUb1N0b3JhZ2UoY29udGV4dCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVTdWNjZXNzKGBBZGRlZCBUT0RPOiBcIiR7dGV4dH1cImApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQucHJvY2Vzcy5vdXRwdXQobmV3SXRlbS5pZC50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb21tYW5kOiAncm0nLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUmVtb3ZlIGEgVE9ETyBpdGVtIGJ5IElEJyxcbiAgICAgICAgICAgICAgICBhbGxvd1VubGlzdGVkQ29tbWFuZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyczogW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAnYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUmVtb3ZlIGFsbCBUT0RPIGl0ZW1zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGlhc2VzOiBbJ2EnXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHByb2Nlc3NDb21tYW5kOiBhc3luYyAoY29tbWFuZCwgY29udGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29tbWFuZC5hcmdzWydhbGwnXSB8fCBjb21tYW5kLmFyZ3NbJ2EnXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2RvcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5zYXZlVG9TdG9yYWdlKGNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVTdWNjZXNzKCdSZW1vdmVkIGFsbCBUT0RPIGl0ZW1zLicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWQgPSBwYXJzZUludChjb21tYW5kLnZhbHVlISwgMTApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNOYU4oaWQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQbGVhc2UgcHJvdmlkZSBhIHZhbGlkIFRPRE8gSUQuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnRvZG9zLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgICAgICAgICh0b2RvKSA9PiB0b2RvLmlkID09PSBpZCxcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBUT0RPIGl0ZW0gd2l0aCBJRCAke2lkfSBub3QgZm91bmQuYCxcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2Rvcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNhdmVUb1N0b3JhZ2UoY29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlU3VjY2VzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGBSZW1vdmVkIFRPRE8gaXRlbSB3aXRoIElEICR7aWR9LmAsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29tbWFuZDogJ2NvbXBsZXRlJyxcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogJ01hcmsgYSBUT0RPIGl0ZW0gYXMgY29tcGxldGVkIGJ5IElEJyxcbiAgICAgICAgICAgICAgICBhbGxvd1VubGlzdGVkQ29tbWFuZHM6IHRydWUsXG4gICAgICAgICAgICAgICAgdmFsdWVSZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwcm9jZXNzQ29tbWFuZDogYXN5bmMgKGNvbW1hbmQsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaWQgPSBwYXJzZUludChjb21tYW5kLnZhbHVlIHx8ICcnLCAxMCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc05hTihpZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlbG4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1BsZWFzZSBwcm92aWRlIGEgdmFsaWQgVE9ETyBJRC4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2RvID0gdGhpcy50b2Rvcy5maW5kKCh0b2RvKSA9PiB0b2RvLmlkID09PSBpZCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghdG9kbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgVE9ETyBpdGVtIHdpdGggSUQgJHtpZH0gbm90IGZvdW5kLmAsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRvZG8uY29tcGxldGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYFRPRE8gaXRlbSB3aXRoIElEICR7aWR9IGlzIGFscmVhZHkgY29tcGxldGVkLmAsXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdG9kby5jb21wbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnNhdmVUb1N0b3JhZ2UoY29udGV4dCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlU3VjY2VzcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGBNYXJrZWQgVE9ETyBpdGVtIHdpdGggSUQgJHtpZH0gYXMgY29tcGxldGVkLmAsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkRnJvbU9sZFN0b3JhZ2UoKTogVG9kb0l0ZW1bXSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndG9kby1pdGVtcycpO1xuICAgICAgICByZXR1cm4gZGF0YSA/IEpTT04ucGFyc2UoZGF0YSkgOiBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIHNhdmVUb1N0b3JhZ2UoY29udGV4dDogSUNsaUV4ZWN1dGlvbkNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29udGV4dC5zdGF0ZS51cGRhdGVTdGF0ZSh7IHRvZG9zOiB0aGlzLnRvZG9zIH0pO1xuXG4gICAgICAgIGF3YWl0IGNvbnRleHQuc3RhdGUucGVyc2lzdCgpO1xuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgndG9kby1pdGVtcycpO1xuICAgIH1cbn1cbiJdfQ==
|
package/esm2022/lib/version.mjs
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
// Automatically generated during build
|
|
2
|
-
export const LIBRARY_VERSION = '0.0.5';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RvZG8vc3JjL2xpYi92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLHVDQUF1QztBQUN2QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBkdXJpbmcgYnVpbGRcbmV4cG9ydCBjb25zdCBMSUJSQVJZX1ZFUlNJT04gPSAnMC4wLjUnO1xuICAiXX0=
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of string
|
|
3
|
-
*/
|
|
4
|
-
export * from './lib/cli-todo.module';
|
|
5
|
-
export * from './lib/processors/cli-todo-command-processor';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RvZG8vc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLHVCQUF1QixDQUFDO0FBRXRDLGNBQWMsNkNBQTZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIHN0cmluZ1xuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NsaS10b2RvLm1vZHVsZSc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb2Nlc3NvcnMvY2xpLXRvZG8tY29tbWFuZC1wcm9jZXNzb3InO1xuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicW9kYWxpcy1jbGktdG9kby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3RvZG8vc3JjL3FvZGFsaXMtY2xpLXRvZG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, NgModule } from '@angular/core';
|
|
3
|
-
import { resolveCommandProcessorProvider } from '@qodalis/angular-cli';
|
|
4
|
-
import { DefaultLibraryAuthor, CliForegroundColor, CliIcon } from '@qodalis/cli-core';
|
|
5
|
-
|
|
6
|
-
// Automatically generated during build
|
|
7
|
-
const LIBRARY_VERSION = '0.0.5';
|
|
8
|
-
|
|
9
|
-
class CliTodoCommandProcessor {
|
|
10
|
-
constructor() {
|
|
11
|
-
this.command = 'todo';
|
|
12
|
-
this.description = 'A command-line tool for managing your tasks efficiently. Add, list, complete, and remove TODO items with simple commands.';
|
|
13
|
-
this.author = DefaultLibraryAuthor;
|
|
14
|
-
this.version = LIBRARY_VERSION;
|
|
15
|
-
this.processors = [];
|
|
16
|
-
this.metadata = {
|
|
17
|
-
icon: '📝',
|
|
18
|
-
};
|
|
19
|
-
this.stateConfiguration = {
|
|
20
|
-
initialState: {
|
|
21
|
-
todos: this.loadFromOldStorage() ?? [],
|
|
22
|
-
},
|
|
23
|
-
};
|
|
24
|
-
this.todos = [];
|
|
25
|
-
this.nextId = 1;
|
|
26
|
-
this.registerSubProcessors();
|
|
27
|
-
}
|
|
28
|
-
async processCommand(command, context) {
|
|
29
|
-
context.executor.showHelp(command, context);
|
|
30
|
-
}
|
|
31
|
-
writeDescription(context) {
|
|
32
|
-
const { writer } = context;
|
|
33
|
-
writer.writeln(this.description);
|
|
34
|
-
writer.writeln();
|
|
35
|
-
writer.writeln('📋 Commands:');
|
|
36
|
-
writer.writeln(` ${writer.wrapInColor('todo ls', CliForegroundColor.Cyan)} 📃 List all TODO items`);
|
|
37
|
-
writer.writeln(` ${writer.wrapInColor('todo add <text>', CliForegroundColor.Cyan)} ➕ Add a new TODO item`);
|
|
38
|
-
writer.writeln(` ${writer.wrapInColor('todo rm <id>', CliForegroundColor.Cyan)} 🗑 Remove a TODO item by ID`);
|
|
39
|
-
writer.writeln(` ${writer.wrapInColor('todo rm --all', CliForegroundColor.Cyan)} 🗑 Remove all TODO items`);
|
|
40
|
-
writer.writeln(` ${writer.wrapInColor('todo complete <id>', CliForegroundColor.Cyan)} ✔ Mark a TODO as completed`);
|
|
41
|
-
writer.writeln();
|
|
42
|
-
writer.writeln('📝 Examples:');
|
|
43
|
-
writer.writeln(` todo add Buy milk ${writer.wrapInColor('# Add a new task', CliForegroundColor.Green)}`);
|
|
44
|
-
writer.writeln(` todo ls ${writer.wrapInColor('# View all tasks', CliForegroundColor.Green)}`);
|
|
45
|
-
writer.writeln(` todo complete 1 ${writer.wrapInColor('# Mark task #1 done', CliForegroundColor.Green)}`);
|
|
46
|
-
writer.writeln(` todo rm 2 ${writer.wrapInColor('# Delete task #2', CliForegroundColor.Green)}`);
|
|
47
|
-
}
|
|
48
|
-
async initialize(context) {
|
|
49
|
-
context.state
|
|
50
|
-
.select((x) => x['todos'])
|
|
51
|
-
.subscribe((todos) => {
|
|
52
|
-
this.todos = todos;
|
|
53
|
-
this.nextId =
|
|
54
|
-
this.todos.length > 0
|
|
55
|
-
? Math.max(...this.todos.map((t) => t.id)) + 1
|
|
56
|
-
: 1;
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
lineThroughText(text) {
|
|
60
|
-
return text
|
|
61
|
-
.split('')
|
|
62
|
-
.map((char) => char + '\u0336')
|
|
63
|
-
.join('');
|
|
64
|
-
}
|
|
65
|
-
registerSubProcessors() {
|
|
66
|
-
this.processors = [
|
|
67
|
-
{
|
|
68
|
-
command: 'ls',
|
|
69
|
-
description: 'List all TODO items',
|
|
70
|
-
processCommand: async (_, context) => {
|
|
71
|
-
if (this.todos.length === 0) {
|
|
72
|
-
context.writer.writeWarning('No TODO items found.');
|
|
73
|
-
context.writer.writeln('Use "todo add <text>" to add a new TODO item.');
|
|
74
|
-
context.process.output(JSON.stringify(this.todos));
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
this.todos.forEach((todo) => {
|
|
78
|
-
context.writer.writeln(`[${todo.completed ? context.writer.wrapInColor(CliIcon.CheckIcon, CliForegroundColor.Green) : ' '}] #${todo.id} - ${todo.text}`);
|
|
79
|
-
});
|
|
80
|
-
context.process.output(this.todos);
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
command: 'add',
|
|
85
|
-
description: 'Add a new TODO item',
|
|
86
|
-
allowUnlistedCommands: true,
|
|
87
|
-
valueRequired: true,
|
|
88
|
-
processCommand: async (command, context) => {
|
|
89
|
-
const text = command.value;
|
|
90
|
-
if (!text) {
|
|
91
|
-
context.writer.writeError('Please provide a TODO description.');
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
const newItem = {
|
|
95
|
-
id: this.nextId++,
|
|
96
|
-
text,
|
|
97
|
-
completed: false,
|
|
98
|
-
};
|
|
99
|
-
this.todos.push(newItem);
|
|
100
|
-
await this.saveToStorage(context);
|
|
101
|
-
context.writer.writeSuccess(`Added TODO: "${text}"`);
|
|
102
|
-
context.process.output(newItem.id.toString());
|
|
103
|
-
},
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
command: 'rm',
|
|
107
|
-
description: 'Remove a TODO item by ID',
|
|
108
|
-
allowUnlistedCommands: true,
|
|
109
|
-
parameters: [
|
|
110
|
-
{
|
|
111
|
-
name: 'all',
|
|
112
|
-
description: 'Remove all TODO items',
|
|
113
|
-
type: 'boolean',
|
|
114
|
-
defaultValue: false,
|
|
115
|
-
aliases: ['a'],
|
|
116
|
-
required: false,
|
|
117
|
-
},
|
|
118
|
-
],
|
|
119
|
-
processCommand: async (command, context) => {
|
|
120
|
-
if (command.args['all'] || command.args['a']) {
|
|
121
|
-
this.todos = [];
|
|
122
|
-
await this.saveToStorage(context);
|
|
123
|
-
context.writer.writeSuccess('Removed all TODO items.');
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
const id = parseInt(command.value, 10);
|
|
127
|
-
if (isNaN(id)) {
|
|
128
|
-
context.writer.writeError('Please provide a valid TODO ID.');
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
const index = this.todos.findIndex((todo) => todo.id === id);
|
|
132
|
-
if (index === -1) {
|
|
133
|
-
context.writer.writeInfo(`TODO item with ID ${id} not found.`);
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
this.todos.splice(index, 1);
|
|
137
|
-
await this.saveToStorage(context);
|
|
138
|
-
context.writer.writeSuccess(`Removed TODO item with ID ${id}.`);
|
|
139
|
-
},
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
command: 'complete',
|
|
143
|
-
description: 'Mark a TODO item as completed by ID',
|
|
144
|
-
allowUnlistedCommands: true,
|
|
145
|
-
valueRequired: true,
|
|
146
|
-
processCommand: async (command, context) => {
|
|
147
|
-
const id = parseInt(command.value || '', 10);
|
|
148
|
-
if (isNaN(id)) {
|
|
149
|
-
context.writer.writeln('Please provide a valid TODO ID.');
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
const todo = this.todos.find((todo) => todo.id === id);
|
|
153
|
-
if (!todo) {
|
|
154
|
-
context.writer.writeError(`TODO item with ID ${id} not found.`);
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
if (todo.completed) {
|
|
158
|
-
context.writer.writeInfo(`TODO item with ID ${id} is already completed.`);
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
todo.completed = true;
|
|
162
|
-
await this.saveToStorage(context);
|
|
163
|
-
context.writer.writeSuccess(`Marked TODO item with ID ${id} as completed.`);
|
|
164
|
-
},
|
|
165
|
-
},
|
|
166
|
-
];
|
|
167
|
-
}
|
|
168
|
-
loadFromOldStorage() {
|
|
169
|
-
const data = localStorage.getItem('todo-items');
|
|
170
|
-
return data ? JSON.parse(data) : [];
|
|
171
|
-
}
|
|
172
|
-
async saveToStorage(context) {
|
|
173
|
-
context.state.updateState({ todos: this.todos });
|
|
174
|
-
await context.state.persist();
|
|
175
|
-
localStorage.removeItem('todo-items');
|
|
176
|
-
}
|
|
177
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoCommandProcessor, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
178
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoCommandProcessor }); }
|
|
179
|
-
}
|
|
180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoCommandProcessor, decorators: [{
|
|
181
|
-
type: Injectable
|
|
182
|
-
}], ctorParameters: function () { return []; } });
|
|
183
|
-
|
|
184
|
-
class CliTodoModule {
|
|
185
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
186
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule }); }
|
|
187
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule, providers: [resolveCommandProcessorProvider(CliTodoCommandProcessor)] }); }
|
|
188
|
-
}
|
|
189
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CliTodoModule, decorators: [{
|
|
190
|
-
type: NgModule,
|
|
191
|
-
args: [{
|
|
192
|
-
declarations: [],
|
|
193
|
-
imports: [],
|
|
194
|
-
exports: [],
|
|
195
|
-
providers: [resolveCommandProcessorProvider(CliTodoCommandProcessor)],
|
|
196
|
-
}]
|
|
197
|
-
}] });
|
|
198
|
-
|
|
199
|
-
/*
|
|
200
|
-
* Public API Surface of string
|
|
201
|
-
*/
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Generated bundle index. Do not edit.
|
|
205
|
-
*/
|
|
206
|
-
|
|
207
|
-
export { CliTodoCommandProcessor, CliTodoModule };
|
|
208
|
-
//# sourceMappingURL=qodalis-cli-todo.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"qodalis-cli-todo.mjs","sources":["../../../projects/todo/src/lib/version.ts","../../../projects/todo/src/lib/processors/cli-todo-command-processor.ts","../../../projects/todo/src/lib/cli-todo.module.ts","../../../projects/todo/src/public-api.ts","../../../projects/todo/src/qodalis-cli-todo.ts"],"sourcesContent":["\n// Automatically generated during build\nexport const LIBRARY_VERSION = '0.0.5';\n ","import { Injectable } from '@angular/core';\nimport {\n CliForegroundColor,\n CliIcon,\n CliProcessCommand,\n CliProcessorMetadata,\n CliStateConfiguration,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\nimport { LIBRARY_VERSION } from '../version';\n\ntype TodoItem = { id: number; text: string; completed: boolean };\n\n@Injectable()\nexport class CliTodoCommandProcessor implements ICliCommandProcessor {\n command = 'todo';\n\n description =\n 'A command-line tool for managing your tasks efficiently. Add, list, complete, and remove TODO items with simple commands.';\n\n author = DefaultLibraryAuthor;\n\n version = LIBRARY_VERSION;\n\n processors?: ICliCommandProcessor[] | undefined = [];\n\n metadata?: CliProcessorMetadata | undefined = {\n icon: '📝',\n };\n\n stateConfiguration?: CliStateConfiguration | undefined = {\n initialState: {\n todos: this.loadFromOldStorage() ?? [],\n },\n };\n\n private todos: TodoItem[] = [];\n\n private nextId = 1;\n\n constructor() {\n this.registerSubProcessors();\n }\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n context.executor.showHelp(command, context);\n }\n\n writeDescription(context: ICliExecutionContext): void {\n const { writer } = context;\n writer.writeln(this.description!);\n writer.writeln();\n writer.writeln('📋 Commands:');\n writer.writeln(` ${writer.wrapInColor('todo ls', CliForegroundColor.Cyan)} 📃 List all TODO items`);\n writer.writeln(` ${writer.wrapInColor('todo add <text>', CliForegroundColor.Cyan)} ➕ Add a new TODO item`);\n writer.writeln(` ${writer.wrapInColor('todo rm <id>', CliForegroundColor.Cyan)} 🗑 Remove a TODO item by ID`);\n writer.writeln(` ${writer.wrapInColor('todo rm --all', CliForegroundColor.Cyan)} 🗑 Remove all TODO items`);\n writer.writeln(` ${writer.wrapInColor('todo complete <id>', CliForegroundColor.Cyan)} ✔ Mark a TODO as completed`);\n writer.writeln();\n writer.writeln('📝 Examples:');\n writer.writeln(` todo add Buy milk ${writer.wrapInColor('# Add a new task', CliForegroundColor.Green)}`);\n writer.writeln(` todo ls ${writer.wrapInColor('# View all tasks', CliForegroundColor.Green)}`);\n writer.writeln(` todo complete 1 ${writer.wrapInColor('# Mark task #1 done', CliForegroundColor.Green)}`);\n writer.writeln(` todo rm 2 ${writer.wrapInColor('# Delete task #2', CliForegroundColor.Green)}`);\n }\n\n async initialize(context: ICliExecutionContext): Promise<void> {\n context.state\n .select<TodoItem[]>((x) => x['todos'])\n .subscribe((todos) => {\n this.todos = todos;\n\n this.nextId =\n this.todos.length > 0\n ? Math.max(...this.todos.map((t) => t.id)) + 1\n : 1;\n });\n }\n\n private lineThroughText(text: string): string {\n return text\n .split('')\n .map((char) => char + '\\u0336')\n .join('');\n }\n\n private registerSubProcessors(): void {\n this.processors = [\n {\n command: 'ls',\n description: 'List all TODO items',\n processCommand: async (_, context) => {\n if (this.todos.length === 0) {\n context.writer.writeWarning('No TODO items found.');\n context.writer.writeln(\n 'Use \"todo add <text>\" to add a new TODO item.',\n );\n context.process.output(JSON.stringify(this.todos));\n return;\n }\n this.todos.forEach((todo) => {\n context.writer.writeln(\n `[${todo.completed ? context.writer.wrapInColor(CliIcon.CheckIcon, CliForegroundColor.Green) : ' '}] #${todo.id} - ${todo.text}`,\n );\n });\n\n context.process.output(this.todos);\n },\n },\n {\n command: 'add',\n description: 'Add a new TODO item',\n allowUnlistedCommands: true,\n valueRequired: true,\n processCommand: async (command, context) => {\n const text = command.value;\n if (!text) {\n context.writer.writeError(\n 'Please provide a TODO description.',\n );\n return;\n }\n\n const newItem = {\n id: this.nextId++,\n text,\n completed: false,\n };\n\n this.todos.push(newItem);\n\n await this.saveToStorage(context);\n\n context.writer.writeSuccess(`Added TODO: \"${text}\"`);\n\n context.process.output(newItem.id.toString());\n },\n },\n {\n command: 'rm',\n description: 'Remove a TODO item by ID',\n allowUnlistedCommands: true,\n parameters: [\n {\n name: 'all',\n description: 'Remove all TODO items',\n type: 'boolean',\n defaultValue: false,\n aliases: ['a'],\n required: false,\n },\n ],\n processCommand: async (command, context) => {\n if (command.args['all'] || command.args['a']) {\n this.todos = [];\n await this.saveToStorage(context);\n context.writer.writeSuccess('Removed all TODO items.');\n return;\n }\n\n const id = parseInt(command.value!, 10);\n if (isNaN(id)) {\n context.writer.writeError(\n 'Please provide a valid TODO ID.',\n );\n return;\n }\n const index = this.todos.findIndex(\n (todo) => todo.id === id,\n );\n if (index === -1) {\n context.writer.writeInfo(\n `TODO item with ID ${id} not found.`,\n );\n return;\n }\n this.todos.splice(index, 1);\n await this.saveToStorage(context);\n context.writer.writeSuccess(\n `Removed TODO item with ID ${id}.`,\n );\n },\n },\n {\n command: 'complete',\n description: 'Mark a TODO item as completed by ID',\n allowUnlistedCommands: true,\n valueRequired: true,\n processCommand: async (command, context) => {\n const id = parseInt(command.value || '', 10);\n if (isNaN(id)) {\n context.writer.writeln(\n 'Please provide a valid TODO ID.',\n );\n return;\n }\n const todo = this.todos.find((todo) => todo.id === id);\n if (!todo) {\n context.writer.writeError(\n `TODO item with ID ${id} not found.`,\n );\n return;\n }\n\n if (todo.completed) {\n context.writer.writeInfo(\n `TODO item with ID ${id} is already completed.`,\n );\n return;\n }\n\n todo.completed = true;\n await this.saveToStorage(context);\n context.writer.writeSuccess(\n `Marked TODO item with ID ${id} as completed.`,\n );\n },\n },\n ];\n }\n\n private loadFromOldStorage(): TodoItem[] {\n const data = localStorage.getItem('todo-items');\n return data ? JSON.parse(data) : [];\n }\n\n private async saveToStorage(context: ICliExecutionContext): Promise<void> {\n context.state.updateState({ todos: this.todos });\n\n await context.state.persist();\n localStorage.removeItem('todo-items');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { resolveCommandProcessorProvider } from '@qodalis/angular-cli';\nimport { CliTodoCommandProcessor } from './processors/cli-todo-command-processor';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n providers: [resolveCommandProcessorProvider(CliTodoCommandProcessor)],\n})\nexport class CliTodoModule {}\n","/*\n * Public API Surface of string\n */\n\nexport * from './lib/cli-todo.module';\n\nexport * from './lib/processors/cli-todo-command-processor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
DELETED
package/lib/cli-todo.module.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import * as i0 from "@angular/core";
|
|
2
|
-
export declare class CliTodoModule {
|
|
3
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CliTodoModule, never>;
|
|
4
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<CliTodoModule, never, never, never>;
|
|
5
|
-
static ɵinj: i0.ɵɵInjectorDeclaration<CliTodoModule>;
|
|
6
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { CliProcessCommand, CliProcessorMetadata, CliStateConfiguration, ICliCommandProcessor, ICliExecutionContext } from '@qodalis/cli-core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export declare class CliTodoCommandProcessor implements ICliCommandProcessor {
|
|
4
|
-
command: string;
|
|
5
|
-
description: string;
|
|
6
|
-
author: import("@qodalis/cli-core").ICliCommandAuthor;
|
|
7
|
-
version: string;
|
|
8
|
-
processors?: ICliCommandProcessor[] | undefined;
|
|
9
|
-
metadata?: CliProcessorMetadata | undefined;
|
|
10
|
-
stateConfiguration?: CliStateConfiguration | undefined;
|
|
11
|
-
private todos;
|
|
12
|
-
private nextId;
|
|
13
|
-
constructor();
|
|
14
|
-
processCommand(command: CliProcessCommand, context: ICliExecutionContext): Promise<void>;
|
|
15
|
-
writeDescription(context: ICliExecutionContext): void;
|
|
16
|
-
initialize(context: ICliExecutionContext): Promise<void>;
|
|
17
|
-
private lineThroughText;
|
|
18
|
-
private registerSubProcessors;
|
|
19
|
-
private loadFromOldStorage;
|
|
20
|
-
private saveToStorage;
|
|
21
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CliTodoCommandProcessor, never>;
|
|
22
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<CliTodoCommandProcessor>;
|
|
23
|
-
}
|
package/lib/version.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const LIBRARY_VERSION = "0.0.5";
|