api-tests-coverage 1.0.19 → 1.0.21
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 +3 -7
- package/dist/dashboard/assets/{_basePickBy-DZR484hj.js → _basePickBy-DiDMiru0.js} +1 -1
- package/dist/dashboard/{dist/assets/_baseUniq-Bwm426M6.js → assets/_baseUniq-CFoKRFhS.js} +1 -1
- package/dist/dashboard/{dist/assets/arc-51ef6HeW.js → assets/arc-B2fWu2mo.js} +1 -1
- package/dist/dashboard/{dist/assets/architectureDiagram-VXUJARFQ-Boahc5dR.js → assets/architectureDiagram-VXUJARFQ-DpIe4yWB.js} +1 -1
- package/dist/dashboard/assets/{blockDiagram-VD42YOAC-BvkiW8lj.js → blockDiagram-VD42YOAC-CKAgfH2X.js} +1 -1
- package/dist/dashboard/{dist/assets/c4Diagram-YG6GDRKO-Bww0QPxL.js → assets/c4Diagram-YG6GDRKO-CUtb-R__.js} +1 -1
- package/dist/dashboard/assets/channel-B9iMjZmm.js +1 -0
- package/dist/dashboard/assets/{chunk-4BX2VUAB-BrU7mtb9.js → chunk-4BX2VUAB-C3CSqwcX.js} +1 -1
- package/dist/dashboard/assets/{chunk-55IACEB6-DwsmCNp_.js → chunk-55IACEB6-CV8VzOOp.js} +1 -1
- package/dist/dashboard/{dist/assets/chunk-B4BG7PRW-B7YfMggR.js → assets/chunk-B4BG7PRW-URwnN3Q_.js} +1 -1
- package/dist/dashboard/{dist/assets/chunk-DI55MBZ5-B-xsiGYI.js → assets/chunk-DI55MBZ5-CV_d-z8j.js} +1 -1
- package/dist/dashboard/assets/{chunk-FMBD7UC4-DRb5NEMr.js → chunk-FMBD7UC4-8DJI9OkS.js} +1 -1
- package/dist/dashboard/assets/{chunk-QN33PNHL-BRSlHScq.js → chunk-QN33PNHL-pVzUBBoU.js} +1 -1
- package/dist/dashboard/assets/{chunk-QZHKN3VN-Cix7nLqx.js → chunk-QZHKN3VN-DCGN273N.js} +1 -1
- package/dist/dashboard/assets/{chunk-TZMSLE5B-BtXpcWN4.js → chunk-TZMSLE5B-D0wY-rJ0.js} +1 -1
- package/dist/dashboard/assets/classDiagram-2ON5EDUG-BNi5TogT.js +1 -0
- package/dist/dashboard/assets/classDiagram-v2-WZHVMYZB-BNi5TogT.js +1 -0
- package/dist/dashboard/assets/clone-m2eeeKVa.js +1 -0
- package/dist/dashboard/{dist/assets/cose-bilkent-S5V4N54A-BUkL7Wtq.js → assets/cose-bilkent-S5V4N54A-BIRyRYk0.js} +1 -1
- package/dist/dashboard/assets/{dagre-6UL2VRFP-DgEqrxGj.js → dagre-6UL2VRFP-KVIfxT9V.js} +1 -1
- package/dist/dashboard/assets/{diagram-PSM6KHXK-Y-M5J_PO.js → diagram-PSM6KHXK-VUmdxoiM.js} +1 -1
- package/dist/dashboard/assets/{diagram-QEK2KX5R-BXMS0hEZ.js → diagram-QEK2KX5R-LQ9k2vBy.js} +1 -1
- package/dist/dashboard/{dist/assets/diagram-S2PKOQOG--oRtrIMC.js → assets/diagram-S2PKOQOG-DIDe2of5.js} +1 -1
- package/dist/dashboard/{dist/assets/erDiagram-Q2GNP2WA-D0MbudeO.js → assets/erDiagram-Q2GNP2WA-CpMIyDcr.js} +1 -1
- package/dist/dashboard/{dist/assets/flowDiagram-NV44I4VS-1j044bLK.js → assets/flowDiagram-NV44I4VS-DR2nUASu.js} +1 -1
- package/dist/dashboard/assets/{ganttDiagram-JELNMOA3-Cjy_BOl2.js → ganttDiagram-JELNMOA3-C3J3WvDp.js} +1 -1
- package/dist/dashboard/{dist/assets/gitGraphDiagram-V2S2FVAM-CuJ5l3TK.js → assets/gitGraphDiagram-V2S2FVAM-C5V2Xlzu.js} +1 -1
- package/dist/dashboard/assets/{graph-BVGuJ5gs.js → graph-GSdi8Xy9.js} +1 -1
- package/dist/dashboard/{dist/assets/index-D3sRJga7.js → assets/index-Bhd7ZvcY.js} +82 -82
- package/dist/dashboard/assets/{infoDiagram-HS3SLOUP-CxmZGT-4.js → infoDiagram-HS3SLOUP-DVP1dWh4.js} +1 -1
- package/dist/dashboard/{dist/assets/journeyDiagram-XKPGCS4Q-8hUcTxo0.js → assets/journeyDiagram-XKPGCS4Q-CNHD7swq.js} +1 -1
- package/dist/dashboard/{dist/assets/kanban-definition-3W4ZIXB7-BvWm-0QQ.js → assets/kanban-definition-3W4ZIXB7-C-Jc4Ozy.js} +1 -1
- package/dist/dashboard/{dist/assets/layout-BFZ0bRU2.js → assets/layout-B0rNqEfo.js} +1 -1
- package/dist/dashboard/assets/{mindmap-definition-VGOIOE7T-BVsYbH_c.js → mindmap-definition-VGOIOE7T-hlQXiFXa.js} +1 -1
- package/dist/dashboard/assets/{pieDiagram-ADFJNKIX-BpwMMFZ3.js → pieDiagram-ADFJNKIX-CutZB3jG.js} +1 -1
- package/dist/dashboard/{dist/assets/quadrantDiagram-AYHSOK5B-C6NljtBN.js → assets/quadrantDiagram-AYHSOK5B-Bv6m-3mt.js} +1 -1
- package/dist/dashboard/{dist/assets/requirementDiagram-UZGBJVZJ-B3VaAf8y.js → assets/requirementDiagram-UZGBJVZJ-BQkld-bF.js} +1 -1
- package/dist/dashboard/{dist/assets/sankeyDiagram-TZEHDZUN-2ZhiU1NT.js → assets/sankeyDiagram-TZEHDZUN-DCWiCVGp.js} +1 -1
- package/dist/dashboard/assets/{sequenceDiagram-WL72ISMW-nMYJrjDT.js → sequenceDiagram-WL72ISMW-Dq_0SNSh.js} +1 -1
- package/dist/dashboard/{dist/assets/stateDiagram-FKZM4ZOC-0Wd-KmOv.js → assets/stateDiagram-FKZM4ZOC-BAd-cwxt.js} +1 -1
- package/dist/dashboard/assets/stateDiagram-v2-4FDKWEC3-DXlj7mrF.js +1 -0
- package/dist/dashboard/{dist/assets/timeline-definition-IT6M3QCI-CAmQOjBu.js → assets/timeline-definition-IT6M3QCI-BlMKo2bz.js} +1 -1
- package/dist/dashboard/{dist/assets/treemap-GDKQZRPO-CRP-WvE-.js → assets/treemap-GDKQZRPO-Cn6SBC6j.js} +1 -1
- package/dist/dashboard/{dist/assets/xychartDiagram-PRI3JC2R-5DoR2_q5.js → assets/xychartDiagram-PRI3JC2R-DlBeMjr8.js} +1 -1
- package/dist/dashboard/index.html +2 -2
- package/dist/src/config/defaultConfig.d.ts.map +1 -1
- package/dist/src/config/defaultConfig.js +0 -37
- package/dist/src/config/types.d.ts +0 -42
- package/dist/src/config/types.d.ts.map +1 -1
- package/dist/src/config/validateConfig.d.ts.map +1 -1
- package/dist/src/config/validateConfig.js +0 -3
- package/dist/src/discovery/fileClassifier.d.ts.map +1 -1
- package/dist/src/discovery/fileClassifier.js +16 -15
- package/dist/src/discovery/projectDiscovery.d.ts.map +1 -1
- package/dist/src/discovery/projectDiscovery.js +1 -4
- package/dist/src/index.js +92 -115
- package/dist/src/inference/routeInference.d.ts.map +1 -1
- package/dist/src/inference/routeInference.js +8 -54
- package/dist/src/languages/java/semanticBuilder.d.ts.map +1 -1
- package/dist/src/languages/java/semanticBuilder.js +12 -69
- package/dist/src/languages/javascript/angularDetector.d.ts.map +1 -1
- package/dist/src/languages/javascript/angularDetector.js +17 -50
- package/dist/src/languages/javascript/assertionResolver.js +4 -6
- package/dist/src/languages/javascript/hapiDetector.d.ts.map +1 -1
- package/dist/src/languages/javascript/hapiDetector.js +5 -48
- package/dist/src/languages/javascript/vueDetector.d.ts +0 -2
- package/dist/src/languages/javascript/vueDetector.d.ts.map +1 -1
- package/dist/src/languages/javascript/vueDetector.js +0 -22
- package/dist/src/languages/python/index.d.ts +1 -1
- package/dist/src/languages/python/index.d.ts.map +1 -1
- package/dist/src/languages/python/index.js +3 -33
- package/dist/src/pipeline/confidence.d.ts +1 -6
- package/dist/src/pipeline/confidence.d.ts.map +1 -1
- package/dist/src/pipeline/confidence.js +3 -8
- package/dist/src/pipeline/graph.d.ts.map +1 -1
- package/dist/src/pipeline/graph.js +4 -16
- package/dist/src/pipeline/stages/ast/astStage.d.ts.map +1 -1
- package/dist/src/pipeline/stages/ast/astStage.js +2 -46
- package/dist/src/pipeline/stages/ast/baseUrlComposer.d.ts.map +1 -1
- package/dist/src/pipeline/stages/ast/baseUrlComposer.js +4 -18
- package/dist/src/pipeline/stages/ast/crossFileResolver.js +0 -29
- package/dist/src/pipeline/stages/ast/graphBuilder.d.ts.map +1 -1
- package/dist/src/pipeline/stages/ast/graphBuilder.js +0 -81
- package/dist/src/pipeline/stages/ast/optionalAuthUnifier.d.ts +1 -3
- package/dist/src/pipeline/stages/ast/optionalAuthUnifier.d.ts.map +1 -1
- package/dist/src/pipeline/stages/ast/optionalAuthUnifier.js +14 -34
- package/dist/src/pipeline/stages/ast/resolvers/angularInjectionResolver.d.ts.map +1 -1
- package/dist/src/pipeline/stages/ast/resolvers/angularInjectionResolver.js +3 -22
- package/dist/src/pipeline/stages/ast/resolvers/dddLayerResolver.d.ts.map +1 -1
- package/dist/src/pipeline/stages/ast/resolvers/dddLayerResolver.js +28 -104
- package/dist/src/pipeline/stages/ast/resolvers/mybatisResolver.d.ts.map +1 -1
- package/dist/src/pipeline/stages/ast/resolvers/mybatisResolver.js +0 -56
- package/dist/src/pipeline/stages/ast/resolvers/vuexActionResolver.d.ts.map +1 -1
- package/dist/src/pipeline/stages/ast/resolvers/vuexActionResolver.js +18 -43
- package/dist/src/pipeline/stages/ast/rulesEnforcer.d.ts.map +1 -1
- package/dist/src/pipeline/stages/ast/rulesEnforcer.js +45 -336
- package/dist/src/pipeline/stages/merge/conflictDetector.d.ts +0 -2
- package/dist/src/pipeline/stages/merge/conflictDetector.d.ts.map +1 -1
- package/dist/src/pipeline/stages/merge/conflictDetector.js +2 -54
- package/dist/src/pipeline/stages/merge/coverageMappingBuilder.d.ts.map +1 -1
- package/dist/src/pipeline/stages/merge/coverageMappingBuilder.js +3 -67
- package/dist/src/pipeline/stages/tia/mockBoundaryDetector.d.ts.map +1 -1
- package/dist/src/pipeline/stages/tia/mockBoundaryDetector.js +1 -8
- package/dist/src/pipeline/stages/tia/parameterizedTestExpander.js +4 -8
- package/dist/src/pipeline/stages/tia/testLayerClassifier.d.ts.map +1 -1
- package/dist/src/pipeline/stages/tia/testLayerClassifier.js +10 -36
- package/dist/src/pipeline/types.d.ts +1 -1
- package/dist/src/pipeline/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/dashboard/assets/_baseUniq-BZHS9wTU.js +0 -1
- package/dist/dashboard/assets/arc-D4xT0thw.js +0 -1
- package/dist/dashboard/assets/architectureDiagram-VXUJARFQ-Bs48s9rH.js +0 -36
- package/dist/dashboard/assets/c4Diagram-YG6GDRKO-DuP3tG_c.js +0 -10
- package/dist/dashboard/assets/channel-YFEOkJua.js +0 -1
- package/dist/dashboard/assets/chunk-B4BG7PRW-D5WlZonc.js +0 -165
- package/dist/dashboard/assets/chunk-DI55MBZ5-B-xsiGYI.js +0 -220
- package/dist/dashboard/assets/classDiagram-2ON5EDUG-CE9rmEXI.js +0 -1
- package/dist/dashboard/assets/classDiagram-v2-WZHVMYZB-CE9rmEXI.js +0 -1
- package/dist/dashboard/assets/clone-BAVNftx6.js +0 -1
- package/dist/dashboard/assets/cose-bilkent-S5V4N54A-DrNDePwE.js +0 -1
- package/dist/dashboard/assets/diagram-S2PKOQOG-Bk_jyoxg.js +0 -24
- package/dist/dashboard/assets/erDiagram-Q2GNP2WA-BbPQp6RA.js +0 -60
- package/dist/dashboard/assets/flowDiagram-NV44I4VS-1j044bLK.js +0 -162
- package/dist/dashboard/assets/gitGraphDiagram-V2S2FVAM-RgQMxxaQ.js +0 -65
- package/dist/dashboard/assets/index-Bt72YjAZ.css +0 -1
- package/dist/dashboard/assets/index-DuT2LnIf.js +0 -523
- package/dist/dashboard/assets/journeyDiagram-XKPGCS4Q-CdvZAxeA.js +0 -139
- package/dist/dashboard/assets/kanban-definition-3W4ZIXB7-DTse5xX8.js +0 -89
- package/dist/dashboard/assets/layout-CnKzeCpQ.js +0 -1
- package/dist/dashboard/assets/quadrantDiagram-AYHSOK5B-C6NljtBN.js +0 -7
- package/dist/dashboard/assets/requirementDiagram-UZGBJVZJ-Ban4o6oK.js +0 -64
- package/dist/dashboard/assets/sankeyDiagram-TZEHDZUN-BDImwZtB.js +0 -10
- package/dist/dashboard/assets/stateDiagram-FKZM4ZOC-DkBAMCJV.js +0 -1
- package/dist/dashboard/assets/stateDiagram-v2-4FDKWEC3-CtkfyoSn.js +0 -1
- package/dist/dashboard/assets/timeline-definition-IT6M3QCI-CGUDCWFx.js +0 -61
- package/dist/dashboard/assets/treemap-GDKQZRPO-D-XpcCUD.js +0 -162
- package/dist/dashboard/assets/xychartDiagram-PRI3JC2R-BlIpbwyn.js +0 -7
- package/dist/dashboard/dist/assets/_basePickBy-C2jmWITn.js +0 -1
- package/dist/dashboard/dist/assets/_basePickBy-CErN2e4K.js +0 -1
- package/dist/dashboard/dist/assets/_basePickBy-CYB1KXah.js +0 -1
- package/dist/dashboard/dist/assets/_basePickBy-D4ml7gdd.js +0 -1
- package/dist/dashboard/dist/assets/_basePickBy-D7SXdoHL.js +0 -1
- package/dist/dashboard/dist/assets/_basePickBy-DUQHbXda.js +0 -1
- package/dist/dashboard/dist/assets/_basePickBy-DZR484hj.js +0 -1
- package/dist/dashboard/dist/assets/_basePickBy-_zJIZmFM.js +0 -1
- package/dist/dashboard/dist/assets/_baseUniq-BZHS9wTU.js +0 -1
- package/dist/dashboard/dist/assets/_baseUniq-BzwtoVZI.js +0 -1
- package/dist/dashboard/dist/assets/_baseUniq-C2oBAxY3.js +0 -1
- package/dist/dashboard/dist/assets/_baseUniq-CUKBQ2bc.js +0 -1
- package/dist/dashboard/dist/assets/_baseUniq-Ct8XEXnH.js +0 -1
- package/dist/dashboard/dist/assets/_baseUniq-DE6cyzJb.js +0 -1
- package/dist/dashboard/dist/assets/_baseUniq-DzHorfx6.js +0 -1
- package/dist/dashboard/dist/assets/arc-B-Q4nGPT.js +0 -1
- package/dist/dashboard/dist/assets/arc-B7p8x22e.js +0 -1
- package/dist/dashboard/dist/assets/arc-BDOeMmjX.js +0 -1
- package/dist/dashboard/dist/assets/arc-BaDRUN_n.js +0 -1
- package/dist/dashboard/dist/assets/arc-CjFGY63A.js +0 -1
- package/dist/dashboard/dist/assets/arc-D4xT0thw.js +0 -1
- package/dist/dashboard/dist/assets/arc-g03p1JXB.js +0 -1
- package/dist/dashboard/dist/assets/architectureDiagram-VXUJARFQ-BUdFGrlT.js +0 -36
- package/dist/dashboard/dist/assets/architectureDiagram-VXUJARFQ-Bs48s9rH.js +0 -36
- package/dist/dashboard/dist/assets/architectureDiagram-VXUJARFQ-CLCqS7Lv.js +0 -36
- package/dist/dashboard/dist/assets/architectureDiagram-VXUJARFQ-C_5dqWCI.js +0 -36
- package/dist/dashboard/dist/assets/architectureDiagram-VXUJARFQ-WnVycqnT.js +0 -36
- package/dist/dashboard/dist/assets/architectureDiagram-VXUJARFQ-mH7lInv5.js +0 -36
- package/dist/dashboard/dist/assets/architectureDiagram-VXUJARFQ-wVr1_uNB.js +0 -36
- package/dist/dashboard/dist/assets/blockDiagram-VD42YOAC-BBXc88fn.js +0 -122
- package/dist/dashboard/dist/assets/blockDiagram-VD42YOAC-BPw-T2eL.js +0 -122
- package/dist/dashboard/dist/assets/blockDiagram-VD42YOAC-BvkiW8lj.js +0 -122
- package/dist/dashboard/dist/assets/blockDiagram-VD42YOAC-CavSRNuP.js +0 -122
- package/dist/dashboard/dist/assets/blockDiagram-VD42YOAC-D-TzNNzc.js +0 -122
- package/dist/dashboard/dist/assets/blockDiagram-VD42YOAC-DK0YAM7_.js +0 -122
- package/dist/dashboard/dist/assets/blockDiagram-VD42YOAC-DbGIO6Kt.js +0 -122
- package/dist/dashboard/dist/assets/blockDiagram-VD42YOAC-V4vxrfzX.js +0 -122
- package/dist/dashboard/dist/assets/c4Diagram-YG6GDRKO-Bs4R4b6P.js +0 -10
- package/dist/dashboard/dist/assets/c4Diagram-YG6GDRKO-BsgzPfQ3.js +0 -10
- package/dist/dashboard/dist/assets/c4Diagram-YG6GDRKO-CAFpcejP.js +0 -10
- package/dist/dashboard/dist/assets/c4Diagram-YG6GDRKO-DVnWnYOL.js +0 -10
- package/dist/dashboard/dist/assets/c4Diagram-YG6GDRKO-DuP3tG_c.js +0 -10
- package/dist/dashboard/dist/assets/c4Diagram-YG6GDRKO-ZEVciqTW.js +0 -10
- package/dist/dashboard/dist/assets/c4Diagram-YG6GDRKO-w18S5AEN.js +0 -10
- package/dist/dashboard/dist/assets/channel-BSnIwwuG.js +0 -1
- package/dist/dashboard/dist/assets/channel-BgeGdqQG.js +0 -1
- package/dist/dashboard/dist/assets/channel-CyXkK5KC.js +0 -1
- package/dist/dashboard/dist/assets/channel-D5Cq9giL.js +0 -1
- package/dist/dashboard/dist/assets/channel-DbeZpf5T.js +0 -1
- package/dist/dashboard/dist/assets/channel-Di9el3wE.js +0 -1
- package/dist/dashboard/dist/assets/channel-YFEOkJua.js +0 -1
- package/dist/dashboard/dist/assets/channel-psxgcQ_j.js +0 -1
- package/dist/dashboard/dist/assets/chunk-4BX2VUAB-B9cIE1K2.js +0 -1
- package/dist/dashboard/dist/assets/chunk-4BX2VUAB-BDYDsvGv.js +0 -1
- package/dist/dashboard/dist/assets/chunk-4BX2VUAB-BF8loPLD.js +0 -1
- package/dist/dashboard/dist/assets/chunk-4BX2VUAB-BrU7mtb9.js +0 -1
- package/dist/dashboard/dist/assets/chunk-4BX2VUAB-CSJ8KLGx.js +0 -1
- package/dist/dashboard/dist/assets/chunk-4BX2VUAB-DY1boKsq.js +0 -1
- package/dist/dashboard/dist/assets/chunk-4BX2VUAB-IN53WLTx.js +0 -1
- package/dist/dashboard/dist/assets/chunk-4BX2VUAB-oleArqPu.js +0 -1
- package/dist/dashboard/dist/assets/chunk-55IACEB6-BIFhHB94.js +0 -1
- package/dist/dashboard/dist/assets/chunk-55IACEB6-BSL35gyW.js +0 -1
- package/dist/dashboard/dist/assets/chunk-55IACEB6-BzCzmNUn.js +0 -1
- package/dist/dashboard/dist/assets/chunk-55IACEB6-C3HNF-UF.js +0 -1
- package/dist/dashboard/dist/assets/chunk-55IACEB6-CiEoroXY.js +0 -1
- package/dist/dashboard/dist/assets/chunk-55IACEB6-DV6VmXIy.js +0 -1
- package/dist/dashboard/dist/assets/chunk-55IACEB6-DwsmCNp_.js +0 -1
- package/dist/dashboard/dist/assets/chunk-55IACEB6-kJkjQYxk.js +0 -1
- package/dist/dashboard/dist/assets/chunk-B4BG7PRW-B3IrqteW.js +0 -165
- package/dist/dashboard/dist/assets/chunk-B4BG7PRW-BChq1Wly.js +0 -165
- package/dist/dashboard/dist/assets/chunk-B4BG7PRW-BiYJ9gu_.js +0 -165
- package/dist/dashboard/dist/assets/chunk-B4BG7PRW-CCMwwYCe.js +0 -165
- package/dist/dashboard/dist/assets/chunk-B4BG7PRW-D5WlZonc.js +0 -165
- package/dist/dashboard/dist/assets/chunk-B4BG7PRW-eTDXrKrv.js +0 -165
- package/dist/dashboard/dist/assets/chunk-B4BG7PRW-wQ6TCEMq.js +0 -165
- package/dist/dashboard/dist/assets/chunk-DI55MBZ5-B7xHuqZu.js +0 -220
- package/dist/dashboard/dist/assets/chunk-DI55MBZ5-BD9C9H7Y.js +0 -220
- package/dist/dashboard/dist/assets/chunk-DI55MBZ5-BTfzxsg4.js +0 -220
- package/dist/dashboard/dist/assets/chunk-DI55MBZ5-CSRqV3_6.js +0 -220
- package/dist/dashboard/dist/assets/chunk-DI55MBZ5-D7eiRvhB.js +0 -220
- package/dist/dashboard/dist/assets/chunk-DI55MBZ5-DfslhtXS.js +0 -220
- package/dist/dashboard/dist/assets/chunk-DI55MBZ5-M-8I3jEy.js +0 -220
- package/dist/dashboard/dist/assets/chunk-FMBD7UC4-BBMfQbw1.js +0 -15
- package/dist/dashboard/dist/assets/chunk-FMBD7UC4-BgEzYy_c.js +0 -15
- package/dist/dashboard/dist/assets/chunk-FMBD7UC4-CtTcDWZJ.js +0 -15
- package/dist/dashboard/dist/assets/chunk-FMBD7UC4-CyF99olo.js +0 -15
- package/dist/dashboard/dist/assets/chunk-FMBD7UC4-DRb5NEMr.js +0 -15
- package/dist/dashboard/dist/assets/chunk-FMBD7UC4-K3PC79JF.js +0 -15
- package/dist/dashboard/dist/assets/chunk-FMBD7UC4-V0V2L4Gq.js +0 -15
- package/dist/dashboard/dist/assets/chunk-FMBD7UC4-bSA0XiS0.js +0 -15
- package/dist/dashboard/dist/assets/chunk-QN33PNHL-BBQ6Q-9S.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QN33PNHL-BNX7uRa_.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QN33PNHL-BRSlHScq.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QN33PNHL-BrOIYUBs.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QN33PNHL-CCuhlE1C.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QN33PNHL-CmeZ1h1Z.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QN33PNHL-DFgUs0T8.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QN33PNHL-JcQZ0Q-Q.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QZHKN3VN-9uXt-06K.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QZHKN3VN-Cix7nLqx.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QZHKN3VN-CliaQGD4.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QZHKN3VN-Cyg7Km90.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QZHKN3VN-DKgOcPif.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QZHKN3VN-MNv3v4He.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QZHKN3VN-T5hoQANf.js +0 -1
- package/dist/dashboard/dist/assets/chunk-QZHKN3VN-mq-zucvn.js +0 -1
- package/dist/dashboard/dist/assets/chunk-TZMSLE5B-BjDMUc_L.js +0 -1
- package/dist/dashboard/dist/assets/chunk-TZMSLE5B-BoJFBewj.js +0 -1
- package/dist/dashboard/dist/assets/chunk-TZMSLE5B-BtXpcWN4.js +0 -1
- package/dist/dashboard/dist/assets/chunk-TZMSLE5B-C8KNXDi7.js +0 -1
- package/dist/dashboard/dist/assets/chunk-TZMSLE5B-CyhcxGB1.js +0 -1
- package/dist/dashboard/dist/assets/chunk-TZMSLE5B-DGTVcqTS.js +0 -1
- package/dist/dashboard/dist/assets/chunk-TZMSLE5B-DqMNcR7I.js +0 -1
- package/dist/dashboard/dist/assets/chunk-TZMSLE5B-F1fppg7C.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-AMwn99HP.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-BbkwHRko.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-Be0F7AG8.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-BkGN4Cpz.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-CE9rmEXI.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-CM6Qs-Qs.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-D3VDjeKC.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-o8p5Y0H9.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-AMwn99HP.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-BbkwHRko.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-Be0F7AG8.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-BkGN4Cpz.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-CE9rmEXI.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-CM6Qs-Qs.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-D3VDjeKC.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-o8p5Y0H9.js +0 -1
- package/dist/dashboard/dist/assets/clone-B5PF81Z3.js +0 -1
- package/dist/dashboard/dist/assets/clone-BAVNftx6.js +0 -1
- package/dist/dashboard/dist/assets/clone-BmpQ0ely.js +0 -1
- package/dist/dashboard/dist/assets/clone-CKIuLE_W.js +0 -1
- package/dist/dashboard/dist/assets/clone-Cv0cxIIi.js +0 -1
- package/dist/dashboard/dist/assets/clone-Cvq8JuOb.js +0 -1
- package/dist/dashboard/dist/assets/clone-DEYRVSAn.js +0 -1
- package/dist/dashboard/dist/assets/clone-KEkbvJY9.js +0 -1
- package/dist/dashboard/dist/assets/cose-bilkent-S5V4N54A-DLYZ4dZA.js +0 -1
- package/dist/dashboard/dist/assets/cose-bilkent-S5V4N54A-DMGRGhwB.js +0 -1
- package/dist/dashboard/dist/assets/cose-bilkent-S5V4N54A-DrNDePwE.js +0 -1
- package/dist/dashboard/dist/assets/cose-bilkent-S5V4N54A-GjySlYac.js +0 -1
- package/dist/dashboard/dist/assets/cose-bilkent-S5V4N54A-UX3RfzXW.js +0 -1
- package/dist/dashboard/dist/assets/cose-bilkent-S5V4N54A-YL9kFxCl.js +0 -1
- package/dist/dashboard/dist/assets/cose-bilkent-S5V4N54A-xVw-THr_.js +0 -1
- package/dist/dashboard/dist/assets/cytoscape.esm-CyJtwmzi.js +0 -331
- package/dist/dashboard/dist/assets/dagre-6UL2VRFP-B8oEROJc.js +0 -4
- package/dist/dashboard/dist/assets/dagre-6UL2VRFP-BO79zHpJ.js +0 -4
- package/dist/dashboard/dist/assets/dagre-6UL2VRFP-Bjadb8g_.js +0 -4
- package/dist/dashboard/dist/assets/dagre-6UL2VRFP-CJT7lofP.js +0 -4
- package/dist/dashboard/dist/assets/dagre-6UL2VRFP-CUx6EwnW.js +0 -4
- package/dist/dashboard/dist/assets/dagre-6UL2VRFP-D03qnh38.js +0 -4
- package/dist/dashboard/dist/assets/dagre-6UL2VRFP-DgEqrxGj.js +0 -4
- package/dist/dashboard/dist/assets/dagre-6UL2VRFP-NZWnQN_Y.js +0 -4
- package/dist/dashboard/dist/assets/diagram-PSM6KHXK-5uki9Dw8.js +0 -24
- package/dist/dashboard/dist/assets/diagram-PSM6KHXK-BPFtplp4.js +0 -24
- package/dist/dashboard/dist/assets/diagram-PSM6KHXK-BgOmComt.js +0 -24
- package/dist/dashboard/dist/assets/diagram-PSM6KHXK-DGtyS7lD.js +0 -24
- package/dist/dashboard/dist/assets/diagram-PSM6KHXK-D__FKIzE.js +0 -24
- package/dist/dashboard/dist/assets/diagram-PSM6KHXK-DtE0cTIs.js +0 -24
- package/dist/dashboard/dist/assets/diagram-PSM6KHXK-JEfxbZj6.js +0 -24
- package/dist/dashboard/dist/assets/diagram-PSM6KHXK-Y-M5J_PO.js +0 -24
- package/dist/dashboard/dist/assets/diagram-QEK2KX5R-1hjfopmw.js +0 -43
- package/dist/dashboard/dist/assets/diagram-QEK2KX5R-BHyZd544.js +0 -43
- package/dist/dashboard/dist/assets/diagram-QEK2KX5R-BRNhmby2.js +0 -43
- package/dist/dashboard/dist/assets/diagram-QEK2KX5R-BXMS0hEZ.js +0 -43
- package/dist/dashboard/dist/assets/diagram-QEK2KX5R-BtOA2yYh.js +0 -43
- package/dist/dashboard/dist/assets/diagram-QEK2KX5R-CSCGZUfr.js +0 -43
- package/dist/dashboard/dist/assets/diagram-QEK2KX5R-CYK-aLR5.js +0 -43
- package/dist/dashboard/dist/assets/diagram-QEK2KX5R-CYxueP7U.js +0 -43
- package/dist/dashboard/dist/assets/diagram-S2PKOQOG-Bk_jyoxg.js +0 -24
- package/dist/dashboard/dist/assets/diagram-S2PKOQOG-CRUXUQeh.js +0 -24
- package/dist/dashboard/dist/assets/diagram-S2PKOQOG-CzytkAcm.js +0 -24
- package/dist/dashboard/dist/assets/diagram-S2PKOQOG-D-ku_X8U.js +0 -24
- package/dist/dashboard/dist/assets/diagram-S2PKOQOG-DdqZVGN1.js +0 -24
- package/dist/dashboard/dist/assets/diagram-S2PKOQOG-Gj3ANjIG.js +0 -24
- package/dist/dashboard/dist/assets/diagram-S2PKOQOG-qvXlTDud.js +0 -24
- package/dist/dashboard/dist/assets/erDiagram-Q2GNP2WA-BbPQp6RA.js +0 -60
- package/dist/dashboard/dist/assets/erDiagram-Q2GNP2WA-DDk1KpRF.js +0 -60
- package/dist/dashboard/dist/assets/erDiagram-Q2GNP2WA-DGl6gPe2.js +0 -60
- package/dist/dashboard/dist/assets/erDiagram-Q2GNP2WA-DSC5VPcF.js +0 -60
- package/dist/dashboard/dist/assets/erDiagram-Q2GNP2WA-DZpjLrp5.js +0 -60
- package/dist/dashboard/dist/assets/erDiagram-Q2GNP2WA-Dhb_VQMS.js +0 -60
- package/dist/dashboard/dist/assets/erDiagram-Q2GNP2WA-DvI8ycM6.js +0 -60
- package/dist/dashboard/dist/assets/flowDiagram-NV44I4VS-BAHshMEg.js +0 -162
- package/dist/dashboard/dist/assets/flowDiagram-NV44I4VS-CBnhpWKd.js +0 -162
- package/dist/dashboard/dist/assets/flowDiagram-NV44I4VS-CYXUqE3L.js +0 -162
- package/dist/dashboard/dist/assets/flowDiagram-NV44I4VS-Co89qYBD.js +0 -162
- package/dist/dashboard/dist/assets/flowDiagram-NV44I4VS-DRAD4OG7.js +0 -162
- package/dist/dashboard/dist/assets/flowDiagram-NV44I4VS-PVleScVK.js +0 -162
- package/dist/dashboard/dist/assets/flowDiagram-NV44I4VS-gKUH-GJ2.js +0 -162
- package/dist/dashboard/dist/assets/ganttDiagram-JELNMOA3-2r3WpWQC.js +0 -267
- package/dist/dashboard/dist/assets/ganttDiagram-JELNMOA3-BA65eVi0.js +0 -267
- package/dist/dashboard/dist/assets/ganttDiagram-JELNMOA3-BS4JnN-M.js +0 -267
- package/dist/dashboard/dist/assets/ganttDiagram-JELNMOA3-Cjy_BOl2.js +0 -267
- package/dist/dashboard/dist/assets/ganttDiagram-JELNMOA3-CsUMU5Ws.js +0 -267
- package/dist/dashboard/dist/assets/ganttDiagram-JELNMOA3-DK_45K6s.js +0 -267
- package/dist/dashboard/dist/assets/ganttDiagram-JELNMOA3-DX-lROHt.js +0 -267
- package/dist/dashboard/dist/assets/ganttDiagram-JELNMOA3-Dm_lLo9y.js +0 -267
- package/dist/dashboard/dist/assets/gitGraphDiagram-V2S2FVAM-C9NpbucY.js +0 -65
- package/dist/dashboard/dist/assets/gitGraphDiagram-V2S2FVAM-CWo2OK69.js +0 -65
- package/dist/dashboard/dist/assets/gitGraphDiagram-V2S2FVAM-DM9AW1aP.js +0 -65
- package/dist/dashboard/dist/assets/gitGraphDiagram-V2S2FVAM-DYrdM8tK.js +0 -65
- package/dist/dashboard/dist/assets/gitGraphDiagram-V2S2FVAM-RgQMxxaQ.js +0 -65
- package/dist/dashboard/dist/assets/gitGraphDiagram-V2S2FVAM-Uz3nRdju.js +0 -65
- package/dist/dashboard/dist/assets/gitGraphDiagram-V2S2FVAM-bYKe_efj.js +0 -65
- package/dist/dashboard/dist/assets/graph-BP2ns4se.js +0 -1
- package/dist/dashboard/dist/assets/graph-BVGuJ5gs.js +0 -1
- package/dist/dashboard/dist/assets/graph-CD7-npU0.js +0 -1
- package/dist/dashboard/dist/assets/graph-Clj85F2M.js +0 -1
- package/dist/dashboard/dist/assets/graph-CpRVMcWW.js +0 -1
- package/dist/dashboard/dist/assets/graph-Cwn7jgQS.js +0 -1
- package/dist/dashboard/dist/assets/graph-ZtgwAPQj.js +0 -1
- package/dist/dashboard/dist/assets/graph-gV0gk5Dq.js +0 -1
- package/dist/dashboard/dist/assets/index-Bt72YjAZ.css +0 -1
- package/dist/dashboard/dist/assets/index-ByH_nEhG.js +0 -523
- package/dist/dashboard/dist/assets/index-C302ingQ.css +0 -1
- package/dist/dashboard/dist/assets/index-CqEIqNus.js +0 -781
- package/dist/dashboard/dist/assets/index-D-AtVpd2.js +0 -523
- package/dist/dashboard/dist/assets/index-D3_88Gr5.js +0 -777
- package/dist/dashboard/dist/assets/index-DEXwnExZ.js +0 -523
- package/dist/dashboard/dist/assets/index-DbUdNJca.js +0 -781
- package/dist/dashboard/dist/assets/index-DuT2LnIf.js +0 -523
- package/dist/dashboard/dist/assets/index-xecKLQ58.css +0 -1
- package/dist/dashboard/dist/assets/infoDiagram-HS3SLOUP-BMp4C5wf.js +0 -2
- package/dist/dashboard/dist/assets/infoDiagram-HS3SLOUP-BjChBCME.js +0 -2
- package/dist/dashboard/dist/assets/infoDiagram-HS3SLOUP-BxoN3QPh.js +0 -2
- package/dist/dashboard/dist/assets/infoDiagram-HS3SLOUP-CxmZGT-4.js +0 -2
- package/dist/dashboard/dist/assets/infoDiagram-HS3SLOUP-D3SFXNAS.js +0 -2
- package/dist/dashboard/dist/assets/infoDiagram-HS3SLOUP-DyT5Fs8R.js +0 -2
- package/dist/dashboard/dist/assets/infoDiagram-HS3SLOUP-HLwGZBHJ.js +0 -2
- package/dist/dashboard/dist/assets/infoDiagram-HS3SLOUP-ujnMqVz3.js +0 -2
- package/dist/dashboard/dist/assets/journeyDiagram-XKPGCS4Q-BC0GSZ7W.js +0 -139
- package/dist/dashboard/dist/assets/journeyDiagram-XKPGCS4Q-Bv1IeJ8A.js +0 -139
- package/dist/dashboard/dist/assets/journeyDiagram-XKPGCS4Q-CFgbI9OH.js +0 -139
- package/dist/dashboard/dist/assets/journeyDiagram-XKPGCS4Q-CdvZAxeA.js +0 -139
- package/dist/dashboard/dist/assets/journeyDiagram-XKPGCS4Q-CiMM9buE.js +0 -139
- package/dist/dashboard/dist/assets/journeyDiagram-XKPGCS4Q-DQzfeBIo.js +0 -139
- package/dist/dashboard/dist/assets/journeyDiagram-XKPGCS4Q-nYZBlgTD.js +0 -139
- package/dist/dashboard/dist/assets/kanban-definition-3W4ZIXB7-AkiB-BRk.js +0 -89
- package/dist/dashboard/dist/assets/kanban-definition-3W4ZIXB7-BjYw_9v5.js +0 -89
- package/dist/dashboard/dist/assets/kanban-definition-3W4ZIXB7-COTfX74l.js +0 -89
- package/dist/dashboard/dist/assets/kanban-definition-3W4ZIXB7-D3u5Ov-5.js +0 -89
- package/dist/dashboard/dist/assets/kanban-definition-3W4ZIXB7-D6aRd_q1.js +0 -89
- package/dist/dashboard/dist/assets/kanban-definition-3W4ZIXB7-DTse5xX8.js +0 -89
- package/dist/dashboard/dist/assets/kanban-definition-3W4ZIXB7-ueIaoeks.js +0 -89
- package/dist/dashboard/dist/assets/katex-O9d3_IXG.js +0 -261
- package/dist/dashboard/dist/assets/layout-6njVG9Ld.js +0 -1
- package/dist/dashboard/dist/assets/layout-B1fTYUMj.js +0 -1
- package/dist/dashboard/dist/assets/layout-BbJNDkTr.js +0 -1
- package/dist/dashboard/dist/assets/layout-BwmMaJCx.js +0 -1
- package/dist/dashboard/dist/assets/layout-CnKzeCpQ.js +0 -1
- package/dist/dashboard/dist/assets/layout-DgtRACDS.js +0 -1
- package/dist/dashboard/dist/assets/layout-JbkTCGhr.js +0 -1
- package/dist/dashboard/dist/assets/mindmap-definition-VGOIOE7T-B7wYeLe1.js +0 -68
- package/dist/dashboard/dist/assets/mindmap-definition-VGOIOE7T-B93XW27v.js +0 -68
- package/dist/dashboard/dist/assets/mindmap-definition-VGOIOE7T-BJ5xCmsL.js +0 -68
- package/dist/dashboard/dist/assets/mindmap-definition-VGOIOE7T-BVsYbH_c.js +0 -68
- package/dist/dashboard/dist/assets/mindmap-definition-VGOIOE7T-CkyYtMaD.js +0 -68
- package/dist/dashboard/dist/assets/mindmap-definition-VGOIOE7T-CmcASbkx.js +0 -68
- package/dist/dashboard/dist/assets/mindmap-definition-VGOIOE7T-D001Ygrx.js +0 -68
- package/dist/dashboard/dist/assets/mindmap-definition-VGOIOE7T-QDZ_z8OE.js +0 -68
- package/dist/dashboard/dist/assets/pieDiagram-ADFJNKIX-5pSPRGJ2.js +0 -30
- package/dist/dashboard/dist/assets/pieDiagram-ADFJNKIX-9G1tEuaq.js +0 -30
- package/dist/dashboard/dist/assets/pieDiagram-ADFJNKIX-BIOVbZG_.js +0 -30
- package/dist/dashboard/dist/assets/pieDiagram-ADFJNKIX-Bf8vKEOf.js +0 -30
- package/dist/dashboard/dist/assets/pieDiagram-ADFJNKIX-BpwMMFZ3.js +0 -30
- package/dist/dashboard/dist/assets/pieDiagram-ADFJNKIX-DOXOzepj.js +0 -30
- package/dist/dashboard/dist/assets/pieDiagram-ADFJNKIX-EeNihpUP.js +0 -30
- package/dist/dashboard/dist/assets/pieDiagram-ADFJNKIX-uWFQFMEe.js +0 -30
- package/dist/dashboard/dist/assets/quadrantDiagram-AYHSOK5B-Bwppivuy.js +0 -7
- package/dist/dashboard/dist/assets/quadrantDiagram-AYHSOK5B-CM8qiFLR.js +0 -7
- package/dist/dashboard/dist/assets/quadrantDiagram-AYHSOK5B-Crgu5WqK.js +0 -7
- package/dist/dashboard/dist/assets/quadrantDiagram-AYHSOK5B-CtbMtM_F.js +0 -7
- package/dist/dashboard/dist/assets/quadrantDiagram-AYHSOK5B-i3-JTN3e.js +0 -7
- package/dist/dashboard/dist/assets/quadrantDiagram-AYHSOK5B-jDtdB4Ws.js +0 -7
- package/dist/dashboard/dist/assets/quadrantDiagram-AYHSOK5B-o21Z8BWo.js +0 -7
- package/dist/dashboard/dist/assets/requirementDiagram-UZGBJVZJ-Ban4o6oK.js +0 -64
- package/dist/dashboard/dist/assets/requirementDiagram-UZGBJVZJ-BfAcJrqc.js +0 -64
- package/dist/dashboard/dist/assets/requirementDiagram-UZGBJVZJ-CgXxZ2rH.js +0 -64
- package/dist/dashboard/dist/assets/requirementDiagram-UZGBJVZJ-ClNSNeYe.js +0 -64
- package/dist/dashboard/dist/assets/requirementDiagram-UZGBJVZJ-DPTtP4Ve.js +0 -64
- package/dist/dashboard/dist/assets/requirementDiagram-UZGBJVZJ-Dw260IiT.js +0 -64
- package/dist/dashboard/dist/assets/requirementDiagram-UZGBJVZJ-WIJ0qiJG.js +0 -64
- package/dist/dashboard/dist/assets/sankeyDiagram-TZEHDZUN-BDImwZtB.js +0 -10
- package/dist/dashboard/dist/assets/sankeyDiagram-TZEHDZUN-BFNTuDV7.js +0 -10
- package/dist/dashboard/dist/assets/sankeyDiagram-TZEHDZUN-Cb4WB9UB.js +0 -10
- package/dist/dashboard/dist/assets/sankeyDiagram-TZEHDZUN-D2OGoxU5.js +0 -10
- package/dist/dashboard/dist/assets/sankeyDiagram-TZEHDZUN-DEVTdH0h.js +0 -10
- package/dist/dashboard/dist/assets/sankeyDiagram-TZEHDZUN-LR8T4Hv0.js +0 -10
- package/dist/dashboard/dist/assets/sankeyDiagram-TZEHDZUN-VcdyPlVE.js +0 -10
- package/dist/dashboard/dist/assets/sequenceDiagram-WL72ISMW-1d8_kyI3.js +0 -145
- package/dist/dashboard/dist/assets/sequenceDiagram-WL72ISMW-97qjzqIO.js +0 -145
- package/dist/dashboard/dist/assets/sequenceDiagram-WL72ISMW-Bjr5wgXg.js +0 -145
- package/dist/dashboard/dist/assets/sequenceDiagram-WL72ISMW-BqGJWVUS.js +0 -145
- package/dist/dashboard/dist/assets/sequenceDiagram-WL72ISMW-C5h60fvZ.js +0 -145
- package/dist/dashboard/dist/assets/sequenceDiagram-WL72ISMW-DBqchhlr.js +0 -145
- package/dist/dashboard/dist/assets/sequenceDiagram-WL72ISMW-DOr6An-q.js +0 -145
- package/dist/dashboard/dist/assets/sequenceDiagram-WL72ISMW-nMYJrjDT.js +0 -145
- package/dist/dashboard/dist/assets/stateDiagram-FKZM4ZOC-BWqoDymf.js +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-FKZM4ZOC-Bl16d4W5.js +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-FKZM4ZOC-C1KYr7Wj.js +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-FKZM4ZOC-DDrhZYly.js +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-FKZM4ZOC-DKkWVu_K.js +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-FKZM4ZOC-DkBAMCJV.js +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-FKZM4ZOC-DlLDy54e.js +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-B05ygO34.js +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-B0euQu1p.js +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-BlwaoFEG.js +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-CtkfyoSn.js +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-DRV_IYr6.js +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-Im6pH8C-.js +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-K_qkvHaB.js +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-pZ_Rrx6C.js +0 -1
- package/dist/dashboard/dist/assets/timeline-definition-IT6M3QCI-CBR9kqeJ.js +0 -61
- package/dist/dashboard/dist/assets/timeline-definition-IT6M3QCI-CGUDCWFx.js +0 -61
- package/dist/dashboard/dist/assets/timeline-definition-IT6M3QCI-CLdinkid.js +0 -61
- package/dist/dashboard/dist/assets/timeline-definition-IT6M3QCI-CsRS0WGC.js +0 -61
- package/dist/dashboard/dist/assets/timeline-definition-IT6M3QCI-D6JNee_P.js +0 -61
- package/dist/dashboard/dist/assets/timeline-definition-IT6M3QCI-DAT3r9va.js +0 -61
- package/dist/dashboard/dist/assets/timeline-definition-IT6M3QCI-DR6HNny6.js +0 -61
- package/dist/dashboard/dist/assets/treemap-GDKQZRPO-BlA8rg0m.js +0 -162
- package/dist/dashboard/dist/assets/treemap-GDKQZRPO-CBle3d0d.js +0 -162
- package/dist/dashboard/dist/assets/treemap-GDKQZRPO-CCvvSJBX.js +0 -162
- package/dist/dashboard/dist/assets/treemap-GDKQZRPO-Cw9mkiYN.js +0 -162
- package/dist/dashboard/dist/assets/treemap-GDKQZRPO-D-XpcCUD.js +0 -162
- package/dist/dashboard/dist/assets/treemap-GDKQZRPO-MpQr6tee.js +0 -162
- package/dist/dashboard/dist/assets/treemap-GDKQZRPO-vW7FSd7C.js +0 -162
- package/dist/dashboard/dist/assets/xychartDiagram-PRI3JC2R-7aSkQtVu.js +0 -7
- package/dist/dashboard/dist/assets/xychartDiagram-PRI3JC2R-B72UwDAP.js +0 -7
- package/dist/dashboard/dist/assets/xychartDiagram-PRI3JC2R-BceejIon.js +0 -7
- package/dist/dashboard/dist/assets/xychartDiagram-PRI3JC2R-BlIpbwyn.js +0 -7
- package/dist/dashboard/dist/assets/xychartDiagram-PRI3JC2R-ByLRWyI2.js +0 -7
- package/dist/dashboard/dist/assets/xychartDiagram-PRI3JC2R-DjyK-sw-.js +0 -7
- package/dist/dashboard/dist/assets/xychartDiagram-PRI3JC2R-bS40I4IT.js +0 -7
- package/dist/dashboard/dist/index.html +0 -14
- package/dist/dashboard/dist/reports/business-coverage.json +0 -201
- package/dist/dashboard/dist/reports/coverage-intelligence.json +0 -728
- package/dist/dashboard/dist/reports/coverage-summary.json +0 -763
- package/dist/dashboard/dist/reports/endpoint-coverage.json +0 -336
- package/dist/dashboard/dist/reports/error-coverage.json +0 -367
- package/dist/dashboard/dist/reports/missing-tests-recommendations.json +0 -285
- package/dist/dashboard/dist/reports/risk-prioritization.json +0 -312
- package/dist/dashboard/dist/reports/security-coverage.json +0 -299
- package/dist/dashboard/dist/vite.svg +0 -1
- package/dist/dashboard/reports/coverage-summary.json +0 -763
- package/dist/src/generation/ai-flow-exporter.d.ts +0 -7
- package/dist/src/generation/ai-flow-exporter.d.ts.map +0 -1
- package/dist/src/generation/ai-flow-exporter.js +0 -260
- package/dist/src/generation/context-builder.d.ts +0 -16
- package/dist/src/generation/context-builder.d.ts.map +0 -1
- package/dist/src/generation/context-builder.js +0 -170
- package/dist/src/generation/engine.d.ts +0 -19
- package/dist/src/generation/engine.d.ts.map +0 -1
- package/dist/src/generation/engine.js +0 -204
- package/dist/src/generation/file-router.d.ts +0 -8
- package/dist/src/generation/file-router.d.ts.map +0 -1
- package/dist/src/generation/file-router.js +0 -98
- package/dist/src/generation/gap-extractor.d.ts +0 -7
- package/dist/src/generation/gap-extractor.d.ts.map +0 -1
- package/dist/src/generation/gap-extractor.js +0 -291
- package/dist/src/generation/index.d.ts +0 -9
- package/dist/src/generation/index.d.ts.map +0 -1
- package/dist/src/generation/index.js +0 -15
- package/dist/src/generation/quality-scorer.d.ts +0 -15
- package/dist/src/generation/quality-scorer.d.ts.map +0 -1
- package/dist/src/generation/quality-scorer.js +0 -273
- package/dist/src/generation/template-renderer.d.ts +0 -12
- package/dist/src/generation/template-renderer.d.ts.map +0 -1
- package/dist/src/generation/template-renderer.js +0 -546
- package/dist/src/generation/types.d.ts +0 -269
- package/dist/src/generation/types.d.ts.map +0 -1
- package/dist/src/generation/types.js +0 -6
- /package/dist/dashboard/{dist/assets → assets}/index-D_begBP0.css +0 -0
package/dist/src/index.js
CHANGED
|
@@ -63,7 +63,6 @@ const integrationFlowInference_1 = require("./inference/integrationFlowInference
|
|
|
63
63
|
const routeInference_1 = require("./inference/routeInference");
|
|
64
64
|
const scanManifest_1 = require("./inference/scanManifest");
|
|
65
65
|
const serveDashboard_1 = require("./serveDashboard");
|
|
66
|
-
const index_4 = require("./generation/index");
|
|
67
66
|
// Register all language AST analyzers at startup.
|
|
68
67
|
// This side-effect import ensures each language module's registerAnalyzer() call runs.
|
|
69
68
|
(0, astAnalysisOrchestrator_1.registerAllAnalyzers)();
|
|
@@ -1403,7 +1402,7 @@ program
|
|
|
1403
1402
|
.option('--port <port>', 'Port for the dashboard server (requires --dashboard)', parseInt)
|
|
1404
1403
|
.option('--open', 'Open the dashboard in your browser automatically (requires --dashboard)')
|
|
1405
1404
|
.action(async (options) => {
|
|
1406
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
1405
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
|
|
1407
1406
|
const { metricsPort, serviceName } = setupObservability();
|
|
1408
1407
|
const logger = (0, observability_1.getLogger)();
|
|
1409
1408
|
const configPath = program.opts()['config'];
|
|
@@ -1733,6 +1732,96 @@ program
|
|
|
1733
1732
|
allCoverageResults.push(errorResult);
|
|
1734
1733
|
console.log(` ${errorCovered}/${errorItems.length} inferred error scenarios have test coverage (${errorPct}%)`);
|
|
1735
1734
|
}
|
|
1735
|
+
// ── 4b-alt. Parameter coverage from inferred routes + body params ──
|
|
1736
|
+
// Extract path parameters (e.g. ':article', ':id') and body params
|
|
1737
|
+
// (e.g. 'req.body.email') from inferred routes and business rules.
|
|
1738
|
+
// This populates the Parameters tab even without an OpenAPI spec.
|
|
1739
|
+
console.log(`\nAnalyzing parameter coverage (from inferred routes)...`);
|
|
1740
|
+
try {
|
|
1741
|
+
const paramItems = [];
|
|
1742
|
+
// Path parameters from routes
|
|
1743
|
+
const seenParamKeys = new Set();
|
|
1744
|
+
for (const epItem of endpointItems) {
|
|
1745
|
+
const route = routeResult.routes.find((r) => `${r.method.toUpperCase()} ${r.path}` === epItem.id);
|
|
1746
|
+
if (!route)
|
|
1747
|
+
continue;
|
|
1748
|
+
const pathParams = route.path.split('/').filter((s) => s.startsWith(':'));
|
|
1749
|
+
for (const param of pathParams) {
|
|
1750
|
+
const paramName = param.slice(1); // strip ':'
|
|
1751
|
+
const key = `${paramName}@${route.method.toUpperCase()}`;
|
|
1752
|
+
if (seenParamKeys.has(key))
|
|
1753
|
+
continue;
|
|
1754
|
+
seenParamKeys.add(key);
|
|
1755
|
+
paramItems.push({
|
|
1756
|
+
id: `PATH :${paramName} @ ${epItem.id}`,
|
|
1757
|
+
covered: epItem.covered, // param is covered if the route is covered
|
|
1758
|
+
matchedTests: epItem.matchedTests,
|
|
1759
|
+
param_type: 'path',
|
|
1760
|
+
source_file: route.sourceFile,
|
|
1761
|
+
line_number: route.lineNumber,
|
|
1762
|
+
});
|
|
1763
|
+
}
|
|
1764
|
+
}
|
|
1765
|
+
// Body parameters from inferred business rules (req.body.<field>)
|
|
1766
|
+
if (inferredRulesResult) {
|
|
1767
|
+
const BODY_PARAM_RE = /req\.body\.(\w+)/g;
|
|
1768
|
+
const seenBodyParams = new Set();
|
|
1769
|
+
for (const rule of inferredRulesResult.rules) {
|
|
1770
|
+
let bm;
|
|
1771
|
+
BODY_PARAM_RE.lastIndex = 0;
|
|
1772
|
+
const combinedText = `${rule.condition} ${rule.code_snippet}`;
|
|
1773
|
+
while ((bm = BODY_PARAM_RE.exec(combinedText)) !== null) {
|
|
1774
|
+
const fieldName = bm[1];
|
|
1775
|
+
const paramKey = `body_${fieldName}_${(_q = rule.endpoint) !== null && _q !== void 0 ? _q : ''}`;
|
|
1776
|
+
if (seenBodyParams.has(paramKey))
|
|
1777
|
+
continue;
|
|
1778
|
+
seenBodyParams.add(paramKey);
|
|
1779
|
+
const endpointLabel = (_r = rule.endpoint) !== null && _r !== void 0 ? _r : 'unknown endpoint';
|
|
1780
|
+
// Match: any test description mentioning the field name
|
|
1781
|
+
const fieldNameLower = fieldName.toLowerCase();
|
|
1782
|
+
const matchedTestDescs = [];
|
|
1783
|
+
for (const { file, descriptions } of testEntries) {
|
|
1784
|
+
const hitting = descriptions.filter((desc) => desc.includes(fieldNameLower));
|
|
1785
|
+
if (hitting.length > 0) {
|
|
1786
|
+
matchedTestDescs.push(...hitting.map((d) => `[${path.basename(file)}] ${d}`));
|
|
1787
|
+
}
|
|
1788
|
+
}
|
|
1789
|
+
const srcParts = (_t = (_s = rule.source_location) === null || _s === void 0 ? void 0 : _s.split(':')) !== null && _t !== void 0 ? _t : [];
|
|
1790
|
+
const srcFile = srcParts[0];
|
|
1791
|
+
const srcLine = srcParts[1] !== undefined ? parseInt(srcParts[1], 10) : undefined;
|
|
1792
|
+
paramItems.push({
|
|
1793
|
+
id: `BODY ${fieldName} @ ${endpointLabel}`,
|
|
1794
|
+
covered: matchedTestDescs.length > 0,
|
|
1795
|
+
matchedTests: matchedTestDescs,
|
|
1796
|
+
param_type: 'body',
|
|
1797
|
+
source_file: srcFile,
|
|
1798
|
+
line_number: srcLine && srcLine > 0 ? srcLine : undefined,
|
|
1799
|
+
});
|
|
1800
|
+
}
|
|
1801
|
+
}
|
|
1802
|
+
}
|
|
1803
|
+
if (paramItems.length > 0) {
|
|
1804
|
+
const paramCovered = paramItems.filter((i) => i.covered).length;
|
|
1805
|
+
const paramPct = Math.round((paramCovered / paramItems.length) * 100);
|
|
1806
|
+
allCoverageResults.push({
|
|
1807
|
+
type: 'parameter',
|
|
1808
|
+
totalItems: paramItems.length,
|
|
1809
|
+
coveredItems: paramCovered,
|
|
1810
|
+
coveragePercent: paramPct,
|
|
1811
|
+
details: {
|
|
1812
|
+
total: paramItems.length,
|
|
1813
|
+
covered: paramCovered,
|
|
1814
|
+
percentage: paramPct,
|
|
1815
|
+
items: paramItems,
|
|
1816
|
+
source: 'inferred',
|
|
1817
|
+
},
|
|
1818
|
+
});
|
|
1819
|
+
console.log(` ${paramCovered}/${paramItems.length} inferred parameters have test coverage (${paramPct}%)`);
|
|
1820
|
+
}
|
|
1821
|
+
}
|
|
1822
|
+
catch (paramErr) {
|
|
1823
|
+
warnings.push(`Parameter inference failed: ${paramErr instanceof Error ? paramErr.message : String(paramErr)}`);
|
|
1824
|
+
}
|
|
1736
1825
|
}
|
|
1737
1826
|
else {
|
|
1738
1827
|
warnings.push('No routes detected in service files; endpoint coverage skipped.');
|
|
@@ -2019,7 +2108,7 @@ program
|
|
|
2019
2108
|
if (options['dashboard']) {
|
|
2020
2109
|
(0, serveDashboard_1.serveDashboard)({
|
|
2021
2110
|
reportsDir: reportsDir,
|
|
2022
|
-
port: (
|
|
2111
|
+
port: (_u = options['port']) !== null && _u !== void 0 ? _u : 4000,
|
|
2023
2112
|
open: Boolean(options['open']),
|
|
2024
2113
|
});
|
|
2025
2114
|
// Keep the process alive — the HTTP server holds the event loop open
|
|
@@ -2045,118 +2134,6 @@ program
|
|
|
2045
2134
|
});
|
|
2046
2135
|
// Keep the process alive while the server runs
|
|
2047
2136
|
});
|
|
2048
|
-
program
|
|
2049
|
-
.command('generate-tests')
|
|
2050
|
-
.description('Generate test scaffolds for detected coverage gaps')
|
|
2051
|
-
.option('--reports-dir <dir>', 'Directory with coverage reports', 'reports/')
|
|
2052
|
-
.option('--out-dir <dir>', 'Output directory for generated tests', 'generated-tests/')
|
|
2053
|
-
.option('--language <lang>', 'Target language override (auto-detected if omitted)')
|
|
2054
|
-
.option('--framework <fw>', 'Test framework override (auto-detected if omitted)')
|
|
2055
|
-
.option('--priority <p>', 'Only generate for gaps at this priority or higher', 'P1')
|
|
2056
|
-
.option('--dry-run', 'Print generated tests to stdout, do not write files', false)
|
|
2057
|
-
.option('--overwrite', 'Overwrite existing generated files', false)
|
|
2058
|
-
.option('--gap-id <id>', 'Generate tests for a single specific gap')
|
|
2059
|
-
.option('--types <list>', 'Comma-separated gap types to generate (default: all)')
|
|
2060
|
-
.option('--no-security', 'Skip security test generation')
|
|
2061
|
-
.option('--no-cypress', 'Skip Cypress test generation')
|
|
2062
|
-
.action(async (options) => {
|
|
2063
|
-
const types = options.types
|
|
2064
|
-
? options.types.split(',').map(t => t.trim())
|
|
2065
|
-
: undefined;
|
|
2066
|
-
const result = await (0, index_4.generateTests)({
|
|
2067
|
-
reportsDir: options.reportsDir,
|
|
2068
|
-
outDir: options.outDir,
|
|
2069
|
-
language: options.language,
|
|
2070
|
-
framework: options.framework,
|
|
2071
|
-
priority: options.priority,
|
|
2072
|
-
dryRun: Boolean(options.dryRun),
|
|
2073
|
-
overwrite: Boolean(options.overwrite),
|
|
2074
|
-
gapId: options.gapId,
|
|
2075
|
-
types,
|
|
2076
|
-
noSecurity: Boolean(options.noSecurity),
|
|
2077
|
-
noCypress: Boolean(options.noCypress),
|
|
2078
|
-
});
|
|
2079
|
-
if (result.dryRun) {
|
|
2080
|
-
for (const file of result.files) {
|
|
2081
|
-
console.log(`\n${'='.repeat(60)}`);
|
|
2082
|
-
console.log(`// FILE: ${file.relativePath}`);
|
|
2083
|
-
console.log(`${'='.repeat(60)}`);
|
|
2084
|
-
console.log(file.content);
|
|
2085
|
-
}
|
|
2086
|
-
}
|
|
2087
|
-
else {
|
|
2088
|
-
console.log(`\nTest generation complete:`);
|
|
2089
|
-
console.log(` Gaps processed: ${result.totalGaps}`);
|
|
2090
|
-
console.log(` Files generated: ${result.generatedCount}`);
|
|
2091
|
-
console.log(` Errors: ${result.errors.length}`);
|
|
2092
|
-
if (result.errors.length > 0) {
|
|
2093
|
-
for (const err of result.errors) {
|
|
2094
|
-
console.error(` ERROR [${err.gapId}]: ${err.message}`);
|
|
2095
|
-
}
|
|
2096
|
-
}
|
|
2097
|
-
}
|
|
2098
|
-
});
|
|
2099
|
-
program
|
|
2100
|
-
.command('export-ai-flows')
|
|
2101
|
-
.description('Export AI-ready flow documentation for Copilot/Cursor/Claude')
|
|
2102
|
-
.option('--reports-dir <dir>', 'Directory with coverage reports', 'reports/')
|
|
2103
|
-
.option('--out-dir <dir>', 'Output directory for AI flow files', 'reports/')
|
|
2104
|
-
.option('--format <fmt>', 'Output format: markdown, json, or both', 'both')
|
|
2105
|
-
.option('--max-gaps <n>', 'Maximum number of gaps to include', '50')
|
|
2106
|
-
.option('--priority <p>', 'Only include gaps at this priority or higher', 'P3')
|
|
2107
|
-
.action(async (options) => {
|
|
2108
|
-
const flows = await (0, index_4.exportAiFlows)({
|
|
2109
|
-
reportsDir: options.reportsDir,
|
|
2110
|
-
outDir: options.outDir,
|
|
2111
|
-
format: options.format,
|
|
2112
|
-
maxGaps: parseInt(options.maxGaps, 10),
|
|
2113
|
-
priority: options.priority,
|
|
2114
|
-
});
|
|
2115
|
-
console.log(`\nAI flows export complete:`);
|
|
2116
|
-
console.log(` Gaps exported: ${flows.gaps.length}`);
|
|
2117
|
-
console.log(` Project: ${flows.project.name}`);
|
|
2118
|
-
console.log(` Language: ${flows.project.language}`);
|
|
2119
|
-
});
|
|
2120
|
-
program
|
|
2121
|
-
.command('score-tests')
|
|
2122
|
-
.description('Score quality of existing test suite on 5 dimensions (0-100)')
|
|
2123
|
-
.option('--tests <glob>', 'Glob pattern for test files to score', 'tests/**/*.test.ts')
|
|
2124
|
-
.option('--reports-dir <dir>', 'Directory to write quality score output', 'reports/')
|
|
2125
|
-
.option('--fail-below <score>', 'Exit non-zero if any file scores below this', '0')
|
|
2126
|
-
.action(async (options) => {
|
|
2127
|
-
var _a;
|
|
2128
|
-
try {
|
|
2129
|
-
const report = await (0, index_4.scoreTests)({
|
|
2130
|
-
testsGlob: options.tests,
|
|
2131
|
-
reportsDir: options.reportsDir,
|
|
2132
|
-
failBelow: parseInt(options.failBelow, 10),
|
|
2133
|
-
});
|
|
2134
|
-
console.log(`\nTest Quality Score Report:`);
|
|
2135
|
-
console.log(` Overall score: ${report.overallScore}/100`);
|
|
2136
|
-
console.log(` Files scored: ${report.byFile.length}`);
|
|
2137
|
-
if (report.lowestQualityFiles.length > 0) {
|
|
2138
|
-
console.log(`\n Lowest quality files:`);
|
|
2139
|
-
for (const f of report.lowestQualityFiles) {
|
|
2140
|
-
const entry = report.byFile.find(b => b.file === f);
|
|
2141
|
-
console.log(` ${f}: ${(_a = entry === null || entry === void 0 ? void 0 : entry.score) !== null && _a !== void 0 ? _a : '?'}/100`);
|
|
2142
|
-
}
|
|
2143
|
-
}
|
|
2144
|
-
if (report.highestRiskLowQualityGaps.length > 0) {
|
|
2145
|
-
console.log(`\n High risk + low quality:`);
|
|
2146
|
-
for (const g of report.highestRiskLowQualityGaps) {
|
|
2147
|
-
console.log(` ${g.endpoint}: quality=${g.qualityScore}, risk=${g.riskScore}`);
|
|
2148
|
-
console.log(` → ${g.primaryIssue}`);
|
|
2149
|
-
}
|
|
2150
|
-
}
|
|
2151
|
-
console.log(`\n Report written to: ${options.reportsDir}/test-quality.json`);
|
|
2152
|
-
}
|
|
2153
|
-
catch (err) {
|
|
2154
|
-
if (err instanceof Error) {
|
|
2155
|
-
console.error(err.message);
|
|
2156
|
-
}
|
|
2157
|
-
process.exit(1);
|
|
2158
|
-
}
|
|
2159
|
-
});
|
|
2160
2137
|
// Parse the command-line arguments
|
|
2161
2138
|
program.parse(process.argv);
|
|
2162
2139
|
// When invoked with no arguments (no subcommand), display help
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeInference.d.ts","sourceRoot":"","sources":["../../../src/inference/routeInference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,eAAO,MAAM,YAAY,uEAAwE,CAAC;AAClG,MAAM,MAAM,UAAU,GAAG,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"routeInference.d.ts","sourceRoot":"","sources":["../../../src/inference/routeInference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,eAAO,MAAM,YAAY,uEAAwE,CAAC;AAClG,MAAM,MAAM,UAAU,GAAG,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAqFD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAkIrE;AAiWD;;GAEG;AACH,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAgBxE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAY5F"}
|
|
@@ -80,18 +80,7 @@ const JSDOC_ROUTE_PATTERN = /@route\s+\{(GET|POST|PUT|PATCH|DELETE|HEAD|OPTIONS)
|
|
|
80
80
|
* Used to gate the URL+method object-form scan so we only activate it in
|
|
81
81
|
* files that actually make HTTP calls (avoids scanning every JS file).
|
|
82
82
|
*/
|
|
83
|
-
const HTTP_CLIENT_SIGNAL = /\$http|\bfetch\s*\(|\baxios\b
|
|
84
|
-
/**
|
|
85
|
-
* Matches client-side HTTP method calls: requests.get('/path'), api.post('/path'), etc.
|
|
86
|
-
* Group 1 = HTTP method, Group 2 = path literal starting with /
|
|
87
|
-
* Also handles: superagent.get(`${base}/path`) → captures the static suffix
|
|
88
|
-
*/
|
|
89
|
-
const HTTP_CLIENT_METHOD_CALL = /\b\w+\s*\.\s*(get|post|put|patch|delete|del|head|options)\s*\(\s*(?:[^'"`\n]*?\+\s*)?['"`](\/[^'"`?\n]+)/i;
|
|
90
|
-
/**
|
|
91
|
-
* Signals that this JS/TS file is a client-side HTTP service layer.
|
|
92
|
-
* Expands on HTTP_CLIENT_SIGNAL to include superagent and common wrapper patterns.
|
|
93
|
-
*/
|
|
94
|
-
const HTTP_SERVICE_SIGNAL = /\bsuperagent\b|\brequests\s*\.\s*(?:get|post|put|delete|del)\b|\bapi\s*\.\s*(?:get|post|put|delete)\b/;
|
|
83
|
+
const HTTP_CLIENT_SIGNAL = /\$http|\bfetch\s*\(|\baxios\b/;
|
|
95
84
|
/**
|
|
96
85
|
* Matches a `url:` property that ends with a literal path segment starting
|
|
97
86
|
* with `/`. Handles both bare and concatenated forms:
|
|
@@ -173,8 +162,6 @@ function inferRoutesFromFile(filePath) {
|
|
|
173
162
|
// We only enable the object-form method+url scanner for such files to
|
|
174
163
|
// avoid false positives in ordinary JS/TS source.
|
|
175
164
|
const usesHttpClient = HTTP_CLIENT_SIGNAL.test(content);
|
|
176
|
-
// Pre-check: does this file use a client-side HTTP service wrapper (requests.*, api.*, etc.)?
|
|
177
|
-
const usesHttpServiceWrapper = HTTP_SERVICE_SIGNAL.test(content);
|
|
178
165
|
for (let lineIdx = 0; lineIdx < lines.length; lineIdx++) {
|
|
179
166
|
const line = lines[lineIdx];
|
|
180
167
|
// 1a. router.method('/path', ...) — all on one line
|
|
@@ -252,21 +239,6 @@ function inferRoutesFromFile(filePath) {
|
|
|
252
239
|
}
|
|
253
240
|
}
|
|
254
241
|
}
|
|
255
|
-
// 6. Client-side HTTP method calls: requests.get('/path'), api.post('/path')
|
|
256
|
-
// Only activate for files that contain HTTP service signals to avoid false positives
|
|
257
|
-
if (usesHttpServiceWrapper) {
|
|
258
|
-
const clientCallMatch = line.match(HTTP_CLIENT_METHOD_CALL);
|
|
259
|
-
if (clientCallMatch) {
|
|
260
|
-
let httpMethod = clientCallMatch[1].toLowerCase();
|
|
261
|
-
// Normalize 'del' → 'delete'
|
|
262
|
-
if (httpMethod === 'del')
|
|
263
|
-
httpMethod = 'delete';
|
|
264
|
-
if (exports.HTTP_METHODS.includes(httpMethod)) {
|
|
265
|
-
const routePath = clientCallMatch[2].split('?')[0]; // strip query string
|
|
266
|
-
addRoute(httpMethod, routePath, lineIdx + 1, 'code');
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
242
|
}
|
|
271
243
|
return [...byKey.values()];
|
|
272
244
|
}
|
|
@@ -428,7 +400,7 @@ function findNextMethodNameInJava(javaLines, fromLine) {
|
|
|
428
400
|
* @blueprint.route('/articles/<slug>', methods=['PUT'])
|
|
429
401
|
* @app.route('/tags') ← defaults to GET
|
|
430
402
|
*/
|
|
431
|
-
const FLASK_ROUTE = /@(\w+)\.route\s*\(\s*['"]([^'"]+)['"](
|
|
403
|
+
const FLASK_ROUTE = /@(\w+)\.route\s*\(\s*['"]([^'"]+)['"](?:\s*,\s*methods\s*=\s*\[([^\]]+)\])?\s*\)/;
|
|
432
404
|
/**
|
|
433
405
|
* Matches FastAPI decorators.
|
|
434
406
|
* @app.get('/articles')
|
|
@@ -447,22 +419,6 @@ const FLASK_BLUEPRINT_CTOR = /(\w+)\s*=\s*Blueprint\s*\(\s*['"][^'"]+['"](?:\s*,
|
|
|
447
419
|
* router = APIRouter(prefix="/articles")
|
|
448
420
|
*/
|
|
449
421
|
const FASTAPI_APIROUTER = /(\w+)\s*=\s*APIRouter\s*\([^)]*?prefix\s*=\s*['"]([^'"]+)['"]/;
|
|
450
|
-
/**
|
|
451
|
-
* Scan ahead for a Python `def function_name(` line following a decorator.
|
|
452
|
-
* Skips additional decorator lines and stops at the first non-decorator,
|
|
453
|
-
* non-blank, non-comment line that is not a def.
|
|
454
|
-
*/
|
|
455
|
-
function findPythonHandlerFunction(lines, fromLine) {
|
|
456
|
-
for (let j = fromLine + 1; j < Math.min(fromLine + 6, lines.length); j++) {
|
|
457
|
-
const m = lines[j].match(/^def\s+(\w+)\s*\(/);
|
|
458
|
-
if (m)
|
|
459
|
-
return m[1];
|
|
460
|
-
// Skip decorator lines
|
|
461
|
-
if (!lines[j].trim().startsWith('@') && lines[j].trim().length > 0 && !lines[j].trim().startsWith('#'))
|
|
462
|
-
break;
|
|
463
|
-
}
|
|
464
|
-
return undefined;
|
|
465
|
-
}
|
|
466
422
|
/**
|
|
467
423
|
* Infer routes from a Python (Flask/FastAPI) source file.
|
|
468
424
|
*/
|
|
@@ -476,10 +432,10 @@ function inferRoutesFromPythonFile(filePath) {
|
|
|
476
432
|
}
|
|
477
433
|
const lines = content.split('\n');
|
|
478
434
|
const byKey = new Map();
|
|
479
|
-
const addRoute = (method, routePath, lineNumber
|
|
435
|
+
const addRoute = (method, routePath, lineNumber) => {
|
|
480
436
|
const key = `${method}:${routePath}`;
|
|
481
437
|
if (!byKey.has(key)) {
|
|
482
|
-
byKey.set(key, { method, path: routePath,
|
|
438
|
+
byKey.set(key, { method, path: routePath, sourceFile: filePath, lineNumber, discoveredVia: 'code' });
|
|
483
439
|
}
|
|
484
440
|
};
|
|
485
441
|
// Pass 1: Detect blueprint/router prefix for the file
|
|
@@ -507,19 +463,18 @@ function inferRoutesFromPythonFile(filePath) {
|
|
|
507
463
|
const fullPath = localPrefix + (routePath.startsWith('/') ? routePath : '/' + routePath);
|
|
508
464
|
// Normalize Flask <param> to {param}
|
|
509
465
|
const normalizedPath = fullPath.replace(/<(?:\w+:)?(\w+)>/g, '{$1}');
|
|
510
|
-
const handlerFn = findPythonHandlerFunction(lines, i);
|
|
511
466
|
if (methodsList) {
|
|
512
|
-
// Parse methods=['GET', 'POST']
|
|
467
|
+
// Parse methods=['GET', 'POST'] → individual routes
|
|
513
468
|
const methods = methodsList.replace(/['"]/g, '').split(',').map((m) => m.trim().toLowerCase());
|
|
514
469
|
for (const m of methods) {
|
|
515
470
|
if (exports.HTTP_METHODS.includes(m)) {
|
|
516
|
-
addRoute(m, normalizedPath, i + 1
|
|
471
|
+
addRoute(m, normalizedPath, i + 1);
|
|
517
472
|
}
|
|
518
473
|
}
|
|
519
474
|
}
|
|
520
475
|
else {
|
|
521
476
|
// Default to GET
|
|
522
|
-
addRoute('get', normalizedPath, i + 1
|
|
477
|
+
addRoute('get', normalizedPath, i + 1);
|
|
523
478
|
}
|
|
524
479
|
continue;
|
|
525
480
|
}
|
|
@@ -529,9 +484,8 @@ function inferRoutesFromPythonFile(filePath) {
|
|
|
529
484
|
const httpMethod = fastapiMatch[2].toLowerCase();
|
|
530
485
|
const routePath = fastapiMatch[3];
|
|
531
486
|
const fullPath = localPrefix + (routePath.startsWith('/') ? routePath : '/' + routePath);
|
|
532
|
-
const handlerFn = findPythonHandlerFunction(lines, i);
|
|
533
487
|
// FastAPI uses {param} natively
|
|
534
|
-
addRoute(httpMethod, fullPath, i + 1
|
|
488
|
+
addRoute(httpMethod, fullPath, i + 1);
|
|
535
489
|
continue;
|
|
536
490
|
}
|
|
537
491
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"semanticBuilder.d.ts","sourceRoot":"","sources":["../../../../src/languages/java/semanticBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAEV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,OAAO,EACR,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAKL,KAAK,MAAM,EACZ,MAAM,2BAA2B,CAAC;AAOnC,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,GACX;IAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,CAmErF;AAID,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GACrC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"semanticBuilder.d.ts","sourceRoot":"","sources":["../../../../src/languages/java/semanticBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAEV,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,OAAO,EACR,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAKL,KAAK,MAAM,EACZ,MAAM,2BAA2B,CAAC;AAOnC,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,GACX;IAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAAE,CAmErF;AAID,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,GACrC,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAqC/B;AAID,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,EACtC,GAAG,EAAE,gBAAgB,EAAE,GACtB,IAAI,CA6DN;AAID,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAyBvE;AAID,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CAa3E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE,CAa3D"}
|
|
@@ -97,8 +97,6 @@ function extractJavaFunctions(root, constants) {
|
|
|
97
97
|
continue;
|
|
98
98
|
const annotations = extractAnnotationNames(method);
|
|
99
99
|
const block = (_e = (_d = method.childForFieldName) === null || _d === void 0 ? void 0 : _d.call(method, 'body')) !== null && _e !== void 0 ? _e : (0, treeSitterUtils_1.firstChildOfType)(method, 'block');
|
|
100
|
-
// Extract method parameters
|
|
101
|
-
const parameters = extractMethodParameters(method);
|
|
102
100
|
const bodyHttpCalls = [];
|
|
103
101
|
const calledFunctions = [];
|
|
104
102
|
let returnValue;
|
|
@@ -111,7 +109,7 @@ function extractJavaFunctions(root, constants) {
|
|
|
111
109
|
const cucumberPattern = extractCucumberPattern(annotations, method);
|
|
112
110
|
graph.set(name, {
|
|
113
111
|
name,
|
|
114
|
-
parameters,
|
|
112
|
+
parameters: [],
|
|
115
113
|
bodyHttpCalls,
|
|
116
114
|
calledFunctions,
|
|
117
115
|
returnValue,
|
|
@@ -123,44 +121,14 @@ function extractJavaFunctions(root, constants) {
|
|
|
123
121
|
}
|
|
124
122
|
// ─── HTTP call extraction ─────────────────────────────────────────────────────
|
|
125
123
|
function extractJavaHttpCalls(block, constants, out) {
|
|
126
|
-
var _a, _b, _c, _d, _e, _f, _g
|
|
124
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
127
125
|
const methodInvocations = (0, treeSitterUtils_1.findNodes)(block, ['method_invocation']);
|
|
128
126
|
for (const invoc of methodInvocations) {
|
|
129
127
|
const methodName = (_e = (_c = (_b = (_a = invoc.childForFieldName) === null || _a === void 0 ? void 0 : _a.call(invoc, 'name')) === null || _b === void 0 ? void 0 : _b.text) !== null && _c !== void 0 ? _c : (_d = firstChildNamed(invoc, 'identifier')) === null || _d === void 0 ? void 0 : _d.text) !== null && _e !== void 0 ? _e : '';
|
|
130
128
|
const lowerMethod = methodName.toLowerCase();
|
|
131
|
-
// MockMvc: perform(get("/path")) — extract the inner HTTP method call
|
|
132
|
-
if (lowerMethod === 'perform') {
|
|
133
|
-
const argList = (_g = (_f = invoc.childForFieldName) === null || _f === void 0 ? void 0 : _f.call(invoc, 'arguments')) !== null && _g !== void 0 ? _g : (0, treeSitterUtils_1.firstChildOfType)(invoc, 'argument_list');
|
|
134
|
-
if (!argList)
|
|
135
|
-
continue;
|
|
136
|
-
// The argument to perform() is a method invocation like get("/path") or post("/path")
|
|
137
|
-
const innerInvocations = (0, treeSitterUtils_1.findNodes)(argList, ['method_invocation']);
|
|
138
|
-
for (const innerInvoc of innerInvocations) {
|
|
139
|
-
const innerMethodName = (_m = (_k = (_j = (_h = innerInvoc.childForFieldName) === null || _h === void 0 ? void 0 : _h.call(innerInvoc, 'name')) === null || _j === void 0 ? void 0 : _j.text) !== null && _k !== void 0 ? _k : (_l = firstChildNamed(innerInvoc, 'identifier')) === null || _l === void 0 ? void 0 : _l.text) !== null && _m !== void 0 ? _m : '';
|
|
140
|
-
const innerLower = innerMethodName.toLowerCase();
|
|
141
|
-
if (!HTTP_METHODS.has(innerLower))
|
|
142
|
-
continue;
|
|
143
|
-
const innerArgList = (_p = (_o = innerInvoc.childForFieldName) === null || _o === void 0 ? void 0 : _o.call(innerInvoc, 'arguments')) !== null && _p !== void 0 ? _p : (0, treeSitterUtils_1.firstChildOfType)(innerInvoc, 'argument_list');
|
|
144
|
-
if (!innerArgList)
|
|
145
|
-
continue;
|
|
146
|
-
const innerStringArg = findFirstStringInArgList(innerArgList, constants);
|
|
147
|
-
if (!innerStringArg)
|
|
148
|
-
continue;
|
|
149
|
-
const normalizedPath = innerStringArg.value.startsWith('/') ? (0, resolvePaths_1.normalizePathToTemplate)(innerStringArg.value) : undefined;
|
|
150
|
-
out.push({
|
|
151
|
-
method: innerLower.toUpperCase(),
|
|
152
|
-
rawPathArg: (_q = innerStringArg.varName) !== null && _q !== void 0 ? _q : innerStringArg.value,
|
|
153
|
-
resolvedPath: innerStringArg.value,
|
|
154
|
-
normalizedPath,
|
|
155
|
-
resolutionType: innerStringArg.isDirect ? 'direct' : 'constant',
|
|
156
|
-
confidence: innerStringArg.isDirect ? 'high' : 'medium',
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
continue;
|
|
160
|
-
}
|
|
161
129
|
if (!HTTP_METHODS.has(lowerMethod))
|
|
162
130
|
continue;
|
|
163
|
-
const argList = (
|
|
131
|
+
const argList = (_g = (_f = invoc.childForFieldName) === null || _f === void 0 ? void 0 : _f.call(invoc, 'arguments')) !== null && _g !== void 0 ? _g : (0, treeSitterUtils_1.firstChildOfType)(invoc, 'argument_list');
|
|
164
132
|
if (!argList)
|
|
165
133
|
continue;
|
|
166
134
|
// Extract the first string argument (path)
|
|
@@ -170,6 +138,15 @@ function extractJavaHttpCalls(block, constants, out) {
|
|
|
170
138
|
const { value: path, isDirect, varName } = firstStringArg;
|
|
171
139
|
// Try to detect the HTTP method from context
|
|
172
140
|
let httpMethod = lowerMethod.toUpperCase();
|
|
141
|
+
// RestAssured: .when().get("/path") or .given().get("/path")
|
|
142
|
+
// The method name IS the HTTP method in RestAssured style
|
|
143
|
+
if (!HTTP_METHODS.has(lowerMethod))
|
|
144
|
+
continue;
|
|
145
|
+
// MockMvc: perform(get("/path")) — perform wraps a method call
|
|
146
|
+
if (lowerMethod === 'perform') {
|
|
147
|
+
// The arg is another method invocation
|
|
148
|
+
continue; // Handled when we process the inner get/post
|
|
149
|
+
}
|
|
173
150
|
if (lowerMethod === 'request') {
|
|
174
151
|
// generic request(method, path) — try to get HTTP method from first arg
|
|
175
152
|
const stringArgs = findAllStringsInArgList(argList, constants);
|
|
@@ -247,40 +224,6 @@ function extractJavaFlowRefs(root) {
|
|
|
247
224
|
return refs;
|
|
248
225
|
}
|
|
249
226
|
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
250
|
-
/**
|
|
251
|
-
* Extract method parameters with their annotations (e.g. @RequestParam, @PathVariable, @RequestBody).
|
|
252
|
-
*/
|
|
253
|
-
function extractMethodParameters(method) {
|
|
254
|
-
var _a;
|
|
255
|
-
const params = [];
|
|
256
|
-
const formalParams = (0, treeSitterUtils_1.firstChildOfType)(method, 'formal_parameters');
|
|
257
|
-
if (!formalParams)
|
|
258
|
-
return params;
|
|
259
|
-
const paramNodes = (0, treeSitterUtils_1.findNodes)(formalParams, ['formal_parameter', 'spread_parameter']);
|
|
260
|
-
for (const paramNode of paramNodes) {
|
|
261
|
-
const paramAnnotations = [];
|
|
262
|
-
(0, treeSitterUtils_1.walkTree)(paramNode, (n) => {
|
|
263
|
-
var _a;
|
|
264
|
-
if (n.type === 'annotation' || n.type === 'marker_annotation') {
|
|
265
|
-
const nameNode = (0, treeSitterUtils_1.firstChildOfType)(n, 'identifier');
|
|
266
|
-
if (nameNode)
|
|
267
|
-
paramAnnotations.push('@' + ((_a = nameNode.text) !== null && _a !== void 0 ? _a : ''));
|
|
268
|
-
}
|
|
269
|
-
});
|
|
270
|
-
const nameNode = firstChildNamed(paramNode, 'identifier');
|
|
271
|
-
const name = (_a = nameNode === null || nameNode === void 0 ? void 0 : nameNode.text) !== null && _a !== void 0 ? _a : '';
|
|
272
|
-
if (!name)
|
|
273
|
-
continue;
|
|
274
|
-
// Include annotation prefix for annotated params (Spring @RequestParam, @PathVariable, etc.)
|
|
275
|
-
if (paramAnnotations.length > 0) {
|
|
276
|
-
params.push(`${paramAnnotations.join(' ')} ${name}`);
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
params.push(name);
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
return params;
|
|
283
|
-
}
|
|
284
227
|
function extractModifierTexts(node) {
|
|
285
228
|
const modifiers = [];
|
|
286
229
|
(0, treeSitterUtils_1.walkTree)(node, (n) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angularDetector.d.ts","sourceRoot":"","sources":["../../../../src/languages/javascript/angularDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,KAAK,EAAE,aAAa,GAAG,WAAW,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,GAAG,aAAa,CAAC;IACnC,SAAS,EAAE,aAAa,GAAG,kBAAkB,GAAG,eAAe,GAAG,SAAS,GAAG,UAAU,CAAC;IACzF,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B,EAAE,OAAO,CAAC;IACrC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAyC9F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"angularDetector.d.ts","sourceRoot":"","sources":["../../../../src/languages/javascript/angularDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,KAAK,EAAE,aAAa,GAAG,WAAW,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,GAAG,aAAa,CAAC;IACnC,SAAS,EAAE,aAAa,GAAG,kBAAkB,GAAG,eAAe,GAAG,SAAS,GAAG,UAAU,CAAC;IACzF,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,GAAG,YAAY,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B,EAAE,OAAO,CAAC;IACrC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAyC9F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAuChG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAyCxF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAgCpG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAY7F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEhE"}
|
|
@@ -68,66 +68,33 @@ function detectAngularInjections(sourceText, filePath) {
|
|
|
68
68
|
const injections = [];
|
|
69
69
|
const lines = sourceText.split('\n');
|
|
70
70
|
let currentClass = '';
|
|
71
|
-
let currentConstHost = '';
|
|
72
|
-
let inConstructorParams = false;
|
|
73
71
|
for (let i = 0; i < lines.length; i++) {
|
|
74
72
|
const line = lines[i];
|
|
75
73
|
// Track current class
|
|
76
74
|
const classMatch = line.match(/class\s+(\w+)/);
|
|
77
75
|
if (classMatch)
|
|
78
76
|
currentClass = classMatch[1];
|
|
79
|
-
// Track current const/export const assignment as potential host for inject() outside class.
|
|
80
|
-
// Only update when the line is NOT itself an inject() call (e.g. skip `const x = inject(Y)`).
|
|
81
|
-
if (!currentClass) {
|
|
82
|
-
const constHostMatch = line.match(/(?:export\s+)?(?:const|let)\s+(\w+)\s*(?::\s*\S+)?\s*=/);
|
|
83
|
-
if (constHostMatch && !line.match(/=\s*inject\s*\(/)) {
|
|
84
|
-
currentConstHost = constHostMatch[1];
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
// Track constructor parameter block boundaries
|
|
88
|
-
if (/\bconstructor\s*\(/.test(line)) {
|
|
89
|
-
inConstructorParams = true;
|
|
90
|
-
}
|
|
91
|
-
if (inConstructorParams && line.includes(')')) {
|
|
92
|
-
// Process this line (it's still inside the constructor params), then close
|
|
93
|
-
// We'll close after checking for injections below
|
|
94
|
-
}
|
|
95
77
|
// Constructor injection: constructor(private http: HttpClient)
|
|
96
|
-
|
|
97
|
-
if (
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
style: 'constructor',
|
|
106
|
-
sourceFile: filePath,
|
|
107
|
-
line: i + 1,
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// Close the constructor param block after processing (handles closing paren on same line)
|
|
113
|
-
if (inConstructorParams && line.includes(')')) {
|
|
114
|
-
inConstructorParams = false;
|
|
78
|
+
const ctorMatch = line.match(/(?:private|protected|public|readonly)\s+(\w+)\s*:\s*(\w+)/);
|
|
79
|
+
if (ctorMatch && currentClass) {
|
|
80
|
+
injections.push({
|
|
81
|
+
consumerClass: currentClass,
|
|
82
|
+
serviceClass: ctorMatch[2],
|
|
83
|
+
style: 'constructor',
|
|
84
|
+
sourceFile: filePath,
|
|
85
|
+
line: i + 1,
|
|
86
|
+
});
|
|
115
87
|
}
|
|
116
88
|
// Functional inject: inject(HttpClient)
|
|
117
89
|
const injectMatch = line.match(/(\w+)\s*=\s*inject\s*\(\s*(\w+)\s*\)/);
|
|
118
|
-
if (injectMatch) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
style: 'inject-fn',
|
|
127
|
-
sourceFile: filePath,
|
|
128
|
-
line: i + 1,
|
|
129
|
-
});
|
|
130
|
-
}
|
|
90
|
+
if (injectMatch && currentClass) {
|
|
91
|
+
injections.push({
|
|
92
|
+
consumerClass: currentClass,
|
|
93
|
+
serviceClass: injectMatch[2],
|
|
94
|
+
style: 'inject-fn',
|
|
95
|
+
sourceFile: filePath,
|
|
96
|
+
line: i + 1,
|
|
97
|
+
});
|
|
131
98
|
}
|
|
132
99
|
}
|
|
133
100
|
return injections;
|
|
@@ -66,8 +66,8 @@ function tryExtractAssertion(callNode) {
|
|
|
66
66
|
if (!subject)
|
|
67
67
|
return null;
|
|
68
68
|
const methodName = (_j = (_h = (_g = callee.property) === null || _g === void 0 ? void 0 : _g.name) === null || _h === void 0 ? void 0 : _h.toLowerCase()) !== null && _j !== void 0 ? _j : '';
|
|
69
|
-
const
|
|
70
|
-
const
|
|
69
|
+
const assertionType = classifyAssertionMethod(methodName);
|
|
70
|
+
const { variable } = classifyExpectSubject(subject);
|
|
71
71
|
return { assertionType, subjectVariable: variable, line: (_l = (_k = callNode.loc) === null || _k === void 0 ? void 0 : _k.start) === null || _l === void 0 ? void 0 : _l.line };
|
|
72
72
|
}
|
|
73
73
|
}
|
|
@@ -132,15 +132,13 @@ function classifyExpectSubject(subject) {
|
|
|
132
132
|
}
|
|
133
133
|
return { variable: undefined, assertionType: 'body-field' };
|
|
134
134
|
}
|
|
135
|
-
function classifyAssertionMethod(methodName
|
|
135
|
+
function classifyAssertionMethod(methodName) {
|
|
136
136
|
if (methodName === 'tobe' ||
|
|
137
137
|
methodName === 'toequal' ||
|
|
138
138
|
methodName === 'tostrictequal' ||
|
|
139
139
|
methodName === 'tobetruthy' ||
|
|
140
140
|
methodName === 'tobefalsy') {
|
|
141
|
-
|
|
142
|
-
// Only classify as status-code when the subject involves status.
|
|
143
|
-
return subjectType === 'status-code' ? 'status-code' : 'body-field';
|
|
141
|
+
return 'status-code'; // Could be either, default to status-code
|
|
144
142
|
}
|
|
145
143
|
if (methodName === 'tohaveproperty' || methodName === 'tocontain' || methodName === 'tomatch') {
|
|
146
144
|
return 'body-field';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hapiDetector.d.ts","sourceRoot":"","sources":["../../../../src/languages/javascript/hapiDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,KAAK,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAkBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"hapiDetector.d.ts","sourceRoot":"","sources":["../../../../src/languages/javascript/hapiDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,KAAK,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAkBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CAuFlF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAmBtF"}
|