@langadventurellc/task-trellis-mcp 0.1.0-rc.3
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 +674 -0
- package/README.md +81 -0
- package/dist/configuration/ServerConfig.d.ts +8 -0
- package/dist/configuration/ServerConfig.d.ts.map +1 -0
- package/dist/configuration/ServerConfig.js +3 -0
- package/dist/configuration/ServerConfig.js.map +1 -0
- package/dist/configuration/index.d.ts +2 -0
- package/dist/configuration/index.d.ts.map +1 -0
- package/dist/configuration/index.js +18 -0
- package/dist/configuration/index.js.map +1 -0
- package/dist/models/TrellisObject.d.ts +18 -0
- package/dist/models/TrellisObject.d.ts.map +1 -0
- package/dist/models/TrellisObject.js +3 -0
- package/dist/models/TrellisObject.js.map +1 -0
- package/dist/models/TrellisObjectPriority.d.ts +6 -0
- package/dist/models/TrellisObjectPriority.d.ts.map +1 -0
- package/dist/models/TrellisObjectPriority.js +10 -0
- package/dist/models/TrellisObjectPriority.js.map +1 -0
- package/dist/models/TrellisObjectStatus.d.ts +8 -0
- package/dist/models/TrellisObjectStatus.d.ts.map +1 -0
- package/dist/models/TrellisObjectStatus.js +12 -0
- package/dist/models/TrellisObjectStatus.js.map +1 -0
- package/dist/models/TrellisObjectType.d.ts +7 -0
- package/dist/models/TrellisObjectType.d.ts.map +1 -0
- package/dist/models/TrellisObjectType.js +11 -0
- package/dist/models/TrellisObjectType.js.map +1 -0
- package/dist/models/__tests__/isClaimable.test.d.ts +2 -0
- package/dist/models/__tests__/isClaimable.test.d.ts.map +1 -0
- package/dist/models/__tests__/isClaimable.test.js +101 -0
- package/dist/models/__tests__/isClaimable.test.js.map +1 -0
- package/dist/models/__tests__/isClosed.test.d.ts +2 -0
- package/dist/models/__tests__/isClosed.test.d.ts.map +1 -0
- package/dist/models/__tests__/isClosed.test.js +84 -0
- package/dist/models/__tests__/isClosed.test.js.map +1 -0
- package/dist/models/__tests__/isOpen.test.d.ts +2 -0
- package/dist/models/__tests__/isOpen.test.d.ts.map +1 -0
- package/dist/models/__tests__/isOpen.test.js +84 -0
- package/dist/models/__tests__/isOpen.test.js.map +1 -0
- package/dist/models/index.d.ts +8 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +16 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/isClaimable.d.ts +10 -0
- package/dist/models/isClaimable.d.ts.map +1 -0
- package/dist/models/isClaimable.js +16 -0
- package/dist/models/isClaimable.js.map +1 -0
- package/dist/models/isClosed.d.ts +10 -0
- package/dist/models/isClosed.d.ts.map +1 -0
- package/dist/models/isClosed.js +16 -0
- package/dist/models/isClosed.js.map +1 -0
- package/dist/models/isOpen.d.ts +10 -0
- package/dist/models/isOpen.d.ts.map +1 -0
- package/dist/models/isOpen.js +16 -0
- package/dist/models/isOpen.js.map +1 -0
- package/dist/repositories/Repository.d.ts +8 -0
- package/dist/repositories/Repository.d.ts.map +1 -0
- package/dist/repositories/Repository.js +3 -0
- package/dist/repositories/Repository.js.map +1 -0
- package/dist/repositories/index.d.ts +3 -0
- package/dist/repositories/index.d.ts.map +1 -0
- package/dist/repositories/index.js +19 -0
- package/dist/repositories/index.js.map +1 -0
- package/dist/repositories/local/LocalRepository.d.ts +21 -0
- package/dist/repositories/local/LocalRepository.d.ts.map +1 -0
- package/dist/repositories/local/LocalRepository.js +75 -0
- package/dist/repositories/local/LocalRepository.js.map +1 -0
- package/dist/repositories/local/__tests__/deleteObjectById.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/deleteObjectById.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/deleteObjectById.test.js +228 -0
- package/dist/repositories/local/__tests__/deleteObjectById.test.js.map +1 -0
- package/dist/repositories/local/__tests__/extractMarkdownIds.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/extractMarkdownIds.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/extractMarkdownIds.test.js +135 -0
- package/dist/repositories/local/__tests__/extractMarkdownIds.test.js.map +1 -0
- package/dist/repositories/local/__tests__/findMarkdownFiles.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/findMarkdownFiles.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/findMarkdownFiles.test.js +236 -0
- package/dist/repositories/local/__tests__/findMarkdownFiles.test.js.map +1 -0
- package/dist/repositories/local/__tests__/getObjectByFilePath.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/getObjectByFilePath.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/getObjectByFilePath.test.js +96 -0
- package/dist/repositories/local/__tests__/getObjectByFilePath.test.js.map +1 -0
- package/dist/repositories/local/__tests__/getObjectById.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/getObjectById.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/getObjectById.test.js +46 -0
- package/dist/repositories/local/__tests__/getObjectById.test.js.map +1 -0
- package/dist/repositories/local/__tests__/getObjectFilePath.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/getObjectFilePath.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/getObjectFilePath.test.js +172 -0
- package/dist/repositories/local/__tests__/getObjectFilePath.test.js.map +1 -0
- package/dist/repositories/local/__tests__/getObjects.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/getObjects.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/getObjects.test.js +351 -0
- package/dist/repositories/local/__tests__/getObjects.test.js.map +1 -0
- package/dist/repositories/local/__tests__/scopeFilter.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/scopeFilter.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/scopeFilter.test.js +109 -0
- package/dist/repositories/local/__tests__/scopeFilter.test.js.map +1 -0
- package/dist/repositories/local/deleteObjectById.d.ts +16 -0
- package/dist/repositories/local/deleteObjectById.d.ts.map +1 -0
- package/dist/repositories/local/deleteObjectById.js +108 -0
- package/dist/repositories/local/deleteObjectById.js.map +1 -0
- package/dist/repositories/local/extractMarkdownIds.d.ts +17 -0
- package/dist/repositories/local/extractMarkdownIds.d.ts.map +1 -0
- package/dist/repositories/local/extractMarkdownIds.js +34 -0
- package/dist/repositories/local/extractMarkdownIds.js.map +1 -0
- package/dist/repositories/local/filterByScope.d.ts +8 -0
- package/dist/repositories/local/filterByScope.d.ts.map +1 -0
- package/dist/repositories/local/filterByScope.js +17 -0
- package/dist/repositories/local/filterByScope.js.map +1 -0
- package/dist/repositories/local/findMarkdownFiles.d.ts +9 -0
- package/dist/repositories/local/findMarkdownFiles.d.ts.map +1 -0
- package/dist/repositories/local/findMarkdownFiles.js +47 -0
- package/dist/repositories/local/findMarkdownFiles.js.map +1 -0
- package/dist/repositories/local/getObjectByFilePath.d.ts +9 -0
- package/dist/repositories/local/getObjectByFilePath.d.ts.map +1 -0
- package/dist/repositories/local/getObjectByFilePath.js +16 -0
- package/dist/repositories/local/getObjectByFilePath.js.map +1 -0
- package/dist/repositories/local/getObjectById.d.ts +10 -0
- package/dist/repositories/local/getObjectById.d.ts.map +1 -0
- package/dist/repositories/local/getObjectById.js +36 -0
- package/dist/repositories/local/getObjectById.js.map +1 -0
- package/dist/repositories/local/getObjectFilePath.d.ts +7 -0
- package/dist/repositories/local/getObjectFilePath.d.ts.map +1 -0
- package/dist/repositories/local/getObjectFilePath.js +90 -0
- package/dist/repositories/local/getObjectFilePath.js.map +1 -0
- package/dist/repositories/local/getObjects.d.ts +3 -0
- package/dist/repositories/local/getObjects.d.ts.map +1 -0
- package/dist/repositories/local/getObjects.js +64 -0
- package/dist/repositories/local/getObjects.js.map +1 -0
- package/dist/repositories/local/index.d.ts +8 -0
- package/dist/repositories/local/index.d.ts.map +1 -0
- package/dist/repositories/local/index.js +24 -0
- package/dist/repositories/local/index.js.map +1 -0
- package/dist/repositories/local/saveObject.d.ts +12 -0
- package/dist/repositories/local/saveObject.d.ts.map +1 -0
- package/dist/repositories/local/saveObject.js +27 -0
- package/dist/repositories/local/saveObject.js.map +1 -0
- package/dist/repositories/local/scopeFilter.d.ts +12 -0
- package/dist/repositories/local/scopeFilter.d.ts.map +1 -0
- package/dist/repositories/local/scopeFilter.js +21 -0
- package/dist/repositories/local/scopeFilter.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +138 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/__tests__/appendObjectLogTool.test.d.ts +2 -0
- package/dist/tools/__tests__/appendObjectLogTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/appendObjectLogTool.test.js +125 -0
- package/dist/tools/__tests__/appendObjectLogTool.test.js.map +1 -0
- package/dist/tools/__tests__/claimTaskTool.test.d.ts +2 -0
- package/dist/tools/__tests__/claimTaskTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/claimTaskTool.test.js +348 -0
- package/dist/tools/__tests__/claimTaskTool.test.js.map +1 -0
- package/dist/tools/__tests__/completeTaskTool.test.d.ts +2 -0
- package/dist/tools/__tests__/completeTaskTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/completeTaskTool.test.js +221 -0
- package/dist/tools/__tests__/completeTaskTool.test.js.map +1 -0
- package/dist/tools/__tests__/createObjectTool.test.d.ts +2 -0
- package/dist/tools/__tests__/createObjectTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/createObjectTool.test.js +387 -0
- package/dist/tools/__tests__/createObjectTool.test.js.map +1 -0
- package/dist/tools/__tests__/deleteObjectTool.test.d.ts +2 -0
- package/dist/tools/__tests__/deleteObjectTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/deleteObjectTool.test.js +169 -0
- package/dist/tools/__tests__/deleteObjectTool.test.js.map +1 -0
- package/dist/tools/__tests__/getObjectTool.test.d.ts +2 -0
- package/dist/tools/__tests__/getObjectTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/getObjectTool.test.js +124 -0
- package/dist/tools/__tests__/getObjectTool.test.js.map +1 -0
- package/dist/tools/__tests__/listObjectsTool.test.d.ts +2 -0
- package/dist/tools/__tests__/listObjectsTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/listObjectsTool.test.js +266 -0
- package/dist/tools/__tests__/listObjectsTool.test.js.map +1 -0
- package/dist/tools/__tests__/updateObjectTool.test.d.ts +2 -0
- package/dist/tools/__tests__/updateObjectTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/updateObjectTool.test.js +208 -0
- package/dist/tools/__tests__/updateObjectTool.test.js.map +1 -0
- package/dist/tools/activateTool.d.ts +38 -0
- package/dist/tools/activateTool.d.ts.map +1 -0
- package/dist/tools/activateTool.js +48 -0
- package/dist/tools/activateTool.js.map +1 -0
- package/dist/tools/appendObjectLogTool.d.ts +26 -0
- package/dist/tools/appendObjectLogTool.d.ts.map +1 -0
- package/dist/tools/appendObjectLogTool.js +65 -0
- package/dist/tools/appendObjectLogTool.js.map +1 -0
- package/dist/tools/claimTaskTool.d.ts +30 -0
- package/dist/tools/claimTaskTool.d.ts.map +1 -0
- package/dist/tools/claimTaskTool.js +109 -0
- package/dist/tools/claimTaskTool.js.map +1 -0
- package/dist/tools/completeTaskTool.d.ts +33 -0
- package/dist/tools/completeTaskTool.d.ts.map +1 -0
- package/dist/tools/completeTaskTool.js +61 -0
- package/dist/tools/completeTaskTool.js.map +1 -0
- package/dist/tools/createObjectTool.d.ts +52 -0
- package/dist/tools/createObjectTool.d.ts.map +1 -0
- package/dist/tools/createObjectTool.js +87 -0
- package/dist/tools/createObjectTool.js.map +1 -0
- package/dist/tools/deleteObjectTool.d.ts +27 -0
- package/dist/tools/deleteObjectTool.d.ts.map +1 -0
- package/dist/tools/deleteObjectTool.js +48 -0
- package/dist/tools/deleteObjectTool.js.map +1 -0
- package/dist/tools/getObjectTool.d.ts +22 -0
- package/dist/tools/getObjectTool.d.ts.map +1 -0
- package/dist/tools/getObjectTool.js +53 -0
- package/dist/tools/getObjectTool.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +34 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/listObjectsTool.d.ts +39 -0
- package/dist/tools/listObjectsTool.d.ts.map +1 -0
- package/dist/tools/listObjectsTool.js +87 -0
- package/dist/tools/listObjectsTool.js.map +1 -0
- package/dist/tools/pruneClosedTool.d.ts +26 -0
- package/dist/tools/pruneClosedTool.d.ts.map +1 -0
- package/dist/tools/pruneClosedTool.js +35 -0
- package/dist/tools/pruneClosedTool.js.map +1 -0
- package/dist/tools/updateObjectTool.d.ts +46 -0
- package/dist/tools/updateObjectTool.d.ts.map +1 -0
- package/dist/tools/updateObjectTool.js +93 -0
- package/dist/tools/updateObjectTool.js.map +1 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.d.ts +2 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.d.ts.map +1 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.js +200 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.js.map +1 -0
- package/dist/utils/__tests__/deserializeTrellisObject.test.d.ts +2 -0
- package/dist/utils/__tests__/deserializeTrellisObject.test.d.ts.map +1 -0
- package/dist/utils/__tests__/deserializeTrellisObject.test.js +329 -0
- package/dist/utils/__tests__/deserializeTrellisObject.test.js.map +1 -0
- package/dist/utils/__tests__/filterUnavailableObjects.test.d.ts +2 -0
- package/dist/utils/__tests__/filterUnavailableObjects.test.d.ts.map +1 -0
- package/dist/utils/__tests__/filterUnavailableObjects.test.js +172 -0
- package/dist/utils/__tests__/filterUnavailableObjects.test.js.map +1 -0
- package/dist/utils/__tests__/generateUniqueId.test.d.ts +2 -0
- package/dist/utils/__tests__/generateUniqueId.test.d.ts.map +1 -0
- package/dist/utils/__tests__/generateUniqueId.test.js +186 -0
- package/dist/utils/__tests__/generateUniqueId.test.js.map +1 -0
- package/dist/utils/__tests__/inferObjectType.test.d.ts +2 -0
- package/dist/utils/__tests__/inferObjectType.test.d.ts.map +1 -0
- package/dist/utils/__tests__/inferObjectType.test.js +43 -0
- package/dist/utils/__tests__/inferObjectType.test.js.map +1 -0
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.d.ts +2 -0
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.d.ts.map +1 -0
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.js +229 -0
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.js.map +1 -0
- package/dist/utils/__tests__/serializationRoundTrip.test.d.ts +2 -0
- package/dist/utils/__tests__/serializationRoundTrip.test.d.ts.map +1 -0
- package/dist/utils/__tests__/serializationRoundTrip.test.js +389 -0
- package/dist/utils/__tests__/serializationRoundTrip.test.js.map +1 -0
- package/dist/utils/__tests__/serializeTrellisObject.test.d.ts +2 -0
- package/dist/utils/__tests__/serializeTrellisObject.test.d.ts.map +1 -0
- package/dist/utils/__tests__/serializeTrellisObject.test.js +192 -0
- package/dist/utils/__tests__/serializeTrellisObject.test.js.map +1 -0
- package/dist/utils/__tests__/sortTrellisObjects.test.d.ts +2 -0
- package/dist/utils/__tests__/sortTrellisObjects.test.d.ts.map +1 -0
- package/dist/utils/__tests__/sortTrellisObjects.test.js +114 -0
- package/dist/utils/__tests__/sortTrellisObjects.test.js.map +1 -0
- package/dist/utils/checkPrerequisitesComplete.d.ts +12 -0
- package/dist/utils/checkPrerequisitesComplete.d.ts.map +1 -0
- package/dist/utils/checkPrerequisitesComplete.js +38 -0
- package/dist/utils/checkPrerequisitesComplete.js.map +1 -0
- package/dist/utils/deserializeTrellisObject.d.ts +9 -0
- package/dist/utils/deserializeTrellisObject.d.ts.map +1 -0
- package/dist/utils/deserializeTrellisObject.js +134 -0
- package/dist/utils/deserializeTrellisObject.js.map +1 -0
- package/dist/utils/filterUnavailableObjects.d.ts +13 -0
- package/dist/utils/filterUnavailableObjects.d.ts.map +1 -0
- package/dist/utils/filterUnavailableObjects.js +40 -0
- package/dist/utils/filterUnavailableObjects.js.map +1 -0
- package/dist/utils/generateUniqueId.d.ts +10 -0
- package/dist/utils/generateUniqueId.d.ts.map +1 -0
- package/dist/utils/generateUniqueId.js +67 -0
- package/dist/utils/generateUniqueId.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +20 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/inferObjectType.d.ts +3 -0
- package/dist/utils/inferObjectType.d.ts.map +1 -0
- package/dist/utils/inferObjectType.js +26 -0
- package/dist/utils/inferObjectType.js.map +1 -0
- package/dist/utils/isRequiredForOtherObjects.d.ts +12 -0
- package/dist/utils/isRequiredForOtherObjects.d.ts.map +1 -0
- package/dist/utils/isRequiredForOtherObjects.js +33 -0
- package/dist/utils/isRequiredForOtherObjects.js.map +1 -0
- package/dist/utils/serializeTrellisObject.d.ts +8 -0
- package/dist/utils/serializeTrellisObject.d.ts.map +1 -0
- package/dist/utils/serializeTrellisObject.js +35 -0
- package/dist/utils/serializeTrellisObject.js.map +1 -0
- package/dist/utils/sortTrellisObjects.d.ts +8 -0
- package/dist/utils/sortTrellisObjects.d.ts.map +1 -0
- package/dist/utils/sortTrellisObjects.js +20 -0
- package/dist/utils/sortTrellisObjects.js.map +1 -0
- package/dist/validation/ValidationError.d.ts +9 -0
- package/dist/validation/ValidationError.d.ts.map +1 -0
- package/dist/validation/ValidationError.js +18 -0
- package/dist/validation/ValidationError.js.map +1 -0
- package/dist/validation/ValidationErrorCode.d.ts +3 -0
- package/dist/validation/ValidationErrorCode.d.ts.map +1 -0
- package/dist/validation/ValidationErrorCode.js +3 -0
- package/dist/validation/ValidationErrorCode.js.map +1 -0
- package/dist/validation/ValidationErrorCodes.d.ts +8 -0
- package/dist/validation/ValidationErrorCodes.d.ts.map +1 -0
- package/dist/validation/ValidationErrorCodes.js +11 -0
- package/dist/validation/ValidationErrorCodes.js.map +1 -0
- package/dist/validation/__tests__/ValidationError.test.d.ts +2 -0
- package/dist/validation/__tests__/ValidationError.test.d.ts.map +1 -0
- package/dist/validation/__tests__/ValidationError.test.js +32 -0
- package/dist/validation/__tests__/ValidationError.test.js.map +1 -0
- package/dist/validation/__tests__/validateObjectCreation.test.d.ts +2 -0
- package/dist/validation/__tests__/validateObjectCreation.test.d.ts.map +1 -0
- package/dist/validation/__tests__/validateObjectCreation.test.js +93 -0
- package/dist/validation/__tests__/validateObjectCreation.test.js.map +1 -0
- package/dist/validation/__tests__/validateParentExists.test.d.ts +2 -0
- package/dist/validation/__tests__/validateParentExists.test.d.ts.map +1 -0
- package/dist/validation/__tests__/validateParentExists.test.js +62 -0
- package/dist/validation/__tests__/validateParentExists.test.js.map +1 -0
- package/dist/validation/__tests__/validateParentType.test.d.ts +2 -0
- package/dist/validation/__tests__/validateParentType.test.d.ts.map +1 -0
- package/dist/validation/__tests__/validateParentType.test.js +125 -0
- package/dist/validation/__tests__/validateParentType.test.js.map +1 -0
- package/dist/validation/__tests__/validateStatusTransition.test.d.ts +2 -0
- package/dist/validation/__tests__/validateStatusTransition.test.d.ts.map +1 -0
- package/dist/validation/__tests__/validateStatusTransition.test.js +103 -0
- package/dist/validation/__tests__/validateStatusTransition.test.js.map +1 -0
- package/dist/validation/validateObjectCreation.d.ts +12 -0
- package/dist/validation/validateObjectCreation.d.ts.map +1 -0
- package/dist/validation/validateObjectCreation.js +24 -0
- package/dist/validation/validateObjectCreation.js.map +1 -0
- package/dist/validation/validateParentExists.d.ts +10 -0
- package/dist/validation/validateParentExists.d.ts.map +1 -0
- package/dist/validation/validateParentExists.js +23 -0
- package/dist/validation/validateParentExists.js.map +1 -0
- package/dist/validation/validateParentType.d.ts +16 -0
- package/dist/validation/validateParentType.d.ts.map +1 -0
- package/dist/validation/validateParentType.js +48 -0
- package/dist/validation/validateParentType.js.map +1 -0
- package/dist/validation/validateStatusTransition.d.ts +12 -0
- package/dist/validation/validateStatusTransition.d.ts.map +1 -0
- package/dist/validation/validateStatusTransition.js +29 -0
- package/dist/validation/validateStatusTransition.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const models_1 = require("../../models");
|
|
4
|
+
const checkPrerequisitesComplete_1 = require("../checkPrerequisitesComplete");
|
|
5
|
+
// Mock repository implementation for testing
|
|
6
|
+
class MockRepository {
|
|
7
|
+
objects = new Map();
|
|
8
|
+
constructor(objects = []) {
|
|
9
|
+
objects.forEach((obj) => this.objects.set(obj.id, obj));
|
|
10
|
+
}
|
|
11
|
+
async getObjectById(id) {
|
|
12
|
+
return Promise.resolve(this.objects.get(id) || null);
|
|
13
|
+
}
|
|
14
|
+
async getObjects(_includeClosed) {
|
|
15
|
+
return Promise.resolve(Array.from(this.objects.values()));
|
|
16
|
+
}
|
|
17
|
+
async saveObject(trellisObject) {
|
|
18
|
+
this.objects.set(trellisObject.id, trellisObject);
|
|
19
|
+
return Promise.resolve();
|
|
20
|
+
}
|
|
21
|
+
async deleteObject(id) {
|
|
22
|
+
this.objects.delete(id);
|
|
23
|
+
return Promise.resolve();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
describe("checkPrerequisitesComplete", () => {
|
|
27
|
+
const createMockObject = (id, status, prerequisites = []) => ({
|
|
28
|
+
id,
|
|
29
|
+
title: `Task ${id}`,
|
|
30
|
+
status,
|
|
31
|
+
priority: models_1.TrellisObjectPriority.MEDIUM,
|
|
32
|
+
prerequisites,
|
|
33
|
+
affectedFiles: new Map(),
|
|
34
|
+
log: [],
|
|
35
|
+
schema: "v1.0",
|
|
36
|
+
childrenIds: [],
|
|
37
|
+
body: `Body for ${id}`,
|
|
38
|
+
type: models_1.TrellisObjectType.TASK,
|
|
39
|
+
});
|
|
40
|
+
it("should return true when object has no prerequisites", async () => {
|
|
41
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN, []);
|
|
42
|
+
const repository = new MockRepository();
|
|
43
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
44
|
+
expect(result).toBe(true);
|
|
45
|
+
});
|
|
46
|
+
it("should return true when object has empty prerequisites array", async () => {
|
|
47
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN);
|
|
48
|
+
// Ensure prerequisites is an empty array
|
|
49
|
+
object.prerequisites = [];
|
|
50
|
+
const repository = new MockRepository();
|
|
51
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
52
|
+
expect(result).toBe(true);
|
|
53
|
+
});
|
|
54
|
+
it("should return true when all prerequisites are DONE", async () => {
|
|
55
|
+
const prereq1 = createMockObject("prereq-1", models_1.TrellisObjectStatus.DONE);
|
|
56
|
+
const prereq2 = createMockObject("prereq-2", models_1.TrellisObjectStatus.DONE);
|
|
57
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN, [
|
|
58
|
+
"prereq-1",
|
|
59
|
+
"prereq-2",
|
|
60
|
+
]);
|
|
61
|
+
const repository = new MockRepository([prereq1, prereq2]);
|
|
62
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
63
|
+
expect(result).toBe(true);
|
|
64
|
+
});
|
|
65
|
+
it("should return true when all prerequisites are WONT_DO", async () => {
|
|
66
|
+
const prereq1 = createMockObject("prereq-1", models_1.TrellisObjectStatus.WONT_DO);
|
|
67
|
+
const prereq2 = createMockObject("prereq-2", models_1.TrellisObjectStatus.WONT_DO);
|
|
68
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN, [
|
|
69
|
+
"prereq-1",
|
|
70
|
+
"prereq-2",
|
|
71
|
+
]);
|
|
72
|
+
const repository = new MockRepository([prereq1, prereq2]);
|
|
73
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
74
|
+
expect(result).toBe(true);
|
|
75
|
+
});
|
|
76
|
+
it("should return true when prerequisites are mix of DONE and WONT_DO", async () => {
|
|
77
|
+
const prereq1 = createMockObject("prereq-1", models_1.TrellisObjectStatus.DONE);
|
|
78
|
+
const prereq2 = createMockObject("prereq-2", models_1.TrellisObjectStatus.WONT_DO);
|
|
79
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN, [
|
|
80
|
+
"prereq-1",
|
|
81
|
+
"prereq-2",
|
|
82
|
+
]);
|
|
83
|
+
const repository = new MockRepository([prereq1, prereq2]);
|
|
84
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
85
|
+
expect(result).toBe(true);
|
|
86
|
+
});
|
|
87
|
+
it("should return false when prerequisite is OPEN", async () => {
|
|
88
|
+
const prereq1 = createMockObject("prereq-1", models_1.TrellisObjectStatus.OPEN);
|
|
89
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN, [
|
|
90
|
+
"prereq-1",
|
|
91
|
+
]);
|
|
92
|
+
const repository = new MockRepository([prereq1]);
|
|
93
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
94
|
+
expect(result).toBe(false);
|
|
95
|
+
});
|
|
96
|
+
it("should return false when prerequisite is IN_PROGRESS", async () => {
|
|
97
|
+
const prereq1 = createMockObject("prereq-1", models_1.TrellisObjectStatus.IN_PROGRESS);
|
|
98
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN, [
|
|
99
|
+
"prereq-1",
|
|
100
|
+
]);
|
|
101
|
+
const repository = new MockRepository([prereq1]);
|
|
102
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
103
|
+
expect(result).toBe(false);
|
|
104
|
+
});
|
|
105
|
+
it("should return false when prerequisite is DRAFT", async () => {
|
|
106
|
+
const prereq1 = createMockObject("prereq-1", models_1.TrellisObjectStatus.DRAFT);
|
|
107
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN, [
|
|
108
|
+
"prereq-1",
|
|
109
|
+
]);
|
|
110
|
+
const repository = new MockRepository([prereq1]);
|
|
111
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
112
|
+
expect(result).toBe(false);
|
|
113
|
+
});
|
|
114
|
+
it("should return false when any prerequisite is incomplete", async () => {
|
|
115
|
+
const prereq1 = createMockObject("prereq-1", models_1.TrellisObjectStatus.DONE);
|
|
116
|
+
const prereq2 = createMockObject("prereq-2", models_1.TrellisObjectStatus.OPEN);
|
|
117
|
+
const prereq3 = createMockObject("prereq-3", models_1.TrellisObjectStatus.WONT_DO);
|
|
118
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN, [
|
|
119
|
+
"prereq-1",
|
|
120
|
+
"prereq-2",
|
|
121
|
+
"prereq-3",
|
|
122
|
+
]);
|
|
123
|
+
const repository = new MockRepository([prereq1, prereq2, prereq3]);
|
|
124
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
125
|
+
expect(result).toBe(false);
|
|
126
|
+
});
|
|
127
|
+
it("should return true when prerequisite does not exist in repository (external dependency)", async () => {
|
|
128
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN, [
|
|
129
|
+
"nonexistent-prereq",
|
|
130
|
+
]);
|
|
131
|
+
const repository = new MockRepository([]);
|
|
132
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
133
|
+
expect(result).toBe(true);
|
|
134
|
+
});
|
|
135
|
+
it("should return true when some prerequisites exist (complete) and some don't (external)", async () => {
|
|
136
|
+
const prereq1 = createMockObject("prereq-1", models_1.TrellisObjectStatus.DONE);
|
|
137
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN, [
|
|
138
|
+
"prereq-1",
|
|
139
|
+
"nonexistent-prereq",
|
|
140
|
+
]);
|
|
141
|
+
const repository = new MockRepository([prereq1]);
|
|
142
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
143
|
+
expect(result).toBe(true);
|
|
144
|
+
});
|
|
145
|
+
it("should return false when some prerequisites exist (incomplete) and some don't (external)", async () => {
|
|
146
|
+
const prereq1 = createMockObject("prereq-1", models_1.TrellisObjectStatus.IN_PROGRESS);
|
|
147
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN, [
|
|
148
|
+
"prereq-1",
|
|
149
|
+
"nonexistent-prereq",
|
|
150
|
+
]);
|
|
151
|
+
const repository = new MockRepository([prereq1]);
|
|
152
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
153
|
+
expect(result).toBe(false);
|
|
154
|
+
});
|
|
155
|
+
it("should handle multiple prerequisites with various statuses", async () => {
|
|
156
|
+
const prereq1 = createMockObject("prereq-1", models_1.TrellisObjectStatus.DONE);
|
|
157
|
+
const prereq2 = createMockObject("prereq-2", models_1.TrellisObjectStatus.WONT_DO);
|
|
158
|
+
const prereq3 = createMockObject("prereq-3", models_1.TrellisObjectStatus.DONE);
|
|
159
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN, [
|
|
160
|
+
"prereq-1",
|
|
161
|
+
"prereq-2",
|
|
162
|
+
"prereq-3",
|
|
163
|
+
]);
|
|
164
|
+
const repository = new MockRepository([prereq1, prereq2, prereq3]);
|
|
165
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
166
|
+
expect(result).toBe(true);
|
|
167
|
+
});
|
|
168
|
+
it("should handle single prerequisite", async () => {
|
|
169
|
+
const prereq1 = createMockObject("prereq-1", models_1.TrellisObjectStatus.DONE);
|
|
170
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN, [
|
|
171
|
+
"prereq-1",
|
|
172
|
+
]);
|
|
173
|
+
const repository = new MockRepository([prereq1]);
|
|
174
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
175
|
+
expect(result).toBe(true);
|
|
176
|
+
});
|
|
177
|
+
it("should work regardless of the main object's status", async () => {
|
|
178
|
+
const prereq1 = createMockObject("prereq-1", models_1.TrellisObjectStatus.DONE);
|
|
179
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.IN_PROGRESS, [
|
|
180
|
+
"prereq-1",
|
|
181
|
+
]);
|
|
182
|
+
const repository = new MockRepository([prereq1]);
|
|
183
|
+
const result = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, repository);
|
|
184
|
+
expect(result).toBe(true);
|
|
185
|
+
});
|
|
186
|
+
it("should handle repository errors gracefully", async () => {
|
|
187
|
+
const object = createMockObject("task-1", models_1.TrellisObjectStatus.OPEN, [
|
|
188
|
+
"prereq-1",
|
|
189
|
+
]);
|
|
190
|
+
// Mock repository that throws an error on getObjects
|
|
191
|
+
const mockRepository = {
|
|
192
|
+
getObjectById: jest.fn(),
|
|
193
|
+
getObjects: jest.fn().mockRejectedValue(new Error("Repository error")),
|
|
194
|
+
saveObject: jest.fn(),
|
|
195
|
+
deleteObject: jest.fn(),
|
|
196
|
+
};
|
|
197
|
+
await expect((0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(object, mockRepository)).rejects.toThrow("Repository error");
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
//# sourceMappingURL=checkPrerequisitesComplete.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkPrerequisitesComplete.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/checkPrerequisitesComplete.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deserializeTrellisObject.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/deserializeTrellisObject.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const models_1 = require("../../models");
|
|
4
|
+
const deserializeTrellisObject_1 = require("../deserializeTrellisObject");
|
|
5
|
+
const serializeTrellisObject_1 = require("../serializeTrellisObject");
|
|
6
|
+
describe("deserializeTrellisObject", () => {
|
|
7
|
+
it("should deserialize a basic markdown string with YAML frontmatter", () => {
|
|
8
|
+
const markdownString = `---
|
|
9
|
+
id: T-test-id-123
|
|
10
|
+
title: Test Task
|
|
11
|
+
status: in-progress
|
|
12
|
+
priority: high
|
|
13
|
+
prerequisites:
|
|
14
|
+
- prereq-1
|
|
15
|
+
- prereq-2
|
|
16
|
+
affectedFiles:
|
|
17
|
+
src/file1.ts: modified
|
|
18
|
+
src/file2.ts: created
|
|
19
|
+
log:
|
|
20
|
+
- Initial commit
|
|
21
|
+
- Updated implementation
|
|
22
|
+
schema: v1.0
|
|
23
|
+
childrenIds:
|
|
24
|
+
- child-1
|
|
25
|
+
- child-2
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
This is the main content of the task.`;
|
|
29
|
+
const result = (0, deserializeTrellisObject_1.deserializeTrellisObject)(markdownString);
|
|
30
|
+
expect(result).toEqual({
|
|
31
|
+
id: "T-test-id-123",
|
|
32
|
+
type: models_1.TrellisObjectType.TASK,
|
|
33
|
+
title: "Test Task",
|
|
34
|
+
status: models_1.TrellisObjectStatus.IN_PROGRESS,
|
|
35
|
+
priority: models_1.TrellisObjectPriority.HIGH,
|
|
36
|
+
prerequisites: ["prereq-1", "prereq-2"],
|
|
37
|
+
affectedFiles: new Map([
|
|
38
|
+
["src/file1.ts", "modified"],
|
|
39
|
+
["src/file2.ts", "created"],
|
|
40
|
+
]),
|
|
41
|
+
log: ["Initial commit", "Updated implementation"],
|
|
42
|
+
schema: "v1.0",
|
|
43
|
+
childrenIds: ["child-1", "child-2"],
|
|
44
|
+
body: "This is the main content of the task.",
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
it("should handle multi-line log entries correctly", () => {
|
|
48
|
+
const markdownString = `---
|
|
49
|
+
id: T-multiline-test
|
|
50
|
+
title: Multi-line Log Test
|
|
51
|
+
status: open
|
|
52
|
+
priority: medium
|
|
53
|
+
prerequisites: []
|
|
54
|
+
affectedFiles: {}
|
|
55
|
+
log:
|
|
56
|
+
- Single line entry
|
|
57
|
+
- |-
|
|
58
|
+
Multi-line entry:
|
|
59
|
+
This spans multiple lines
|
|
60
|
+
With various details
|
|
61
|
+
And even more information
|
|
62
|
+
- Another single line
|
|
63
|
+
- |-
|
|
64
|
+
Complex multi-line:
|
|
65
|
+
- Bullet point 1
|
|
66
|
+
- Bullet point 2
|
|
67
|
+
- Nested point
|
|
68
|
+
- Final point
|
|
69
|
+
schema: v1.0
|
|
70
|
+
childrenIds: []
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
Test body content`;
|
|
74
|
+
const result = (0, deserializeTrellisObject_1.deserializeTrellisObject)(markdownString);
|
|
75
|
+
expect(result.log).toHaveLength(4);
|
|
76
|
+
expect(result.log[0]).toBe("Single line entry");
|
|
77
|
+
expect(result.log[1]).toBe("Multi-line entry:\nThis spans multiple lines\nWith various details\nAnd even more information");
|
|
78
|
+
expect(result.log[2]).toBe("Another single line");
|
|
79
|
+
expect(result.log[3]).toBe("Complex multi-line:\n- Bullet point 1\n- Bullet point 2\n - Nested point\n- Final point");
|
|
80
|
+
});
|
|
81
|
+
it("should handle empty arrays and objects correctly", () => {
|
|
82
|
+
const markdownString = `---
|
|
83
|
+
id: T-empty-test
|
|
84
|
+
title: Empty Collections Test
|
|
85
|
+
status: draft
|
|
86
|
+
priority: low
|
|
87
|
+
prerequisites: []
|
|
88
|
+
affectedFiles: {}
|
|
89
|
+
log: []
|
|
90
|
+
schema: v1.0
|
|
91
|
+
childrenIds: []
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
`;
|
|
95
|
+
const result = (0, deserializeTrellisObject_1.deserializeTrellisObject)(markdownString);
|
|
96
|
+
expect(result.prerequisites).toEqual([]);
|
|
97
|
+
expect(result.affectedFiles).toEqual(new Map());
|
|
98
|
+
expect(result.log).toEqual([]);
|
|
99
|
+
expect(result.childrenIds).toEqual([]);
|
|
100
|
+
expect(result.body).toBe("");
|
|
101
|
+
});
|
|
102
|
+
it("should handle special characters in strings", () => {
|
|
103
|
+
const markdownString = `---
|
|
104
|
+
id: T-special-chars-test
|
|
105
|
+
title: 'Title with "quotes" and symbols: @#$%'
|
|
106
|
+
status: in-progress
|
|
107
|
+
priority: high
|
|
108
|
+
prerequisites:
|
|
109
|
+
- prereq with spaces
|
|
110
|
+
- prereq-with-dashes
|
|
111
|
+
affectedFiles:
|
|
112
|
+
'src/file with spaces.ts': 'status with "quotes"'
|
|
113
|
+
'src/file-with-dashes.ts': 'status: with: colons'
|
|
114
|
+
log:
|
|
115
|
+
- 'Log entry with "double quotes"'
|
|
116
|
+
- "Log entry with 'single quotes'"
|
|
117
|
+
- 'Log entry with: colons and @symbols'
|
|
118
|
+
schema: v2.0-beta
|
|
119
|
+
childrenIds:
|
|
120
|
+
- child-with-dashes
|
|
121
|
+
- child with spaces
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
Body with "quotes", symbols: @#$%, and other special characters!`;
|
|
125
|
+
const result = (0, deserializeTrellisObject_1.deserializeTrellisObject)(markdownString);
|
|
126
|
+
expect(result.title).toBe('Title with "quotes" and symbols: @#$%');
|
|
127
|
+
expect(result.affectedFiles.get("src/file with spaces.ts")).toBe('status with "quotes"');
|
|
128
|
+
expect(result.log[0]).toBe('Log entry with "double quotes"');
|
|
129
|
+
expect(result.body).toBe('Body with "quotes", symbols: @#$%, and other special characters!');
|
|
130
|
+
});
|
|
131
|
+
it("should throw error for invalid format without frontmatter delimiters", () => {
|
|
132
|
+
const invalidString = `id: test
|
|
133
|
+
title: Test
|
|
134
|
+
body content`;
|
|
135
|
+
expect(() => (0, deserializeTrellisObject_1.deserializeTrellisObject)(invalidString)).toThrow("Invalid format: Expected YAML frontmatter delimited by --- markers");
|
|
136
|
+
});
|
|
137
|
+
it("should throw error for invalid YAML syntax", () => {
|
|
138
|
+
const invalidYamlString = `---
|
|
139
|
+
id: test
|
|
140
|
+
title: Test
|
|
141
|
+
invalid: [unclosed array
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
body content`;
|
|
145
|
+
expect(() => (0, deserializeTrellisObject_1.deserializeTrellisObject)(invalidYamlString)).toThrow(/Invalid YAML frontmatter:/);
|
|
146
|
+
});
|
|
147
|
+
it("should throw error for missing required fields", () => {
|
|
148
|
+
const missingFieldString = `---
|
|
149
|
+
id: test
|
|
150
|
+
title: Test Task
|
|
151
|
+
status: open
|
|
152
|
+
# priority is missing
|
|
153
|
+
schema: v1.0
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
body content`;
|
|
157
|
+
expect(() => (0, deserializeTrellisObject_1.deserializeTrellisObject)(missingFieldString)).toThrow("Missing required field: priority");
|
|
158
|
+
});
|
|
159
|
+
it("should throw error for invalid field types", () => {
|
|
160
|
+
const invalidTypeString = `---
|
|
161
|
+
id: test
|
|
162
|
+
title: Test Task
|
|
163
|
+
status: open
|
|
164
|
+
priority: 123 # should be string, not number
|
|
165
|
+
schema: v1.0
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
body content`;
|
|
169
|
+
expect(() => (0, deserializeTrellisObject_1.deserializeTrellisObject)(invalidTypeString)).toThrow("Invalid type for field priority: Expected string");
|
|
170
|
+
});
|
|
171
|
+
it("should handle non-string values in arrays by filtering them out", () => {
|
|
172
|
+
const mixedArrayString = `---
|
|
173
|
+
id: T-test
|
|
174
|
+
title: Test Task
|
|
175
|
+
status: open
|
|
176
|
+
priority: high
|
|
177
|
+
prerequisites:
|
|
178
|
+
- valid string
|
|
179
|
+
- 123
|
|
180
|
+
- another string
|
|
181
|
+
- true
|
|
182
|
+
- null
|
|
183
|
+
log:
|
|
184
|
+
- valid log entry
|
|
185
|
+
- 456
|
|
186
|
+
- another valid entry
|
|
187
|
+
schema: v1.0
|
|
188
|
+
childrenIds:
|
|
189
|
+
- valid-child
|
|
190
|
+
- 789
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
body content`;
|
|
194
|
+
const result = (0, deserializeTrellisObject_1.deserializeTrellisObject)(mixedArrayString);
|
|
195
|
+
expect(result.prerequisites).toEqual(["valid string", "another string"]);
|
|
196
|
+
expect(result.log).toEqual(["valid log entry", "another valid entry"]);
|
|
197
|
+
expect(result.childrenIds).toEqual(["valid-child"]);
|
|
198
|
+
});
|
|
199
|
+
it("should handle non-string values in affectedFiles by filtering them out", () => {
|
|
200
|
+
const mixedObjectString = `---
|
|
201
|
+
id: T-test
|
|
202
|
+
title: Test Task
|
|
203
|
+
status: open
|
|
204
|
+
priority: high
|
|
205
|
+
prerequisites: []
|
|
206
|
+
affectedFiles:
|
|
207
|
+
'valid-file.ts': modified
|
|
208
|
+
'another-file.js': created
|
|
209
|
+
'invalid-number': 123
|
|
210
|
+
'invalid-boolean': true
|
|
211
|
+
log: []
|
|
212
|
+
schema: v1.0
|
|
213
|
+
childrenIds: []
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
body content`;
|
|
217
|
+
const result = (0, deserializeTrellisObject_1.deserializeTrellisObject)(mixedObjectString);
|
|
218
|
+
expect(result.affectedFiles.size).toBe(2);
|
|
219
|
+
expect(result.affectedFiles.get("valid-file.ts")).toBe("modified");
|
|
220
|
+
expect(result.affectedFiles.get("another-file.js")).toBe("created");
|
|
221
|
+
expect(result.affectedFiles.has("invalid-number")).toBe(false);
|
|
222
|
+
expect(result.affectedFiles.has("invalid-boolean")).toBe(false);
|
|
223
|
+
});
|
|
224
|
+
it("should handle complex markdown body content", () => {
|
|
225
|
+
const complexBodyString = `---
|
|
226
|
+
id: T-complex-body-test
|
|
227
|
+
title: Complex Body Test
|
|
228
|
+
status: open
|
|
229
|
+
priority: medium
|
|
230
|
+
prerequisites: []
|
|
231
|
+
affectedFiles: {}
|
|
232
|
+
log: []
|
|
233
|
+
schema: v1.0
|
|
234
|
+
childrenIds: []
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
# Main Task Description
|
|
238
|
+
|
|
239
|
+
This is a detailed description of the task.
|
|
240
|
+
|
|
241
|
+
## Steps to Complete
|
|
242
|
+
|
|
243
|
+
1. First step
|
|
244
|
+
2. Second step
|
|
245
|
+
3. Final step
|
|
246
|
+
|
|
247
|
+
> Important note about the implementation
|
|
248
|
+
|
|
249
|
+
\`\`\`typescript
|
|
250
|
+
const example = "code block";
|
|
251
|
+
\`\`\`
|
|
252
|
+
|
|
253
|
+
### Additional Notes
|
|
254
|
+
|
|
255
|
+
- Bullet point 1
|
|
256
|
+
- Bullet point 2
|
|
257
|
+
- Nested point
|
|
258
|
+
- Final point`;
|
|
259
|
+
const result = (0, deserializeTrellisObject_1.deserializeTrellisObject)(complexBodyString);
|
|
260
|
+
expect(result.body).toContain("# Main Task Description");
|
|
261
|
+
expect(result.body).toContain("## Steps to Complete");
|
|
262
|
+
expect(result.body).toContain("```typescript");
|
|
263
|
+
expect(result.body).toContain("- Bullet point 1");
|
|
264
|
+
});
|
|
265
|
+
it("should perform round-trip serialization/deserialization correctly", () => {
|
|
266
|
+
const originalObject = {
|
|
267
|
+
id: "T-round-trip-test",
|
|
268
|
+
title: "Round Trip Test",
|
|
269
|
+
status: models_1.TrellisObjectStatus.IN_PROGRESS,
|
|
270
|
+
priority: models_1.TrellisObjectPriority.HIGH,
|
|
271
|
+
prerequisites: ["prereq-1", "prereq-2"],
|
|
272
|
+
affectedFiles: new Map([
|
|
273
|
+
["src/file1.ts", "modified"],
|
|
274
|
+
["src/file2.ts", "created"],
|
|
275
|
+
["config/settings.json", "deleted"],
|
|
276
|
+
]),
|
|
277
|
+
log: [
|
|
278
|
+
"Initial implementation",
|
|
279
|
+
"Multi-line log entry:\nWith multiple lines\nAnd details",
|
|
280
|
+
"Final commit",
|
|
281
|
+
],
|
|
282
|
+
schema: "v1.0",
|
|
283
|
+
childrenIds: ["child-1", "child-2"],
|
|
284
|
+
body: "# Task Description\n\nThis is the task body with **markdown** formatting.",
|
|
285
|
+
type: models_1.TrellisObjectType.TASK,
|
|
286
|
+
};
|
|
287
|
+
// Serialize then deserialize
|
|
288
|
+
const serialized = (0, serializeTrellisObject_1.serializeTrellisObject)(originalObject);
|
|
289
|
+
const deserialized = (0, deserializeTrellisObject_1.deserializeTrellisObject)(serialized);
|
|
290
|
+
// Should be identical
|
|
291
|
+
expect(deserialized).toEqual(originalObject);
|
|
292
|
+
});
|
|
293
|
+
it("should handle frontmatter that is not an object", () => {
|
|
294
|
+
const nonObjectString = `---
|
|
295
|
+
"just a string"
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
body content`;
|
|
299
|
+
expect(() => (0, deserializeTrellisObject_1.deserializeTrellisObject)(nonObjectString)).toThrow("Invalid frontmatter: Expected an object");
|
|
300
|
+
});
|
|
301
|
+
it("should handle body content with --- markers", () => {
|
|
302
|
+
const bodyWithDelimitersString = `---
|
|
303
|
+
id: T-delim-test
|
|
304
|
+
title: Delimiter Test
|
|
305
|
+
status: open
|
|
306
|
+
priority: medium
|
|
307
|
+
prerequisites: []
|
|
308
|
+
affectedFiles: {}
|
|
309
|
+
log: []
|
|
310
|
+
schema: v1.0
|
|
311
|
+
childrenIds: []
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
This body contains --- markers
|
|
315
|
+
and should handle them correctly.
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
Even multiple --- sections should work.`;
|
|
320
|
+
const result = (0, deserializeTrellisObject_1.deserializeTrellisObject)(bodyWithDelimitersString);
|
|
321
|
+
expect(result.body).toBe(`This body contains --- markers
|
|
322
|
+
and should handle them correctly.
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
Even multiple --- sections should work.`);
|
|
327
|
+
});
|
|
328
|
+
});
|
|
329
|
+
//# sourceMappingURL=deserializeTrellisObject.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deserializeTrellisObject.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/deserializeTrellisObject.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterUnavailableObjects.test.d.ts","sourceRoot":"","sources":["../../../src/utils/__tests__/filterUnavailableObjects.test.ts"],"names":[],"mappings":""}
|