@langadventurellc/task-trellis-mcp 1.0.1 → 1.2.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/README.md +52 -263
- package/dist/__tests__/e2e/autoPrune.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/autoPrune.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/autoPrune.e2e.test.js +533 -0
- package/dist/__tests__/e2e/autoPrune.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/configuration/activation.e2e.test.js +6 -6
- package/dist/__tests__/e2e/configuration/activation.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/configuration/commandLineArgs.e2e.test.js +55 -6
- package/dist/__tests__/e2e/configuration/commandLineArgs.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/configuration/directorySetup.e2e.test.js +19 -19
- package/dist/__tests__/e2e/configuration/directorySetup.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/configuration/invalidConfig.e2e.test.js +9 -9
- package/dist/__tests__/e2e/configuration/invalidConfig.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/configuration/preActivation.e2e.test.js +15 -15
- package/dist/__tests__/e2e/configuration/preActivation.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/crud/createObject.e2e.test.js +94 -42
- package/dist/__tests__/e2e/crud/createObject.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/crud/deleteObject.e2e.test.js +19 -19
- package/dist/__tests__/e2e/crud/deleteObject.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/crud/fileValidation.e2e.test.js +32 -32
- package/dist/__tests__/e2e/crud/fileValidation.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/crud/getObject.e2e.test.js +143 -22
- package/dist/__tests__/e2e/crud/getObject.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/crud/listObjects.e2e.test.js +810 -121
- package/dist/__tests__/e2e/crud/listObjects.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/crud/updateObject.e2e.test.js +497 -25
- package/dist/__tests__/e2e/crud/updateObject.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/hierarchicalPrerequisites.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/hierarchicalPrerequisites.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/hierarchicalPrerequisites.e2e.test.js +319 -0
- package/dist/__tests__/e2e/hierarchicalPrerequisites.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/infrastructure/client.e2e.test.js +4 -4
- package/dist/__tests__/e2e/infrastructure/client.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/infrastructure/server.e2e.test.js +6 -6
- package/dist/__tests__/e2e/infrastructure/server.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/utils/extractObjectIds.d.ts +5 -0
- package/dist/__tests__/e2e/utils/extractObjectIds.d.ts.map +1 -0
- package/dist/__tests__/e2e/utils/extractObjectIds.js +12 -0
- package/dist/__tests__/e2e/utils/extractObjectIds.js.map +1 -0
- package/dist/__tests__/e2e/utils/index.d.ts +1 -0
- package/dist/__tests__/e2e/utils/index.d.ts.map +1 -1
- package/dist/__tests__/e2e/utils/index.js +3 -1
- package/dist/__tests__/e2e/utils/index.js.map +1 -1
- package/dist/__tests__/e2e/utils/mcpTestClient.d.ts +2 -1
- package/dist/__tests__/e2e/utils/mcpTestClient.d.ts.map +1 -1
- package/dist/__tests__/e2e/utils/mcpTestClient.js +15 -8
- package/dist/__tests__/e2e/utils/mcpTestClient.js.map +1 -1
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.d.ts +4 -2
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.d.ts.map +1 -1
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.js +2 -1
- package/dist/__tests__/e2e/utils/parseListObjectsResponse.js.map +1 -1
- package/dist/__tests__/e2e/utils/parseUpdateObjectResponse.d.ts +1 -1
- package/dist/__tests__/e2e/utils/parseUpdateObjectResponse.js +1 -1
- package/dist/__tests__/e2e/workflow/appendLog.e2e.test.js +4 -4
- package/dist/__tests__/e2e/workflow/appendLog.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.d.ts +2 -0
- package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.js +597 -0
- package/dist/__tests__/e2e/workflow/appendModifiedFiles.e2e.test.js.map +1 -0
- package/dist/__tests__/e2e/workflow/claimTask.e2e.test.js +233 -0
- package/dist/__tests__/e2e/workflow/claimTask.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/workflow/completeTask.e2e.test.js +447 -1
- package/dist/__tests__/e2e/workflow/completeTask.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/workflow/prerequisites.e2e.test.js +43 -43
- package/dist/__tests__/e2e/workflow/prerequisites.e2e.test.js.map +1 -1
- package/dist/__tests__/e2e/workflow/taskLifecycle.e2e.test.js +22 -26
- package/dist/__tests__/e2e/workflow/taskLifecycle.e2e.test.js.map +1 -1
- package/dist/__tests__/serverStartup.test.d.ts +2 -0
- package/dist/__tests__/serverStartup.test.d.ts.map +1 -0
- package/dist/__tests__/serverStartup.test.js +171 -0
- package/dist/__tests__/serverStartup.test.js.map +1 -0
- package/dist/configuration/ServerConfig.d.ts +2 -0
- package/dist/configuration/ServerConfig.d.ts.map +1 -1
- package/dist/models/TrellisObjectSummary.d.ts +16 -0
- package/dist/models/TrellisObjectSummary.d.ts.map +1 -0
- package/dist/{utils/ReplaceStringOptions.js → models/TrellisObjectSummary.js} +1 -1
- package/dist/models/TrellisObjectSummary.js.map +1 -0
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js.map +1 -1
- package/dist/repositories/Repository.d.ts +2 -1
- package/dist/repositories/Repository.d.ts.map +1 -1
- package/dist/repositories/local/LocalRepository.d.ts +2 -1
- package/dist/repositories/local/LocalRepository.d.ts.map +1 -1
- package/dist/repositories/local/LocalRepository.js +4 -0
- package/dist/repositories/local/LocalRepository.js.map +1 -1
- package/dist/repositories/local/__tests__/getChildrenOf.test.d.ts +2 -0
- package/dist/repositories/local/__tests__/getChildrenOf.test.d.ts.map +1 -0
- package/dist/repositories/local/__tests__/getChildrenOf.test.js +306 -0
- package/dist/repositories/local/__tests__/getChildrenOf.test.js.map +1 -0
- package/dist/repositories/local/__tests__/getObjectFilePath.test.js +9 -6
- package/dist/repositories/local/__tests__/getObjectFilePath.test.js.map +1 -1
- package/dist/repositories/local/__tests__/getObjects.test.js +349 -10
- package/dist/repositories/local/__tests__/getObjects.test.js.map +1 -1
- package/dist/repositories/local/deleteObjectById.d.ts.map +1 -1
- package/dist/repositories/local/deleteObjectById.js +2 -0
- package/dist/repositories/local/deleteObjectById.js.map +1 -1
- package/dist/repositories/local/getChildrenOf.d.ts +11 -0
- package/dist/repositories/local/getChildrenOf.d.ts.map +1 -0
- package/dist/repositories/local/getChildrenOf.js +73 -0
- package/dist/repositories/local/getChildrenOf.js.map +1 -0
- package/dist/repositories/local/getObjectFilePath.d.ts.map +1 -1
- package/dist/repositories/local/getObjectFilePath.js +8 -4
- package/dist/repositories/local/getObjectFilePath.js.map +1 -1
- package/dist/repositories/local/getObjects.d.ts +1 -1
- package/dist/repositories/local/getObjects.d.ts.map +1 -1
- package/dist/repositories/local/getObjects.js +31 -7
- package/dist/repositories/local/getObjects.js.map +1 -1
- package/dist/server.js +57 -19
- package/dist/server.js.map +1 -1
- package/dist/services/TaskTrellisService.d.ts +78 -0
- package/dist/services/TaskTrellisService.d.ts.map +1 -0
- package/dist/services/TaskTrellisService.js +3 -0
- package/dist/services/TaskTrellisService.js.map +1 -0
- package/dist/services/local/LocalTaskTrellisService.d.ts +55 -0
- package/dist/services/local/LocalTaskTrellisService.d.ts.map +1 -0
- package/dist/services/local/LocalTaskTrellisService.js +73 -0
- package/dist/services/local/LocalTaskTrellisService.js.map +1 -0
- package/dist/services/local/__tests__/appendAffectedFiles.test.d.ts +2 -0
- package/dist/services/local/__tests__/appendAffectedFiles.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/appendAffectedFiles.test.js +202 -0
- package/dist/services/local/__tests__/appendAffectedFiles.test.js.map +1 -0
- package/dist/services/local/__tests__/appendModifiedFiles.test.d.ts +2 -0
- package/dist/services/local/__tests__/appendModifiedFiles.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/appendModifiedFiles.test.js +162 -0
- package/dist/services/local/__tests__/appendModifiedFiles.test.js.map +1 -0
- package/dist/services/local/__tests__/appendObjectLog.test.d.ts +2 -0
- package/dist/services/local/__tests__/appendObjectLog.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/appendObjectLog.test.js +105 -0
- package/dist/services/local/__tests__/appendObjectLog.test.js.map +1 -0
- package/dist/services/local/__tests__/claimTask.test.d.ts +2 -0
- package/dist/services/local/__tests__/claimTask.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/claimTask.test.js +459 -0
- package/dist/services/local/__tests__/claimTask.test.js.map +1 -0
- package/dist/services/local/__tests__/completeTask.test.d.ts +2 -0
- package/dist/services/local/__tests__/completeTask.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/completeTask.test.js +470 -0
- package/dist/services/local/__tests__/completeTask.test.js.map +1 -0
- package/dist/services/local/__tests__/createObject.test.d.ts +2 -0
- package/dist/services/local/__tests__/createObject.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/createObject.test.js +333 -0
- package/dist/services/local/__tests__/createObject.test.js.map +1 -0
- package/dist/services/local/__tests__/listObjects.test.d.ts +2 -0
- package/dist/services/local/__tests__/listObjects.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/listObjects.test.js +351 -0
- package/dist/services/local/__tests__/listObjects.test.js.map +1 -0
- package/dist/services/local/__tests__/pruneClosed.test.d.ts +2 -0
- package/dist/services/local/__tests__/pruneClosed.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/pruneClosed.test.js +473 -0
- package/dist/services/local/__tests__/pruneClosed.test.js.map +1 -0
- package/dist/services/local/__tests__/updateObject.test.d.ts +2 -0
- package/dist/services/local/__tests__/updateObject.test.d.ts.map +1 -0
- package/dist/services/local/__tests__/updateObject.test.js +521 -0
- package/dist/services/local/__tests__/updateObject.test.js.map +1 -0
- package/dist/services/local/appendAffectedFiles.d.ts +12 -0
- package/dist/services/local/appendAffectedFiles.d.ts.map +1 -0
- package/dist/services/local/appendAffectedFiles.js +34 -0
- package/dist/services/local/appendAffectedFiles.js.map +1 -0
- package/dist/services/local/appendModifiedFiles.d.ts +15 -0
- package/dist/services/local/appendModifiedFiles.d.ts.map +1 -0
- package/dist/services/local/appendModifiedFiles.js +39 -0
- package/dist/services/local/appendModifiedFiles.js.map +1 -0
- package/dist/services/local/appendObjectLog.d.ts +8 -0
- package/dist/services/local/appendObjectLog.d.ts.map +1 -0
- package/dist/services/local/appendObjectLog.js +45 -0
- package/dist/services/local/appendObjectLog.js.map +1 -0
- package/dist/services/local/claimTask.d.ts +8 -0
- package/dist/services/local/claimTask.d.ts.map +1 -0
- package/dist/services/local/claimTask.js +109 -0
- package/dist/services/local/claimTask.js.map +1 -0
- package/dist/services/local/completeTask.d.ts +9 -0
- package/dist/services/local/completeTask.d.ts.map +1 -0
- package/dist/services/local/completeTask.js +38 -0
- package/dist/services/local/completeTask.js.map +1 -0
- package/dist/services/local/createObject.d.ts +9 -0
- package/dist/services/local/createObject.d.ts.map +1 -0
- package/dist/services/local/createObject.js +44 -0
- package/dist/services/local/createObject.js.map +1 -0
- package/dist/services/local/listObjects.d.ts +9 -0
- package/dist/services/local/listObjects.d.ts.map +1 -0
- package/dist/services/local/listObjects.js +52 -0
- package/dist/services/local/listObjects.js.map +1 -0
- package/dist/services/local/pruneClosed.d.ts +8 -0
- package/dist/services/local/pruneClosed.d.ts.map +1 -0
- package/dist/services/local/pruneClosed.js +112 -0
- package/dist/services/local/pruneClosed.js.map +1 -0
- package/dist/services/local/updateObject.d.ts +10 -0
- package/dist/services/local/updateObject.d.ts.map +1 -0
- package/dist/services/local/updateObject.js +80 -0
- package/dist/services/local/updateObject.js.map +1 -0
- package/dist/tools/__tests__/appendModifiedFilesTool.test.d.ts +2 -0
- package/dist/tools/__tests__/appendModifiedFilesTool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/appendModifiedFilesTool.test.js +178 -0
- package/dist/tools/__tests__/appendModifiedFilesTool.test.js.map +1 -0
- package/dist/tools/__tests__/appendObjectLogTool.test.js +34 -101
- package/dist/tools/__tests__/appendObjectLogTool.test.js.map +1 -1
- package/dist/tools/__tests__/claimTaskTool.test.js +98 -311
- package/dist/tools/__tests__/claimTaskTool.test.js.map +1 -1
- package/dist/tools/__tests__/completeTaskTool.test.js +140 -183
- package/dist/tools/__tests__/completeTaskTool.test.js.map +1 -1
- package/dist/tools/__tests__/createObjectTool.test.js +62 -325
- package/dist/tools/__tests__/createObjectTool.test.js.map +1 -1
- package/dist/tools/__tests__/deleteObjectTool.test.js +1 -0
- package/dist/tools/__tests__/deleteObjectTool.test.js.map +1 -1
- package/dist/tools/__tests__/getObjectTool.test.js +1 -0
- package/dist/tools/__tests__/getObjectTool.test.js.map +1 -1
- package/dist/tools/__tests__/listObjectsTool.test.js +228 -108
- package/dist/tools/__tests__/listObjectsTool.test.js.map +1 -1
- package/dist/tools/__tests__/updateObjectTool.test.js +78 -167
- package/dist/tools/__tests__/updateObjectTool.test.js.map +1 -1
- package/dist/tools/appendModifiedFilesTool.d.ts +30 -0
- package/dist/tools/appendModifiedFilesTool.d.ts.map +1 -0
- package/dist/tools/appendModifiedFilesTool.js +55 -0
- package/dist/tools/appendModifiedFilesTool.js.map +1 -0
- package/dist/tools/appendObjectLogTool.d.ts +7 -6
- package/dist/tools/appendObjectLogTool.d.ts.map +1 -1
- package/dist/tools/appendObjectLogTool.js +6 -44
- package/dist/tools/appendObjectLogTool.js.map +1 -1
- package/dist/tools/claimTaskTool.d.ts +4 -3
- package/dist/tools/claimTaskTool.d.ts.map +1 -1
- package/dist/tools/claimTaskTool.js +2 -80
- package/dist/tools/claimTaskTool.js.map +1 -1
- package/dist/tools/completeTaskTool.d.ts +5 -3
- package/dist/tools/completeTaskTool.d.ts.map +1 -1
- package/dist/tools/completeTaskTool.js +3 -29
- package/dist/tools/completeTaskTool.js.map +1 -1
- package/dist/tools/createObjectTool.d.ts +13 -12
- package/dist/tools/createObjectTool.d.ts.map +1 -1
- package/dist/tools/createObjectTool.js +22 -55
- package/dist/tools/createObjectTool.js.map +1 -1
- package/dist/tools/deleteObjectTool.d.ts +3 -3
- package/dist/tools/deleteObjectTool.js +12 -12
- package/dist/tools/deleteObjectTool.js.map +1 -1
- package/dist/tools/getObjectTool.d.ts +3 -3
- package/dist/tools/getObjectTool.d.ts.map +1 -1
- package/dist/tools/getObjectTool.js +12 -7
- package/dist/tools/getObjectTool.js.map +1 -1
- package/dist/tools/index.d.ts +7 -8
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +22 -25
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/listObjectsTool.d.ts +24 -14
- package/dist/tools/listObjectsTool.d.ts.map +1 -1
- package/dist/tools/listObjectsTool.js +114 -50
- package/dist/tools/listObjectsTool.js.map +1 -1
- package/dist/tools/updateObjectTool.d.ts +15 -9
- package/dist/tools/updateObjectTool.d.ts.map +1 -1
- package/dist/tools/updateObjectTool.js +20 -60
- package/dist/tools/updateObjectTool.js.map +1 -1
- package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.d.ts +2 -0
- package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.d.ts.map +1 -0
- package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.js +206 -0
- package/dist/utils/__tests__/checkHierarchicalPrerequisitesComplete.test.js.map +1 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.js +5 -0
- package/dist/utils/__tests__/checkPrerequisitesComplete.test.js.map +1 -1
- package/dist/utils/__tests__/filterUnavailableObjects.test.js +51 -25
- package/dist/utils/__tests__/filterUnavailableObjects.test.js.map +1 -1
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.js +5 -0
- package/dist/utils/__tests__/isRequiredForOtherObjects.test.js.map +1 -1
- package/dist/utils/__tests__/updateParentHierarchy.test.d.ts +2 -0
- package/dist/utils/__tests__/updateParentHierarchy.test.d.ts.map +1 -0
- package/dist/utils/__tests__/updateParentHierarchy.test.js +137 -0
- package/dist/utils/__tests__/updateParentHierarchy.test.js.map +1 -0
- package/dist/utils/autoCompleteParentHierarchy.d.ts +11 -0
- package/dist/utils/autoCompleteParentHierarchy.d.ts.map +1 -0
- package/dist/utils/autoCompleteParentHierarchy.js +49 -0
- package/dist/utils/autoCompleteParentHierarchy.js.map +1 -0
- package/dist/utils/checkHierarchicalPrerequisitesComplete.d.ts +14 -0
- package/dist/utils/checkHierarchicalPrerequisitesComplete.d.ts.map +1 -0
- package/dist/utils/checkHierarchicalPrerequisitesComplete.js +47 -0
- package/dist/utils/checkHierarchicalPrerequisitesComplete.js.map +1 -0
- package/dist/utils/filterUnavailableObjects.d.ts +6 -4
- package/dist/utils/filterUnavailableObjects.d.ts.map +1 -1
- package/dist/utils/filterUnavailableObjects.js +16 -22
- package/dist/utils/filterUnavailableObjects.js.map +1 -1
- package/dist/utils/index.d.ts +3 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +7 -3
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/updateParentHierarchy.d.ts +11 -0
- package/dist/utils/updateParentHierarchy.d.ts.map +1 -0
- package/dist/utils/updateParentHierarchy.js +40 -0
- package/dist/utils/updateParentHierarchy.js.map +1 -0
- package/dist/validation/__tests__/validateObjectCreation.test.js +1 -0
- package/dist/validation/__tests__/validateObjectCreation.test.js.map +1 -1
- package/dist/validation/__tests__/validateParentExists.test.js +1 -0
- package/dist/validation/__tests__/validateParentExists.test.js.map +1 -1
- package/dist/validation/__tests__/validateParentType.test.js +5 -5
- package/dist/validation/__tests__/validateParentType.test.js.map +1 -1
- package/dist/validation/__tests__/validateStatusTransition.test.js +1 -0
- package/dist/validation/__tests__/validateStatusTransition.test.js.map +1 -1
- package/dist/validation/validateParentType.d.ts +1 -1
- package/dist/validation/validateParentType.d.ts.map +1 -1
- package/dist/validation/validateParentType.js +2 -5
- package/dist/validation/validateParentType.js.map +1 -1
- package/package.json +1 -1
- package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.d.ts +0 -2
- package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.d.ts.map +0 -1
- package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.js +0 -693
- package/dist/__tests__/e2e/crud/replaceObjectBodyRegex.e2e.test.js.map +0 -1
- package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.d.ts +0 -2
- package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.d.ts.map +0 -1
- package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.js +0 -352
- package/dist/__tests__/e2e/workflow/pruneClosed.e2e.test.js.map +0 -1
- package/dist/tools/__tests__/pruneClosedTool.test.d.ts +0 -2
- package/dist/tools/__tests__/pruneClosedTool.test.d.ts.map +0 -1
- package/dist/tools/__tests__/pruneClosedTool.test.js +0 -171
- package/dist/tools/__tests__/pruneClosedTool.test.js.map +0 -1
- package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.d.ts +0 -2
- package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.d.ts.map +0 -1
- package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.js +0 -258
- package/dist/tools/__tests__/replaceObjectBodyRegexTool.test.js.map +0 -1
- package/dist/tools/pruneClosedTool.d.ts +0 -26
- package/dist/tools/pruneClosedTool.d.ts.map +0 -1
- package/dist/tools/pruneClosedTool.js +0 -106
- package/dist/tools/pruneClosedTool.js.map +0 -1
- package/dist/tools/replaceObjectBodyRegexTool.d.ts +0 -35
- package/dist/tools/replaceObjectBodyRegexTool.d.ts.map +0 -1
- package/dist/tools/replaceObjectBodyRegexTool.js +0 -145
- package/dist/tools/replaceObjectBodyRegexTool.js.map +0 -1
- package/dist/utils/ReplaceStringOptions.d.ts +0 -12
- package/dist/utils/ReplaceStringOptions.d.ts.map +0 -1
- package/dist/utils/ReplaceStringOptions.js.map +0 -1
- package/dist/utils/__tests__/replaceStringWithRegex.test.d.ts +0 -2
- package/dist/utils/__tests__/replaceStringWithRegex.test.d.ts.map +0 -1
- package/dist/utils/__tests__/replaceStringWithRegex.test.js +0 -281
- package/dist/utils/__tests__/replaceStringWithRegex.test.js.map +0 -1
- package/dist/utils/replaceStringWithRegex.d.ts +0 -45
- package/dist/utils/replaceStringWithRegex.d.ts.map +0 -1
- package/dist/utils/replaceStringWithRegex.js +0 -91
- package/dist/utils/replaceStringWithRegex.js.map +0 -1
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const TrellisObjectType_1 = require("../../models/TrellisObjectType");
|
|
4
|
+
const TrellisObjectStatus_1 = require("../../models/TrellisObjectStatus");
|
|
5
|
+
const TrellisObjectPriority_1 = require("../../models/TrellisObjectPriority");
|
|
6
|
+
const updateParentHierarchy_1 = require("../updateParentHierarchy");
|
|
7
|
+
describe("updateParentHierarchy", () => {
|
|
8
|
+
let mockRepository;
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
mockRepository = {
|
|
11
|
+
getObjectById: jest.fn(),
|
|
12
|
+
getObjects: jest.fn(),
|
|
13
|
+
saveObject: jest.fn(),
|
|
14
|
+
deleteObject: jest.fn(),
|
|
15
|
+
getChildrenOf: jest.fn(),
|
|
16
|
+
};
|
|
17
|
+
jest.clearAllMocks();
|
|
18
|
+
});
|
|
19
|
+
const createMockObject = (id, status = TrellisObjectStatus_1.TrellisObjectStatus.OPEN, parent) => ({
|
|
20
|
+
id,
|
|
21
|
+
type: TrellisObjectType_1.TrellisObjectType.TASK,
|
|
22
|
+
title: `Test ${id}`,
|
|
23
|
+
status,
|
|
24
|
+
priority: TrellisObjectPriority_1.TrellisObjectPriority.MEDIUM,
|
|
25
|
+
parent,
|
|
26
|
+
prerequisites: [],
|
|
27
|
+
affectedFiles: new Map(),
|
|
28
|
+
log: [],
|
|
29
|
+
schema: "v1.0",
|
|
30
|
+
childrenIds: [],
|
|
31
|
+
created: "2023-01-01T00:00:00.000Z",
|
|
32
|
+
updated: "2023-01-01T00:00:00.000Z",
|
|
33
|
+
body: "",
|
|
34
|
+
});
|
|
35
|
+
describe("when parentId is undefined", () => {
|
|
36
|
+
it("should return early without making any repository calls", async () => {
|
|
37
|
+
await (0, updateParentHierarchy_1.updateParentHierarchy)(undefined, mockRepository);
|
|
38
|
+
expect(mockRepository.getObjectById).not.toHaveBeenCalled();
|
|
39
|
+
expect(mockRepository.saveObject).not.toHaveBeenCalled();
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
describe("when parent does not exist", () => {
|
|
43
|
+
it("should return early without making save calls", async () => {
|
|
44
|
+
mockRepository.getObjectById.mockResolvedValue(null);
|
|
45
|
+
await (0, updateParentHierarchy_1.updateParentHierarchy)("P-parent", mockRepository);
|
|
46
|
+
expect(mockRepository.getObjectById).toHaveBeenCalledWith("P-parent");
|
|
47
|
+
expect(mockRepository.saveObject).not.toHaveBeenCalled();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe("when parent is already in progress", () => {
|
|
51
|
+
it("should return early without making save calls", async () => {
|
|
52
|
+
const parentObject = createMockObject("P-parent", TrellisObjectStatus_1.TrellisObjectStatus.IN_PROGRESS);
|
|
53
|
+
mockRepository.getObjectById.mockResolvedValue(parentObject);
|
|
54
|
+
await (0, updateParentHierarchy_1.updateParentHierarchy)("P-parent", mockRepository);
|
|
55
|
+
expect(mockRepository.getObjectById).toHaveBeenCalledWith("P-parent");
|
|
56
|
+
expect(mockRepository.saveObject).not.toHaveBeenCalled();
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe("when parent needs to be updated", () => {
|
|
60
|
+
it("should update parent status to in-progress", async () => {
|
|
61
|
+
const parentObject = createMockObject("P-parent", TrellisObjectStatus_1.TrellisObjectStatus.OPEN);
|
|
62
|
+
mockRepository.getObjectById.mockResolvedValue(parentObject);
|
|
63
|
+
await (0, updateParentHierarchy_1.updateParentHierarchy)("P-parent", mockRepository);
|
|
64
|
+
expect(mockRepository.getObjectById).toHaveBeenCalledWith("P-parent");
|
|
65
|
+
expect(mockRepository.saveObject).toHaveBeenCalledWith({
|
|
66
|
+
...parentObject,
|
|
67
|
+
status: TrellisObjectStatus_1.TrellisObjectStatus.IN_PROGRESS,
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
it("should update parent hierarchy recursively", async () => {
|
|
71
|
+
const grandParentObject = createMockObject("GP-grandparent", TrellisObjectStatus_1.TrellisObjectStatus.OPEN);
|
|
72
|
+
const parentObject = createMockObject("P-parent", TrellisObjectStatus_1.TrellisObjectStatus.OPEN, "GP-grandparent");
|
|
73
|
+
mockRepository.getObjectById
|
|
74
|
+
.mockResolvedValueOnce(parentObject)
|
|
75
|
+
.mockResolvedValueOnce(grandParentObject);
|
|
76
|
+
await (0, updateParentHierarchy_1.updateParentHierarchy)("P-parent", mockRepository);
|
|
77
|
+
expect(mockRepository.getObjectById).toHaveBeenCalledWith("P-parent");
|
|
78
|
+
expect(mockRepository.getObjectById).toHaveBeenCalledWith("GP-grandparent");
|
|
79
|
+
expect(mockRepository.saveObject).toHaveBeenCalledWith({
|
|
80
|
+
...parentObject,
|
|
81
|
+
status: TrellisObjectStatus_1.TrellisObjectStatus.IN_PROGRESS,
|
|
82
|
+
});
|
|
83
|
+
expect(mockRepository.saveObject).toHaveBeenCalledWith({
|
|
84
|
+
...grandParentObject,
|
|
85
|
+
status: TrellisObjectStatus_1.TrellisObjectStatus.IN_PROGRESS,
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
it("should stop recursion when encountering an already in-progress parent", async () => {
|
|
89
|
+
const grandParentObject = createMockObject("GP-grandparent", TrellisObjectStatus_1.TrellisObjectStatus.IN_PROGRESS);
|
|
90
|
+
const parentObject = createMockObject("P-parent", TrellisObjectStatus_1.TrellisObjectStatus.OPEN, "GP-grandparent");
|
|
91
|
+
mockRepository.getObjectById
|
|
92
|
+
.mockResolvedValueOnce(parentObject)
|
|
93
|
+
.mockResolvedValueOnce(grandParentObject);
|
|
94
|
+
await (0, updateParentHierarchy_1.updateParentHierarchy)("P-parent", mockRepository);
|
|
95
|
+
expect(mockRepository.getObjectById).toHaveBeenCalledWith("P-parent");
|
|
96
|
+
expect(mockRepository.getObjectById).toHaveBeenCalledWith("GP-grandparent");
|
|
97
|
+
expect(mockRepository.saveObject).toHaveBeenCalledTimes(1);
|
|
98
|
+
expect(mockRepository.saveObject).toHaveBeenCalledWith({
|
|
99
|
+
...parentObject,
|
|
100
|
+
status: TrellisObjectStatus_1.TrellisObjectStatus.IN_PROGRESS,
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
describe("infinite recursion prevention", () => {
|
|
105
|
+
it("should prevent infinite recursion with visited IDs", async () => {
|
|
106
|
+
const parentObject = createMockObject("P-parent", TrellisObjectStatus_1.TrellisObjectStatus.OPEN, "P-parent");
|
|
107
|
+
mockRepository.getObjectById.mockResolvedValue(parentObject);
|
|
108
|
+
await (0, updateParentHierarchy_1.updateParentHierarchy)("P-parent", mockRepository);
|
|
109
|
+
expect(mockRepository.getObjectById).toHaveBeenCalledTimes(1);
|
|
110
|
+
expect(mockRepository.saveObject).toHaveBeenCalledTimes(1);
|
|
111
|
+
});
|
|
112
|
+
it("should handle circular references in parent hierarchy", async () => {
|
|
113
|
+
const parentA = createMockObject("P-A", TrellisObjectStatus_1.TrellisObjectStatus.OPEN, "P-B");
|
|
114
|
+
const parentB = createMockObject("P-B", TrellisObjectStatus_1.TrellisObjectStatus.OPEN, "P-A");
|
|
115
|
+
mockRepository.getObjectById.mockImplementation((id) => {
|
|
116
|
+
if (id === "P-A")
|
|
117
|
+
return Promise.resolve(parentA);
|
|
118
|
+
if (id === "P-B")
|
|
119
|
+
return Promise.resolve(parentB);
|
|
120
|
+
return Promise.resolve(null);
|
|
121
|
+
});
|
|
122
|
+
await (0, updateParentHierarchy_1.updateParentHierarchy)("P-A", mockRepository);
|
|
123
|
+
expect(mockRepository.getObjectById).toHaveBeenCalledWith("P-A");
|
|
124
|
+
expect(mockRepository.getObjectById).toHaveBeenCalledWith("P-B");
|
|
125
|
+
expect(mockRepository.saveObject).toHaveBeenCalledTimes(2);
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
describe("with custom visited IDs set", () => {
|
|
129
|
+
it("should respect pre-existing visited IDs", async () => {
|
|
130
|
+
const visitedIds = new Set(["P-parent"]);
|
|
131
|
+
await (0, updateParentHierarchy_1.updateParentHierarchy)("P-parent", mockRepository, visitedIds);
|
|
132
|
+
expect(mockRepository.getObjectById).not.toHaveBeenCalled();
|
|
133
|
+
expect(mockRepository.saveObject).not.toHaveBeenCalled();
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
//# sourceMappingURL=updateParentHierarchy.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateParentHierarchy.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/updateParentHierarchy.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TrellisObject } from "../models";
|
|
2
|
+
import { Repository } from "../repositories";
|
|
3
|
+
/**
|
|
4
|
+
* Auto-completes parent objects when all their children are done or won't-do.
|
|
5
|
+
* This recursively moves up the hierarchy, marking parents as done when appropriate.
|
|
6
|
+
*
|
|
7
|
+
* @param repository - The repository instance
|
|
8
|
+
* @param completedObject - The object that was just completed
|
|
9
|
+
*/
|
|
10
|
+
export declare function autoCompleteParentHierarchy(repository: Repository, completedObject: TrellisObject): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=autoCompleteParentHierarchy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoCompleteParentHierarchy.d.ts","sourceRoot":"","sources":["../../src/utils/autoCompleteParentHierarchy.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAGd,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,aAAa,GAC7B,OAAO,CAAC,IAAI,CAAC,CAsCf"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.autoCompleteParentHierarchy = autoCompleteParentHierarchy;
|
|
4
|
+
const models_1 = require("../models");
|
|
5
|
+
/**
|
|
6
|
+
* Auto-completes parent objects when all their children are done or won't-do.
|
|
7
|
+
* This recursively moves up the hierarchy, marking parents as done when appropriate.
|
|
8
|
+
*
|
|
9
|
+
* @param repository - The repository instance
|
|
10
|
+
* @param completedObject - The object that was just completed
|
|
11
|
+
*/
|
|
12
|
+
async function autoCompleteParentHierarchy(repository, completedObject) {
|
|
13
|
+
// If the completed object has no parent, nothing to do
|
|
14
|
+
if (!completedObject.parent) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
// Get the parent object
|
|
18
|
+
const parent = await repository.getObjectById(completedObject.parent);
|
|
19
|
+
if (!parent) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
// Check if all children of the parent are done
|
|
23
|
+
const siblings = await Promise.all(parent.childrenIds.map((id) => repository.getObjectById(id)));
|
|
24
|
+
// Filter out null results and check if all are done
|
|
25
|
+
const validSiblings = siblings.filter((sibling) => sibling !== null);
|
|
26
|
+
const allChildrenDone = validSiblings.every((sibling) => sibling.status === models_1.TrellisObjectStatus.DONE ||
|
|
27
|
+
sibling.status === models_1.TrellisObjectStatus.WONT_DO);
|
|
28
|
+
// If all children are done, mark the parent as done and recurse up the hierarchy
|
|
29
|
+
if (allChildrenDone && parent.status !== models_1.TrellisObjectStatus.DONE) {
|
|
30
|
+
parent.status = models_1.TrellisObjectStatus.DONE;
|
|
31
|
+
parent.log.push(`Auto-completed: All child ${getChildTypeName(parent.type)} are complete`);
|
|
32
|
+
await repository.saveObject(parent);
|
|
33
|
+
// Recursively check the parent's parent
|
|
34
|
+
await autoCompleteParentHierarchy(repository, parent);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function getChildTypeName(parentType) {
|
|
38
|
+
switch (parentType) {
|
|
39
|
+
case models_1.TrellisObjectType.PROJECT:
|
|
40
|
+
return "epics";
|
|
41
|
+
case models_1.TrellisObjectType.EPIC:
|
|
42
|
+
return "features";
|
|
43
|
+
case models_1.TrellisObjectType.FEATURE:
|
|
44
|
+
return "tasks";
|
|
45
|
+
default:
|
|
46
|
+
return "children";
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=autoCompleteParentHierarchy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoCompleteParentHierarchy.js","sourceRoot":"","sources":["../../src/utils/autoCompleteParentHierarchy.ts"],"names":[],"mappings":";;AAcA,kEAyCC;AAvDD,sCAImB;AAGnB;;;;;;GAMG;AACI,KAAK,UAAU,2BAA2B,CAC/C,UAAsB,EACtB,eAA8B;IAE9B,uDAAuD;IACvD,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,wBAAwB;IACxB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACtE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,+CAA+C;IAC/C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAC7D,CAAC;IAEF,oDAAoD;IACpD,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CACnC,CAAC,OAAO,EAA4B,EAAE,CAAC,OAAO,KAAK,IAAI,CACxD,CAAC;IACF,MAAM,eAAe,GAAG,aAAa,CAAC,KAAK,CACzC,CAAC,OAAO,EAAE,EAAE,CACV,OAAO,CAAC,MAAM,KAAK,4BAAmB,CAAC,IAAI;QAC3C,OAAO,CAAC,MAAM,KAAK,4BAAmB,CAAC,OAAO,CACjD,CAAC;IAEF,iFAAiF;IACjF,IAAI,eAAe,IAAI,MAAM,CAAC,MAAM,KAAK,4BAAmB,CAAC,IAAI,EAAE,CAAC;QAClE,MAAM,CAAC,MAAM,GAAG,4BAAmB,CAAC,IAAI,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,IAAI,CACb,6BAA6B,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAC1E,CAAC;QACF,MAAM,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAEpC,wCAAwC;QACxC,MAAM,2BAA2B,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,UAA6B;IACrD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,0BAAiB,CAAC,OAAO;YAC5B,OAAO,OAAO,CAAC;QACjB,KAAK,0BAAiB,CAAC,IAAI;YACzB,OAAO,UAAU,CAAC;QACpB,KAAK,0BAAiB,CAAC,OAAO;YAC5B,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,UAAU,CAAC;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TrellisObject } from "../models/TrellisObject";
|
|
2
|
+
import { Repository } from "../repositories/Repository";
|
|
3
|
+
/**
|
|
4
|
+
* Checks if all prerequisites for a trellis object and its entire parent hierarchy are complete.
|
|
5
|
+
* This function recursively traverses up the parent hierarchy to ensure that if a parent has
|
|
6
|
+
* incomplete prerequisites, all its child tasks are excluded from being claimable.
|
|
7
|
+
*
|
|
8
|
+
* @param trellisObject - The trellis object to check prerequisites for
|
|
9
|
+
* @param repository - The repository to load prerequisite and parent objects from
|
|
10
|
+
* @param visitedIds - Set to prevent circular references (default: new Set())
|
|
11
|
+
* @returns Promise<boolean> - true if all prerequisites at all hierarchy levels are complete, false otherwise
|
|
12
|
+
*/
|
|
13
|
+
export declare function checkHierarchicalPrerequisitesComplete(trellisObject: TrellisObject, repository: Repository, visitedIds?: Set<string>): Promise<boolean>;
|
|
14
|
+
//# sourceMappingURL=checkHierarchicalPrerequisitesComplete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkHierarchicalPrerequisitesComplete.d.ts","sourceRoot":"","sources":["../../src/utils/checkHierarchicalPrerequisitesComplete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD;;;;;;;;;GASG;AACH,wBAAsB,sCAAsC,CAC1D,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,UAAU,GAAE,GAAG,CAAC,MAAM,CAAa,GAClC,OAAO,CAAC,OAAO,CAAC,CA8ClB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkHierarchicalPrerequisitesComplete = checkHierarchicalPrerequisitesComplete;
|
|
4
|
+
const checkPrerequisitesComplete_1 = require("./checkPrerequisitesComplete");
|
|
5
|
+
/**
|
|
6
|
+
* Checks if all prerequisites for a trellis object and its entire parent hierarchy are complete.
|
|
7
|
+
* This function recursively traverses up the parent hierarchy to ensure that if a parent has
|
|
8
|
+
* incomplete prerequisites, all its child tasks are excluded from being claimable.
|
|
9
|
+
*
|
|
10
|
+
* @param trellisObject - The trellis object to check prerequisites for
|
|
11
|
+
* @param repository - The repository to load prerequisite and parent objects from
|
|
12
|
+
* @param visitedIds - Set to prevent circular references (default: new Set())
|
|
13
|
+
* @returns Promise<boolean> - true if all prerequisites at all hierarchy levels are complete, false otherwise
|
|
14
|
+
*/
|
|
15
|
+
async function checkHierarchicalPrerequisitesComplete(trellisObject, repository, visitedIds = new Set()) {
|
|
16
|
+
// Prevent infinite loops from circular references
|
|
17
|
+
if (visitedIds.has(trellisObject.id)) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
visitedIds.add(trellisObject.id);
|
|
21
|
+
// First check the object's own prerequisites
|
|
22
|
+
const ownPrerequisitesComplete = await (0, checkPrerequisitesComplete_1.checkPrerequisitesComplete)(trellisObject, repository);
|
|
23
|
+
if (!ownPrerequisitesComplete) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
// If the object has a parent, recursively check its prerequisites
|
|
27
|
+
if (trellisObject.parent) {
|
|
28
|
+
try {
|
|
29
|
+
const parent = await repository.getObjectById(trellisObject.parent);
|
|
30
|
+
// If parent doesn't exist, treat as complete (graceful handling)
|
|
31
|
+
if (!parent) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
// Recursively check parent's hierarchical prerequisites
|
|
35
|
+
const parentPrerequisitesComplete = await checkHierarchicalPrerequisitesComplete(parent, repository, visitedIds);
|
|
36
|
+
if (!parentPrerequisitesComplete) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// If we can't load the parent, treat as complete (graceful handling)
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=checkHierarchicalPrerequisitesComplete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkHierarchicalPrerequisitesComplete.js","sourceRoot":"","sources":["../../src/utils/checkHierarchicalPrerequisitesComplete.ts"],"names":[],"mappings":";;AAcA,wFAkDC;AA9DD,6EAA0E;AAE1E;;;;;;;;;GASG;AACI,KAAK,UAAU,sCAAsC,CAC1D,aAA4B,EAC5B,UAAsB,EACtB,aAA0B,IAAI,GAAG,EAAE;IAEnC,kDAAkD;IAClD,IAAI,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,UAAU,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAEjC,6CAA6C;IAC7C,MAAM,wBAAwB,GAAG,MAAM,IAAA,uDAA0B,EAC/D,aAAa,EACb,UAAU,CACX,CAAC;IAEF,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kEAAkE;IAClE,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAEpE,iEAAiE;YACjE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,IAAI,CAAC;YACd,CAAC;YAED,wDAAwD;YACxD,MAAM,2BAA2B,GAC/B,MAAM,sCAAsC,CAC1C,MAAM,EACN,UAAU,EACV,UAAU,CACX,CAAC;YAEJ,IAAI,CAAC,2BAA2B,EAAE,CAAC;gBACjC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import { TrellisObject } from "../models/TrellisObject";
|
|
2
|
+
import { Repository } from "../repositories/Repository";
|
|
2
3
|
/**
|
|
3
4
|
* Filters a list of TrellisObjects to return only those that are available to work on.
|
|
4
5
|
*
|
|
5
6
|
* An object is considered unavailable if:
|
|
6
|
-
* 1. It doesn't have a status
|
|
7
|
-
* 2. It has prerequisites that
|
|
7
|
+
* 1. It doesn't have a claimable status (e.g., "open")
|
|
8
|
+
* 2. It has prerequisites that are incomplete (including hierarchical prerequisites)
|
|
8
9
|
*
|
|
9
10
|
* @param objects - Array of TrellisObjects to filter
|
|
10
|
-
* @
|
|
11
|
+
* @param repository - Repository for loading parent objects and checking prerequisites
|
|
12
|
+
* @returns Promise<Array<TrellisObject>> - Array of available TrellisObjects
|
|
11
13
|
*/
|
|
12
|
-
export declare function filterUnavailableObjects(objects: TrellisObject[]): TrellisObject[]
|
|
14
|
+
export declare function filterUnavailableObjects(objects: TrellisObject[], repository: Repository): Promise<TrellisObject[]>;
|
|
13
15
|
//# sourceMappingURL=filterUnavailableObjects.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterUnavailableObjects.d.ts","sourceRoot":"","sources":["../../src/utils/filterUnavailableObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"filterUnavailableObjects.d.ts","sourceRoot":"","sources":["../../src/utils/filterUnavailableObjects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,aAAa,EAAE,EACxB,UAAU,EAAE,UAAU,GACrB,OAAO,CAAC,aAAa,EAAE,CAAC,CAsB1B"}
|
|
@@ -2,38 +2,32 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.filterUnavailableObjects = filterUnavailableObjects;
|
|
4
4
|
const models_1 = require("../models");
|
|
5
|
+
const checkHierarchicalPrerequisitesComplete_1 = require("./checkHierarchicalPrerequisitesComplete");
|
|
5
6
|
/**
|
|
6
7
|
* Filters a list of TrellisObjects to return only those that are available to work on.
|
|
7
8
|
*
|
|
8
9
|
* An object is considered unavailable if:
|
|
9
|
-
* 1. It doesn't have a status
|
|
10
|
-
* 2. It has prerequisites that
|
|
10
|
+
* 1. It doesn't have a claimable status (e.g., "open")
|
|
11
|
+
* 2. It has prerequisites that are incomplete (including hierarchical prerequisites)
|
|
11
12
|
*
|
|
12
13
|
* @param objects - Array of TrellisObjects to filter
|
|
13
|
-
* @
|
|
14
|
+
* @param repository - Repository for loading parent objects and checking prerequisites
|
|
15
|
+
* @returns Promise<Array<TrellisObject>> - Array of available TrellisObjects
|
|
14
16
|
*/
|
|
15
|
-
function filterUnavailableObjects(objects) {
|
|
16
|
-
//
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
return objects.filter((obj) => {
|
|
17
|
+
async function filterUnavailableObjects(objects, repository) {
|
|
18
|
+
// Filter objects asynchronously using hierarchical prerequisite checking
|
|
19
|
+
const availableObjects = [];
|
|
20
|
+
for (const obj of objects) {
|
|
20
21
|
// Rule 1: Object must be claimable
|
|
21
22
|
if (!(0, models_1.isClaimable)(obj)) {
|
|
22
|
-
|
|
23
|
+
continue;
|
|
23
24
|
}
|
|
24
|
-
// Rule 2: Check prerequisites
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (!prerequisiteObj) {
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
// If prerequisite is open, exclude this object
|
|
32
|
-
if ((0, models_1.isOpen)(prerequisiteObj)) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
25
|
+
// Rule 2: Check hierarchical prerequisites
|
|
26
|
+
const prereqsComplete = await (0, checkHierarchicalPrerequisitesComplete_1.checkHierarchicalPrerequisitesComplete)(obj, repository);
|
|
27
|
+
if (prereqsComplete) {
|
|
28
|
+
availableObjects.push(obj);
|
|
35
29
|
}
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
}
|
|
31
|
+
return availableObjects;
|
|
38
32
|
}
|
|
39
33
|
//# sourceMappingURL=filterUnavailableObjects.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterUnavailableObjects.js","sourceRoot":"","sources":["../../src/utils/filterUnavailableObjects.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"filterUnavailableObjects.js","sourceRoot":"","sources":["../../src/utils/filterUnavailableObjects.ts"],"names":[],"mappings":";;AAgBA,4DAyBC;AAzCD,sCAAwC;AAGxC,qGAAkG;AAElG;;;;;;;;;;GAUG;AACI,KAAK,UAAU,wBAAwB,CAC5C,OAAwB,EACxB,UAAsB;IAEtB,yEAAyE;IACzE,MAAM,gBAAgB,GAAoB,EAAE,CAAC;IAE7C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,mCAAmC;QACnC,IAAI,CAAC,IAAA,oBAAW,EAAC,GAAG,CAAC,EAAE,CAAC;YACtB,SAAS;QACX,CAAC;QAED,2CAA2C;QAC3C,MAAM,eAAe,GAAG,MAAM,IAAA,+EAAsC,EAClE,GAAG,EACH,UAAU,CACX,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YACpB,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { checkHierarchicalPrerequisitesComplete } from "./checkHierarchicalPrerequisitesComplete";
|
|
1
2
|
export { checkPrerequisitesComplete } from "./checkPrerequisitesComplete";
|
|
2
3
|
export { deserializeTrellisObject } from "./deserializeTrellisObject";
|
|
3
4
|
export { filterUnavailableObjects } from "./filterUnavailableObjects";
|
|
@@ -5,8 +6,8 @@ export { generateUniqueId } from "./generateUniqueId";
|
|
|
5
6
|
export { inferObjectType } from "./inferObjectType";
|
|
6
7
|
export { isRequiredForOtherObjects } from "./isRequiredForOtherObjects";
|
|
7
8
|
export { MultipleMatchesError } from "./MultipleMatchesError";
|
|
8
|
-
export { replaceStringWithRegex } from "./replaceStringWithRegex";
|
|
9
|
-
export type { ReplaceStringOptions } from "./ReplaceStringOptions";
|
|
10
9
|
export { serializeTrellisObject } from "./serializeTrellisObject";
|
|
11
10
|
export { sortTrellisObjects } from "./sortTrellisObjects";
|
|
11
|
+
export { updateParentHierarchy } from "./updateParentHierarchy";
|
|
12
|
+
export { autoCompleteParentHierarchy } from "./autoCompleteParentHierarchy";
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sCAAsC,EAAE,MAAM,0CAA0C,CAAC;AAClG,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.autoCompleteParentHierarchy = exports.updateParentHierarchy = exports.sortTrellisObjects = exports.serializeTrellisObject = exports.MultipleMatchesError = exports.isRequiredForOtherObjects = exports.inferObjectType = exports.generateUniqueId = exports.filterUnavailableObjects = exports.deserializeTrellisObject = exports.checkPrerequisitesComplete = exports.checkHierarchicalPrerequisitesComplete = void 0;
|
|
4
|
+
var checkHierarchicalPrerequisitesComplete_1 = require("./checkHierarchicalPrerequisitesComplete");
|
|
5
|
+
Object.defineProperty(exports, "checkHierarchicalPrerequisitesComplete", { enumerable: true, get: function () { return checkHierarchicalPrerequisitesComplete_1.checkHierarchicalPrerequisitesComplete; } });
|
|
4
6
|
var checkPrerequisitesComplete_1 = require("./checkPrerequisitesComplete");
|
|
5
7
|
Object.defineProperty(exports, "checkPrerequisitesComplete", { enumerable: true, get: function () { return checkPrerequisitesComplete_1.checkPrerequisitesComplete; } });
|
|
6
8
|
var deserializeTrellisObject_1 = require("./deserializeTrellisObject");
|
|
@@ -15,10 +17,12 @@ var isRequiredForOtherObjects_1 = require("./isRequiredForOtherObjects");
|
|
|
15
17
|
Object.defineProperty(exports, "isRequiredForOtherObjects", { enumerable: true, get: function () { return isRequiredForOtherObjects_1.isRequiredForOtherObjects; } });
|
|
16
18
|
var MultipleMatchesError_1 = require("./MultipleMatchesError");
|
|
17
19
|
Object.defineProperty(exports, "MultipleMatchesError", { enumerable: true, get: function () { return MultipleMatchesError_1.MultipleMatchesError; } });
|
|
18
|
-
var replaceStringWithRegex_1 = require("./replaceStringWithRegex");
|
|
19
|
-
Object.defineProperty(exports, "replaceStringWithRegex", { enumerable: true, get: function () { return replaceStringWithRegex_1.replaceStringWithRegex; } });
|
|
20
20
|
var serializeTrellisObject_1 = require("./serializeTrellisObject");
|
|
21
21
|
Object.defineProperty(exports, "serializeTrellisObject", { enumerable: true, get: function () { return serializeTrellisObject_1.serializeTrellisObject; } });
|
|
22
22
|
var sortTrellisObjects_1 = require("./sortTrellisObjects");
|
|
23
23
|
Object.defineProperty(exports, "sortTrellisObjects", { enumerable: true, get: function () { return sortTrellisObjects_1.sortTrellisObjects; } });
|
|
24
|
+
var updateParentHierarchy_1 = require("./updateParentHierarchy");
|
|
25
|
+
Object.defineProperty(exports, "updateParentHierarchy", { enumerable: true, get: function () { return updateParentHierarchy_1.updateParentHierarchy; } });
|
|
26
|
+
var autoCompleteParentHierarchy_1 = require("./autoCompleteParentHierarchy");
|
|
27
|
+
Object.defineProperty(exports, "autoCompleteParentHierarchy", { enumerable: true, get: function () { return autoCompleteParentHierarchy_1.autoCompleteParentHierarchy; } });
|
|
24
28
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,2EAA0E;AAAjE,wIAAA,0BAA0B,OAAA;AACnC,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,mGAAkG;AAAzF,gKAAA,sCAAsC,OAAA;AAC/C,2EAA0E;AAAjE,wIAAA,0BAA0B,OAAA;AACnC,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,uDAAsD;AAA7C,oHAAA,gBAAgB,OAAA;AACzB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA;AAClC,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAC/B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,6EAA4E;AAAnE,0IAAA,2BAA2B,OAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Repository } from "../repositories";
|
|
2
|
+
/**
|
|
3
|
+
* Updates the parent hierarchy to in-progress status when a task becomes in-progress.
|
|
4
|
+
* This ensures that parent objects reflect that work is being done on their children.
|
|
5
|
+
*
|
|
6
|
+
* @param parentId - The ID of the parent object to update
|
|
7
|
+
* @param repository - The repository instance
|
|
8
|
+
* @param visitedIds - Set of visited IDs to prevent infinite recursion
|
|
9
|
+
*/
|
|
10
|
+
export declare function updateParentHierarchy(parentId: string | undefined, repository: Repository, visitedIds?: Set<string>): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=updateParentHierarchy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateParentHierarchy.d.ts","sourceRoot":"","sources":["../../src/utils/updateParentHierarchy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,UAAU,EAAE,UAAU,EACtB,UAAU,GAAE,GAAG,CAAC,MAAM,CAAa,GAClC,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateParentHierarchy = updateParentHierarchy;
|
|
4
|
+
const models_1 = require("../models");
|
|
5
|
+
/**
|
|
6
|
+
* Updates the parent hierarchy to in-progress status when a task becomes in-progress.
|
|
7
|
+
* This ensures that parent objects reflect that work is being done on their children.
|
|
8
|
+
*
|
|
9
|
+
* @param parentId - The ID of the parent object to update
|
|
10
|
+
* @param repository - The repository instance
|
|
11
|
+
* @param visitedIds - Set of visited IDs to prevent infinite recursion
|
|
12
|
+
*/
|
|
13
|
+
async function updateParentHierarchy(parentId, repository, visitedIds = new Set()) {
|
|
14
|
+
if (!parentId) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
// Prevent infinite recursion by checking if we've already visited this ID
|
|
18
|
+
if (visitedIds.has(parentId)) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
visitedIds.add(parentId);
|
|
22
|
+
const parent = await repository.getObjectById(parentId);
|
|
23
|
+
if (!parent) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
// If parent is already in progress, we can stop here since we assume
|
|
27
|
+
// its parent is already in progress too
|
|
28
|
+
if (parent.status === models_1.TrellisObjectStatus.IN_PROGRESS) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// Update parent to in-progress
|
|
32
|
+
const updatedParent = {
|
|
33
|
+
...parent,
|
|
34
|
+
status: models_1.TrellisObjectStatus.IN_PROGRESS,
|
|
35
|
+
};
|
|
36
|
+
await repository.saveObject(updatedParent);
|
|
37
|
+
// Continue up the hierarchy
|
|
38
|
+
await updateParentHierarchy(parent.parent, repository, visitedIds);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=updateParentHierarchy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateParentHierarchy.js","sourceRoot":"","sources":["../../src/utils/updateParentHierarchy.ts"],"names":[],"mappings":";;AAWA,sDAoCC;AA/CD,sCAAgD;AAGhD;;;;;;;GAOG;AACI,KAAK,UAAU,qBAAqB,CACzC,QAA4B,EAC5B,UAAsB,EACtB,aAA0B,IAAI,GAAG,EAAE;IAEnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,0EAA0E;IAC1E,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEzB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,qEAAqE;IACrE,wCAAwC;IACxC,IAAI,MAAM,CAAC,MAAM,KAAK,4BAAmB,CAAC,WAAW,EAAE,CAAC;QACtD,OAAO;IACT,CAAC;IAED,+BAA+B;IAC/B,MAAM,aAAa,GAAG;QACpB,GAAG,MAAM;QACT,MAAM,EAAE,4BAAmB,CAAC,WAAW;KACxC,CAAC;IAEF,MAAM,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAE3C,4BAA4B;IAC5B,MAAM,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateObjectCreation.test.js","sourceRoot":"","sources":["../../../src/validation/__tests__/validateObjectCreation.test.ts"],"names":[],"mappings":";;AAAA,yCAKsB;AAEtB,sEAAmE;AACnE,kEAA+D;AAC/D,wDAAqD;AACrD,kEAA+D;AAE/D,+DAA+D;AAC/D,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;AACrC,MAAM,wBAAwB,GAAG,2CAEhC,CAAC;AAEF,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAI,cAAuC,CAAC;IAC5C,IAAI,UAAyB,CAAC;IAE9B,UAAU,CAAC,GAAG,EAAE;QACd,cAAc,GAAG;YACf,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;YACxB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;YACrB,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"validateObjectCreation.test.js","sourceRoot":"","sources":["../../../src/validation/__tests__/validateObjectCreation.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateParentExists.test.js","sourceRoot":"","sources":["../../../src/validation/__tests__/validateParentExists.test.ts"],"names":[],"mappings":";;AAAA,yCAKsB;AAEtB,kEAA+D;AAC/D,wDAAqD;AACrD,kEAA+D;AAE/D,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,cAAuC,CAAC;IAE5C,UAAU,CAAC,GAAG,EAAE;QACd,cAAc,GAAG;YACf,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;YACxB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;YACrB,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE;YACrB,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"validateParentExists.test.js","sourceRoot":"","sources":["../../../src/validation/__tests__/validateParentExists.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,18 +28,18 @@ describe("validateParentType", () => {
|
|
|
28
28
|
});
|
|
29
29
|
});
|
|
30
30
|
describe("Epics", () => {
|
|
31
|
-
it("should
|
|
31
|
+
it("should allow epics with project parent", () => {
|
|
32
32
|
expect(() => {
|
|
33
33
|
(0, validateParentType_1.validateParentType)(TrellisObjectType_1.TrellisObjectType.EPIC, "P-project");
|
|
34
34
|
}).not.toThrow();
|
|
35
35
|
});
|
|
36
|
-
it("should
|
|
36
|
+
it("should allow epics with no parent", () => {
|
|
37
37
|
expect(() => {
|
|
38
38
|
(0, validateParentType_1.validateParentType)(TrellisObjectType_1.TrellisObjectType.EPIC, null);
|
|
39
|
-
}).toThrow(
|
|
39
|
+
}).not.toThrow();
|
|
40
40
|
expect(() => {
|
|
41
41
|
(0, validateParentType_1.validateParentType)(TrellisObjectType_1.TrellisObjectType.EPIC, undefined);
|
|
42
|
-
}).toThrow(
|
|
42
|
+
}).not.toThrow();
|
|
43
43
|
});
|
|
44
44
|
it("should reject epics with non-project parents", () => {
|
|
45
45
|
expect(() => {
|
|
@@ -118,7 +118,7 @@ describe("validateParentType", () => {
|
|
|
118
118
|
}).not.toThrow();
|
|
119
119
|
expect(() => {
|
|
120
120
|
(0, validateParentType_1.validateParentType)(TrellisObjectType_1.TrellisObjectType.EPIC, "");
|
|
121
|
-
}).toThrow(
|
|
121
|
+
}).not.toThrow();
|
|
122
122
|
});
|
|
123
123
|
});
|
|
124
124
|
});
|