vikunja-mcp-ng 0.4.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/LICENSE +21 -0
- package/README.md +123 -0
- package/dist/auth/AuthManager.d.ts +63 -0
- package/dist/auth/AuthManager.d.ts.map +1 -0
- package/dist/auth/AuthManager.js +137 -0
- package/dist/auth/AuthManager.js.map +1 -0
- package/dist/auth/index.d.ts +7 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +14 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/permissions.d.ts +60 -0
- package/dist/auth/permissions.d.ts.map +1 -0
- package/dist/auth/permissions.js +173 -0
- package/dist/auth/permissions.js.map +1 -0
- package/dist/client/VikunjaClientFactory.d.ts +41 -0
- package/dist/client/VikunjaClientFactory.d.ts.map +1 -0
- package/dist/client/VikunjaClientFactory.js +58 -0
- package/dist/client/VikunjaClientFactory.js.map +1 -0
- package/dist/client.d.ts +70 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +136 -0
- package/dist/client.js.map +1 -0
- package/dist/config/ConfigurationManager.d.ts +106 -0
- package/dist/config/ConfigurationManager.d.ts.map +1 -0
- package/dist/config/ConfigurationManager.js +509 -0
- package/dist/config/ConfigurationManager.js.map +1 -0
- package/dist/config/index.d.ts +9 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +36 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/secrets.d.ts +33 -0
- package/dist/config/secrets.d.ts.map +1 -0
- package/dist/config/secrets.js +90 -0
- package/dist/config/secrets.js.map +1 -0
- package/dist/config/types.d.ts +1113 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +189 -0
- package/dist/config/types.js.map +1 -0
- package/dist/formatters/BatchImportResponseFormatter.d.ts +89 -0
- package/dist/formatters/BatchImportResponseFormatter.d.ts.map +1 -0
- package/dist/formatters/BatchImportResponseFormatter.js +125 -0
- package/dist/formatters/BatchImportResponseFormatter.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +130 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/direct-middleware.d.ts +9 -0
- package/dist/middleware/direct-middleware.d.ts.map +1 -0
- package/dist/middleware/direct-middleware.js +49 -0
- package/dist/middleware/direct-middleware.js.map +1 -0
- package/dist/middleware/index.d.ts +8 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +21 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/simplified-rate-limit.d.ts +147 -0
- package/dist/middleware/simplified-rate-limit.d.ts.map +1 -0
- package/dist/middleware/simplified-rate-limit.js +533 -0
- package/dist/middleware/simplified-rate-limit.js.map +1 -0
- package/dist/parsers/CSVParser.d.ts +36 -0
- package/dist/parsers/CSVParser.d.ts.map +1 -0
- package/dist/parsers/CSVParser.js +69 -0
- package/dist/parsers/CSVParser.js.map +1 -0
- package/dist/parsers/InputParserFactory.d.ts +17 -0
- package/dist/parsers/InputParserFactory.d.ts.map +1 -0
- package/dist/parsers/InputParserFactory.js +137 -0
- package/dist/parsers/InputParserFactory.js.map +1 -0
- package/dist/parsers/JSONParser.d.ts +74 -0
- package/dist/parsers/JSONParser.d.ts.map +1 -0
- package/dist/parsers/JSONParser.js +69 -0
- package/dist/parsers/JSONParser.js.map +1 -0
- package/dist/services/EntityResolver.d.ts +92 -0
- package/dist/services/EntityResolver.d.ts.map +1 -0
- package/dist/services/EntityResolver.js +201 -0
- package/dist/services/EntityResolver.js.map +1 -0
- package/dist/services/TaskCreationService.d.ts +99 -0
- package/dist/services/TaskCreationService.d.ts.map +1 -0
- package/dist/services/TaskCreationService.js +392 -0
- package/dist/services/TaskCreationService.js.map +1 -0
- package/dist/storage/SimpleFilterStorage.d.ts +103 -0
- package/dist/storage/SimpleFilterStorage.d.ts.map +1 -0
- package/dist/storage/SimpleFilterStorage.js +350 -0
- package/dist/storage/SimpleFilterStorage.js.map +1 -0
- package/dist/storage/filtering/FilterSerializer.d.ts +45 -0
- package/dist/storage/filtering/FilterSerializer.d.ts.map +1 -0
- package/dist/storage/filtering/FilterSerializer.js +171 -0
- package/dist/storage/filtering/FilterSerializer.js.map +1 -0
- package/dist/storage/filtering/FilterValidator.d.ts +59 -0
- package/dist/storage/filtering/FilterValidator.d.ts.map +1 -0
- package/dist/storage/filtering/FilterValidator.js +183 -0
- package/dist/storage/filtering/FilterValidator.js.map +1 -0
- package/dist/storage/index.d.ts +61 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +125 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/templateFileStore.d.ts +62 -0
- package/dist/storage/templateFileStore.d.ts.map +1 -0
- package/dist/storage/templateFileStore.js +151 -0
- package/dist/storage/templateFileStore.js.map +1 -0
- package/dist/tools/admin.d.ts +51 -0
- package/dist/tools/admin.d.ts.map +1 -0
- package/dist/tools/admin.js +207 -0
- package/dist/tools/admin.js.map +1 -0
- package/dist/tools/auth.d.ts +9 -0
- package/dist/tools/auth.d.ts.map +1 -0
- package/dist/tools/auth.js +175 -0
- package/dist/tools/auth.js.map +1 -0
- package/dist/tools/batch-import.d.ts +5 -0
- package/dist/tools/batch-import.d.ts.map +1 -0
- package/dist/tools/batch-import.js +153 -0
- package/dist/tools/batch-import.js.map +1 -0
- package/dist/tools/caldav-tokens.d.ts +45 -0
- package/dist/tools/caldav-tokens.d.ts.map +1 -0
- package/dist/tools/caldav-tokens.js +93 -0
- package/dist/tools/caldav-tokens.js.map +1 -0
- package/dist/tools/export.d.ts +14 -0
- package/dist/tools/export.d.ts.map +1 -0
- package/dist/tools/export.js +252 -0
- package/dist/tools/export.js.map +1 -0
- package/dist/tools/filters.d.ts +50 -0
- package/dist/tools/filters.d.ts.map +1 -0
- package/dist/tools/filters.js +512 -0
- package/dist/tools/filters.js.map +1 -0
- package/dist/tools/index.d.ts +53 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +217 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/labels.d.ts +22 -0
- package/dist/tools/labels.d.ts.map +1 -0
- package/dist/tools/labels.js +206 -0
- package/dist/tools/labels.js.map +1 -0
- package/dist/tools/notifications.d.ts +17 -0
- package/dist/tools/notifications.d.ts.map +1 -0
- package/dist/tools/notifications.js +171 -0
- package/dist/tools/notifications.js.map +1 -0
- package/dist/tools/projects/backgrounds.d.ts +80 -0
- package/dist/tools/projects/backgrounds.d.ts.map +1 -0
- package/dist/tools/projects/backgrounds.js +154 -0
- package/dist/tools/projects/backgrounds.js.map +1 -0
- package/dist/tools/projects/buckets.d.ts +147 -0
- package/dist/tools/projects/buckets.d.ts.map +1 -0
- package/dist/tools/projects/buckets.js +291 -0
- package/dist/tools/projects/buckets.js.map +1 -0
- package/dist/tools/projects/crud.d.ts +145 -0
- package/dist/tools/projects/crud.d.ts.map +1 -0
- package/dist/tools/projects/crud.js +425 -0
- package/dist/tools/projects/crud.js.map +1 -0
- package/dist/tools/projects/duplicate.d.ts +41 -0
- package/dist/tools/projects/duplicate.d.ts.map +1 -0
- package/dist/tools/projects/duplicate.js +49 -0
- package/dist/tools/projects/duplicate.js.map +1 -0
- package/dist/tools/projects/hierarchy.d.ts +77 -0
- package/dist/tools/projects/hierarchy.d.ts.map +1 -0
- package/dist/tools/projects/hierarchy.js +300 -0
- package/dist/tools/projects/hierarchy.js.map +1 -0
- package/dist/tools/projects/index.d.ts +34 -0
- package/dist/tools/projects/index.d.ts.map +1 -0
- package/dist/tools/projects/index.js +522 -0
- package/dist/tools/projects/index.js.map +1 -0
- package/dist/tools/projects/permission.d.ts +26 -0
- package/dist/tools/projects/permission.d.ts.map +1 -0
- package/dist/tools/projects/permission.js +53 -0
- package/dist/tools/projects/permission.js.map +1 -0
- package/dist/tools/projects/response-formatter.d.ts +54 -0
- package/dist/tools/projects/response-formatter.d.ts.map +1 -0
- package/dist/tools/projects/response-formatter.js +139 -0
- package/dist/tools/projects/response-formatter.js.map +1 -0
- package/dist/tools/projects/sharing-access.d.ts +165 -0
- package/dist/tools/projects/sharing-access.d.ts.map +1 -0
- package/dist/tools/projects/sharing-access.js +450 -0
- package/dist/tools/projects/sharing-access.js.map +1 -0
- package/dist/tools/projects/sharing.d.ts +105 -0
- package/dist/tools/projects/sharing.d.ts.map +1 -0
- package/dist/tools/projects/sharing.js +258 -0
- package/dist/tools/projects/sharing.js.map +1 -0
- package/dist/tools/projects/validation.d.ts +51 -0
- package/dist/tools/projects/validation.d.ts.map +1 -0
- package/dist/tools/projects/validation.js +160 -0
- package/dist/tools/projects/validation.js.map +1 -0
- package/dist/tools/projects/views.d.ts +161 -0
- package/dist/tools/projects/views.d.ts.map +1 -0
- package/dist/tools/projects/views.js +234 -0
- package/dist/tools/projects/views.js.map +1 -0
- package/dist/tools/projects.d.ts +20 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +66 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/reactions.d.ts +25 -0
- package/dist/tools/reactions.d.ts.map +1 -0
- package/dist/tools/reactions.js +108 -0
- package/dist/tools/reactions.js.map +1 -0
- package/dist/tools/subscriptions.d.ts +23 -0
- package/dist/tools/subscriptions.d.ts.map +1 -0
- package/dist/tools/subscriptions.js +111 -0
- package/dist/tools/subscriptions.js.map +1 -0
- package/dist/tools/task-assignees.d.ts +13 -0
- package/dist/tools/task-assignees.d.ts.map +1 -0
- package/dist/tools/task-assignees.js +74 -0
- package/dist/tools/task-assignees.js.map +1 -0
- package/dist/tools/task-bulk.d.ts +13 -0
- package/dist/tools/task-bulk.d.ts.map +1 -0
- package/dist/tools/task-bulk.js +117 -0
- package/dist/tools/task-bulk.js.map +1 -0
- package/dist/tools/task-comments.d.ts +12 -0
- package/dist/tools/task-comments.d.ts.map +1 -0
- package/dist/tools/task-comments.js +65 -0
- package/dist/tools/task-comments.js.map +1 -0
- package/dist/tools/task-crud.d.ts +13 -0
- package/dist/tools/task-crud.d.ts.map +1 -0
- package/dist/tools/task-crud.js +168 -0
- package/dist/tools/task-crud.js.map +1 -0
- package/dist/tools/task-labels.d.ts +13 -0
- package/dist/tools/task-labels.d.ts.map +1 -0
- package/dist/tools/task-labels.js +64 -0
- package/dist/tools/task-labels.js.map +1 -0
- package/dist/tools/task-relations.d.ts +13 -0
- package/dist/tools/task-relations.d.ts.map +1 -0
- package/dist/tools/task-relations.js +74 -0
- package/dist/tools/task-relations.js.map +1 -0
- package/dist/tools/task-reminders.d.ts +13 -0
- package/dist/tools/task-reminders.d.ts.map +1 -0
- package/dist/tools/task-reminders.js +69 -0
- package/dist/tools/task-reminders.js.map +1 -0
- package/dist/tools/tasks/assignees/AssigneeOperationsService.d.ts +63 -0
- package/dist/tools/tasks/assignees/AssigneeOperationsService.d.ts.map +1 -0
- package/dist/tools/tasks/assignees/AssigneeOperationsService.js +152 -0
- package/dist/tools/tasks/assignees/AssigneeOperationsService.js.map +1 -0
- package/dist/tools/tasks/assignees/AssigneeResponseFormatter.d.ts +28 -0
- package/dist/tools/tasks/assignees/AssigneeResponseFormatter.d.ts.map +1 -0
- package/dist/tools/tasks/assignees/AssigneeResponseFormatter.js +73 -0
- package/dist/tools/tasks/assignees/AssigneeResponseFormatter.js.map +1 -0
- package/dist/tools/tasks/assignees/AssigneeValidationService.d.ts +46 -0
- package/dist/tools/tasks/assignees/AssigneeValidationService.d.ts.map +1 -0
- package/dist/tools/tasks/assignees/AssigneeValidationService.js +70 -0
- package/dist/tools/tasks/assignees/AssigneeValidationService.js.map +1 -0
- package/dist/tools/tasks/assignees/index.d.ts +52 -0
- package/dist/tools/tasks/assignees/index.d.ts.map +1 -0
- package/dist/tools/tasks/assignees/index.js +103 -0
- package/dist/tools/tasks/assignees/index.js.map +1 -0
- package/dist/tools/tasks/attach.d.ts +39 -0
- package/dist/tools/tasks/attach.d.ts.map +1 -0
- package/dist/tools/tasks/attach.js +90 -0
- package/dist/tools/tasks/attach.js.map +1 -0
- package/dist/tools/tasks/attachments.d.ts +67 -0
- package/dist/tools/tasks/attachments.d.ts.map +1 -0
- package/dist/tools/tasks/attachments.js +153 -0
- package/dist/tools/tasks/attachments.js.map +1 -0
- package/dist/tools/tasks/buckets.d.ts +41 -0
- package/dist/tools/tasks/buckets.d.ts.map +1 -0
- package/dist/tools/tasks/buckets.js +75 -0
- package/dist/tools/tasks/buckets.js.map +1 -0
- package/dist/tools/tasks/bulk/BatchProcessorFactory.d.ts +30 -0
- package/dist/tools/tasks/bulk/BatchProcessorFactory.d.ts.map +1 -0
- package/dist/tools/tasks/bulk/BatchProcessorFactory.js +69 -0
- package/dist/tools/tasks/bulk/BatchProcessorFactory.js.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationErrorHandler.d.ts +50 -0
- package/dist/tools/tasks/bulk/BulkOperationErrorHandler.d.ts.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationErrorHandler.js +183 -0
- package/dist/tools/tasks/bulk/BulkOperationErrorHandler.js.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationProcessor.d.ts +101 -0
- package/dist/tools/tasks/bulk/BulkOperationProcessor.d.ts.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationProcessor.js +416 -0
- package/dist/tools/tasks/bulk/BulkOperationProcessor.js.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationTypes.d.ts +50 -0
- package/dist/tools/tasks/bulk/BulkOperationTypes.d.ts.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationTypes.js +6 -0
- package/dist/tools/tasks/bulk/BulkOperationTypes.js.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationValidator.d.ts +53 -0
- package/dist/tools/tasks/bulk/BulkOperationValidator.d.ts.map +1 -0
- package/dist/tools/tasks/bulk/BulkOperationValidator.js +216 -0
- package/dist/tools/tasks/bulk/BulkOperationValidator.js.map +1 -0
- package/dist/tools/tasks/bulk/index.d.ts +9 -0
- package/dist/tools/tasks/bulk/index.d.ts.map +1 -0
- package/dist/tools/tasks/bulk/index.js +15 -0
- package/dist/tools/tasks/bulk/index.js.map +1 -0
- package/dist/tools/tasks/bulk-operations-simplified.d.ts +62 -0
- package/dist/tools/tasks/bulk-operations-simplified.d.ts.map +1 -0
- package/dist/tools/tasks/bulk-operations-simplified.js +416 -0
- package/dist/tools/tasks/bulk-operations-simplified.js.map +1 -0
- package/dist/tools/tasks/bulk-operations.d.ts +8 -0
- package/dist/tools/tasks/bulk-operations.d.ts.map +1 -0
- package/dist/tools/tasks/bulk-operations.js +13 -0
- package/dist/tools/tasks/bulk-operations.js.map +1 -0
- package/dist/tools/tasks/by-index.d.ts +36 -0
- package/dist/tools/tasks/by-index.d.ts.map +1 -0
- package/dist/tools/tasks/by-index.js +52 -0
- package/dist/tools/tasks/by-index.js.map +1 -0
- package/dist/tools/tasks/comments/CommentOperationsService.d.ts +44 -0
- package/dist/tools/tasks/comments/CommentOperationsService.d.ts.map +1 -0
- package/dist/tools/tasks/comments/CommentOperationsService.js +86 -0
- package/dist/tools/tasks/comments/CommentOperationsService.js.map +1 -0
- package/dist/tools/tasks/comments/CommentResponseFormatter.d.ts +41 -0
- package/dist/tools/tasks/comments/CommentResponseFormatter.d.ts.map +1 -0
- package/dist/tools/tasks/comments/CommentResponseFormatter.js +114 -0
- package/dist/tools/tasks/comments/CommentResponseFormatter.js.map +1 -0
- package/dist/tools/tasks/comments/CommentValidationService.d.ts +62 -0
- package/dist/tools/tasks/comments/CommentValidationService.d.ts.map +1 -0
- package/dist/tools/tasks/comments/CommentValidationService.js +105 -0
- package/dist/tools/tasks/comments/CommentValidationService.js.map +1 -0
- package/dist/tools/tasks/comments/index.d.ts +66 -0
- package/dist/tools/tasks/comments/index.d.ts.map +1 -0
- package/dist/tools/tasks/comments/index.js +99 -0
- package/dist/tools/tasks/comments/index.js.map +1 -0
- package/dist/tools/tasks/constants.d.ts +19 -0
- package/dist/tools/tasks/constants.d.ts.map +1 -0
- package/dist/tools/tasks/constants.js +82 -0
- package/dist/tools/tasks/constants.js.map +1 -0
- package/dist/tools/tasks/crud/TaskCreationService.d.ts +29 -0
- package/dist/tools/tasks/crud/TaskCreationService.d.ts.map +1 -0
- package/dist/tools/tasks/crud/TaskCreationService.js +274 -0
- package/dist/tools/tasks/crud/TaskCreationService.js.map +1 -0
- package/dist/tools/tasks/crud/TaskDeletionService.d.ts +19 -0
- package/dist/tools/tasks/crud/TaskDeletionService.d.ts.map +1 -0
- package/dist/tools/tasks/crud/TaskDeletionService.js +96 -0
- package/dist/tools/tasks/crud/TaskDeletionService.js.map +1 -0
- package/dist/tools/tasks/crud/TaskReadService.d.ts +19 -0
- package/dist/tools/tasks/crud/TaskReadService.d.ts.map +1 -0
- package/dist/tools/tasks/crud/TaskReadService.js +66 -0
- package/dist/tools/tasks/crud/TaskReadService.js.map +1 -0
- package/dist/tools/tasks/crud/TaskResponseFormatter.d.ts +18 -0
- package/dist/tools/tasks/crud/TaskResponseFormatter.d.ts.map +1 -0
- package/dist/tools/tasks/crud/TaskResponseFormatter.js +248 -0
- package/dist/tools/tasks/crud/TaskResponseFormatter.js.map +1 -0
- package/dist/tools/tasks/crud/TaskUpdateService.d.ts +33 -0
- package/dist/tools/tasks/crud/TaskUpdateService.d.ts.map +1 -0
- package/dist/tools/tasks/crud/TaskUpdateService.js +294 -0
- package/dist/tools/tasks/crud/TaskUpdateService.js.map +1 -0
- package/dist/tools/tasks/crud/index.d.ts +17 -0
- package/dist/tools/tasks/crud/index.d.ts.map +1 -0
- package/dist/tools/tasks/crud/index.js +20 -0
- package/dist/tools/tasks/crud/index.js.map +1 -0
- package/dist/tools/tasks/duplicate.d.ts +28 -0
- package/dist/tools/tasks/duplicate.d.ts.map +1 -0
- package/dist/tools/tasks/duplicate.js +41 -0
- package/dist/tools/tasks/duplicate.js.map +1 -0
- package/dist/tools/tasks/filtering/FilterExecutor.d.ts +39 -0
- package/dist/tools/tasks/filtering/FilterExecutor.d.ts.map +1 -0
- package/dist/tools/tasks/filtering/FilterExecutor.js +214 -0
- package/dist/tools/tasks/filtering/FilterExecutor.js.map +1 -0
- package/dist/tools/tasks/filtering/FilterValidator.d.ts +59 -0
- package/dist/tools/tasks/filtering/FilterValidator.d.ts.map +1 -0
- package/dist/tools/tasks/filtering/FilterValidator.js +257 -0
- package/dist/tools/tasks/filtering/FilterValidator.js.map +1 -0
- package/dist/tools/tasks/filtering/TaskFilteringOrchestrator.d.ts +78 -0
- package/dist/tools/tasks/filtering/TaskFilteringOrchestrator.d.ts.map +1 -0
- package/dist/tools/tasks/filtering/TaskFilteringOrchestrator.js +195 -0
- package/dist/tools/tasks/filtering/TaskFilteringOrchestrator.js.map +1 -0
- package/dist/tools/tasks/filtering/evaluators.d.ts +41 -0
- package/dist/tools/tasks/filtering/evaluators.d.ts.map +1 -0
- package/dist/tools/tasks/filtering/evaluators.js +224 -0
- package/dist/tools/tasks/filtering/evaluators.js.map +1 -0
- package/dist/tools/tasks/filtering/index.d.ts +11 -0
- package/dist/tools/tasks/filtering/index.d.ts.map +1 -0
- package/dist/tools/tasks/filtering/index.js +26 -0
- package/dist/tools/tasks/filtering/index.js.map +1 -0
- package/dist/tools/tasks/index.d.ts +9 -0
- package/dist/tools/tasks/index.d.ts.map +1 -0
- package/dist/tools/tasks/index.js +337 -0
- package/dist/tools/tasks/index.js.map +1 -0
- package/dist/tools/tasks/labels.d.ts +49 -0
- package/dist/tools/tasks/labels.d.ts.map +1 -0
- package/dist/tools/tasks/labels.js +223 -0
- package/dist/tools/tasks/labels.js.map +1 -0
- package/dist/tools/tasks/mark-read.d.ts +27 -0
- package/dist/tools/tasks/mark-read.d.ts.map +1 -0
- package/dist/tools/tasks/mark-read.js +38 -0
- package/dist/tools/tasks/mark-read.js.map +1 -0
- package/dist/tools/tasks/position.d.ts +53 -0
- package/dist/tools/tasks/position.d.ts.map +1 -0
- package/dist/tools/tasks/position.js +83 -0
- package/dist/tools/tasks/position.js.map +1 -0
- package/dist/tools/tasks/reminders.d.ts +56 -0
- package/dist/tools/tasks/reminders.d.ts.map +1 -0
- package/dist/tools/tasks/reminders.js +213 -0
- package/dist/tools/tasks/reminders.js.map +1 -0
- package/dist/tools/tasks/subtasks.d.ts +85 -0
- package/dist/tools/tasks/subtasks.d.ts.map +1 -0
- package/dist/tools/tasks/subtasks.js +286 -0
- package/dist/tools/tasks/subtasks.js.map +1 -0
- package/dist/tools/tasks/types/filters.d.ts +136 -0
- package/dist/tools/tasks/types/filters.d.ts.map +1 -0
- package/dist/tools/tasks/types/filters.js +7 -0
- package/dist/tools/tasks/types/filters.js.map +1 -0
- package/dist/tools/tasks/validation.d.ts +47 -0
- package/dist/tools/tasks/validation.d.ts.map +1 -0
- package/dist/tools/tasks/validation.js +131 -0
- package/dist/tools/tasks/validation.js.map +1 -0
- package/dist/tools/tasks-relations.d.ts +25 -0
- package/dist/tools/tasks-relations.d.ts.map +1 -0
- package/dist/tools/tasks-relations.js +271 -0
- package/dist/tools/tasks-relations.js.map +1 -0
- package/dist/tools/tasks.d.ts +6 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +10 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/teams.d.ts +9 -0
- package/dist/tools/teams.d.ts.map +1 -0
- package/dist/tools/teams.js +255 -0
- package/dist/tools/teams.js.map +1 -0
- package/dist/tools/templates.d.ts +9 -0
- package/dist/tools/templates.d.ts.map +1 -0
- package/dist/tools/templates.js +450 -0
- package/dist/tools/templates.js.map +1 -0
- package/dist/tools/tokens.d.ts +37 -0
- package/dist/tools/tokens.d.ts.map +1 -0
- package/dist/tools/tokens.js +122 -0
- package/dist/tools/tokens.js.map +1 -0
- package/dist/tools/user-deletion.d.ts +41 -0
- package/dist/tools/user-deletion.d.ts.map +1 -0
- package/dist/tools/user-deletion.js +126 -0
- package/dist/tools/user-deletion.js.map +1 -0
- package/dist/tools/users.d.ts +9 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +418 -0
- package/dist/tools/users.js.map +1 -0
- package/dist/tools/webhooks.d.ts +31 -0
- package/dist/tools/webhooks.d.ts.map +1 -0
- package/dist/tools/webhooks.js +414 -0
- package/dist/tools/webhooks.js.map +1 -0
- package/dist/transforms/base.d.ts +204 -0
- package/dist/transforms/base.d.ts.map +1 -0
- package/dist/transforms/base.js +175 -0
- package/dist/transforms/base.js.map +1 -0
- package/dist/transforms/field-selector.d.ts +27 -0
- package/dist/transforms/field-selector.d.ts.map +1 -0
- package/dist/transforms/field-selector.js +91 -0
- package/dist/transforms/field-selector.js.map +1 -0
- package/dist/transforms/index.d.ts +15 -0
- package/dist/transforms/index.d.ts.map +1 -0
- package/dist/transforms/index.js +50 -0
- package/dist/transforms/index.js.map +1 -0
- package/dist/transforms/size-calculator.d.ts +131 -0
- package/dist/transforms/size-calculator.d.ts.map +1 -0
- package/dist/transforms/size-calculator.js +284 -0
- package/dist/transforms/size-calculator.js.map +1 -0
- package/dist/transforms/task.d.ts +207 -0
- package/dist/transforms/task.d.ts.map +1 -0
- package/dist/transforms/task.js +259 -0
- package/dist/transforms/task.js.map +1 -0
- package/dist/types/errors.d.ts +65 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +44 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/filters.d.ts +149 -0
- package/dist/types/filters.d.ts.map +1 -0
- package/dist/types/filters.js +26 -0
- package/dist/types/filters.js.map +1 -0
- package/dist/types/index.d.ts +147 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +24 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/node-vikunja-extended.d.ts +36 -0
- package/dist/types/node-vikunja-extended.d.ts.map +1 -0
- package/dist/types/node-vikunja-extended.js +25 -0
- package/dist/types/node-vikunja-extended.js.map +1 -0
- package/dist/types/responses.d.ts +121 -0
- package/dist/types/responses.d.ts.map +1 -0
- package/dist/types/responses.js +26 -0
- package/dist/types/responses.js.map +1 -0
- package/dist/types/vikunja.d.ts +319 -0
- package/dist/types/vikunja.d.ts.map +1 -0
- package/dist/types/vikunja.js +7 -0
- package/dist/types/vikunja.js.map +1 -0
- package/dist/utils/auth-error-handler.d.ts +23 -0
- package/dist/utils/auth-error-handler.d.ts.map +1 -0
- package/dist/utils/auth-error-handler.js +162 -0
- package/dist/utils/auth-error-handler.js.map +1 -0
- package/dist/utils/composite-operation.d.ts +184 -0
- package/dist/utils/composite-operation.d.ts.map +1 -0
- package/dist/utils/composite-operation.js +293 -0
- package/dist/utils/composite-operation.js.map +1 -0
- package/dist/utils/error-handler.d.ts +39 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +336 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/filtering/ClientSideFilteringStrategy.d.ts +13 -0
- package/dist/utils/filtering/ClientSideFilteringStrategy.d.ts.map +1 -0
- package/dist/utils/filtering/ClientSideFilteringStrategy.js +129 -0
- package/dist/utils/filtering/ClientSideFilteringStrategy.js.map +1 -0
- package/dist/utils/filtering/FilteringContext.d.ts +40 -0
- package/dist/utils/filtering/FilteringContext.d.ts.map +1 -0
- package/dist/utils/filtering/FilteringContext.js +58 -0
- package/dist/utils/filtering/FilteringContext.js.map +1 -0
- package/dist/utils/filtering/HybridFilteringStrategy.d.ts +15 -0
- package/dist/utils/filtering/HybridFilteringStrategy.d.ts.map +1 -0
- package/dist/utils/filtering/HybridFilteringStrategy.js +55 -0
- package/dist/utils/filtering/HybridFilteringStrategy.js.map +1 -0
- package/dist/utils/filtering/RestCrossProjectFilteringStrategy.d.ts +42 -0
- package/dist/utils/filtering/RestCrossProjectFilteringStrategy.d.ts.map +1 -0
- package/dist/utils/filtering/RestCrossProjectFilteringStrategy.js +120 -0
- package/dist/utils/filtering/RestCrossProjectFilteringStrategy.js.map +1 -0
- package/dist/utils/filtering/ServerSideFilteringStrategy.d.ts +13 -0
- package/dist/utils/filtering/ServerSideFilteringStrategy.d.ts.map +1 -0
- package/dist/utils/filtering/ServerSideFilteringStrategy.js +88 -0
- package/dist/utils/filtering/ServerSideFilteringStrategy.js.map +1 -0
- package/dist/utils/filtering/TaskFilteringStrategy.d.ts +19 -0
- package/dist/utils/filtering/TaskFilteringStrategy.d.ts.map +1 -0
- package/dist/utils/filtering/TaskFilteringStrategy.js +10 -0
- package/dist/utils/filtering/TaskFilteringStrategy.js.map +1 -0
- package/dist/utils/filtering/index.d.ts +14 -0
- package/dist/utils/filtering/index.d.ts.map +1 -0
- package/dist/utils/filtering/index.js +22 -0
- package/dist/utils/filtering/index.js.map +1 -0
- package/dist/utils/filtering/types.d.ts +108 -0
- package/dist/utils/filtering/types.d.ts.map +1 -0
- package/dist/utils/filtering/types.js +6 -0
- package/dist/utils/filtering/types.js.map +1 -0
- package/dist/utils/filters.d.ts +70 -0
- package/dist/utils/filters.d.ts.map +1 -0
- package/dist/utils/filters.js +812 -0
- package/dist/utils/filters.js.map +1 -0
- package/dist/utils/http-error-detail.d.ts +28 -0
- package/dist/utils/http-error-detail.d.ts.map +1 -0
- package/dist/utils/http-error-detail.js +67 -0
- package/dist/utils/http-error-detail.js.map +1 -0
- package/dist/utils/label-bulk.d.ts +21 -0
- package/dist/utils/label-bulk.d.ts.map +1 -0
- package/dist/utils/label-bulk.js +51 -0
- package/dist/utils/label-bulk.js.map +1 -0
- package/dist/utils/logger.d.ts +20 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +66 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/memory.d.ts +73 -0
- package/dist/utils/memory.d.ts.map +1 -0
- package/dist/utils/memory.js +194 -0
- package/dist/utils/memory.js.map +1 -0
- package/dist/utils/performance/batch-processor.d.ts +77 -0
- package/dist/utils/performance/batch-processor.d.ts.map +1 -0
- package/dist/utils/performance/batch-processor.js +218 -0
- package/dist/utils/performance/batch-processor.js.map +1 -0
- package/dist/utils/performance/index.d.ts +42 -0
- package/dist/utils/performance/index.d.ts.map +1 -0
- package/dist/utils/performance/index.js +49 -0
- package/dist/utils/performance/index.js.map +1 -0
- package/dist/utils/performance/performance-monitor.d.ts +116 -0
- package/dist/utils/performance/performance-monitor.d.ts.map +1 -0
- package/dist/utils/performance/performance-monitor.js +307 -0
- package/dist/utils/performance/performance-monitor.js.map +1 -0
- package/dist/utils/read-only.d.ts +111 -0
- package/dist/utils/read-only.d.ts.map +1 -0
- package/dist/utils/read-only.js +503 -0
- package/dist/utils/read-only.js.map +1 -0
- package/dist/utils/response-factory.d.ts +81 -0
- package/dist/utils/response-factory.d.ts.map +1 -0
- package/dist/utils/response-factory.js +86 -0
- package/dist/utils/response-factory.js.map +1 -0
- package/dist/utils/retry.d.ts +160 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +316 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/security.d.ts +70 -0
- package/dist/utils/security.d.ts.map +1 -0
- package/dist/utils/security.js +358 -0
- package/dist/utils/security.js.map +1 -0
- package/dist/utils/simple-response.d.ts +75 -0
- package/dist/utils/simple-response.d.ts.map +1 -0
- package/dist/utils/simple-response.js +311 -0
- package/dist/utils/simple-response.js.map +1 -0
- package/dist/utils/storage-errors.d.ts +9 -0
- package/dist/utils/storage-errors.d.ts.map +1 -0
- package/dist/utils/storage-errors.js +20 -0
- package/dist/utils/storage-errors.js.map +1 -0
- package/dist/utils/task-rest-transport.d.ts +28 -0
- package/dist/utils/task-rest-transport.d.ts.map +1 -0
- package/dist/utils/task-rest-transport.js +33 -0
- package/dist/utils/task-rest-transport.js.map +1 -0
- package/dist/utils/unicode-fix.d.ts +19 -0
- package/dist/utils/unicode-fix.d.ts.map +1 -0
- package/dist/utils/unicode-fix.js +70 -0
- package/dist/utils/unicode-fix.js.map +1 -0
- package/dist/utils/validation.d.ts +75 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +758 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/utils/vikunja-rest.d.ts +159 -0
- package/dist/utils/vikunja-rest.d.ts.map +1 -0
- package/dist/utils/vikunja-rest.js +378 -0
- package/dist/utils/vikunja-rest.js.map +1 -0
- package/docs/CONFIGURATION.md +957 -0
- package/docs/DOCKER-DESKTOP-MCP.md +207 -0
- package/docs/TOOLS.md +422 -0
- package/package.json +145 -0
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Simple Response Formatter
|
|
4
|
+
* Replaces the over-engineered 2,925-line AORP system with direct, clean responses
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.createSuccessResponse = createSuccessResponse;
|
|
8
|
+
exports.createErrorResponse = createErrorResponse;
|
|
9
|
+
exports.formatSuccessMessage = formatSuccessMessage;
|
|
10
|
+
exports.formatErrorMessage = formatErrorMessage;
|
|
11
|
+
exports.formatMcpResponse = formatMcpResponse;
|
|
12
|
+
/**
|
|
13
|
+
* Create a simple success response
|
|
14
|
+
* Replaces complex AORP factory with direct formatting
|
|
15
|
+
*/
|
|
16
|
+
function createSuccessResponse(operation, message, data, metadata) {
|
|
17
|
+
const content = formatSuccessMessage(operation, message, data, metadata);
|
|
18
|
+
return {
|
|
19
|
+
content,
|
|
20
|
+
metadata: {
|
|
21
|
+
timestamp: new Date().toISOString(),
|
|
22
|
+
success: true,
|
|
23
|
+
operation,
|
|
24
|
+
...metadata,
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Create a simple error response
|
|
30
|
+
* Replaces complex AORP error handling with direct formatting
|
|
31
|
+
*/
|
|
32
|
+
function createErrorResponse(operation, message, errorCode = 'UNKNOWN_ERROR', metadata) {
|
|
33
|
+
const content = formatErrorMessage(operation, message, errorCode, metadata);
|
|
34
|
+
return {
|
|
35
|
+
content,
|
|
36
|
+
metadata: {
|
|
37
|
+
timestamp: new Date().toISOString(),
|
|
38
|
+
success: false,
|
|
39
|
+
operation,
|
|
40
|
+
error: {
|
|
41
|
+
code: errorCode,
|
|
42
|
+
message,
|
|
43
|
+
},
|
|
44
|
+
...metadata,
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Format success message in clean markdown
|
|
50
|
+
* Replaces complex AORP markdown formatting
|
|
51
|
+
*/
|
|
52
|
+
function formatSuccessMessage(operation, message, data, metadata) {
|
|
53
|
+
let content = `## ✅ Success\n\n${message}\n\n**Operation:** ${operation}\n\n`;
|
|
54
|
+
// Include metadata first if provided
|
|
55
|
+
if (metadata && typeof metadata === 'object') {
|
|
56
|
+
const metadataEntries = Object.entries(metadata).filter(([_, value]) => value !== undefined && value !== null);
|
|
57
|
+
if (metadataEntries.length > 0) {
|
|
58
|
+
content += formatObjectData(metadata);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (data) {
|
|
62
|
+
// Detect single resources (id + title|name, not an array) BEFORE the
|
|
63
|
+
// collection extraction. A single Task object has its own `.labels`
|
|
64
|
+
// array (the labels assigned to that task), which collides with the
|
|
65
|
+
// "labels collection" check below and causes get/create responses to
|
|
66
|
+
// silently drop description, project_id, priority, due_date, etc.
|
|
67
|
+
const looksLikeSingleResource = !Array.isArray(data) &&
|
|
68
|
+
typeof data === 'object' &&
|
|
69
|
+
data.id !== undefined &&
|
|
70
|
+
(data.title !== undefined || data.name !== undefined);
|
|
71
|
+
// Check for known collection types first (skipped for single resources).
|
|
72
|
+
const collection = looksLikeSingleResource
|
|
73
|
+
? null
|
|
74
|
+
: (data.tasks || data.projects || data.labels || data.users || data.items);
|
|
75
|
+
if (collection && Array.isArray(collection)) {
|
|
76
|
+
content += `**Results:** ${collection.length} item(s)\n\n`;
|
|
77
|
+
content += formatDataItemsList(collection);
|
|
78
|
+
}
|
|
79
|
+
else if (Array.isArray(data)) {
|
|
80
|
+
content += `**Results:** ${data.length} item(s)\n\n`;
|
|
81
|
+
content += formatDataItemsList(data);
|
|
82
|
+
}
|
|
83
|
+
else if (looksLikeSingleResource) {
|
|
84
|
+
// Route single resources through formatSingleDataItem, which uses the
|
|
85
|
+
// rich formatTaskItem heading renderer for Task-shaped objects and a
|
|
86
|
+
// compact id/title line for everything else. This is a single-item
|
|
87
|
+
// ("get") response, so the heading layout stays legitimate here — only
|
|
88
|
+
// multi-item list rendering (formatDataItemsList) changes.
|
|
89
|
+
content += formatSingleDataItem(data);
|
|
90
|
+
}
|
|
91
|
+
else if (data && typeof data === 'object') {
|
|
92
|
+
content += formatObjectData(data);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return content;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Format error message in clean markdown
|
|
99
|
+
* Replaces complex AORP error formatting
|
|
100
|
+
*/
|
|
101
|
+
function formatErrorMessage(operation, message, errorCode, metadata) {
|
|
102
|
+
let output = `## ❌ Error\n\n${message}\n\n**Error Code:** ${errorCode}`;
|
|
103
|
+
// Include important metadata fields in error output
|
|
104
|
+
if (metadata) {
|
|
105
|
+
// Add operation if different from default
|
|
106
|
+
if (metadata.operation && metadata.operation !== operation) {
|
|
107
|
+
output += `\n\n**Operation:** ${metadata.operation}`;
|
|
108
|
+
}
|
|
109
|
+
// Add failed IDs if present
|
|
110
|
+
if (metadata.failedIds && Array.isArray(metadata.failedIds)) {
|
|
111
|
+
output += `\n\n**FailedIds**:\n${JSON.stringify(metadata.failedIds)}`;
|
|
112
|
+
}
|
|
113
|
+
// Add failed count if present
|
|
114
|
+
if (typeof metadata.failedCount === 'number') {
|
|
115
|
+
output += `\n\n**FailedCount**:\n${metadata.failedCount}`;
|
|
116
|
+
}
|
|
117
|
+
// Add failures array if present
|
|
118
|
+
if (metadata.failures && Array.isArray(metadata.failures)) {
|
|
119
|
+
output += `\n\n**Failures**:\n${JSON.stringify(metadata.failures, null, 2)}`;
|
|
120
|
+
}
|
|
121
|
+
// Add count if present
|
|
122
|
+
if (metadata.count !== undefined) {
|
|
123
|
+
output += `\n\n**count:** ${metadata.count}`;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
output += '\n\n';
|
|
127
|
+
return output;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Format a single Task object with rich details as a markdown heading block.
|
|
131
|
+
*
|
|
132
|
+
* This heading layout (`### N. **Title**` + detail bullets) is used ONLY for
|
|
133
|
+
* single-item ("get"/"create"/"update") responses via formatSingleDataItem,
|
|
134
|
+
* where a lone `###` section header is legitimate document structure. It
|
|
135
|
+
* must NOT be used for multi-item lists (see formatDataItemsList /
|
|
136
|
+
* formatListItemLine below) — mixing heading blocks into a numbered list is
|
|
137
|
+
* issue #86.
|
|
138
|
+
*/
|
|
139
|
+
function formatTaskItem(task, index) {
|
|
140
|
+
const parts = [];
|
|
141
|
+
// Header with title and ID
|
|
142
|
+
parts.push(`### ${index + 1}. **${task.title}** (ID: ${task.id})`);
|
|
143
|
+
parts.push(...formatTaskDetailLines(task).map(line => `- ${line}`));
|
|
144
|
+
return parts.join('\n') + '\n';
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Build the optional detail bullet lines (status/priority/due date/progress/
|
|
148
|
+
* project/labels/assignees/description) for a Task-shaped item. Shared by
|
|
149
|
+
* both the single-item heading renderer (formatTaskItem) and the list-item
|
|
150
|
+
* renderer (formatListItemLine) so the *content* of the details stays
|
|
151
|
+
* identical between the two layouts — only their surrounding structure
|
|
152
|
+
* (heading vs. indented sub-bullets) differs.
|
|
153
|
+
*/
|
|
154
|
+
function formatTaskDetailLines(task) {
|
|
155
|
+
const parts = [];
|
|
156
|
+
// Status
|
|
157
|
+
const status = task.done ? '✅ Done' : '❌ Not Done';
|
|
158
|
+
parts.push(`**Status:** ${status}`);
|
|
159
|
+
// Priority (if set)
|
|
160
|
+
if (task.priority !== undefined && task.priority > 0) {
|
|
161
|
+
const stars = '⭐'.repeat(Math.min(task.priority, 5));
|
|
162
|
+
parts.push(`**Priority:** ${stars} (${task.priority}/5)`);
|
|
163
|
+
}
|
|
164
|
+
// Due date (if set)
|
|
165
|
+
if (task.due_date) {
|
|
166
|
+
parts.push(`**Due:** ${task.due_date}`);
|
|
167
|
+
}
|
|
168
|
+
// Progress (if set)
|
|
169
|
+
if (task.percent_done !== undefined && task.percent_done > 0) {
|
|
170
|
+
parts.push(`**Progress:** ${task.percent_done}%`);
|
|
171
|
+
}
|
|
172
|
+
// Project ID (if set)
|
|
173
|
+
if (task.project_id) {
|
|
174
|
+
parts.push(`**Project:** ${task.project_id}`);
|
|
175
|
+
}
|
|
176
|
+
// Labels (if any)
|
|
177
|
+
if (task.labels && task.labels.length > 0) {
|
|
178
|
+
const labelTitles = task.labels.map(l => l.title).join(', ');
|
|
179
|
+
parts.push(`**Labels:** ${labelTitles}`);
|
|
180
|
+
}
|
|
181
|
+
// Assignees (if any)
|
|
182
|
+
if (task.assignees && task.assignees.length > 0) {
|
|
183
|
+
const assigneeNames = task.assignees.map(a => {
|
|
184
|
+
const email = a.email ? ` (${a.email})` : '';
|
|
185
|
+
return `${a.username}${email}`;
|
|
186
|
+
}).join(', ');
|
|
187
|
+
parts.push(`**Assignees:** ${assigneeNames}`);
|
|
188
|
+
}
|
|
189
|
+
// Description (if exists)
|
|
190
|
+
if (task.description) {
|
|
191
|
+
parts.push(`**Description:** ${task.description}`);
|
|
192
|
+
}
|
|
193
|
+
return parts;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* True when an item carries enough Task-shaped detail to justify rendering
|
|
197
|
+
* extra fields (status/priority/due date/labels/assignees/description)
|
|
198
|
+
* alongside its title/ID line.
|
|
199
|
+
*/
|
|
200
|
+
function isRichTaskItem(item) {
|
|
201
|
+
const task = item;
|
|
202
|
+
return Boolean(task.title &&
|
|
203
|
+
(task.description ||
|
|
204
|
+
task.priority !== undefined ||
|
|
205
|
+
task.due_date ||
|
|
206
|
+
task.labels ||
|
|
207
|
+
task.assignees ||
|
|
208
|
+
task.done !== undefined));
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Format a single item's list line, uniformly, regardless of how much
|
|
212
|
+
* optional detail it carries (issue #86 fix). Every item — rich or sparse —
|
|
213
|
+
* renders as the SAME plain numbered line:
|
|
214
|
+
*
|
|
215
|
+
* N. **Title** (ID: id)
|
|
216
|
+
*
|
|
217
|
+
* with any available detail (status/priority/due date/labels/assignees/
|
|
218
|
+
* description) rendered as indented sub-bullets directly underneath, never
|
|
219
|
+
* as a `###` document heading. This keeps consecutive list items visually
|
|
220
|
+
* uniform instead of alternating between heading blocks and plain lines.
|
|
221
|
+
*/
|
|
222
|
+
function formatListItemLine(item, index) {
|
|
223
|
+
if (typeof item !== 'object' || item === null) {
|
|
224
|
+
return `${index + 1}. ${JSON.stringify(item)}`;
|
|
225
|
+
}
|
|
226
|
+
const id = item.id || index + 1;
|
|
227
|
+
const title = item.title || item.name || JSON.stringify(item);
|
|
228
|
+
const header = `${index + 1}. **${title}** (ID: ${id})`;
|
|
229
|
+
if (!isRichTaskItem(item)) {
|
|
230
|
+
return header;
|
|
231
|
+
}
|
|
232
|
+
// formatTaskDetailLines always emits at least a **Status:** line once
|
|
233
|
+
// isRichTaskItem() is true, so `details` is never empty here.
|
|
234
|
+
const details = formatTaskDetailLines(item);
|
|
235
|
+
return [header, ...details.map(line => ` - ${line}`)].join('\n');
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Format a single ("get"/"create"/"update") resource. This is NOT a list, so
|
|
239
|
+
* the richer `### ` heading layout (formatTaskItem) remains legitimate here
|
|
240
|
+
* — issue #86 only changes how *multiple* items are rendered together (see
|
|
241
|
+
* formatDataItemsList).
|
|
242
|
+
*
|
|
243
|
+
* Callers only reach this function via the `looksLikeSingleResource` gate in
|
|
244
|
+
* formatSuccessMessage, which already guarantees `item` is a non-null object
|
|
245
|
+
* with an `id` and a `title`/`name` — so no primitive/non-object fallback is
|
|
246
|
+
* needed (or reachable) here.
|
|
247
|
+
*/
|
|
248
|
+
function formatSingleDataItem(item) {
|
|
249
|
+
if (isRichTaskItem(item)) {
|
|
250
|
+
return formatTaskItem(item, 0) + '\n\n';
|
|
251
|
+
}
|
|
252
|
+
const id = item.id || 1;
|
|
253
|
+
const title = item.title || item.name || JSON.stringify(item);
|
|
254
|
+
return `1. **${title}** (ID: ${id})\n\n`;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Maximum number of items to render individually in a list response. This
|
|
258
|
+
* keeps responses token-safe: a hard cap protects against unbounded output
|
|
259
|
+
* for very large collections while still being generous enough to cover the
|
|
260
|
+
* vast majority of real Vikunja projects/task lists without truncation.
|
|
261
|
+
* Anything beyond the cap gets an explicit truncation notice instead of
|
|
262
|
+
* being silently dropped (issue #85) — the caller can always page further
|
|
263
|
+
* with `page`/`perPage`.
|
|
264
|
+
*/
|
|
265
|
+
const LIST_ITEM_RENDER_CAP = 50;
|
|
266
|
+
/**
|
|
267
|
+
* Format a list ("list"/bulk) response body. Renders every item up to
|
|
268
|
+
* LIST_ITEM_RENDER_CAP; for larger collections it renders the first
|
|
269
|
+
* LIST_ITEM_RENDER_CAP items followed by an explicit truncation notice, so a
|
|
270
|
+
* non-empty collection NEVER silently renders an empty body (issue #85).
|
|
271
|
+
*/
|
|
272
|
+
function formatDataItemsList(items, cap = LIST_ITEM_RENDER_CAP) {
|
|
273
|
+
if (items.length === 0) {
|
|
274
|
+
return '';
|
|
275
|
+
}
|
|
276
|
+
const shown = items.slice(0, cap);
|
|
277
|
+
let content = shown.map((item, index) => formatListItemLine(item, index)).join('\n') + '\n\n';
|
|
278
|
+
if (items.length > cap) {
|
|
279
|
+
content += `_Showing ${cap} of ${items.length} — use page/perPage to see more._\n\n`;
|
|
280
|
+
}
|
|
281
|
+
return content;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Format object data
|
|
285
|
+
*/
|
|
286
|
+
function formatObjectData(data) {
|
|
287
|
+
const entries = Object.entries(data);
|
|
288
|
+
if (entries.length === 0)
|
|
289
|
+
return '';
|
|
290
|
+
return entries
|
|
291
|
+
.filter(([_, value]) => value !== undefined && value !== null)
|
|
292
|
+
.map(([key, value]) => {
|
|
293
|
+
const formattedValue = typeof value === 'object' && value !== null
|
|
294
|
+
? JSON.stringify(value, null, 2)
|
|
295
|
+
: String(value);
|
|
296
|
+
return `**${key}:** ${formattedValue}`;
|
|
297
|
+
})
|
|
298
|
+
.join('\n') + '\n\n';
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Format response as MCP content array
|
|
302
|
+
* Direct replacement for AORP formatting
|
|
303
|
+
*/
|
|
304
|
+
function formatMcpResponse(response) {
|
|
305
|
+
return [{
|
|
306
|
+
type: 'text',
|
|
307
|
+
text: response.content,
|
|
308
|
+
}];
|
|
309
|
+
}
|
|
310
|
+
// Note: ResponseData and DataItem are exported from types/index.ts
|
|
311
|
+
//# sourceMappingURL=simple-response.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-response.js","sourceRoot":"","sources":["../../src/utils/simple-response.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error classes for storage operations
|
|
3
|
+
* Separated to avoid circular imports with storage system
|
|
4
|
+
*/
|
|
5
|
+
export declare class StorageDataError extends Error {
|
|
6
|
+
readonly code: string;
|
|
7
|
+
constructor(message: string, code?: string, cause?: Error);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=storage-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-errors.d.ts","sourceRoot":"","sources":["../../src/utils/storage-errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEjB,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAA6B,EAAE,KAAK,CAAC,EAAE,KAAK;CAQhF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Error classes for storage operations
|
|
4
|
+
* Separated to avoid circular imports with storage system
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.StorageDataError = void 0;
|
|
8
|
+
class StorageDataError extends Error {
|
|
9
|
+
code;
|
|
10
|
+
constructor(message, code = 'STORAGE_DATA_ERROR', cause) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = 'StorageDataError';
|
|
13
|
+
this.code = code;
|
|
14
|
+
if (cause) {
|
|
15
|
+
this.cause = cause;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.StorageDataError = StorageDataError;
|
|
20
|
+
//# sourceMappingURL=storage-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-errors.js","sourceRoot":"","sources":["../../src/utils/storage-errors.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,MAAa,gBAAiB,SAAQ,KAAK;IACzB,IAAI,CAAS;IAE7B,YAAY,OAAe,EAAE,OAAe,oBAAoB,EAAE,KAAa;QAC7E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;IACH,CAAC;CACF;AAXD,4CAWC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared direct-REST transport for reading/writing a full task object.
|
|
3
|
+
*
|
|
4
|
+
* `src/tools/tasks/reminders.ts` needs this because Vikunja has no dedicated
|
|
5
|
+
* reminder sub-resource endpoint — reminders "ride on" the full task-update
|
|
6
|
+
* endpoint (`POST /tasks/{id}`, a full-model-replace: fetch → merge
|
|
7
|
+
* `reminders` → POST the whole task back, per the same pattern documented
|
|
8
|
+
* for `buildProjectUpdatePayload` in docs/ENDPOINT-PLAYBOOK.md §4). That
|
|
9
|
+
* endpoint is also task CRUD's own update endpoint
|
|
10
|
+
* (`src/tools/tasks/crud/TaskUpdateService.ts`), which this Wave D
|
|
11
|
+
* sub-resource migration must not edit — so this is a standalone helper
|
|
12
|
+
* rather than a change to that service, per the playbook's guidance to add
|
|
13
|
+
* a new shared transport file when one is genuinely needed.
|
|
14
|
+
*/
|
|
15
|
+
import type { AuthManager } from '../auth/AuthManager';
|
|
16
|
+
import type { components } from '../types/generated/vikunja-openapi';
|
|
17
|
+
/** `models.Task` per the OpenAPI spec. */
|
|
18
|
+
export type VikunjaRestTask = components['schemas']['models.Task'];
|
|
19
|
+
/** `GET /tasks/{id}`. */
|
|
20
|
+
export declare function getTaskViaRest(authManager: AuthManager, taskId: number): Promise<VikunjaRestTask>;
|
|
21
|
+
/**
|
|
22
|
+
* `POST /tasks/{id}` — full-model-replace. Callers must send the complete
|
|
23
|
+
* desired task object (typically the result of fetching via
|
|
24
|
+
* `getTaskViaRest`, spreading it, then overlaying only the changed fields),
|
|
25
|
+
* not a bare partial body.
|
|
26
|
+
*/
|
|
27
|
+
export declare function updateTaskViaRest(authManager: AuthManager, taskId: number, task: VikunjaRestTask): Promise<VikunjaRestTask>;
|
|
28
|
+
//# sourceMappingURL=task-rest-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-rest-transport.d.ts","sourceRoot":"","sources":["../../src/utils/task-rest-transport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAErE,0CAA0C;AAC1C,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC;AAEnE,yBAAyB;AACzB,wBAAsB,cAAc,CAClC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,eAAe,CAAC,CAE1B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared direct-REST transport for reading/writing a full task object.
|
|
4
|
+
*
|
|
5
|
+
* `src/tools/tasks/reminders.ts` needs this because Vikunja has no dedicated
|
|
6
|
+
* reminder sub-resource endpoint — reminders "ride on" the full task-update
|
|
7
|
+
* endpoint (`POST /tasks/{id}`, a full-model-replace: fetch → merge
|
|
8
|
+
* `reminders` → POST the whole task back, per the same pattern documented
|
|
9
|
+
* for `buildProjectUpdatePayload` in docs/ENDPOINT-PLAYBOOK.md §4). That
|
|
10
|
+
* endpoint is also task CRUD's own update endpoint
|
|
11
|
+
* (`src/tools/tasks/crud/TaskUpdateService.ts`), which this Wave D
|
|
12
|
+
* sub-resource migration must not edit — so this is a standalone helper
|
|
13
|
+
* rather than a change to that service, per the playbook's guidance to add
|
|
14
|
+
* a new shared transport file when one is genuinely needed.
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.getTaskViaRest = getTaskViaRest;
|
|
18
|
+
exports.updateTaskViaRest = updateTaskViaRest;
|
|
19
|
+
const vikunja_rest_1 = require("./vikunja-rest");
|
|
20
|
+
/** `GET /tasks/{id}`. */
|
|
21
|
+
async function getTaskViaRest(authManager, taskId) {
|
|
22
|
+
return (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'GET', `/tasks/${taskId}`);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* `POST /tasks/{id}` — full-model-replace. Callers must send the complete
|
|
26
|
+
* desired task object (typically the result of fetching via
|
|
27
|
+
* `getTaskViaRest`, spreading it, then overlaying only the changed fields),
|
|
28
|
+
* not a bare partial body.
|
|
29
|
+
*/
|
|
30
|
+
async function updateTaskViaRest(authManager, taskId, task) {
|
|
31
|
+
return (0, vikunja_rest_1.vikunjaRestRequest)(authManager, 'POST', `/tasks/${taskId}`, task);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=task-rest-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-rest-transport.js","sourceRoot":"","sources":["../../src/utils/task-rest-transport.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;AAUH,wCAKC;AAQD,8CAMC;AA1BD,iDAAoD;AAMpD,yBAAyB;AAClB,KAAK,UAAU,cAAc,CAClC,WAAwB,EACxB,MAAc;IAEd,OAAO,IAAA,iCAAkB,EAAkB,WAAW,EAAE,KAAK,EAAE,UAAU,MAAM,EAAE,CAAC,CAAC;AACrF,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,iBAAiB,CACrC,WAAwB,EACxB,MAAc,EACd,IAAqB;IAErB,OAAO,IAAA,iCAAkB,EAAkB,WAAW,EAAE,MAAM,EAAE,UAAU,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;AAC5F,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unicode Fix Utility
|
|
3
|
+
*
|
|
4
|
+
* Handles literal unicode escape sequences in data that may come from
|
|
5
|
+
* API responses containing escaped unicode characters.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Check if a string contains literal unicode escape sequences
|
|
9
|
+
*/
|
|
10
|
+
export declare function hasLiteralUnicodeEscapes(input: unknown): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Fix literal unicode escape sequences in a string
|
|
13
|
+
*/
|
|
14
|
+
export declare function fixLiteralUnicodeEscapes(input: unknown): unknown;
|
|
15
|
+
/**
|
|
16
|
+
* Fix literal unicode escape sequences in nested data structures
|
|
17
|
+
*/
|
|
18
|
+
export declare function fixLiteralUnicodeEscapesInData(input: unknown): unknown;
|
|
19
|
+
//# sourceMappingURL=unicode-fix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unicode-fix.d.ts","sourceRoot":"","sources":["../../src/utils/unicode-fix.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAOhE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAiBhE;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA2BtE"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Unicode Fix Utility
|
|
4
|
+
*
|
|
5
|
+
* Handles literal unicode escape sequences in data that may come from
|
|
6
|
+
* API responses containing escaped unicode characters.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.hasLiteralUnicodeEscapes = hasLiteralUnicodeEscapes;
|
|
10
|
+
exports.fixLiteralUnicodeEscapes = fixLiteralUnicodeEscapes;
|
|
11
|
+
exports.fixLiteralUnicodeEscapesInData = fixLiteralUnicodeEscapesInData;
|
|
12
|
+
/**
|
|
13
|
+
* Check if a string contains literal unicode escape sequences
|
|
14
|
+
*/
|
|
15
|
+
function hasLiteralUnicodeEscapes(input) {
|
|
16
|
+
if (typeof input !== 'string') {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
// Look for literal unicode patterns like \ud83d\udc65 or \u26a1
|
|
20
|
+
return /\\u[0-9a-fA-F]{4,6}/g.test(input);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Fix literal unicode escape sequences in a string
|
|
24
|
+
*/
|
|
25
|
+
function fixLiteralUnicodeEscapes(input) {
|
|
26
|
+
if (typeof input !== 'string') {
|
|
27
|
+
return input;
|
|
28
|
+
}
|
|
29
|
+
// Replace literal unicode escapes with actual unicode characters
|
|
30
|
+
// Handle both 4-digit and longer sequences
|
|
31
|
+
return input.replace(/\\u([0-9a-fA-F]{4,6})/g, (match, hex) => {
|
|
32
|
+
try {
|
|
33
|
+
// Parse the hex value and convert to unicode character
|
|
34
|
+
const codePoint = parseInt(hex, 16);
|
|
35
|
+
return String.fromCodePoint(codePoint);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// If parsing fails, return the original match
|
|
39
|
+
return match;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Fix literal unicode escape sequences in nested data structures
|
|
45
|
+
*/
|
|
46
|
+
function fixLiteralUnicodeEscapesInData(input) {
|
|
47
|
+
// Handle primitive values
|
|
48
|
+
if (typeof input === 'string') {
|
|
49
|
+
return fixLiteralUnicodeEscapes(input);
|
|
50
|
+
}
|
|
51
|
+
// Handle null/undefined
|
|
52
|
+
if (input === null || input === undefined) {
|
|
53
|
+
return input;
|
|
54
|
+
}
|
|
55
|
+
// Handle arrays
|
|
56
|
+
if (Array.isArray(input)) {
|
|
57
|
+
return input.map(item => fixLiteralUnicodeEscapesInData(item));
|
|
58
|
+
}
|
|
59
|
+
// Handle objects
|
|
60
|
+
if (typeof input === 'object' && input !== null && !Array.isArray(input)) {
|
|
61
|
+
const result = {};
|
|
62
|
+
for (const [key, value] of Object.entries(input)) {
|
|
63
|
+
result[key] = fixLiteralUnicodeEscapesInData(value);
|
|
64
|
+
}
|
|
65
|
+
return result;
|
|
66
|
+
}
|
|
67
|
+
// Handle other primitives (numbers, booleans)
|
|
68
|
+
return input;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=unicode-fix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unicode-fix.js","sourceRoot":"","sources":["../../src/utils/unicode-fix.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAKH,4DAOC;AAKD,4DAiBC;AAKD,wEA2BC;AAhED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,KAAc;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gEAAgE;IAChE,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,KAAc;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,iEAAiE;IACjE,2CAA2C;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,KAAa,EAAE,GAAW,EAAE,EAAE;QAC5E,IAAI,CAAC;YACH,uDAAuD;YACvD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACpC,OAAO,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,8BAA8B,CAAC,KAAc;IAC3D,0BAA0B;IAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,wBAAwB;IACxB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB;IAChB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,iBAAiB;IACjB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzE,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,MAAM,CAAC,GAAG,CAAC,GAAG,8BAA8B,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,8CAA8C;IAC9C,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comprehensive Input Sanitization and Security Validation Layer
|
|
3
|
+
*
|
|
4
|
+
* Provides enterprise-grade protection against:
|
|
5
|
+
* - XSS attacks (script injection, HTML injection)
|
|
6
|
+
* - SQL injection (UNION, boolean-based, time-based)
|
|
7
|
+
* - Command injection (shell command execution)
|
|
8
|
+
* - Path traversal attacks
|
|
9
|
+
* - LDAP injection
|
|
10
|
+
* - NoSQL injection
|
|
11
|
+
* - Unicode and encoding bypasses
|
|
12
|
+
* - Content Security Policy violations
|
|
13
|
+
*
|
|
14
|
+
* Integration: Works seamlessly with existing security.ts credential masking
|
|
15
|
+
*/
|
|
16
|
+
import type { FilterExpression, FilterField, FilterOperator, LogicalOperator } from '../types/filters';
|
|
17
|
+
/**
|
|
18
|
+
* Server-appropriate security validation patterns
|
|
19
|
+
* Created fresh each call to avoid regex state issues
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Allowed characters for additional strictness (optional, can be relaxed)
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Validate and sanitize a string value to prevent XSS using pattern matching + HTML escaping
|
|
26
|
+
* Server-appropriate approach that avoids DOM parsing while providing comprehensive protection
|
|
27
|
+
*/
|
|
28
|
+
export declare function sanitizeString(value: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Validate a field name against Zod schema
|
|
31
|
+
*/
|
|
32
|
+
export declare function validateField(field: string): FilterField;
|
|
33
|
+
/**
|
|
34
|
+
* Validate an operator against Zod schema
|
|
35
|
+
*/
|
|
36
|
+
export declare function validateOperator(operator: string): FilterOperator;
|
|
37
|
+
/**
|
|
38
|
+
* Validate a logical operator against Zod schema
|
|
39
|
+
*/
|
|
40
|
+
export declare function validateLogicalOperator(operator: string): LogicalOperator;
|
|
41
|
+
/**
|
|
42
|
+
* Validate and normalize a value using custom logic (more comprehensive than Zod for this use case)
|
|
43
|
+
*/
|
|
44
|
+
export declare function validateValue(value: unknown): string | number | boolean | string[] | number[];
|
|
45
|
+
/**
|
|
46
|
+
* Validate a filter condition object using Zod schema
|
|
47
|
+
*/
|
|
48
|
+
export declare function validateCondition(condition: unknown): {
|
|
49
|
+
field: FilterField;
|
|
50
|
+
operator: FilterOperator;
|
|
51
|
+
value: string | number | boolean | string[] | number[] | null;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Validate a filter expression using Zod schema with comprehensive type safety
|
|
55
|
+
*/
|
|
56
|
+
export declare function validateFilterExpression(expression: unknown): FilterExpression;
|
|
57
|
+
/**
|
|
58
|
+
* Safely stringify JSON with comprehensive protection
|
|
59
|
+
* Prevents prototype pollution and sanitizes string values
|
|
60
|
+
*/
|
|
61
|
+
export declare function safeJsonStringify(obj: unknown): string;
|
|
62
|
+
/**
|
|
63
|
+
* Safely parse JSON with comprehensive protection
|
|
64
|
+
* Prevents prototype pollution and validates against dangerous content
|
|
65
|
+
*/
|
|
66
|
+
export declare function safeJsonParse(jsonString: string): FilterExpression;
|
|
67
|
+
/**
|
|
68
|
+
* Validate ID parameters
|
|
69
|
+
*/
|
|
70
|
+
export declare function validateId(id: number, fieldName: string): void;
|
|
71
|
+
/**
|
|
72
|
+
* Validate and convert ID from various formats
|
|
73
|
+
*/
|
|
74
|
+
export declare function validateAndConvertId(id: unknown, fieldName: string): number;
|
|
75
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAiCvG;;;GAGG;AAEH;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmNpD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAoBxD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAcjE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAczE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CA4F7F;AAkBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,OAAO,GAAG;IACrD,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;CAC/D,CAUA;AA2BD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,OAAO,GAAG,gBAAgB,CA0F9E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAwBtD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAgClE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAI9D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAyB3E"}
|