@qodalis/cli-todo 2.1.1 โ 2.3.0
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 +2 -2
- package/public-api.js +1 -1
- package/public-api.js.map +1 -1
- package/public-api.mjs +1 -1
- package/public-api.mjs.map +1 -1
- package/umd/index.global.js +68 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qodalis/cli-todo",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "@qodalis/cli extension for managing TODO tasks with add, list, complete, and remove commands.",
|
|
5
5
|
"author": "Nicolae Lupei, Qodalis Solutions",
|
|
6
6
|
"license": "MIT",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"umd": "./umd/index.global.js",
|
|
21
21
|
"unpkg": "./umd/index.global.js",
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@qodalis/cli-core": "2.
|
|
23
|
+
"@qodalis/cli-core": "2.3.0"
|
|
24
24
|
},
|
|
25
25
|
"sideEffects": false,
|
|
26
26
|
"main": "./public-api.js",
|
package/public-api.js
CHANGED
package/public-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../packages/plugins/todo/src/lib/utilities/index.ts","../../packages/plugins/todo/src/lib/version.ts","../../packages/plugins/todo/src/lib/processors/cli-todo-command-processor.ts","../../packages/plugins/todo/src/lib/completion/cli-todo-id-completion-provider.ts","../../packages/plugins/todo/src/public-api.ts"],"names":["DefaultLibraryAuthor","CliForegroundColor","CliIcon","getPluginConfigValue","joinShellWords","todoProcessor","ICliCompletionProvider_TOKEN"],"mappings":"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","file":"public-api.js","sourcesContent":["export type TodoItem = {\n id: number;\n text: string;\n completed: boolean;\n createdAt: string;\n completedAt?: string;\n dueDate?: string;\n};\n\nconst DAY_NAMES = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nconst MONTH_NAMES = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\nfunction startOfDay(date: Date): Date {\n const d = new Date(date);\n d.setHours(0, 0, 0, 0);\n return d;\n}\n\nexport function parseDueDate(input: string): string | null {\n const trimmed = input.trim().toLowerCase();\n const now = new Date();\n const today = startOfDay(now);\n\n if (trimmed === 'today') {\n return today.toISOString();\n }\n\n if (trimmed === 'tomorrow') {\n const d = new Date(today);\n d.setDate(d.getDate() + 1);\n return d.toISOString();\n }\n\n if (trimmed === 'yesterday') {\n const d = new Date(today);\n d.setDate(d.getDate() - 1);\n return d.toISOString();\n }\n\n if (trimmed === 'next week') {\n const d = new Date(today);\n d.setDate(d.getDate() + 7);\n return d.toISOString();\n }\n\n if (trimmed === 'next month') {\n const d = new Date(today);\n d.setMonth(d.getMonth() + 1);\n return d.toISOString();\n }\n\n const dayIndex = DAY_NAMES.indexOf(trimmed);\n if (dayIndex !== -1) {\n const d = new Date(today);\n const currentDay = d.getDay();\n let daysUntil = dayIndex - currentDay;\n if (daysUntil <= 0) daysUntil += 7;\n d.setDate(d.getDate() + daysUntil);\n return d.toISOString();\n }\n\n // Try ISO format YYYY-MM-DD\n const isoMatch = trimmed.match(/^\\d{4}-\\d{2}-\\d{2}$/);\n if (isoMatch) {\n const d = new Date(trimmed + 'T00:00:00');\n if (!isNaN(d.getTime())) {\n return startOfDay(d).toISOString();\n }\n }\n\n return null;\n}\n\nexport function formatRelativeDate(isoDate: string): string {\n const target = startOfDay(new Date(isoDate));\n const today = startOfDay(new Date());\n const diffMs = target.getTime() - today.getTime();\n const diffDays = Math.round(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffDays === 0) return 'due: today';\n if (diffDays === 1) return 'due: tomorrow';\n if (diffDays === -1) return 'overdue: yesterday';\n if (diffDays > 1 && diffDays <= 14) return `due: in ${diffDays} days`;\n if (diffDays < -1) return `overdue: ${Math.abs(diffDays)} days ago`;\n\n // Far future: show month + day\n const d = new Date(isoDate);\n return `due: ${MONTH_NAMES[d.getMonth()]} ${d.getDate()}`;\n}\n\nexport function isOverdue(todo: TodoItem): boolean {\n if (todo.completed || !todo.dueDate) return false;\n const target = startOfDay(new Date(todo.dueDate));\n const today = startOfDay(new Date());\n return target.getTime() < today.getTime();\n}\n\nexport function migrateTodoItem(item: any): TodoItem {\n return {\n id: item.id,\n text: item.text,\n completed: item.completed ?? false,\n createdAt: item.createdAt ?? new Date().toISOString(),\n completedAt: item.completedAt,\n dueDate: item.dueDate,\n };\n}\n\nexport function lineThroughText(text: string): string {\n return text\n .split('')\n .map((char) => char + '\\u0336')\n .join('');\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.1.1';\nexport const API_VERSION = 2;\n ","import {\n CliForegroundColor,\n CliIcon,\n CliProcessCommand,\n CliProcessorMetadata,\n CliStateConfiguration,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliConfigurationOption,\n ICliExecutionContext,\n getPluginConfigValue,\n joinShellWords,\n} from '@qodalis/cli-core';\nimport { LIBRARY_VERSION } from '../version';\nimport {\n TodoItem,\n formatRelativeDate,\n isOverdue,\n lineThroughText,\n migrateTodoItem,\n parseDueDate,\n} from '../utilities';\n\nexport class CliTodoCommandProcessor implements ICliCommandProcessor {\n command = 'todo';\n\n description = 'Manage your tasks from the terminal. Add, list, edit, complete, and remove TODO items.';\n\n author = DefaultLibraryAuthor;\n\n version = LIBRARY_VERSION;\n\n processors?: ICliCommandProcessor[] = [];\n\n metadata?: CliProcessorMetadata = {\n icon: '๐',\n requiredCoreVersion: '>=2.0.0 <3.0.0',\n requiredCliVersion: '>=2.0.0 <3.0.0',\n };\n\n configurationOptions?: ICliConfigurationOption[] = [\n {\n key: 'showCompletedFirst',\n label: 'Show Completed First',\n description: 'List completed tasks before pending ones',\n type: 'boolean',\n defaultValue: false,\n },\n {\n key: 'confirmBeforeDelete',\n label: 'Confirm Before Delete',\n description: 'Ask for confirmation before removing tasks',\n type: 'boolean',\n defaultValue: false,\n },\n ];\n\n stateConfiguration?: CliStateConfiguration = {\n initialState: {\n todos: this.loadFromOldStorage() ?? [],\n },\n };\n\n private todos: TodoItem[] = [];\n\n getTodos(): TodoItem[] {\n return this.todos;\n }\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, translator: t } = context;\n writer.writeln(t.t('cli.todo.description', this.description!));\n writer.writeln();\n writer.writeln(writer.wrapInColor(t.t('cli.todo.help.commands', 'Commands:'), CliForegroundColor.Yellow));\n writer.writeln(` ${writer.wrapInColor('todo ls', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_all', 'List all tasks')}`);\n writer.writeln(` ${writer.wrapInColor('todo ls --pending', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_pending', 'List pending tasks only')}`);\n writer.writeln(` ${writer.wrapInColor('todo ls --completed', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_completed', 'List completed tasks only')}`);\n writer.writeln(` ${writer.wrapInColor('todo ls --overdue', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_overdue', 'List overdue tasks only')}`);\n writer.writeln(` ${writer.wrapInColor('todo add <text>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.add', 'Add a new task')}`);\n writer.writeln(` ${writer.wrapInColor('todo add <text> --due <date>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.add_due', 'Add with due date')}`);\n writer.writeln(` ${writer.wrapInColor('todo edit <id> <new text>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.edit', 'Edit a task')}`);\n writer.writeln(` ${writer.wrapInColor('todo done <id>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.done', 'Mark a task as done')}`);\n writer.writeln(` ${writer.wrapInColor('todo toggle <id>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.toggle', 'Toggle done/undone')}`);\n writer.writeln(` ${writer.wrapInColor('todo rm <id>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.remove', 'Remove a task')}`);\n writer.writeln(` ${writer.wrapInColor('todo rm --all', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.remove_all', 'Remove all tasks')}`);\n writer.writeln();\n writer.writeln(writer.wrapInColor(t.t('cli.todo.help.due_formats', 'Due date formats:'), CliForegroundColor.Yellow));\n writer.writeln(` today, tomorrow, monday..sunday, next week, next month, YYYY-MM-DD`);\n writer.writeln();\n writer.writeln(writer.wrapInColor(t.t('cli.common.examples', 'Examples:'), CliForegroundColor.Yellow));\n writer.writeln(` todo add Buy groceries --due tomorrow`);\n writer.writeln(` todo ls --pending`);\n writer.writeln(` todo edit 3 Buy organic groceries`);\n writer.writeln(` todo done 1`);\n writer.writeln(` todo toggle 2`);\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 || []).map(migrateTodoItem);\n });\n }\n\n private formatTodoLine(todo: TodoItem, writer: any): string {\n const check = todo.completed\n ? writer.wrapInColor(CliIcon.CheckIcon, CliForegroundColor.Green)\n : ' ';\n\n const text = todo.completed ? lineThroughText(todo.text) : todo.text;\n let suffix = '';\n\n if (todo.completed) {\n suffix = writer.wrapInColor(' done', CliForegroundColor.Green);\n } else if (todo.dueDate) {\n const rel = formatRelativeDate(todo.dueDate);\n const color = isOverdue(todo) ? CliForegroundColor.Red : CliForegroundColor.Yellow;\n suffix = ' ' + writer.wrapInColor(rel, color);\n }\n\n return ` [${check}] #${todo.id} - ${text}${suffix}`;\n }\n\n private registerSubProcessors(): void {\n this.processors = [\n // โโ ls โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'ls',\n aliases: ['list'],\n description: 'List TODO items',\n parameters: [\n {\n name: 'pending',\n description: 'Show only pending tasks',\n type: 'boolean',\n required: false,\n },\n {\n name: 'completed',\n description: 'Show only completed tasks',\n type: 'boolean',\n required: false,\n },\n {\n name: 'overdue',\n description: 'Show only overdue tasks',\n type: 'boolean',\n required: false,\n },\n ],\n processCommand: async (command, context) => {\n if (this.todos.length === 0) {\n context.writer.writeWarning('No tasks yet.');\n context.writer.writeln('Use \"todo add <text>\" to create one.');\n context.process.output([]);\n return;\n }\n\n let filtered = [...this.todos];\n const args = command.args;\n\n if (args['pending']) {\n filtered = filtered.filter((t) => !t.completed);\n } else if (args['completed']) {\n filtered = filtered.filter((t) => t.completed);\n } else if (args['overdue']) {\n filtered = filtered.filter((t) => isOverdue(t));\n }\n\n const showCompletedFirst = getPluginConfigValue(context, 'todo', 'showCompletedFirst', false);\n if (showCompletedFirst) {\n filtered.sort((a, b) => (a.completed === b.completed ? 0 : a.completed ? -1 : 1));\n }\n\n const doneCount = this.todos.filter((t) => t.completed).length;\n context.writer.writeln(\n context.writer.wrapInColor(\n `Todos (${doneCount}/${this.todos.length} done)`,\n CliForegroundColor.Cyan,\n ),\n );\n\n if (filtered.length === 0) {\n context.writer.writeln(' No matching tasks.');\n } else {\n filtered.forEach((todo) => {\n context.writer.writeln(\n this.formatTodoLine(todo, context.writer),\n );\n });\n }\n\n context.process.output(filtered);\n },\n },\n\n // โโ add โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'add',\n description: 'Add a new task',\n acceptsRawInput: true,\n valueRequired: true,\n parameters: [\n {\n name: 'due',\n description: 'Due date (today, tomorrow, monday..sunday, next week, next month, YYYY-MM-DD)',\n type: 'string',\n required: false,\n },\n ],\n processCommand: async (command, context) => {\n const text = joinShellWords(command.value ?? '');\n if (!text) {\n context.writer.writeError('Please provide a task description.');\n return;\n }\n\n let dueDate: string | undefined;\n const dueArg = command.args['due'];\n if (dueArg) {\n const parsed = parseDueDate(dueArg);\n if (!parsed) {\n context.writer.writeError(\n `Invalid due date: \"${dueArg}\". Use: today, tomorrow, monday..sunday, next week, next month, or YYYY-MM-DD.`,\n );\n return;\n }\n dueDate = parsed;\n }\n\n // The id comes from the latest saved list: two tabs\n // adding at once never get the same id\n let newItem!: TodoItem;\n await this.changeTodos(context, (todos) => {\n newItem = {\n id: nextIdOf(todos),\n text,\n completed: false,\n createdAt: new Date().toISOString(),\n dueDate,\n };\n todos.push(newItem);\n });\n\n let msg = `Added: \"${text}\"`;\n if (dueDate) {\n msg += ` (${formatRelativeDate(dueDate)})`;\n }\n context.writer.writeSuccess(msg);\n context.process.output(newItem);\n },\n },\n\n // โโ edit โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'edit',\n description: 'Edit a task\\'s text or due date',\n acceptsRawInput: true,\n valueRequired: true,\n parameters: [\n {\n name: 'due',\n description: 'New due date (or \"none\" to remove)',\n type: 'string',\n required: false,\n },\n ],\n processCommand: async (command, context) => {\n const [idStr = '', ...words] = command.positionals ?? [];\n const newText = words.length ? words.join(' ') : undefined;\n\n const id = parseInt(idStr, 10);\n if (isNaN(id)) {\n context.writer.writeError('Usage: todo edit <id> <new text> [--due <date>]');\n return;\n }\n\n const todo = this.todos.find((t) => t.id === id);\n if (!todo) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n const dueArg = command.args['due'];\n const edit: Partial<TodoItem> = {};\n\n if (newText) {\n edit.text = newText;\n }\n\n if (dueArg) {\n if (dueArg === 'none') {\n edit.dueDate = undefined;\n } else {\n const parsed = parseDueDate(dueArg);\n if (!parsed) {\n context.writer.writeError(`Invalid due date: \"${dueArg}\".`);\n return;\n }\n edit.dueDate = parsed;\n }\n }\n\n if (Object.keys(edit).length === 0) {\n context.writer.writeError('Nothing to update. Provide new text or --due.');\n return;\n }\n\n let updated: TodoItem | undefined;\n await this.changeTodos(context, (todos) => {\n const item = todos.find((t) => t.id === id);\n if (item) updated = Object.assign(item, edit);\n });\n context.writer.writeSuccess(`Updated task #${id}.`);\n context.process.output(updated ?? { ...todo, ...edit });\n },\n },\n\n // โโ done โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'done',\n aliases: ['complete'],\n description: 'Mark a task as done',\n acceptsRawInput: true,\n valueRequired: true,\n processCommand: async (command, context) => {\n const id = parseInt(command.positionals?.[0] ?? '', 10);\n if (isNaN(id)) {\n context.writer.writeError('Please provide a valid task ID.');\n return;\n }\n\n const todo = this.todos.find((t) => t.id === id);\n if (!todo) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n if (todo.completed) {\n context.writer.writeInfo(`Task #${id} is already done.`);\n return;\n }\n\n const completedAt = new Date().toISOString();\n await this.changeTodos(context, (todos) => {\n const item = todos.find((t) => t.id === id);\n if (item) {\n item.completed = true;\n item.completedAt = completedAt;\n }\n });\n context.writer.writeSuccess(`Done: \"${todo.text}\"`);\n context.process.output({ ...todo, completed: true, completedAt });\n },\n },\n\n // โโ toggle โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'toggle',\n description: 'Toggle a task between done and undone',\n acceptsRawInput: true,\n valueRequired: true,\n processCommand: async (command, context) => {\n const id = parseInt(command.positionals?.[0] ?? '', 10);\n if (isNaN(id)) {\n context.writer.writeError('Please provide a valid task ID.');\n return;\n }\n\n const todo = this.todos.find((t) => t.id === id);\n if (!todo) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n const completed = !todo.completed;\n const completedAt = completed ? new Date().toISOString() : undefined;\n await this.changeTodos(context, (todos) => {\n const item = todos.find((t) => t.id === id);\n if (item) {\n item.completed = completed;\n item.completedAt = completedAt;\n }\n });\n\n const status = completed ? 'done' : 'reopened';\n context.writer.writeSuccess(`Task #${id} marked as ${status}.`);\n context.process.output({ ...todo, completed, completedAt });\n },\n },\n\n // โโ rm โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'rm',\n aliases: ['remove'],\n description: 'Remove a task by ID',\n acceptsRawInput: true,\n parameters: [\n {\n name: 'all',\n description: 'Remove all tasks',\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 if (this.todos.length === 0) {\n context.writer.writeInfo('No tasks to remove.');\n return;\n }\n\n const confirmed = await context.reader.readConfirm(\n `Remove all ${this.todos.length} tasks?`,\n false,\n );\n\n if (!confirmed) {\n context.writer.writeInfo('Cancelled.');\n return;\n }\n\n await this.changeTodos(context, () => []);\n context.writer.writeSuccess('Removed all tasks.');\n return;\n }\n\n const id = parseInt(command.positionals?.[0] ?? '', 10);\n if (isNaN(id)) {\n context.writer.writeError('Please provide a valid task ID.');\n return;\n }\n\n const index = this.todos.findIndex((t) => t.id === id);\n if (index === -1) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n const confirmBeforeDelete = getPluginConfigValue(context, 'todo', 'confirmBeforeDelete', false);\n if (confirmBeforeDelete) {\n const confirmed = await context.reader.readConfirm(\n `Remove task #${id}: \"${this.todos[index].text}\"?`,\n false,\n );\n if (!confirmed) {\n context.writer.writeInfo('Cancelled.');\n return;\n }\n }\n\n const removed = this.todos[index];\n await this.changeTodos(context, (todos) =>\n todos.filter((t) => t.id !== id),\n );\n context.writer.writeSuccess(`Removed: \"${removed.text}\"`);\n },\n },\n ];\n }\n\n private loadFromOldStorage(): TodoItem[] {\n const data = localStorage.getItem('todo-items');\n if (!data) return [];\n try {\n return (JSON.parse(data) as any[]).map(migrateTodoItem);\n } catch {\n return [];\n }\n }\n\n /**\n * Change the list and save it, atomically: `change` gets the latest saved\n * list (another tab may have changed it) to edit in place, or returns a\n * new one.\n */\n private async changeTodos(\n context: ICliExecutionContext,\n change: (todos: TodoItem[]) => TodoItem[] | void,\n ): Promise<void> {\n await context.state.update((state) => {\n const todos = ((state['todos'] as TodoItem[] | undefined) ?? []).map(\n (t) => ({ ...migrateTodoItem(t) }),\n );\n return { todos: change(todos) ?? todos };\n });\n localStorage.removeItem('todo-items');\n }\n}\n\n/** The id for a new task: one more than the highest. */\nfunction nextIdOf(todos: TodoItem[]): number {\n return todos.length > 0 ? Math.max(...todos.map((t) => t.id)) + 1 : 1;\n}\n","import {\n ICliCompletionProvider,\n ICliCompletionContext,\n} from '@qodalis/cli-core';\nimport { CliTodoCommandProcessor } from '../processors/cli-todo-command-processor';\n\nconst TODO_ID_SUBCOMMANDS = new Set(['rm', 'done', 'complete', 'toggle', 'edit']);\n\nexport class CliTodoIdCompletionProvider\n implements ICliCompletionProvider\n{\n priority = 50;\n\n constructor(\n private readonly todoProcessor: CliTodoCommandProcessor,\n ) {}\n\n getCompletions(context: ICliCompletionContext): string[] {\n const { tokens, tokenIndex, token } = context;\n\n if (tokenIndex !== 2 || tokens.length < 2) {\n return [];\n }\n\n const rootCommand = tokens[0].toLowerCase();\n if (rootCommand !== 'todo') {\n return [];\n }\n\n const subCommand = tokens[1].toLowerCase();\n if (!TODO_ID_SUBCOMMANDS.has(subCommand)) {\n return [];\n }\n\n const todos = this.todoProcessor.getTodos();\n const lowerPrefix = token.toLowerCase();\n\n // For 'done' and 'complete', only show non-completed todos\n const filtered =\n subCommand === 'done' || subCommand === 'complete'\n ? todos.filter((t) => !t.completed)\n : todos;\n\n return filtered\n .map((t) => String(t.id))\n .filter((id) => id.startsWith(lowerPrefix))\n .sort((a, b) => Number(a) - Number(b));\n }\n}\n","/*\n * Public API Surface of todo\n */\n\nexport * from './lib/utilities';\nexport * from './lib/processors/cli-todo-command-processor';\nexport * from './lib/completion/cli-todo-id-completion-provider';\n\nimport {\n ICliModule,\n ICliCompletionProvider_TOKEN,\n} from '@qodalis/cli-core';\nimport { CliTodoCommandProcessor } from './lib/processors/cli-todo-command-processor';\nimport { CliTodoIdCompletionProvider } from './lib/completion/cli-todo-id-completion-provider';\nimport { API_VERSION } from './lib/version';\n\nconst todoProcessor = new CliTodoCommandProcessor();\n\nexport const todoModule: ICliModule = {\n apiVersion: API_VERSION,\n name: '@qodalis/cli-todo',\n processors: [todoProcessor],\n services: [\n {\n provide: ICliCompletionProvider_TOKEN,\n useValue: new CliTodoIdCompletionProvider(todoProcessor),\n multi: true,\n },\n ],\n translations: {\n es: { 'cli.todo.description': 'Gestionar tus tareas desde la terminal' },\n fr: { 'cli.todo.description': 'Gรฉrer vos tรขches depuis le terminal' },\n de: { 'cli.todo.description': 'Aufgaben รผber das Terminal verwalten' },\n pt: { 'cli.todo.description': 'Gerenciar suas tarefas pelo terminal' },\n it: { 'cli.todo.description': 'Gestire le attivitร dal terminale' },\n ja: { 'cli.todo.description': 'ใฟใผใใใซใใใฟในใฏใ็ฎก็' },\n ko: { 'cli.todo.description': 'ํฐ๋ฏธ๋์์ ํ ์ผ ๊ด๋ฆฌ' },\n zh: { 'cli.todo.description': 'ไป็ป็ซฏ็ฎก็ไฝ ็ไปปๅก' },\n ru: { 'cli.todo.description': 'ะฃะฟัะฐะฒะปะตะฝะธะต ะทะฐะดะฐัะฐะผะธ ะธะท ัะตัะผะธะฝะฐะปะฐ' },\n ro: { 'cli.todo.description': 'Gestioneazฤ sarcinile tale din terminal' },\n },\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../packages/plugins/todo/src/lib/utilities/index.ts","../../packages/plugins/todo/src/lib/version.ts","../../packages/plugins/todo/src/lib/processors/cli-todo-command-processor.ts","../../packages/plugins/todo/src/lib/completion/cli-todo-id-completion-provider.ts","../../packages/plugins/todo/src/public-api.ts"],"names":["DefaultLibraryAuthor","CliForegroundColor","CliIcon","getPluginConfigValue","joinShellWords","todoProcessor","ICliCompletionProvider_TOKEN"],"mappings":"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","file":"public-api.js","sourcesContent":["export type TodoItem = {\n id: number;\n text: string;\n completed: boolean;\n createdAt: string;\n completedAt?: string;\n dueDate?: string;\n};\n\nconst DAY_NAMES = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nconst MONTH_NAMES = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\nfunction startOfDay(date: Date): Date {\n const d = new Date(date);\n d.setHours(0, 0, 0, 0);\n return d;\n}\n\nexport function parseDueDate(input: string): string | null {\n const trimmed = input.trim().toLowerCase();\n const now = new Date();\n const today = startOfDay(now);\n\n if (trimmed === 'today') {\n return today.toISOString();\n }\n\n if (trimmed === 'tomorrow') {\n const d = new Date(today);\n d.setDate(d.getDate() + 1);\n return d.toISOString();\n }\n\n if (trimmed === 'yesterday') {\n const d = new Date(today);\n d.setDate(d.getDate() - 1);\n return d.toISOString();\n }\n\n if (trimmed === 'next week') {\n const d = new Date(today);\n d.setDate(d.getDate() + 7);\n return d.toISOString();\n }\n\n if (trimmed === 'next month') {\n const d = new Date(today);\n d.setMonth(d.getMonth() + 1);\n return d.toISOString();\n }\n\n const dayIndex = DAY_NAMES.indexOf(trimmed);\n if (dayIndex !== -1) {\n const d = new Date(today);\n const currentDay = d.getDay();\n let daysUntil = dayIndex - currentDay;\n if (daysUntil <= 0) daysUntil += 7;\n d.setDate(d.getDate() + daysUntil);\n return d.toISOString();\n }\n\n // Try ISO format YYYY-MM-DD\n const isoMatch = trimmed.match(/^\\d{4}-\\d{2}-\\d{2}$/);\n if (isoMatch) {\n const d = new Date(trimmed + 'T00:00:00');\n if (!isNaN(d.getTime())) {\n return startOfDay(d).toISOString();\n }\n }\n\n return null;\n}\n\nexport function formatRelativeDate(isoDate: string): string {\n const target = startOfDay(new Date(isoDate));\n const today = startOfDay(new Date());\n const diffMs = target.getTime() - today.getTime();\n const diffDays = Math.round(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffDays === 0) return 'due: today';\n if (diffDays === 1) return 'due: tomorrow';\n if (diffDays === -1) return 'overdue: yesterday';\n if (diffDays > 1 && diffDays <= 14) return `due: in ${diffDays} days`;\n if (diffDays < -1) return `overdue: ${Math.abs(diffDays)} days ago`;\n\n // Far future: show month + day\n const d = new Date(isoDate);\n return `due: ${MONTH_NAMES[d.getMonth()]} ${d.getDate()}`;\n}\n\nexport function isOverdue(todo: TodoItem): boolean {\n if (todo.completed || !todo.dueDate) return false;\n const target = startOfDay(new Date(todo.dueDate));\n const today = startOfDay(new Date());\n return target.getTime() < today.getTime();\n}\n\nexport function migrateTodoItem(item: any): TodoItem {\n return {\n id: item.id,\n text: item.text,\n completed: item.completed ?? false,\n createdAt: item.createdAt ?? new Date().toISOString(),\n completedAt: item.completedAt,\n dueDate: item.dueDate,\n };\n}\n\nexport function lineThroughText(text: string): string {\n return text\n .split('')\n .map((char) => char + '\\u0336')\n .join('');\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.3.0';\nexport const API_VERSION = 2;\n ","import {\n CliForegroundColor,\n CliIcon,\n CliProcessCommand,\n CliProcessorMetadata,\n CliStateConfiguration,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliConfigurationOption,\n ICliExecutionContext,\n getPluginConfigValue,\n joinShellWords,\n} from '@qodalis/cli-core';\nimport { LIBRARY_VERSION } from '../version';\nimport {\n TodoItem,\n formatRelativeDate,\n isOverdue,\n lineThroughText,\n migrateTodoItem,\n parseDueDate,\n} from '../utilities';\n\nexport class CliTodoCommandProcessor implements ICliCommandProcessor {\n command = 'todo';\n\n description = 'Manage your tasks from the terminal. Add, list, edit, complete, and remove TODO items.';\n\n author = DefaultLibraryAuthor;\n\n version = LIBRARY_VERSION;\n\n processors?: ICliCommandProcessor[] = [];\n\n metadata?: CliProcessorMetadata = {\n icon: '๐',\n requiredCoreVersion: '>=2.0.0 <3.0.0',\n requiredCliVersion: '>=2.0.0 <3.0.0',\n };\n\n configurationOptions?: ICliConfigurationOption[] = [\n {\n key: 'showCompletedFirst',\n label: 'Show Completed First',\n description: 'List completed tasks before pending ones',\n type: 'boolean',\n defaultValue: false,\n },\n {\n key: 'confirmBeforeDelete',\n label: 'Confirm Before Delete',\n description: 'Ask for confirmation before removing tasks',\n type: 'boolean',\n defaultValue: false,\n },\n ];\n\n stateConfiguration?: CliStateConfiguration = {\n initialState: {\n todos: this.loadFromOldStorage() ?? [],\n },\n };\n\n private todos: TodoItem[] = [];\n\n getTodos(): TodoItem[] {\n return this.todos;\n }\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, translator: t } = context;\n writer.writeln(t.t('cli.todo.description', this.description!));\n writer.writeln();\n writer.writeln(writer.wrapInColor(t.t('cli.todo.help.commands', 'Commands:'), CliForegroundColor.Yellow));\n writer.writeln(` ${writer.wrapInColor('todo ls', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_all', 'List all tasks')}`);\n writer.writeln(` ${writer.wrapInColor('todo ls --pending', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_pending', 'List pending tasks only')}`);\n writer.writeln(` ${writer.wrapInColor('todo ls --completed', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_completed', 'List completed tasks only')}`);\n writer.writeln(` ${writer.wrapInColor('todo ls --overdue', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_overdue', 'List overdue tasks only')}`);\n writer.writeln(` ${writer.wrapInColor('todo add <text>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.add', 'Add a new task')}`);\n writer.writeln(` ${writer.wrapInColor('todo add <text> --due <date>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.add_due', 'Add with due date')}`);\n writer.writeln(` ${writer.wrapInColor('todo edit <id> <new text>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.edit', 'Edit a task')}`);\n writer.writeln(` ${writer.wrapInColor('todo done <id>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.done', 'Mark a task as done')}`);\n writer.writeln(` ${writer.wrapInColor('todo toggle <id>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.toggle', 'Toggle done/undone')}`);\n writer.writeln(` ${writer.wrapInColor('todo rm <id>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.remove', 'Remove a task')}`);\n writer.writeln(` ${writer.wrapInColor('todo rm --all', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.remove_all', 'Remove all tasks')}`);\n writer.writeln();\n writer.writeln(writer.wrapInColor(t.t('cli.todo.help.due_formats', 'Due date formats:'), CliForegroundColor.Yellow));\n writer.writeln(` today, tomorrow, monday..sunday, next week, next month, YYYY-MM-DD`);\n writer.writeln();\n writer.writeln(writer.wrapInColor(t.t('cli.common.examples', 'Examples:'), CliForegroundColor.Yellow));\n writer.writeln(` todo add Buy groceries --due tomorrow`);\n writer.writeln(` todo ls --pending`);\n writer.writeln(` todo edit 3 Buy organic groceries`);\n writer.writeln(` todo done 1`);\n writer.writeln(` todo toggle 2`);\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 || []).map(migrateTodoItem);\n });\n }\n\n private formatTodoLine(todo: TodoItem, writer: any): string {\n const check = todo.completed\n ? writer.wrapInColor(CliIcon.CheckIcon, CliForegroundColor.Green)\n : ' ';\n\n const text = todo.completed ? lineThroughText(todo.text) : todo.text;\n let suffix = '';\n\n if (todo.completed) {\n suffix = writer.wrapInColor(' done', CliForegroundColor.Green);\n } else if (todo.dueDate) {\n const rel = formatRelativeDate(todo.dueDate);\n const color = isOverdue(todo) ? CliForegroundColor.Red : CliForegroundColor.Yellow;\n suffix = ' ' + writer.wrapInColor(rel, color);\n }\n\n return ` [${check}] #${todo.id} - ${text}${suffix}`;\n }\n\n private registerSubProcessors(): void {\n this.processors = [\n // โโ ls โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'ls',\n aliases: ['list'],\n description: 'List TODO items',\n parameters: [\n {\n name: 'pending',\n description: 'Show only pending tasks',\n type: 'boolean',\n required: false,\n },\n {\n name: 'completed',\n description: 'Show only completed tasks',\n type: 'boolean',\n required: false,\n },\n {\n name: 'overdue',\n description: 'Show only overdue tasks',\n type: 'boolean',\n required: false,\n },\n ],\n processCommand: async (command, context) => {\n if (this.todos.length === 0) {\n context.writer.writeWarning('No tasks yet.');\n context.writer.writeln('Use \"todo add <text>\" to create one.');\n context.process.output([]);\n return;\n }\n\n let filtered = [...this.todos];\n const args = command.args;\n\n if (args['pending']) {\n filtered = filtered.filter((t) => !t.completed);\n } else if (args['completed']) {\n filtered = filtered.filter((t) => t.completed);\n } else if (args['overdue']) {\n filtered = filtered.filter((t) => isOverdue(t));\n }\n\n const showCompletedFirst = getPluginConfigValue(context, 'todo', 'showCompletedFirst', false);\n if (showCompletedFirst) {\n filtered.sort((a, b) => (a.completed === b.completed ? 0 : a.completed ? -1 : 1));\n }\n\n const doneCount = this.todos.filter((t) => t.completed).length;\n context.writer.writeln(\n context.writer.wrapInColor(\n `Todos (${doneCount}/${this.todos.length} done)`,\n CliForegroundColor.Cyan,\n ),\n );\n\n if (filtered.length === 0) {\n context.writer.writeln(' No matching tasks.');\n } else {\n filtered.forEach((todo) => {\n context.writer.writeln(\n this.formatTodoLine(todo, context.writer),\n );\n });\n }\n\n context.process.output(filtered);\n },\n },\n\n // โโ add โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'add',\n description: 'Add a new task',\n acceptsRawInput: true,\n valueRequired: true,\n parameters: [\n {\n name: 'due',\n description: 'Due date (today, tomorrow, monday..sunday, next week, next month, YYYY-MM-DD)',\n type: 'string',\n required: false,\n },\n ],\n processCommand: async (command, context) => {\n const text = joinShellWords(command.value ?? '');\n if (!text) {\n context.writer.writeError('Please provide a task description.');\n return;\n }\n\n let dueDate: string | undefined;\n const dueArg = command.args['due'];\n if (dueArg) {\n const parsed = parseDueDate(dueArg);\n if (!parsed) {\n context.writer.writeError(\n `Invalid due date: \"${dueArg}\". Use: today, tomorrow, monday..sunday, next week, next month, or YYYY-MM-DD.`,\n );\n return;\n }\n dueDate = parsed;\n }\n\n // The id comes from the latest saved list: two tabs\n // adding at once never get the same id\n let newItem!: TodoItem;\n await this.changeTodos(context, (todos) => {\n newItem = {\n id: nextIdOf(todos),\n text,\n completed: false,\n createdAt: new Date().toISOString(),\n dueDate,\n };\n todos.push(newItem);\n });\n\n let msg = `Added: \"${text}\"`;\n if (dueDate) {\n msg += ` (${formatRelativeDate(dueDate)})`;\n }\n context.writer.writeSuccess(msg);\n context.process.output(newItem);\n },\n },\n\n // โโ edit โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'edit',\n description: 'Edit a task\\'s text or due date',\n acceptsRawInput: true,\n valueRequired: true,\n parameters: [\n {\n name: 'due',\n description: 'New due date (or \"none\" to remove)',\n type: 'string',\n required: false,\n },\n ],\n processCommand: async (command, context) => {\n const [idStr = '', ...words] = command.positionals ?? [];\n const newText = words.length ? words.join(' ') : undefined;\n\n const id = parseInt(idStr, 10);\n if (isNaN(id)) {\n context.writer.writeError('Usage: todo edit <id> <new text> [--due <date>]');\n return;\n }\n\n const todo = this.todos.find((t) => t.id === id);\n if (!todo) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n const dueArg = command.args['due'];\n const edit: Partial<TodoItem> = {};\n\n if (newText) {\n edit.text = newText;\n }\n\n if (dueArg) {\n if (dueArg === 'none') {\n edit.dueDate = undefined;\n } else {\n const parsed = parseDueDate(dueArg);\n if (!parsed) {\n context.writer.writeError(`Invalid due date: \"${dueArg}\".`);\n return;\n }\n edit.dueDate = parsed;\n }\n }\n\n if (Object.keys(edit).length === 0) {\n context.writer.writeError('Nothing to update. Provide new text or --due.');\n return;\n }\n\n let updated: TodoItem | undefined;\n await this.changeTodos(context, (todos) => {\n const item = todos.find((t) => t.id === id);\n if (item) updated = Object.assign(item, edit);\n });\n context.writer.writeSuccess(`Updated task #${id}.`);\n context.process.output(updated ?? { ...todo, ...edit });\n },\n },\n\n // โโ done โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'done',\n aliases: ['complete'],\n description: 'Mark a task as done',\n acceptsRawInput: true,\n valueRequired: true,\n processCommand: async (command, context) => {\n const id = parseInt(command.positionals?.[0] ?? '', 10);\n if (isNaN(id)) {\n context.writer.writeError('Please provide a valid task ID.');\n return;\n }\n\n const todo = this.todos.find((t) => t.id === id);\n if (!todo) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n if (todo.completed) {\n context.writer.writeInfo(`Task #${id} is already done.`);\n return;\n }\n\n const completedAt = new Date().toISOString();\n await this.changeTodos(context, (todos) => {\n const item = todos.find((t) => t.id === id);\n if (item) {\n item.completed = true;\n item.completedAt = completedAt;\n }\n });\n context.writer.writeSuccess(`Done: \"${todo.text}\"`);\n context.process.output({ ...todo, completed: true, completedAt });\n },\n },\n\n // โโ toggle โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'toggle',\n description: 'Toggle a task between done and undone',\n acceptsRawInput: true,\n valueRequired: true,\n processCommand: async (command, context) => {\n const id = parseInt(command.positionals?.[0] ?? '', 10);\n if (isNaN(id)) {\n context.writer.writeError('Please provide a valid task ID.');\n return;\n }\n\n const todo = this.todos.find((t) => t.id === id);\n if (!todo) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n const completed = !todo.completed;\n const completedAt = completed ? new Date().toISOString() : undefined;\n await this.changeTodos(context, (todos) => {\n const item = todos.find((t) => t.id === id);\n if (item) {\n item.completed = completed;\n item.completedAt = completedAt;\n }\n });\n\n const status = completed ? 'done' : 'reopened';\n context.writer.writeSuccess(`Task #${id} marked as ${status}.`);\n context.process.output({ ...todo, completed, completedAt });\n },\n },\n\n // โโ rm โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'rm',\n aliases: ['remove'],\n description: 'Remove a task by ID',\n acceptsRawInput: true,\n parameters: [\n {\n name: 'all',\n description: 'Remove all tasks',\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 if (this.todos.length === 0) {\n context.writer.writeInfo('No tasks to remove.');\n return;\n }\n\n const confirmed = await context.reader.readConfirm(\n `Remove all ${this.todos.length} tasks?`,\n false,\n );\n\n if (!confirmed) {\n context.writer.writeInfo('Cancelled.');\n return;\n }\n\n await this.changeTodos(context, () => []);\n context.writer.writeSuccess('Removed all tasks.');\n return;\n }\n\n const id = parseInt(command.positionals?.[0] ?? '', 10);\n if (isNaN(id)) {\n context.writer.writeError('Please provide a valid task ID.');\n return;\n }\n\n const index = this.todos.findIndex((t) => t.id === id);\n if (index === -1) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n const confirmBeforeDelete = getPluginConfigValue(context, 'todo', 'confirmBeforeDelete', false);\n if (confirmBeforeDelete) {\n const confirmed = await context.reader.readConfirm(\n `Remove task #${id}: \"${this.todos[index].text}\"?`,\n false,\n );\n if (!confirmed) {\n context.writer.writeInfo('Cancelled.');\n return;\n }\n }\n\n const removed = this.todos[index];\n await this.changeTodos(context, (todos) =>\n todos.filter((t) => t.id !== id),\n );\n context.writer.writeSuccess(`Removed: \"${removed.text}\"`);\n },\n },\n ];\n }\n\n private loadFromOldStorage(): TodoItem[] {\n const data = localStorage.getItem('todo-items');\n if (!data) return [];\n try {\n return (JSON.parse(data) as any[]).map(migrateTodoItem);\n } catch {\n return [];\n }\n }\n\n /**\n * Change the list and save it, atomically: `change` gets the latest saved\n * list (another tab may have changed it) to edit in place, or returns a\n * new one.\n */\n private async changeTodos(\n context: ICliExecutionContext,\n change: (todos: TodoItem[]) => TodoItem[] | void,\n ): Promise<void> {\n await context.state.update((state) => {\n const todos = ((state['todos'] as TodoItem[] | undefined) ?? []).map(\n (t) => ({ ...migrateTodoItem(t) }),\n );\n return { todos: change(todos) ?? todos };\n });\n localStorage.removeItem('todo-items');\n }\n}\n\n/** The id for a new task: one more than the highest. */\nfunction nextIdOf(todos: TodoItem[]): number {\n return todos.length > 0 ? Math.max(...todos.map((t) => t.id)) + 1 : 1;\n}\n","import {\n ICliCompletionProvider,\n ICliCompletionContext,\n} from '@qodalis/cli-core';\nimport { CliTodoCommandProcessor } from '../processors/cli-todo-command-processor';\n\nconst TODO_ID_SUBCOMMANDS = new Set(['rm', 'done', 'complete', 'toggle', 'edit']);\n\nexport class CliTodoIdCompletionProvider\n implements ICliCompletionProvider\n{\n priority = 50;\n\n constructor(\n private readonly todoProcessor: CliTodoCommandProcessor,\n ) {}\n\n getCompletions(context: ICliCompletionContext): string[] {\n const { tokens, tokenIndex, token } = context;\n\n if (tokenIndex !== 2 || tokens.length < 2) {\n return [];\n }\n\n const rootCommand = tokens[0].toLowerCase();\n if (rootCommand !== 'todo') {\n return [];\n }\n\n const subCommand = tokens[1].toLowerCase();\n if (!TODO_ID_SUBCOMMANDS.has(subCommand)) {\n return [];\n }\n\n const todos = this.todoProcessor.getTodos();\n const lowerPrefix = token.toLowerCase();\n\n // For 'done' and 'complete', only show non-completed todos\n const filtered =\n subCommand === 'done' || subCommand === 'complete'\n ? todos.filter((t) => !t.completed)\n : todos;\n\n return filtered\n .map((t) => String(t.id))\n .filter((id) => id.startsWith(lowerPrefix))\n .sort((a, b) => Number(a) - Number(b));\n }\n}\n","/*\n * Public API Surface of todo\n */\n\nexport * from './lib/utilities';\nexport * from './lib/processors/cli-todo-command-processor';\nexport * from './lib/completion/cli-todo-id-completion-provider';\n\nimport {\n ICliModule,\n ICliCompletionProvider_TOKEN,\n} from '@qodalis/cli-core';\nimport { CliTodoCommandProcessor } from './lib/processors/cli-todo-command-processor';\nimport { CliTodoIdCompletionProvider } from './lib/completion/cli-todo-id-completion-provider';\nimport { API_VERSION } from './lib/version';\n\nconst todoProcessor = new CliTodoCommandProcessor();\n\nexport const todoModule: ICliModule = {\n apiVersion: API_VERSION,\n name: '@qodalis/cli-todo',\n processors: [todoProcessor],\n services: [\n {\n provide: ICliCompletionProvider_TOKEN,\n useValue: new CliTodoIdCompletionProvider(todoProcessor),\n multi: true,\n },\n ],\n translations: {\n es: { 'cli.todo.description': 'Gestionar tus tareas desde la terminal' },\n fr: { 'cli.todo.description': 'Gรฉrer vos tรขches depuis le terminal' },\n de: { 'cli.todo.description': 'Aufgaben รผber das Terminal verwalten' },\n pt: { 'cli.todo.description': 'Gerenciar suas tarefas pelo terminal' },\n it: { 'cli.todo.description': 'Gestire le attivitร dal terminale' },\n ja: { 'cli.todo.description': 'ใฟใผใใใซใใใฟในใฏใ็ฎก็' },\n ko: { 'cli.todo.description': 'ํฐ๋ฏธ๋์์ ํ ์ผ ๊ด๋ฆฌ' },\n zh: { 'cli.todo.description': 'ไป็ป็ซฏ็ฎก็ไฝ ็ไปปๅก' },\n ru: { 'cli.todo.description': 'ะฃะฟัะฐะฒะปะตะฝะธะต ะทะฐะดะฐัะฐะผะธ ะธะท ัะตัะผะธะฝะฐะปะฐ' },\n ro: { 'cli.todo.description': 'Gestioneazฤ sarcinile tale din terminal' },\n },\n};\n"]}
|
package/public-api.mjs
CHANGED
package/public-api.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../packages/plugins/todo/src/lib/utilities/index.ts","../../packages/plugins/todo/src/lib/version.ts","../../packages/plugins/todo/src/lib/processors/cli-todo-command-processor.ts","../../packages/plugins/todo/src/lib/completion/cli-todo-id-completion-provider.ts","../../packages/plugins/todo/src/public-api.ts"],"names":["todoProcessor"],"mappings":"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","file":"public-api.mjs","sourcesContent":["export type TodoItem = {\n id: number;\n text: string;\n completed: boolean;\n createdAt: string;\n completedAt?: string;\n dueDate?: string;\n};\n\nconst DAY_NAMES = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nconst MONTH_NAMES = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\nfunction startOfDay(date: Date): Date {\n const d = new Date(date);\n d.setHours(0, 0, 0, 0);\n return d;\n}\n\nexport function parseDueDate(input: string): string | null {\n const trimmed = input.trim().toLowerCase();\n const now = new Date();\n const today = startOfDay(now);\n\n if (trimmed === 'today') {\n return today.toISOString();\n }\n\n if (trimmed === 'tomorrow') {\n const d = new Date(today);\n d.setDate(d.getDate() + 1);\n return d.toISOString();\n }\n\n if (trimmed === 'yesterday') {\n const d = new Date(today);\n d.setDate(d.getDate() - 1);\n return d.toISOString();\n }\n\n if (trimmed === 'next week') {\n const d = new Date(today);\n d.setDate(d.getDate() + 7);\n return d.toISOString();\n }\n\n if (trimmed === 'next month') {\n const d = new Date(today);\n d.setMonth(d.getMonth() + 1);\n return d.toISOString();\n }\n\n const dayIndex = DAY_NAMES.indexOf(trimmed);\n if (dayIndex !== -1) {\n const d = new Date(today);\n const currentDay = d.getDay();\n let daysUntil = dayIndex - currentDay;\n if (daysUntil <= 0) daysUntil += 7;\n d.setDate(d.getDate() + daysUntil);\n return d.toISOString();\n }\n\n // Try ISO format YYYY-MM-DD\n const isoMatch = trimmed.match(/^\\d{4}-\\d{2}-\\d{2}$/);\n if (isoMatch) {\n const d = new Date(trimmed + 'T00:00:00');\n if (!isNaN(d.getTime())) {\n return startOfDay(d).toISOString();\n }\n }\n\n return null;\n}\n\nexport function formatRelativeDate(isoDate: string): string {\n const target = startOfDay(new Date(isoDate));\n const today = startOfDay(new Date());\n const diffMs = target.getTime() - today.getTime();\n const diffDays = Math.round(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffDays === 0) return 'due: today';\n if (diffDays === 1) return 'due: tomorrow';\n if (diffDays === -1) return 'overdue: yesterday';\n if (diffDays > 1 && diffDays <= 14) return `due: in ${diffDays} days`;\n if (diffDays < -1) return `overdue: ${Math.abs(diffDays)} days ago`;\n\n // Far future: show month + day\n const d = new Date(isoDate);\n return `due: ${MONTH_NAMES[d.getMonth()]} ${d.getDate()}`;\n}\n\nexport function isOverdue(todo: TodoItem): boolean {\n if (todo.completed || !todo.dueDate) return false;\n const target = startOfDay(new Date(todo.dueDate));\n const today = startOfDay(new Date());\n return target.getTime() < today.getTime();\n}\n\nexport function migrateTodoItem(item: any): TodoItem {\n return {\n id: item.id,\n text: item.text,\n completed: item.completed ?? false,\n createdAt: item.createdAt ?? new Date().toISOString(),\n completedAt: item.completedAt,\n dueDate: item.dueDate,\n };\n}\n\nexport function lineThroughText(text: string): string {\n return text\n .split('')\n .map((char) => char + '\\u0336')\n .join('');\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.1.1';\nexport const API_VERSION = 2;\n ","import {\n CliForegroundColor,\n CliIcon,\n CliProcessCommand,\n CliProcessorMetadata,\n CliStateConfiguration,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliConfigurationOption,\n ICliExecutionContext,\n getPluginConfigValue,\n joinShellWords,\n} from '@qodalis/cli-core';\nimport { LIBRARY_VERSION } from '../version';\nimport {\n TodoItem,\n formatRelativeDate,\n isOverdue,\n lineThroughText,\n migrateTodoItem,\n parseDueDate,\n} from '../utilities';\n\nexport class CliTodoCommandProcessor implements ICliCommandProcessor {\n command = 'todo';\n\n description = 'Manage your tasks from the terminal. Add, list, edit, complete, and remove TODO items.';\n\n author = DefaultLibraryAuthor;\n\n version = LIBRARY_VERSION;\n\n processors?: ICliCommandProcessor[] = [];\n\n metadata?: CliProcessorMetadata = {\n icon: '๐',\n requiredCoreVersion: '>=2.0.0 <3.0.0',\n requiredCliVersion: '>=2.0.0 <3.0.0',\n };\n\n configurationOptions?: ICliConfigurationOption[] = [\n {\n key: 'showCompletedFirst',\n label: 'Show Completed First',\n description: 'List completed tasks before pending ones',\n type: 'boolean',\n defaultValue: false,\n },\n {\n key: 'confirmBeforeDelete',\n label: 'Confirm Before Delete',\n description: 'Ask for confirmation before removing tasks',\n type: 'boolean',\n defaultValue: false,\n },\n ];\n\n stateConfiguration?: CliStateConfiguration = {\n initialState: {\n todos: this.loadFromOldStorage() ?? [],\n },\n };\n\n private todos: TodoItem[] = [];\n\n getTodos(): TodoItem[] {\n return this.todos;\n }\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, translator: t } = context;\n writer.writeln(t.t('cli.todo.description', this.description!));\n writer.writeln();\n writer.writeln(writer.wrapInColor(t.t('cli.todo.help.commands', 'Commands:'), CliForegroundColor.Yellow));\n writer.writeln(` ${writer.wrapInColor('todo ls', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_all', 'List all tasks')}`);\n writer.writeln(` ${writer.wrapInColor('todo ls --pending', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_pending', 'List pending tasks only')}`);\n writer.writeln(` ${writer.wrapInColor('todo ls --completed', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_completed', 'List completed tasks only')}`);\n writer.writeln(` ${writer.wrapInColor('todo ls --overdue', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_overdue', 'List overdue tasks only')}`);\n writer.writeln(` ${writer.wrapInColor('todo add <text>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.add', 'Add a new task')}`);\n writer.writeln(` ${writer.wrapInColor('todo add <text> --due <date>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.add_due', 'Add with due date')}`);\n writer.writeln(` ${writer.wrapInColor('todo edit <id> <new text>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.edit', 'Edit a task')}`);\n writer.writeln(` ${writer.wrapInColor('todo done <id>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.done', 'Mark a task as done')}`);\n writer.writeln(` ${writer.wrapInColor('todo toggle <id>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.toggle', 'Toggle done/undone')}`);\n writer.writeln(` ${writer.wrapInColor('todo rm <id>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.remove', 'Remove a task')}`);\n writer.writeln(` ${writer.wrapInColor('todo rm --all', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.remove_all', 'Remove all tasks')}`);\n writer.writeln();\n writer.writeln(writer.wrapInColor(t.t('cli.todo.help.due_formats', 'Due date formats:'), CliForegroundColor.Yellow));\n writer.writeln(` today, tomorrow, monday..sunday, next week, next month, YYYY-MM-DD`);\n writer.writeln();\n writer.writeln(writer.wrapInColor(t.t('cli.common.examples', 'Examples:'), CliForegroundColor.Yellow));\n writer.writeln(` todo add Buy groceries --due tomorrow`);\n writer.writeln(` todo ls --pending`);\n writer.writeln(` todo edit 3 Buy organic groceries`);\n writer.writeln(` todo done 1`);\n writer.writeln(` todo toggle 2`);\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 || []).map(migrateTodoItem);\n });\n }\n\n private formatTodoLine(todo: TodoItem, writer: any): string {\n const check = todo.completed\n ? writer.wrapInColor(CliIcon.CheckIcon, CliForegroundColor.Green)\n : ' ';\n\n const text = todo.completed ? lineThroughText(todo.text) : todo.text;\n let suffix = '';\n\n if (todo.completed) {\n suffix = writer.wrapInColor(' done', CliForegroundColor.Green);\n } else if (todo.dueDate) {\n const rel = formatRelativeDate(todo.dueDate);\n const color = isOverdue(todo) ? CliForegroundColor.Red : CliForegroundColor.Yellow;\n suffix = ' ' + writer.wrapInColor(rel, color);\n }\n\n return ` [${check}] #${todo.id} - ${text}${suffix}`;\n }\n\n private registerSubProcessors(): void {\n this.processors = [\n // โโ ls โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'ls',\n aliases: ['list'],\n description: 'List TODO items',\n parameters: [\n {\n name: 'pending',\n description: 'Show only pending tasks',\n type: 'boolean',\n required: false,\n },\n {\n name: 'completed',\n description: 'Show only completed tasks',\n type: 'boolean',\n required: false,\n },\n {\n name: 'overdue',\n description: 'Show only overdue tasks',\n type: 'boolean',\n required: false,\n },\n ],\n processCommand: async (command, context) => {\n if (this.todos.length === 0) {\n context.writer.writeWarning('No tasks yet.');\n context.writer.writeln('Use \"todo add <text>\" to create one.');\n context.process.output([]);\n return;\n }\n\n let filtered = [...this.todos];\n const args = command.args;\n\n if (args['pending']) {\n filtered = filtered.filter((t) => !t.completed);\n } else if (args['completed']) {\n filtered = filtered.filter((t) => t.completed);\n } else if (args['overdue']) {\n filtered = filtered.filter((t) => isOverdue(t));\n }\n\n const showCompletedFirst = getPluginConfigValue(context, 'todo', 'showCompletedFirst', false);\n if (showCompletedFirst) {\n filtered.sort((a, b) => (a.completed === b.completed ? 0 : a.completed ? -1 : 1));\n }\n\n const doneCount = this.todos.filter((t) => t.completed).length;\n context.writer.writeln(\n context.writer.wrapInColor(\n `Todos (${doneCount}/${this.todos.length} done)`,\n CliForegroundColor.Cyan,\n ),\n );\n\n if (filtered.length === 0) {\n context.writer.writeln(' No matching tasks.');\n } else {\n filtered.forEach((todo) => {\n context.writer.writeln(\n this.formatTodoLine(todo, context.writer),\n );\n });\n }\n\n context.process.output(filtered);\n },\n },\n\n // โโ add โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'add',\n description: 'Add a new task',\n acceptsRawInput: true,\n valueRequired: true,\n parameters: [\n {\n name: 'due',\n description: 'Due date (today, tomorrow, monday..sunday, next week, next month, YYYY-MM-DD)',\n type: 'string',\n required: false,\n },\n ],\n processCommand: async (command, context) => {\n const text = joinShellWords(command.value ?? '');\n if (!text) {\n context.writer.writeError('Please provide a task description.');\n return;\n }\n\n let dueDate: string | undefined;\n const dueArg = command.args['due'];\n if (dueArg) {\n const parsed = parseDueDate(dueArg);\n if (!parsed) {\n context.writer.writeError(\n `Invalid due date: \"${dueArg}\". Use: today, tomorrow, monday..sunday, next week, next month, or YYYY-MM-DD.`,\n );\n return;\n }\n dueDate = parsed;\n }\n\n // The id comes from the latest saved list: two tabs\n // adding at once never get the same id\n let newItem!: TodoItem;\n await this.changeTodos(context, (todos) => {\n newItem = {\n id: nextIdOf(todos),\n text,\n completed: false,\n createdAt: new Date().toISOString(),\n dueDate,\n };\n todos.push(newItem);\n });\n\n let msg = `Added: \"${text}\"`;\n if (dueDate) {\n msg += ` (${formatRelativeDate(dueDate)})`;\n }\n context.writer.writeSuccess(msg);\n context.process.output(newItem);\n },\n },\n\n // โโ edit โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'edit',\n description: 'Edit a task\\'s text or due date',\n acceptsRawInput: true,\n valueRequired: true,\n parameters: [\n {\n name: 'due',\n description: 'New due date (or \"none\" to remove)',\n type: 'string',\n required: false,\n },\n ],\n processCommand: async (command, context) => {\n const [idStr = '', ...words] = command.positionals ?? [];\n const newText = words.length ? words.join(' ') : undefined;\n\n const id = parseInt(idStr, 10);\n if (isNaN(id)) {\n context.writer.writeError('Usage: todo edit <id> <new text> [--due <date>]');\n return;\n }\n\n const todo = this.todos.find((t) => t.id === id);\n if (!todo) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n const dueArg = command.args['due'];\n const edit: Partial<TodoItem> = {};\n\n if (newText) {\n edit.text = newText;\n }\n\n if (dueArg) {\n if (dueArg === 'none') {\n edit.dueDate = undefined;\n } else {\n const parsed = parseDueDate(dueArg);\n if (!parsed) {\n context.writer.writeError(`Invalid due date: \"${dueArg}\".`);\n return;\n }\n edit.dueDate = parsed;\n }\n }\n\n if (Object.keys(edit).length === 0) {\n context.writer.writeError('Nothing to update. Provide new text or --due.');\n return;\n }\n\n let updated: TodoItem | undefined;\n await this.changeTodos(context, (todos) => {\n const item = todos.find((t) => t.id === id);\n if (item) updated = Object.assign(item, edit);\n });\n context.writer.writeSuccess(`Updated task #${id}.`);\n context.process.output(updated ?? { ...todo, ...edit });\n },\n },\n\n // โโ done โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'done',\n aliases: ['complete'],\n description: 'Mark a task as done',\n acceptsRawInput: true,\n valueRequired: true,\n processCommand: async (command, context) => {\n const id = parseInt(command.positionals?.[0] ?? '', 10);\n if (isNaN(id)) {\n context.writer.writeError('Please provide a valid task ID.');\n return;\n }\n\n const todo = this.todos.find((t) => t.id === id);\n if (!todo) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n if (todo.completed) {\n context.writer.writeInfo(`Task #${id} is already done.`);\n return;\n }\n\n const completedAt = new Date().toISOString();\n await this.changeTodos(context, (todos) => {\n const item = todos.find((t) => t.id === id);\n if (item) {\n item.completed = true;\n item.completedAt = completedAt;\n }\n });\n context.writer.writeSuccess(`Done: \"${todo.text}\"`);\n context.process.output({ ...todo, completed: true, completedAt });\n },\n },\n\n // โโ toggle โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'toggle',\n description: 'Toggle a task between done and undone',\n acceptsRawInput: true,\n valueRequired: true,\n processCommand: async (command, context) => {\n const id = parseInt(command.positionals?.[0] ?? '', 10);\n if (isNaN(id)) {\n context.writer.writeError('Please provide a valid task ID.');\n return;\n }\n\n const todo = this.todos.find((t) => t.id === id);\n if (!todo) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n const completed = !todo.completed;\n const completedAt = completed ? new Date().toISOString() : undefined;\n await this.changeTodos(context, (todos) => {\n const item = todos.find((t) => t.id === id);\n if (item) {\n item.completed = completed;\n item.completedAt = completedAt;\n }\n });\n\n const status = completed ? 'done' : 'reopened';\n context.writer.writeSuccess(`Task #${id} marked as ${status}.`);\n context.process.output({ ...todo, completed, completedAt });\n },\n },\n\n // โโ rm โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'rm',\n aliases: ['remove'],\n description: 'Remove a task by ID',\n acceptsRawInput: true,\n parameters: [\n {\n name: 'all',\n description: 'Remove all tasks',\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 if (this.todos.length === 0) {\n context.writer.writeInfo('No tasks to remove.');\n return;\n }\n\n const confirmed = await context.reader.readConfirm(\n `Remove all ${this.todos.length} tasks?`,\n false,\n );\n\n if (!confirmed) {\n context.writer.writeInfo('Cancelled.');\n return;\n }\n\n await this.changeTodos(context, () => []);\n context.writer.writeSuccess('Removed all tasks.');\n return;\n }\n\n const id = parseInt(command.positionals?.[0] ?? '', 10);\n if (isNaN(id)) {\n context.writer.writeError('Please provide a valid task ID.');\n return;\n }\n\n const index = this.todos.findIndex((t) => t.id === id);\n if (index === -1) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n const confirmBeforeDelete = getPluginConfigValue(context, 'todo', 'confirmBeforeDelete', false);\n if (confirmBeforeDelete) {\n const confirmed = await context.reader.readConfirm(\n `Remove task #${id}: \"${this.todos[index].text}\"?`,\n false,\n );\n if (!confirmed) {\n context.writer.writeInfo('Cancelled.');\n return;\n }\n }\n\n const removed = this.todos[index];\n await this.changeTodos(context, (todos) =>\n todos.filter((t) => t.id !== id),\n );\n context.writer.writeSuccess(`Removed: \"${removed.text}\"`);\n },\n },\n ];\n }\n\n private loadFromOldStorage(): TodoItem[] {\n const data = localStorage.getItem('todo-items');\n if (!data) return [];\n try {\n return (JSON.parse(data) as any[]).map(migrateTodoItem);\n } catch {\n return [];\n }\n }\n\n /**\n * Change the list and save it, atomically: `change` gets the latest saved\n * list (another tab may have changed it) to edit in place, or returns a\n * new one.\n */\n private async changeTodos(\n context: ICliExecutionContext,\n change: (todos: TodoItem[]) => TodoItem[] | void,\n ): Promise<void> {\n await context.state.update((state) => {\n const todos = ((state['todos'] as TodoItem[] | undefined) ?? []).map(\n (t) => ({ ...migrateTodoItem(t) }),\n );\n return { todos: change(todos) ?? todos };\n });\n localStorage.removeItem('todo-items');\n }\n}\n\n/** The id for a new task: one more than the highest. */\nfunction nextIdOf(todos: TodoItem[]): number {\n return todos.length > 0 ? Math.max(...todos.map((t) => t.id)) + 1 : 1;\n}\n","import {\n ICliCompletionProvider,\n ICliCompletionContext,\n} from '@qodalis/cli-core';\nimport { CliTodoCommandProcessor } from '../processors/cli-todo-command-processor';\n\nconst TODO_ID_SUBCOMMANDS = new Set(['rm', 'done', 'complete', 'toggle', 'edit']);\n\nexport class CliTodoIdCompletionProvider\n implements ICliCompletionProvider\n{\n priority = 50;\n\n constructor(\n private readonly todoProcessor: CliTodoCommandProcessor,\n ) {}\n\n getCompletions(context: ICliCompletionContext): string[] {\n const { tokens, tokenIndex, token } = context;\n\n if (tokenIndex !== 2 || tokens.length < 2) {\n return [];\n }\n\n const rootCommand = tokens[0].toLowerCase();\n if (rootCommand !== 'todo') {\n return [];\n }\n\n const subCommand = tokens[1].toLowerCase();\n if (!TODO_ID_SUBCOMMANDS.has(subCommand)) {\n return [];\n }\n\n const todos = this.todoProcessor.getTodos();\n const lowerPrefix = token.toLowerCase();\n\n // For 'done' and 'complete', only show non-completed todos\n const filtered =\n subCommand === 'done' || subCommand === 'complete'\n ? todos.filter((t) => !t.completed)\n : todos;\n\n return filtered\n .map((t) => String(t.id))\n .filter((id) => id.startsWith(lowerPrefix))\n .sort((a, b) => Number(a) - Number(b));\n }\n}\n","/*\n * Public API Surface of todo\n */\n\nexport * from './lib/utilities';\nexport * from './lib/processors/cli-todo-command-processor';\nexport * from './lib/completion/cli-todo-id-completion-provider';\n\nimport {\n ICliModule,\n ICliCompletionProvider_TOKEN,\n} from '@qodalis/cli-core';\nimport { CliTodoCommandProcessor } from './lib/processors/cli-todo-command-processor';\nimport { CliTodoIdCompletionProvider } from './lib/completion/cli-todo-id-completion-provider';\nimport { API_VERSION } from './lib/version';\n\nconst todoProcessor = new CliTodoCommandProcessor();\n\nexport const todoModule: ICliModule = {\n apiVersion: API_VERSION,\n name: '@qodalis/cli-todo',\n processors: [todoProcessor],\n services: [\n {\n provide: ICliCompletionProvider_TOKEN,\n useValue: new CliTodoIdCompletionProvider(todoProcessor),\n multi: true,\n },\n ],\n translations: {\n es: { 'cli.todo.description': 'Gestionar tus tareas desde la terminal' },\n fr: { 'cli.todo.description': 'Gรฉrer vos tรขches depuis le terminal' },\n de: { 'cli.todo.description': 'Aufgaben รผber das Terminal verwalten' },\n pt: { 'cli.todo.description': 'Gerenciar suas tarefas pelo terminal' },\n it: { 'cli.todo.description': 'Gestire le attivitร dal terminale' },\n ja: { 'cli.todo.description': 'ใฟใผใใใซใใใฟในใฏใ็ฎก็' },\n ko: { 'cli.todo.description': 'ํฐ๋ฏธ๋์์ ํ ์ผ ๊ด๋ฆฌ' },\n zh: { 'cli.todo.description': 'ไป็ป็ซฏ็ฎก็ไฝ ็ไปปๅก' },\n ru: { 'cli.todo.description': 'ะฃะฟัะฐะฒะปะตะฝะธะต ะทะฐะดะฐัะฐะผะธ ะธะท ัะตัะผะธะฝะฐะปะฐ' },\n ro: { 'cli.todo.description': 'Gestioneazฤ sarcinile tale din terminal' },\n },\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../../packages/plugins/todo/src/lib/utilities/index.ts","../../packages/plugins/todo/src/lib/version.ts","../../packages/plugins/todo/src/lib/processors/cli-todo-command-processor.ts","../../packages/plugins/todo/src/lib/completion/cli-todo-id-completion-provider.ts","../../packages/plugins/todo/src/public-api.ts"],"names":["todoProcessor"],"mappings":"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","file":"public-api.mjs","sourcesContent":["export type TodoItem = {\n id: number;\n text: string;\n completed: boolean;\n createdAt: string;\n completedAt?: string;\n dueDate?: string;\n};\n\nconst DAY_NAMES = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];\nconst MONTH_NAMES = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\nfunction startOfDay(date: Date): Date {\n const d = new Date(date);\n d.setHours(0, 0, 0, 0);\n return d;\n}\n\nexport function parseDueDate(input: string): string | null {\n const trimmed = input.trim().toLowerCase();\n const now = new Date();\n const today = startOfDay(now);\n\n if (trimmed === 'today') {\n return today.toISOString();\n }\n\n if (trimmed === 'tomorrow') {\n const d = new Date(today);\n d.setDate(d.getDate() + 1);\n return d.toISOString();\n }\n\n if (trimmed === 'yesterday') {\n const d = new Date(today);\n d.setDate(d.getDate() - 1);\n return d.toISOString();\n }\n\n if (trimmed === 'next week') {\n const d = new Date(today);\n d.setDate(d.getDate() + 7);\n return d.toISOString();\n }\n\n if (trimmed === 'next month') {\n const d = new Date(today);\n d.setMonth(d.getMonth() + 1);\n return d.toISOString();\n }\n\n const dayIndex = DAY_NAMES.indexOf(trimmed);\n if (dayIndex !== -1) {\n const d = new Date(today);\n const currentDay = d.getDay();\n let daysUntil = dayIndex - currentDay;\n if (daysUntil <= 0) daysUntil += 7;\n d.setDate(d.getDate() + daysUntil);\n return d.toISOString();\n }\n\n // Try ISO format YYYY-MM-DD\n const isoMatch = trimmed.match(/^\\d{4}-\\d{2}-\\d{2}$/);\n if (isoMatch) {\n const d = new Date(trimmed + 'T00:00:00');\n if (!isNaN(d.getTime())) {\n return startOfDay(d).toISOString();\n }\n }\n\n return null;\n}\n\nexport function formatRelativeDate(isoDate: string): string {\n const target = startOfDay(new Date(isoDate));\n const today = startOfDay(new Date());\n const diffMs = target.getTime() - today.getTime();\n const diffDays = Math.round(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffDays === 0) return 'due: today';\n if (diffDays === 1) return 'due: tomorrow';\n if (diffDays === -1) return 'overdue: yesterday';\n if (diffDays > 1 && diffDays <= 14) return `due: in ${diffDays} days`;\n if (diffDays < -1) return `overdue: ${Math.abs(diffDays)} days ago`;\n\n // Far future: show month + day\n const d = new Date(isoDate);\n return `due: ${MONTH_NAMES[d.getMonth()]} ${d.getDate()}`;\n}\n\nexport function isOverdue(todo: TodoItem): boolean {\n if (todo.completed || !todo.dueDate) return false;\n const target = startOfDay(new Date(todo.dueDate));\n const today = startOfDay(new Date());\n return target.getTime() < today.getTime();\n}\n\nexport function migrateTodoItem(item: any): TodoItem {\n return {\n id: item.id,\n text: item.text,\n completed: item.completed ?? false,\n createdAt: item.createdAt ?? new Date().toISOString(),\n completedAt: item.completedAt,\n dueDate: item.dueDate,\n };\n}\n\nexport function lineThroughText(text: string): string {\n return text\n .split('')\n .map((char) => char + '\\u0336')\n .join('');\n}\n","\n// Automatically generated during build\nexport const LIBRARY_VERSION = '2.3.0';\nexport const API_VERSION = 2;\n ","import {\n CliForegroundColor,\n CliIcon,\n CliProcessCommand,\n CliProcessorMetadata,\n CliStateConfiguration,\n DefaultLibraryAuthor,\n ICliCommandProcessor,\n ICliConfigurationOption,\n ICliExecutionContext,\n getPluginConfigValue,\n joinShellWords,\n} from '@qodalis/cli-core';\nimport { LIBRARY_VERSION } from '../version';\nimport {\n TodoItem,\n formatRelativeDate,\n isOverdue,\n lineThroughText,\n migrateTodoItem,\n parseDueDate,\n} from '../utilities';\n\nexport class CliTodoCommandProcessor implements ICliCommandProcessor {\n command = 'todo';\n\n description = 'Manage your tasks from the terminal. Add, list, edit, complete, and remove TODO items.';\n\n author = DefaultLibraryAuthor;\n\n version = LIBRARY_VERSION;\n\n processors?: ICliCommandProcessor[] = [];\n\n metadata?: CliProcessorMetadata = {\n icon: '๐',\n requiredCoreVersion: '>=2.0.0 <3.0.0',\n requiredCliVersion: '>=2.0.0 <3.0.0',\n };\n\n configurationOptions?: ICliConfigurationOption[] = [\n {\n key: 'showCompletedFirst',\n label: 'Show Completed First',\n description: 'List completed tasks before pending ones',\n type: 'boolean',\n defaultValue: false,\n },\n {\n key: 'confirmBeforeDelete',\n label: 'Confirm Before Delete',\n description: 'Ask for confirmation before removing tasks',\n type: 'boolean',\n defaultValue: false,\n },\n ];\n\n stateConfiguration?: CliStateConfiguration = {\n initialState: {\n todos: this.loadFromOldStorage() ?? [],\n },\n };\n\n private todos: TodoItem[] = [];\n\n getTodos(): TodoItem[] {\n return this.todos;\n }\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, translator: t } = context;\n writer.writeln(t.t('cli.todo.description', this.description!));\n writer.writeln();\n writer.writeln(writer.wrapInColor(t.t('cli.todo.help.commands', 'Commands:'), CliForegroundColor.Yellow));\n writer.writeln(` ${writer.wrapInColor('todo ls', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_all', 'List all tasks')}`);\n writer.writeln(` ${writer.wrapInColor('todo ls --pending', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_pending', 'List pending tasks only')}`);\n writer.writeln(` ${writer.wrapInColor('todo ls --completed', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_completed', 'List completed tasks only')}`);\n writer.writeln(` ${writer.wrapInColor('todo ls --overdue', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.list_overdue', 'List overdue tasks only')}`);\n writer.writeln(` ${writer.wrapInColor('todo add <text>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.add', 'Add a new task')}`);\n writer.writeln(` ${writer.wrapInColor('todo add <text> --due <date>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.add_due', 'Add with due date')}`);\n writer.writeln(` ${writer.wrapInColor('todo edit <id> <new text>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.edit', 'Edit a task')}`);\n writer.writeln(` ${writer.wrapInColor('todo done <id>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.done', 'Mark a task as done')}`);\n writer.writeln(` ${writer.wrapInColor('todo toggle <id>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.toggle', 'Toggle done/undone')}`);\n writer.writeln(` ${writer.wrapInColor('todo rm <id>', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.remove', 'Remove a task')}`);\n writer.writeln(` ${writer.wrapInColor('todo rm --all', CliForegroundColor.Cyan)} ${t.t('cli.todo.help.remove_all', 'Remove all tasks')}`);\n writer.writeln();\n writer.writeln(writer.wrapInColor(t.t('cli.todo.help.due_formats', 'Due date formats:'), CliForegroundColor.Yellow));\n writer.writeln(` today, tomorrow, monday..sunday, next week, next month, YYYY-MM-DD`);\n writer.writeln();\n writer.writeln(writer.wrapInColor(t.t('cli.common.examples', 'Examples:'), CliForegroundColor.Yellow));\n writer.writeln(` todo add Buy groceries --due tomorrow`);\n writer.writeln(` todo ls --pending`);\n writer.writeln(` todo edit 3 Buy organic groceries`);\n writer.writeln(` todo done 1`);\n writer.writeln(` todo toggle 2`);\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 || []).map(migrateTodoItem);\n });\n }\n\n private formatTodoLine(todo: TodoItem, writer: any): string {\n const check = todo.completed\n ? writer.wrapInColor(CliIcon.CheckIcon, CliForegroundColor.Green)\n : ' ';\n\n const text = todo.completed ? lineThroughText(todo.text) : todo.text;\n let suffix = '';\n\n if (todo.completed) {\n suffix = writer.wrapInColor(' done', CliForegroundColor.Green);\n } else if (todo.dueDate) {\n const rel = formatRelativeDate(todo.dueDate);\n const color = isOverdue(todo) ? CliForegroundColor.Red : CliForegroundColor.Yellow;\n suffix = ' ' + writer.wrapInColor(rel, color);\n }\n\n return ` [${check}] #${todo.id} - ${text}${suffix}`;\n }\n\n private registerSubProcessors(): void {\n this.processors = [\n // โโ ls โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'ls',\n aliases: ['list'],\n description: 'List TODO items',\n parameters: [\n {\n name: 'pending',\n description: 'Show only pending tasks',\n type: 'boolean',\n required: false,\n },\n {\n name: 'completed',\n description: 'Show only completed tasks',\n type: 'boolean',\n required: false,\n },\n {\n name: 'overdue',\n description: 'Show only overdue tasks',\n type: 'boolean',\n required: false,\n },\n ],\n processCommand: async (command, context) => {\n if (this.todos.length === 0) {\n context.writer.writeWarning('No tasks yet.');\n context.writer.writeln('Use \"todo add <text>\" to create one.');\n context.process.output([]);\n return;\n }\n\n let filtered = [...this.todos];\n const args = command.args;\n\n if (args['pending']) {\n filtered = filtered.filter((t) => !t.completed);\n } else if (args['completed']) {\n filtered = filtered.filter((t) => t.completed);\n } else if (args['overdue']) {\n filtered = filtered.filter((t) => isOverdue(t));\n }\n\n const showCompletedFirst = getPluginConfigValue(context, 'todo', 'showCompletedFirst', false);\n if (showCompletedFirst) {\n filtered.sort((a, b) => (a.completed === b.completed ? 0 : a.completed ? -1 : 1));\n }\n\n const doneCount = this.todos.filter((t) => t.completed).length;\n context.writer.writeln(\n context.writer.wrapInColor(\n `Todos (${doneCount}/${this.todos.length} done)`,\n CliForegroundColor.Cyan,\n ),\n );\n\n if (filtered.length === 0) {\n context.writer.writeln(' No matching tasks.');\n } else {\n filtered.forEach((todo) => {\n context.writer.writeln(\n this.formatTodoLine(todo, context.writer),\n );\n });\n }\n\n context.process.output(filtered);\n },\n },\n\n // โโ add โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'add',\n description: 'Add a new task',\n acceptsRawInput: true,\n valueRequired: true,\n parameters: [\n {\n name: 'due',\n description: 'Due date (today, tomorrow, monday..sunday, next week, next month, YYYY-MM-DD)',\n type: 'string',\n required: false,\n },\n ],\n processCommand: async (command, context) => {\n const text = joinShellWords(command.value ?? '');\n if (!text) {\n context.writer.writeError('Please provide a task description.');\n return;\n }\n\n let dueDate: string | undefined;\n const dueArg = command.args['due'];\n if (dueArg) {\n const parsed = parseDueDate(dueArg);\n if (!parsed) {\n context.writer.writeError(\n `Invalid due date: \"${dueArg}\". Use: today, tomorrow, monday..sunday, next week, next month, or YYYY-MM-DD.`,\n );\n return;\n }\n dueDate = parsed;\n }\n\n // The id comes from the latest saved list: two tabs\n // adding at once never get the same id\n let newItem!: TodoItem;\n await this.changeTodos(context, (todos) => {\n newItem = {\n id: nextIdOf(todos),\n text,\n completed: false,\n createdAt: new Date().toISOString(),\n dueDate,\n };\n todos.push(newItem);\n });\n\n let msg = `Added: \"${text}\"`;\n if (dueDate) {\n msg += ` (${formatRelativeDate(dueDate)})`;\n }\n context.writer.writeSuccess(msg);\n context.process.output(newItem);\n },\n },\n\n // โโ edit โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'edit',\n description: 'Edit a task\\'s text or due date',\n acceptsRawInput: true,\n valueRequired: true,\n parameters: [\n {\n name: 'due',\n description: 'New due date (or \"none\" to remove)',\n type: 'string',\n required: false,\n },\n ],\n processCommand: async (command, context) => {\n const [idStr = '', ...words] = command.positionals ?? [];\n const newText = words.length ? words.join(' ') : undefined;\n\n const id = parseInt(idStr, 10);\n if (isNaN(id)) {\n context.writer.writeError('Usage: todo edit <id> <new text> [--due <date>]');\n return;\n }\n\n const todo = this.todos.find((t) => t.id === id);\n if (!todo) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n const dueArg = command.args['due'];\n const edit: Partial<TodoItem> = {};\n\n if (newText) {\n edit.text = newText;\n }\n\n if (dueArg) {\n if (dueArg === 'none') {\n edit.dueDate = undefined;\n } else {\n const parsed = parseDueDate(dueArg);\n if (!parsed) {\n context.writer.writeError(`Invalid due date: \"${dueArg}\".`);\n return;\n }\n edit.dueDate = parsed;\n }\n }\n\n if (Object.keys(edit).length === 0) {\n context.writer.writeError('Nothing to update. Provide new text or --due.');\n return;\n }\n\n let updated: TodoItem | undefined;\n await this.changeTodos(context, (todos) => {\n const item = todos.find((t) => t.id === id);\n if (item) updated = Object.assign(item, edit);\n });\n context.writer.writeSuccess(`Updated task #${id}.`);\n context.process.output(updated ?? { ...todo, ...edit });\n },\n },\n\n // โโ done โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'done',\n aliases: ['complete'],\n description: 'Mark a task as done',\n acceptsRawInput: true,\n valueRequired: true,\n processCommand: async (command, context) => {\n const id = parseInt(command.positionals?.[0] ?? '', 10);\n if (isNaN(id)) {\n context.writer.writeError('Please provide a valid task ID.');\n return;\n }\n\n const todo = this.todos.find((t) => t.id === id);\n if (!todo) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n if (todo.completed) {\n context.writer.writeInfo(`Task #${id} is already done.`);\n return;\n }\n\n const completedAt = new Date().toISOString();\n await this.changeTodos(context, (todos) => {\n const item = todos.find((t) => t.id === id);\n if (item) {\n item.completed = true;\n item.completedAt = completedAt;\n }\n });\n context.writer.writeSuccess(`Done: \"${todo.text}\"`);\n context.process.output({ ...todo, completed: true, completedAt });\n },\n },\n\n // โโ toggle โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'toggle',\n description: 'Toggle a task between done and undone',\n acceptsRawInput: true,\n valueRequired: true,\n processCommand: async (command, context) => {\n const id = parseInt(command.positionals?.[0] ?? '', 10);\n if (isNaN(id)) {\n context.writer.writeError('Please provide a valid task ID.');\n return;\n }\n\n const todo = this.todos.find((t) => t.id === id);\n if (!todo) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n const completed = !todo.completed;\n const completedAt = completed ? new Date().toISOString() : undefined;\n await this.changeTodos(context, (todos) => {\n const item = todos.find((t) => t.id === id);\n if (item) {\n item.completed = completed;\n item.completedAt = completedAt;\n }\n });\n\n const status = completed ? 'done' : 'reopened';\n context.writer.writeSuccess(`Task #${id} marked as ${status}.`);\n context.process.output({ ...todo, completed, completedAt });\n },\n },\n\n // โโ rm โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ\n {\n command: 'rm',\n aliases: ['remove'],\n description: 'Remove a task by ID',\n acceptsRawInput: true,\n parameters: [\n {\n name: 'all',\n description: 'Remove all tasks',\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 if (this.todos.length === 0) {\n context.writer.writeInfo('No tasks to remove.');\n return;\n }\n\n const confirmed = await context.reader.readConfirm(\n `Remove all ${this.todos.length} tasks?`,\n false,\n );\n\n if (!confirmed) {\n context.writer.writeInfo('Cancelled.');\n return;\n }\n\n await this.changeTodos(context, () => []);\n context.writer.writeSuccess('Removed all tasks.');\n return;\n }\n\n const id = parseInt(command.positionals?.[0] ?? '', 10);\n if (isNaN(id)) {\n context.writer.writeError('Please provide a valid task ID.');\n return;\n }\n\n const index = this.todos.findIndex((t) => t.id === id);\n if (index === -1) {\n context.writer.writeError(`Task #${id} not found.`);\n return;\n }\n\n const confirmBeforeDelete = getPluginConfigValue(context, 'todo', 'confirmBeforeDelete', false);\n if (confirmBeforeDelete) {\n const confirmed = await context.reader.readConfirm(\n `Remove task #${id}: \"${this.todos[index].text}\"?`,\n false,\n );\n if (!confirmed) {\n context.writer.writeInfo('Cancelled.');\n return;\n }\n }\n\n const removed = this.todos[index];\n await this.changeTodos(context, (todos) =>\n todos.filter((t) => t.id !== id),\n );\n context.writer.writeSuccess(`Removed: \"${removed.text}\"`);\n },\n },\n ];\n }\n\n private loadFromOldStorage(): TodoItem[] {\n const data = localStorage.getItem('todo-items');\n if (!data) return [];\n try {\n return (JSON.parse(data) as any[]).map(migrateTodoItem);\n } catch {\n return [];\n }\n }\n\n /**\n * Change the list and save it, atomically: `change` gets the latest saved\n * list (another tab may have changed it) to edit in place, or returns a\n * new one.\n */\n private async changeTodos(\n context: ICliExecutionContext,\n change: (todos: TodoItem[]) => TodoItem[] | void,\n ): Promise<void> {\n await context.state.update((state) => {\n const todos = ((state['todos'] as TodoItem[] | undefined) ?? []).map(\n (t) => ({ ...migrateTodoItem(t) }),\n );\n return { todos: change(todos) ?? todos };\n });\n localStorage.removeItem('todo-items');\n }\n}\n\n/** The id for a new task: one more than the highest. */\nfunction nextIdOf(todos: TodoItem[]): number {\n return todos.length > 0 ? Math.max(...todos.map((t) => t.id)) + 1 : 1;\n}\n","import {\n ICliCompletionProvider,\n ICliCompletionContext,\n} from '@qodalis/cli-core';\nimport { CliTodoCommandProcessor } from '../processors/cli-todo-command-processor';\n\nconst TODO_ID_SUBCOMMANDS = new Set(['rm', 'done', 'complete', 'toggle', 'edit']);\n\nexport class CliTodoIdCompletionProvider\n implements ICliCompletionProvider\n{\n priority = 50;\n\n constructor(\n private readonly todoProcessor: CliTodoCommandProcessor,\n ) {}\n\n getCompletions(context: ICliCompletionContext): string[] {\n const { tokens, tokenIndex, token } = context;\n\n if (tokenIndex !== 2 || tokens.length < 2) {\n return [];\n }\n\n const rootCommand = tokens[0].toLowerCase();\n if (rootCommand !== 'todo') {\n return [];\n }\n\n const subCommand = tokens[1].toLowerCase();\n if (!TODO_ID_SUBCOMMANDS.has(subCommand)) {\n return [];\n }\n\n const todos = this.todoProcessor.getTodos();\n const lowerPrefix = token.toLowerCase();\n\n // For 'done' and 'complete', only show non-completed todos\n const filtered =\n subCommand === 'done' || subCommand === 'complete'\n ? todos.filter((t) => !t.completed)\n : todos;\n\n return filtered\n .map((t) => String(t.id))\n .filter((id) => id.startsWith(lowerPrefix))\n .sort((a, b) => Number(a) - Number(b));\n }\n}\n","/*\n * Public API Surface of todo\n */\n\nexport * from './lib/utilities';\nexport * from './lib/processors/cli-todo-command-processor';\nexport * from './lib/completion/cli-todo-id-completion-provider';\n\nimport {\n ICliModule,\n ICliCompletionProvider_TOKEN,\n} from '@qodalis/cli-core';\nimport { CliTodoCommandProcessor } from './lib/processors/cli-todo-command-processor';\nimport { CliTodoIdCompletionProvider } from './lib/completion/cli-todo-id-completion-provider';\nimport { API_VERSION } from './lib/version';\n\nconst todoProcessor = new CliTodoCommandProcessor();\n\nexport const todoModule: ICliModule = {\n apiVersion: API_VERSION,\n name: '@qodalis/cli-todo',\n processors: [todoProcessor],\n services: [\n {\n provide: ICliCompletionProvider_TOKEN,\n useValue: new CliTodoIdCompletionProvider(todoProcessor),\n multi: true,\n },\n ],\n translations: {\n es: { 'cli.todo.description': 'Gestionar tus tareas desde la terminal' },\n fr: { 'cli.todo.description': 'Gรฉrer vos tรขches depuis le terminal' },\n de: { 'cli.todo.description': 'Aufgaben รผber das Terminal verwalten' },\n pt: { 'cli.todo.description': 'Gerenciar suas tarefas pelo terminal' },\n it: { 'cli.todo.description': 'Gestire le attivitร dal terminale' },\n ja: { 'cli.todo.description': 'ใฟใผใใใซใใใฟในใฏใ็ฎก็' },\n ko: { 'cli.todo.description': 'ํฐ๋ฏธ๋์์ ํ ์ผ ๊ด๋ฆฌ' },\n zh: { 'cli.todo.description': 'ไป็ป็ซฏ็ฎก็ไฝ ็ไปปๅก' },\n ru: { 'cli.todo.description': 'ะฃะฟัะฐะฒะปะตะฝะธะต ะทะฐะดะฐัะฐะผะธ ะธะท ัะตัะผะธะฝะฐะปะฐ' },\n ro: { 'cli.todo.description': 'Gestioneazฤ sarcinile tale din terminal' },\n },\n};\n"]}
|
package/umd/index.global.js
CHANGED
|
@@ -2164,11 +2164,6 @@ var todo = (() => {
|
|
|
2164
2164
|
}
|
|
2165
2165
|
}
|
|
2166
2166
|
};
|
|
2167
|
-
var bootCliModule = async (module2) => {
|
|
2168
|
-
if (typeof window !== "undefined" && window.__cliModuleRegistry) {
|
|
2169
|
-
await window.__cliModuleRegistry.register(module2);
|
|
2170
|
-
}
|
|
2171
|
-
};
|
|
2172
2167
|
var DefaultThemes = {
|
|
2173
2168
|
default: {
|
|
2174
2169
|
background: "#070b14",
|
|
@@ -2193,6 +2188,31 @@ var todo = (() => {
|
|
|
2193
2188
|
brightCyan: "#a5f3fc",
|
|
2194
2189
|
brightWhite: "#f1f5f9"
|
|
2195
2190
|
},
|
|
2191
|
+
// Soft grey paper and slate text; every color reads at 4.5:1 or more on the background
|
|
2192
|
+
light: {
|
|
2193
|
+
background: "#f7f8fa",
|
|
2194
|
+
foreground: "#334155",
|
|
2195
|
+
cursor: "#4f46e5",
|
|
2196
|
+
cursorAccent: "#f7f8fa",
|
|
2197
|
+
selectionBackground: "#d9def7",
|
|
2198
|
+
selectionForeground: "#1e293b",
|
|
2199
|
+
black: "#334155",
|
|
2200
|
+
red: "#c93c37",
|
|
2201
|
+
green: "#2c7a4b",
|
|
2202
|
+
yellow: "#946200",
|
|
2203
|
+
blue: "#3d5bd9",
|
|
2204
|
+
magenta: "#8b3fc7",
|
|
2205
|
+
cyan: "#0e7586",
|
|
2206
|
+
white: "#5b6577",
|
|
2207
|
+
brightBlack: "#667085",
|
|
2208
|
+
brightRed: "#b42a25",
|
|
2209
|
+
brightGreen: "#1f6a3d",
|
|
2210
|
+
brightYellow: "#7a5100",
|
|
2211
|
+
brightBlue: "#2f47bd",
|
|
2212
|
+
brightMagenta: "#7431ad",
|
|
2213
|
+
brightCyan: "#0a6170",
|
|
2214
|
+
brightWhite: "#1e293b"
|
|
2215
|
+
},
|
|
2196
2216
|
classic: {
|
|
2197
2217
|
background: "#0c0c0c",
|
|
2198
2218
|
foreground: "#cccccc",
|
|
@@ -2804,6 +2824,42 @@ var todo = (() => {
|
|
|
2804
2824
|
}
|
|
2805
2825
|
};
|
|
2806
2826
|
DefaultThemes.yellow = DefaultThemes.highContrastLight;
|
|
2827
|
+
var CliPanelPalettes = Object.freeze({
|
|
2828
|
+
dark: Object.freeze({
|
|
2829
|
+
background: "#070b14",
|
|
2830
|
+
headerBackground: "#0f1623",
|
|
2831
|
+
border: "#1e293b",
|
|
2832
|
+
text: "#e2e8f0",
|
|
2833
|
+
textSecondary: "#94a3b8",
|
|
2834
|
+
accent: "#818cf8",
|
|
2835
|
+
hoverBackground: "rgba(129, 140, 248, 0.12)",
|
|
2836
|
+
activeBackground: "rgba(129, 140, 248, 0.22)",
|
|
2837
|
+
danger: "#f87171",
|
|
2838
|
+
shadow: "rgba(0, 0, 0, 0.45)"
|
|
2839
|
+
}),
|
|
2840
|
+
// Soft grey paper instead of pure white, slate text rather than black: easier on the eyes
|
|
2841
|
+
light: Object.freeze({
|
|
2842
|
+
background: "#f7f8fa",
|
|
2843
|
+
headerBackground: "#eceff3",
|
|
2844
|
+
border: "#d9dee6",
|
|
2845
|
+
text: "#1e293b",
|
|
2846
|
+
textSecondary: "#5b6577",
|
|
2847
|
+
accent: "#4f46e5",
|
|
2848
|
+
hoverBackground: "rgba(30, 41, 59, 0.06)",
|
|
2849
|
+
activeBackground: "rgba(79, 70, 229, 0.12)",
|
|
2850
|
+
danger: "#c93c37",
|
|
2851
|
+
shadow: "rgba(15, 23, 42, 0.12)"
|
|
2852
|
+
})
|
|
2853
|
+
});
|
|
2854
|
+
var PALETTE_TERMINALS = {
|
|
2855
|
+
dark: DefaultThemes.default,
|
|
2856
|
+
light: DefaultThemes.light
|
|
2857
|
+
};
|
|
2858
|
+
var bootCliModule = async (module2) => {
|
|
2859
|
+
if (typeof window !== "undefined" && window.__cliModuleRegistry) {
|
|
2860
|
+
await window.__cliModuleRegistry.register(module2);
|
|
2861
|
+
}
|
|
2862
|
+
};
|
|
2807
2863
|
var DefaultThemeInfos = {
|
|
2808
2864
|
default: {
|
|
2809
2865
|
theme: DefaultThemes.default,
|
|
@@ -2811,6 +2867,12 @@ var todo = (() => {
|
|
|
2811
2867
|
tags: ["built-in"],
|
|
2812
2868
|
description: "Dark indigo theme with soft pastels"
|
|
2813
2869
|
},
|
|
2870
|
+
light: {
|
|
2871
|
+
theme: DefaultThemes.light,
|
|
2872
|
+
category: "light",
|
|
2873
|
+
tags: ["built-in"],
|
|
2874
|
+
description: "Light counterpart of the default theme"
|
|
2875
|
+
},
|
|
2814
2876
|
classic: {
|
|
2815
2877
|
theme: DefaultThemes.classic,
|
|
2816
2878
|
category: "dark",
|
|
@@ -2982,7 +3044,7 @@ var todo = (() => {
|
|
|
2982
3044
|
};
|
|
2983
3045
|
|
|
2984
3046
|
// src/lib/version.ts
|
|
2985
|
-
var LIBRARY_VERSION = "2.
|
|
3047
|
+
var LIBRARY_VERSION = "2.3.0";
|
|
2986
3048
|
var API_VERSION2 = 2;
|
|
2987
3049
|
|
|
2988
3050
|
// src/lib/utilities/index.ts
|