api-tests-coverage 1.0.20 → 1.0.22
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/dist/assets/{_basePickBy-C2jmWITn.js → _basePickBy-BKGHUeDJ.js} +1 -1
- package/dist/dashboard/{assets/_baseUniq-BZHS9wTU.js → dist/assets/_baseUniq-CtA-DQF7.js} +1 -1
- package/dist/dashboard/dist/assets/{arc-B-Q4nGPT.js → arc-CbXP3Mc9.js} +1 -1
- package/dist/dashboard/dist/assets/{architectureDiagram-VXUJARFQ-Bs48s9rH.js → architectureDiagram-VXUJARFQ-n7QxasMM.js} +1 -1
- package/dist/dashboard/dist/assets/{blockDiagram-VD42YOAC-BPw-T2eL.js → blockDiagram-VD42YOAC-MXnGwKRn.js} +1 -1
- package/dist/dashboard/{assets/c4Diagram-YG6GDRKO-DuP3tG_c.js → dist/assets/c4Diagram-YG6GDRKO-B3yZ5P9k.js} +1 -1
- package/dist/dashboard/dist/assets/channel-C7QwX7U8.js +1 -0
- package/dist/dashboard/dist/assets/{chunk-4BX2VUAB-B9cIE1K2.js → chunk-4BX2VUAB-Dw3El5KF.js} +1 -1
- package/dist/dashboard/dist/assets/{chunk-55IACEB6-BIFhHB94.js → chunk-55IACEB6-T8Jf00IL.js} +1 -1
- package/dist/dashboard/dist/assets/{chunk-B4BG7PRW-B3IrqteW.js → chunk-B4BG7PRW-DAJalKYJ.js} +1 -1
- package/dist/dashboard/dist/assets/{chunk-DI55MBZ5-B7xHuqZu.js → chunk-DI55MBZ5-p7o_KuDF.js} +1 -1
- package/dist/dashboard/dist/assets/{chunk-FMBD7UC4-BBMfQbw1.js → chunk-FMBD7UC4-B0wUAfQR.js} +1 -1
- package/dist/dashboard/dist/assets/{chunk-QN33PNHL-BBQ6Q-9S.js → chunk-QN33PNHL-BTFwTEw8.js} +1 -1
- package/dist/dashboard/dist/assets/{chunk-QZHKN3VN-9uXt-06K.js → chunk-QZHKN3VN-CNXHnjkC.js} +1 -1
- package/dist/dashboard/dist/assets/{chunk-TZMSLE5B-BjDMUc_L.js → chunk-TZMSLE5B-BIVywBYp.js} +1 -1
- package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-Dkb-G0UK.js +1 -0
- package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-Dkb-G0UK.js +1 -0
- package/dist/dashboard/dist/assets/clone-BSdXhKmH.js +1 -0
- package/dist/dashboard/dist/assets/{cose-bilkent-S5V4N54A-DLYZ4dZA.js → cose-bilkent-S5V4N54A-DuALhY5a.js} +1 -1
- package/dist/dashboard/dist/assets/{dagre-6UL2VRFP-B8oEROJc.js → dagre-6UL2VRFP-w6endfy9.js} +1 -1
- package/dist/dashboard/dist/assets/{diagram-PSM6KHXK-5uki9Dw8.js → diagram-PSM6KHXK-BDnUwPQC.js} +1 -1
- package/dist/dashboard/dist/assets/{diagram-QEK2KX5R-BRNhmby2.js → diagram-QEK2KX5R-Cbb7ctAo.js} +1 -1
- package/dist/dashboard/{assets/diagram-S2PKOQOG-Bk_jyoxg.js → dist/assets/diagram-S2PKOQOG-76ascveh.js} +1 -1
- package/dist/dashboard/dist/assets/{erDiagram-Q2GNP2WA-BbPQp6RA.js → erDiagram-Q2GNP2WA-BQQnVF0J.js} +1 -1
- package/dist/dashboard/dist/assets/{flowDiagram-NV44I4VS-BAHshMEg.js → flowDiagram-NV44I4VS-dKukiSxD.js} +1 -1
- package/dist/dashboard/dist/assets/{ganttDiagram-JELNMOA3-BS4JnN-M.js → ganttDiagram-JELNMOA3-BqnazZuZ.js} +1 -1
- package/dist/dashboard/{assets/gitGraphDiagram-V2S2FVAM-RgQMxxaQ.js → dist/assets/gitGraphDiagram-V2S2FVAM-BUFcnXCj.js} +1 -1
- package/dist/dashboard/dist/assets/{graph-CD7-npU0.js → graph-CGQIvL3r.js} +1 -1
- package/dist/dashboard/dist/assets/index-CadOHtae.css +1 -0
- package/dist/dashboard/dist/assets/{index-D3_88Gr5.js → index-DwqfA4mc.js} +115 -115
- package/dist/dashboard/dist/assets/{infoDiagram-HS3SLOUP-BMp4C5wf.js → infoDiagram-HS3SLOUP-BdylFPLI.js} +1 -1
- package/dist/dashboard/{assets/journeyDiagram-XKPGCS4Q-CdvZAxeA.js → dist/assets/journeyDiagram-XKPGCS4Q-BzJTBkhp.js} +1 -1
- package/dist/dashboard/{assets/kanban-definition-3W4ZIXB7-DTse5xX8.js → dist/assets/kanban-definition-3W4ZIXB7-StKomgio.js} +1 -1
- package/dist/dashboard/dist/assets/{layout-6njVG9Ld.js → layout-BnsX73QS.js} +1 -1
- package/dist/dashboard/dist/assets/{mindmap-definition-VGOIOE7T-B7wYeLe1.js → mindmap-definition-VGOIOE7T-HqFRhVFX.js} +1 -1
- package/dist/dashboard/dist/assets/{pieDiagram-ADFJNKIX-5pSPRGJ2.js → pieDiagram-ADFJNKIX-2I2tFH0C.js} +1 -1
- package/dist/dashboard/{assets/quadrantDiagram-AYHSOK5B-C6NljtBN.js → dist/assets/quadrantDiagram-AYHSOK5B-PlELkdBW.js} +1 -1
- package/dist/dashboard/{assets/requirementDiagram-UZGBJVZJ-Ban4o6oK.js → dist/assets/requirementDiagram-UZGBJVZJ-_9eLQNcZ.js} +1 -1
- package/dist/dashboard/dist/assets/{sankeyDiagram-TZEHDZUN-BDImwZtB.js → sankeyDiagram-TZEHDZUN-DHl1Ss7O.js} +1 -1
- package/dist/dashboard/dist/assets/{sequenceDiagram-WL72ISMW-1d8_kyI3.js → sequenceDiagram-WL72ISMW-B9p0m3Uf.js} +1 -1
- package/dist/dashboard/dist/assets/{stateDiagram-FKZM4ZOC-BWqoDymf.js → stateDiagram-FKZM4ZOC--rpDODjT.js} +1 -1
- package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-Ca9uGk46.js +1 -0
- package/dist/dashboard/dist/assets/{timeline-definition-IT6M3QCI-CBR9kqeJ.js → timeline-definition-IT6M3QCI-BCHaGBHB.js} +1 -1
- package/dist/dashboard/{assets/treemap-GDKQZRPO-D-XpcCUD.js → dist/assets/treemap-GDKQZRPO-CgiqDY8M.js} +1 -1
- package/dist/dashboard/dist/assets/{xychartDiagram-PRI3JC2R-7aSkQtVu.js → xychartDiagram-PRI3JC2R-BMvBBbeV.js} +1 -1
- package/dist/dashboard/dist/index.html +2 -2
- package/dist/dashboard/dist/reports/coverage-summary.json +848 -616
- 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/generation/context-builder.d.ts +3 -13
- package/dist/src/generation/context-builder.d.ts.map +1 -1
- package/dist/src/generation/context-builder.js +151 -119
- package/dist/src/generation/engine.d.ts +34 -13
- package/dist/src/generation/engine.d.ts.map +1 -1
- package/dist/src/generation/engine.js +317 -143
- package/dist/src/generation/file-router.d.ts +4 -5
- package/dist/src/generation/file-router.d.ts.map +1 -1
- package/dist/src/generation/file-router.js +39 -58
- package/dist/src/generation/gap-extractor.d.ts +9 -4
- package/dist/src/generation/gap-extractor.d.ts.map +1 -1
- package/dist/src/generation/gap-extractor.js +230 -240
- package/dist/src/generation/template-renderer.d.ts +9 -11
- package/dist/src/generation/template-renderer.d.ts.map +1 -1
- package/dist/src/generation/template-renderer.js +499 -519
- package/dist/src/generation/types.d.ts +48 -244
- package/dist/src/generation/types.d.ts.map +1 -1
- package/dist/src/generation/types.js +0 -4
- package/dist/src/index.js +247 -254
- package/dist/src/inference/businessRuleInference.d.ts.map +1 -1
- package/dist/src/inference/businessRuleInference.js +0 -95
- package/dist/src/inference/integrationFlowInference.d.ts +1 -11
- package/dist/src/inference/integrationFlowInference.d.ts.map +1 -1
- package/dist/src/inference/integrationFlowInference.js +2 -49
- 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/detectors/expressMiddlewareDetector.d.ts +21 -0
- package/dist/src/pipeline/detectors/expressMiddlewareDetector.d.ts.map +1 -0
- package/dist/src/pipeline/detectors/expressMiddlewareDetector.js +201 -0
- package/dist/src/pipeline/detectors/flaskBlueprintDetector.d.ts +23 -0
- package/dist/src/pipeline/detectors/flaskBlueprintDetector.d.ts.map +1 -0
- package/dist/src/pipeline/detectors/flaskBlueprintDetector.js +263 -0
- package/dist/src/pipeline/detectors/springDddDetector.d.ts +23 -0
- package/dist/src/pipeline/detectors/springDddDetector.d.ts.map +1 -0
- package/dist/src/pipeline/detectors/springDddDetector.js +237 -0
- package/dist/src/pipeline/detectors/types.d.ts +97 -0
- package/dist/src/pipeline/detectors/types.d.ts.map +1 -0
- package/dist/src/pipeline/detectors/types.js +15 -0
- 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/dist/src/reporting.d.ts.map +1 -1
- package/dist/src/reporting.js +2 -1
- package/dist/src/streaming/detectors/eventBridgeDetector.d.ts +5 -0
- package/dist/src/streaming/detectors/eventBridgeDetector.d.ts.map +1 -0
- package/dist/src/streaming/detectors/eventBridgeDetector.js +82 -0
- package/dist/src/streaming/detectors/kafkaDetector.d.ts +5 -0
- package/dist/src/streaming/detectors/kafkaDetector.d.ts.map +1 -0
- package/dist/src/streaming/detectors/kafkaDetector.js +97 -0
- package/dist/src/streaming/detectors/natsDetector.d.ts +5 -0
- package/dist/src/streaming/detectors/natsDetector.d.ts.map +1 -0
- package/dist/src/streaming/detectors/natsDetector.js +96 -0
- package/dist/src/streaming/detectors/pubsubDetector.d.ts +5 -0
- package/dist/src/streaming/detectors/pubsubDetector.d.ts.map +1 -0
- package/dist/src/streaming/detectors/pubsubDetector.js +82 -0
- package/dist/src/streaming/detectors/rabbitmqDetector.d.ts +5 -0
- package/dist/src/streaming/detectors/rabbitmqDetector.d.ts.map +1 -0
- package/dist/src/streaming/detectors/rabbitmqDetector.js +103 -0
- package/dist/src/streaming/detectors/redisPubsubDetector.d.ts +5 -0
- package/dist/src/streaming/detectors/redisPubsubDetector.d.ts.map +1 -0
- package/dist/src/streaming/detectors/redisPubsubDetector.js +81 -0
- package/dist/src/streaming/detectors/snsDetector.d.ts +5 -0
- package/dist/src/streaming/detectors/snsDetector.d.ts.map +1 -0
- package/dist/src/streaming/detectors/snsDetector.js +81 -0
- package/dist/src/streaming/detectors/sqsDetector.d.ts +5 -0
- package/dist/src/streaming/detectors/sqsDetector.d.ts.map +1 -0
- package/dist/src/streaming/detectors/sqsDetector.js +81 -0
- package/dist/src/streaming/eventCoverage.d.ts +46 -0
- package/dist/src/streaming/eventCoverage.d.ts.map +1 -0
- package/dist/src/streaming/eventCoverage.js +270 -0
- package/dist/src/streaming/types.d.ts +34 -0
- package/dist/src/streaming/types.d.ts.map +1 -0
- package/dist/src/streaming/types.js +2 -0
- package/dist/src/summary/markdownRenderer.d.ts.map +1 -1
- package/dist/src/summary/markdownRenderer.js +1 -0
- package/dist/src/summary/summaryTypes.d.ts.map +1 -1
- package/dist/src/summary/summaryTypes.js +1 -0
- package/package.json +3 -3
- package/dist/dashboard/assets/arc-D4xT0thw.js +0 -1
- package/dist/dashboard/assets/architectureDiagram-VXUJARFQ-Bs48s9rH.js +0 -36
- 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/erDiagram-Q2GNP2WA-BbPQp6RA.js +0 -60
- package/dist/dashboard/assets/flowDiagram-NV44I4VS-1j044bLK.js +0 -162
- package/dist/dashboard/assets/index-Bt72YjAZ.css +0 -1
- package/dist/dashboard/assets/index-DuT2LnIf.js +0 -523
- package/dist/dashboard/assets/layout-CnKzeCpQ.js +0 -1
- 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/xychartDiagram-PRI3JC2R-BlIpbwyn.js +0 -7
- 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-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-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-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-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-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-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-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-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-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-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-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-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/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-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-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-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-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-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-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-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-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/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-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-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-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-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-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-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-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/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/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/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, _r, _s, _t, _u
|
|
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'];
|
|
@@ -1456,7 +1455,7 @@ program
|
|
|
1456
1455
|
}
|
|
1457
1456
|
// ── 3. Integration flow inference ──────────────────────────────────────
|
|
1458
1457
|
if (doInferFlows) {
|
|
1459
|
-
inferredFlowsResult = (0, integrationFlowInference_1.inferIntegrationFlows)(artifacts.testFiles, warnings
|
|
1458
|
+
inferredFlowsResult = (0, integrationFlowInference_1.inferIntegrationFlows)(artifacts.testFiles, warnings);
|
|
1460
1459
|
const flowsPath = (0, integrationFlowInference_1.writeInferredIntegrationFlows)(inferredFlowsResult, reportsDir);
|
|
1461
1460
|
console.log(`\nIntegration Flow Inference`);
|
|
1462
1461
|
console.log(` Multi-step flows detected in tests: ${inferredFlowsResult.flows.length}`);
|
|
@@ -1514,13 +1513,6 @@ program
|
|
|
1514
1513
|
while ((m = TEST_DECL_RE.exec(content)) !== null) {
|
|
1515
1514
|
descriptions.push(m[2].toLowerCase());
|
|
1516
1515
|
}
|
|
1517
|
-
// Generic: extract test function/method names for Python (def test_xxx),
|
|
1518
|
-
// Ruby (def test_xxx), and similar frameworks where test names are method names.
|
|
1519
|
-
const GENERIC_TEST_FN_RE = /\bdef\s+((?:test|should|spec)_\w+)\s*\(/g;
|
|
1520
|
-
GENERIC_TEST_FN_RE.lastIndex = 0;
|
|
1521
|
-
while ((m = GENERIC_TEST_FN_RE.exec(content)) !== null) {
|
|
1522
|
-
descriptions.push(m[1].replace(/_/g, ' ').toLowerCase());
|
|
1523
|
-
}
|
|
1524
1516
|
}
|
|
1525
1517
|
return [{ file: tf, contentLower, descriptions, isJavaLike }];
|
|
1526
1518
|
});
|
|
@@ -1740,6 +1732,96 @@ program
|
|
|
1740
1732
|
allCoverageResults.push(errorResult);
|
|
1741
1733
|
console.log(` ${errorCovered}/${errorItems.length} inferred error scenarios have test coverage (${errorPct}%)`);
|
|
1742
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
|
+
}
|
|
1743
1825
|
}
|
|
1744
1826
|
else {
|
|
1745
1827
|
warnings.push('No routes detected in service files; endpoint coverage skipped.');
|
|
@@ -1917,137 +1999,6 @@ program
|
|
|
1917
1999
|
allCoverageResults.push(flowResult);
|
|
1918
2000
|
console.log(` ${syntheticReport.complete}/${syntheticReport.total} multi-step flows detected and covered (100%)`);
|
|
1919
2001
|
}
|
|
1920
|
-
// ── 4f-perf. Performance & resilience coverage ────────────────────────────
|
|
1921
|
-
// When load-test files (JMeter/k6/Gatling) are available, use them.
|
|
1922
|
-
// When none are found, infer performance/resilience evidence from test content.
|
|
1923
|
-
{
|
|
1924
|
-
// ─ Keywords ──────────────────────────────────────────────────────────────
|
|
1925
|
-
const PERF_KEYWORDS = [
|
|
1926
|
-
'load', 'performance', 'stress', 'throughput', 'latency', 'benchmark',
|
|
1927
|
-
'concurrent', 'response time', 'response_time', 'timing', 'timed',
|
|
1928
|
-
'slow', 'fast', 'speed', 'millisecond', 'ms ', ' ms',
|
|
1929
|
-
];
|
|
1930
|
-
const RESILIENCE_KEYWORD_MAP = {
|
|
1931
|
-
'timeout': ['timeout', 'timed out', 'connection timeout', 'request timeout', 'read timeout'],
|
|
1932
|
-
'retry': ['retry', 'retries', 'retried', 'attempt', 'backoff', 'back-off'],
|
|
1933
|
-
'circuit-breaker': ['circuit breaker', 'circuit_breaker', 'circuitbreaker', 'open circuit'],
|
|
1934
|
-
'fallback': ['fallback', 'fall back', 'fall-back', 'default response', 'degraded'],
|
|
1935
|
-
'rate-limiting': ['rate limit', 'rate_limit', 'ratelimit', '429', 'too many requests', 'throttl'],
|
|
1936
|
-
'bulkhead': ['bulkhead', 'semaphore', 'queue full', 'concurrency limit'],
|
|
1937
|
-
};
|
|
1938
|
-
if (artifacts.performanceFiles.length > 0) {
|
|
1939
|
-
// ─ Explicit: JMeter / k6 / Gatling files found ─────────────────────
|
|
1940
|
-
try {
|
|
1941
|
-
console.log(`\nAnalyzing performance coverage (${artifacts.performanceFiles.length} load-test file(s))...`);
|
|
1942
|
-
const endpointItems = (_s = (_r = (_q = allCoverageResults.find((r) => r.type === 'endpoint')) === null || _q === void 0 ? void 0 : _q.details) === null || _r === void 0 ? void 0 : _r.items) !== null && _s !== void 0 ? _s : [];
|
|
1943
|
-
const endpoints = endpointItems.map((item) => {
|
|
1944
|
-
var _a, _b;
|
|
1945
|
-
const parts = item.id.split(' ');
|
|
1946
|
-
return { id: item.id, method: (_a = parts[0]) !== null && _a !== void 0 ? _a : 'GET', path: (_b = parts[1]) !== null && _b !== void 0 ? _b : item.id };
|
|
1947
|
-
});
|
|
1948
|
-
const metricsMap = (0, perfResilienceCoverage_1.parseLoadTestResults)(artifacts.performanceFiles);
|
|
1949
|
-
const perfThresholds = { responseMs: 500, errorRate: 0.05 };
|
|
1950
|
-
const perfCoverages = (0, perfResilienceCoverage_1.analyzePerformanceCoverage)(endpoints, metricsMap, perfThresholds);
|
|
1951
|
-
const scenarios = (0, perfResilienceCoverage_1.buildResilienceScenarios)(endpoints);
|
|
1952
|
-
const resilienceCoverages = await (0, perfResilienceCoverage_1.analyzeResilienceCoverage)(scenarios, testsGlob);
|
|
1953
|
-
const report = (0, perfResilienceCoverage_1.buildPerfResilienceReport)(perfCoverages, resilienceCoverages);
|
|
1954
|
-
const perfResult = {
|
|
1955
|
-
type: 'performance',
|
|
1956
|
-
totalItems: report.totalEndpoints,
|
|
1957
|
-
coveredItems: report.endpointsWithLoadData,
|
|
1958
|
-
coveragePercent: report.performanceCoveragePercent,
|
|
1959
|
-
details: report,
|
|
1960
|
-
};
|
|
1961
|
-
const resilienceResult = {
|
|
1962
|
-
type: 'resilience',
|
|
1963
|
-
totalItems: report.totalResilienceScenarios,
|
|
1964
|
-
coveredItems: report.coveredResilienceScenarios,
|
|
1965
|
-
coveragePercent: report.resilienceCoveragePercent,
|
|
1966
|
-
details: report,
|
|
1967
|
-
};
|
|
1968
|
-
allCoverageResults.push(perfResult, resilienceResult);
|
|
1969
|
-
console.log(` ${report.endpointsWithLoadData}/${report.totalEndpoints} endpoints have load-test data (${report.performanceCoveragePercent}%)`);
|
|
1970
|
-
console.log(` ${report.coveredResilienceScenarios}/${report.totalResilienceScenarios} resilience scenarios covered (${report.resilienceCoveragePercent}%)`);
|
|
1971
|
-
}
|
|
1972
|
-
catch (perfErr) {
|
|
1973
|
-
warnings.push(`Performance coverage failed: ${perfErr instanceof Error ? perfErr.message : String(perfErr)}`);
|
|
1974
|
-
}
|
|
1975
|
-
}
|
|
1976
|
-
else {
|
|
1977
|
-
// ─ Inferred: no load-test files found — scan test content for signals ─
|
|
1978
|
-
console.log(`\nPerformance & resilience coverage (inferred — no JMeter/k6/Gatling files found)...`);
|
|
1979
|
-
// Build a flat list of all known endpoints from earlier coverage results
|
|
1980
|
-
const knownEndpoints = ((_v = (_u = (_t = allCoverageResults.find((r) => r.type === 'endpoint')) === null || _t === void 0 ? void 0 : _t.details) === null || _u === void 0 ? void 0 : _u.items) !== null && _v !== void 0 ? _v : []).map((item) => item.id);
|
|
1981
|
-
const allTestContent = testEntries.map((e) => e.contentLower);
|
|
1982
|
-
const combinedTestContent = allTestContent.join('\n');
|
|
1983
|
-
// ─ Performance inference ────────────────────────────────────────────
|
|
1984
|
-
const hasPerfSignal = PERF_KEYWORDS.some((kw) => combinedTestContent.includes(kw));
|
|
1985
|
-
const perfItems = knownEndpoints.map((endpointId) => {
|
|
1986
|
-
var _a, _b;
|
|
1987
|
-
const parts = endpointId.split(' ');
|
|
1988
|
-
const epPath = ((_a = parts[1]) !== null && _a !== void 0 ? _a : endpointId).toLowerCase();
|
|
1989
|
-
const epLeaf = (_b = epPath.split('/').filter(Boolean).pop()) !== null && _b !== void 0 ? _b : epPath;
|
|
1990
|
-
const hasEvidenceInTests = testEntries.some(({ contentLower }) => {
|
|
1991
|
-
const mentionsEndpoint = epLeaf.length > 2
|
|
1992
|
-
? contentLower.includes(epLeaf)
|
|
1993
|
-
: contentLower.includes(epPath);
|
|
1994
|
-
const hasPerfKw = PERF_KEYWORDS.some((kw) => contentLower.includes(kw));
|
|
1995
|
-
return mentionsEndpoint && hasPerfKw;
|
|
1996
|
-
});
|
|
1997
|
-
return { id: endpointId, hasEvidence: hasEvidenceInTests };
|
|
1998
|
-
});
|
|
1999
|
-
const perfCoveredCount = perfItems.filter((i) => i.hasEvidence).length;
|
|
2000
|
-
const perfTotal = Math.max(perfItems.length, 1); // avoid 0-denominator
|
|
2001
|
-
const perfPct = knownEndpoints.length === 0
|
|
2002
|
-
? (hasPerfSignal ? 30 : 0) // no routes but some signal
|
|
2003
|
-
: Math.round((perfCoveredCount / perfItems.length) * 100);
|
|
2004
|
-
const perfResult = {
|
|
2005
|
-
type: 'performance',
|
|
2006
|
-
totalItems: perfItems.length || 1,
|
|
2007
|
-
coveredItems: knownEndpoints.length === 0 && hasPerfSignal ? 0 : perfCoveredCount,
|
|
2008
|
-
coveragePercent: perfPct,
|
|
2009
|
-
details: {
|
|
2010
|
-
inferred: true,
|
|
2011
|
-
note: 'No JMeter, k6, or Gatling files found. Coverage inferred from test content keywords.',
|
|
2012
|
-
totalEndpoints: perfItems.length,
|
|
2013
|
-
endpointsWithEvidence: perfCoveredCount,
|
|
2014
|
-
performanceCoveragePercent: perfPct,
|
|
2015
|
-
items: perfItems,
|
|
2016
|
-
},
|
|
2017
|
-
};
|
|
2018
|
-
allCoverageResults.push(perfResult);
|
|
2019
|
-
if (knownEndpoints.length > 0) {
|
|
2020
|
-
console.log(` ${perfCoveredCount}/${perfItems.length} endpoints have performance test evidence (${perfPct}%)`);
|
|
2021
|
-
}
|
|
2022
|
-
else {
|
|
2023
|
-
console.log(` Performance signal in tests: ${hasPerfSignal ? 'yes' : 'none'} (0% — no load-test files)`);
|
|
2024
|
-
}
|
|
2025
|
-
console.log(` [NOTE] Add JMeter .jtl/.csv, k6 .json, or Gatling simulation.log files for accurate load-test metrics.`);
|
|
2026
|
-
// ─ Resilience inference ──────────────────────────────────────────────
|
|
2027
|
-
const resilienceItems = Object.entries(RESILIENCE_KEYWORD_MAP).map(([category, keywords]) => {
|
|
2028
|
-
const covered = testEntries.some(({ contentLower }) => keywords.some((kw) => contentLower.includes(kw)));
|
|
2029
|
-
return { id: `resilience:${category}`, category, covered };
|
|
2030
|
-
});
|
|
2031
|
-
const resCoveredCount = resilienceItems.filter((i) => i.covered).length;
|
|
2032
|
-
const resPct = Math.round((resCoveredCount / resilienceItems.length) * 100);
|
|
2033
|
-
const resilienceResult = {
|
|
2034
|
-
type: 'resilience',
|
|
2035
|
-
totalItems: resilienceItems.length,
|
|
2036
|
-
coveredItems: resCoveredCount,
|
|
2037
|
-
coveragePercent: resPct,
|
|
2038
|
-
details: {
|
|
2039
|
-
inferred: true,
|
|
2040
|
-
note: 'Resilience coverage inferred from test content. No load-test files found.',
|
|
2041
|
-
totalResilienceScenarios: resilienceItems.length,
|
|
2042
|
-
coveredResilienceScenarios: resCoveredCount,
|
|
2043
|
-
resilienceCoveragePercent: resPct,
|
|
2044
|
-
items: resilienceItems,
|
|
2045
|
-
},
|
|
2046
|
-
};
|
|
2047
|
-
allCoverageResults.push(resilienceResult);
|
|
2048
|
-
console.log(` ${resCoveredCount}/${resilienceItems.length} resilience categories have test evidence (${resPct}%)`);
|
|
2049
|
-
}
|
|
2050
|
-
}
|
|
2051
2002
|
if (allCoverageResults.length > 0) {
|
|
2052
2003
|
const observabilityInfo = (0, observability_1.buildObservabilityInfo)(metricsPort);
|
|
2053
2004
|
(0, reporting_1.generateMultiFormatReports)(allCoverageResults, ['json'], reportsDir, {}, observabilityInfo);
|
|
@@ -2157,143 +2108,185 @@ program
|
|
|
2157
2108
|
if (options['dashboard']) {
|
|
2158
2109
|
(0, serveDashboard_1.serveDashboard)({
|
|
2159
2110
|
reportsDir: reportsDir,
|
|
2160
|
-
port: (
|
|
2111
|
+
port: (_u = options['port']) !== null && _u !== void 0 ? _u : 4000,
|
|
2161
2112
|
open: Boolean(options['open']),
|
|
2162
2113
|
});
|
|
2163
2114
|
// Keep the process alive — the HTTP server holds the event loop open
|
|
2164
2115
|
}
|
|
2165
2116
|
});
|
|
2166
|
-
// ───
|
|
2167
|
-
program
|
|
2168
|
-
.command('serve')
|
|
2169
|
-
.description('Start the coverage dashboard UI and serve reports from your reports directory.')
|
|
2170
|
-
.option('--reports-dir <dir>', 'Directory containing report JSON files (default: reports/)')
|
|
2171
|
-
.option('--port <port>', 'Port to listen on (default: 4000)', parseInt)
|
|
2172
|
-
.option('--open', 'Open the dashboard in your browser automatically')
|
|
2173
|
-
.action((options) => {
|
|
2174
|
-
var _a, _b, _c, _d;
|
|
2175
|
-
const configPath = program.opts()['config'];
|
|
2176
|
-
const analyzerCfg = (0, config_1.loadCentralConfig)(configPath);
|
|
2177
|
-
const reportsDir = (_c = (_a = options['reportsDir']) !== null && _a !== void 0 ? _a : (_b = analyzerCfg.reports) === null || _b === void 0 ? void 0 : _b.outputDir) !== null && _c !== void 0 ? _c : 'reports';
|
|
2178
|
-
const port = (_d = options['port']) !== null && _d !== void 0 ? _d : 4000;
|
|
2179
|
-
(0, serveDashboard_1.serveDashboard)({
|
|
2180
|
-
reportsDir,
|
|
2181
|
-
port,
|
|
2182
|
-
open: Boolean(options['open']),
|
|
2183
|
-
});
|
|
2184
|
-
// Keep the process alive while the server runs
|
|
2185
|
-
});
|
|
2117
|
+
// ─── event-coverage command ───────────────────────────────────────────────────
|
|
2186
2118
|
program
|
|
2187
|
-
.command('
|
|
2188
|
-
.description('
|
|
2189
|
-
.option('--
|
|
2190
|
-
.option('--
|
|
2191
|
-
.option('--
|
|
2192
|
-
.option('--
|
|
2193
|
-
.option('--priority <p>', 'Only generate for gaps at this priority or higher', 'P1')
|
|
2194
|
-
.option('--dry-run', 'Print generated tests to stdout, do not write files', false)
|
|
2195
|
-
.option('--overwrite', 'Overwrite existing generated files', false)
|
|
2196
|
-
.option('--gap-id <id>', 'Generate tests for a single specific gap')
|
|
2197
|
-
.option('--types <list>', 'Comma-separated gap types to generate (default: all)')
|
|
2198
|
-
.option('--no-security', 'Skip security test generation')
|
|
2199
|
-
.option('--no-cypress', 'Skip Cypress test generation')
|
|
2119
|
+
.command('event-coverage')
|
|
2120
|
+
.description('Analyze how thoroughly tests cover event/message-driven interactions (Kafka, RabbitMQ, SNS, SQS, etc.)')
|
|
2121
|
+
.option('--source <glob>', 'Glob pattern for source files to scan for event patterns', 'src/**/*.ts')
|
|
2122
|
+
.option('--tests <glob>', 'Glob pattern for test files', 'tests/**/*.ts')
|
|
2123
|
+
.option('--format <formats>', 'Comma-separated list of report formats: json,html,csv,junit (default: json,html)', 'json,html')
|
|
2124
|
+
.option('--threshold-event <percent>', 'Minimum required event coverage percentage (0-100)', parseFloat, 0)
|
|
2200
2125
|
.action(async (options) => {
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
const
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
language: options.language,
|
|
2208
|
-
framework: options.framework,
|
|
2209
|
-
priority: options.priority,
|
|
2210
|
-
dryRun: Boolean(options.dryRun),
|
|
2211
|
-
overwrite: Boolean(options.overwrite),
|
|
2212
|
-
gapId: options.gapId,
|
|
2213
|
-
types,
|
|
2214
|
-
noSecurity: Boolean(options.noSecurity),
|
|
2215
|
-
noCypress: Boolean(options.noCypress),
|
|
2126
|
+
var _a, _b;
|
|
2127
|
+
const { metricsPort, serviceName } = setupObservability();
|
|
2128
|
+
const logger = (0, observability_1.getLogger)();
|
|
2129
|
+
const parentOpts = program.opts();
|
|
2130
|
+
const config = loadCoverageConfig(parentOpts.config, {
|
|
2131
|
+
event: options.thresholdEvent,
|
|
2216
2132
|
});
|
|
2217
|
-
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2223
|
-
|
|
2133
|
+
const sourceGlob = options.source;
|
|
2134
|
+
const testsGlob = (config.testPatterns && config.testPatterns.length > 0)
|
|
2135
|
+
? config.testPatterns[0]
|
|
2136
|
+
: options.tests;
|
|
2137
|
+
const reportsDir = path.resolve('reports');
|
|
2138
|
+
const formats = (0, reporting_1.parseFormats)(options.format);
|
|
2139
|
+
const span = (0, observability_1.startSpan)('event-coverage', { sourceGlob, testsGlob });
|
|
2140
|
+
logger.info({ event: 'analysis_start', coverageType: 'event', sourceGlob }, `Scanning events in: ${sourceGlob}`);
|
|
2141
|
+
console.log(`Scanning events in: ${sourceGlob}`);
|
|
2142
|
+
const { analyzeEventCoverage, writeEventReport } = await Promise.resolve().then(() => __importStar(require('./streaming/eventCoverage')));
|
|
2143
|
+
const eventResult = analyzeEventCoverage(sourceGlob, testsGlob);
|
|
2144
|
+
writeEventReport(eventResult, reportsDir);
|
|
2145
|
+
const result = {
|
|
2146
|
+
type: 'event',
|
|
2147
|
+
totalItems: eventResult.totalItems,
|
|
2148
|
+
coveredItems: eventResult.coveredItems,
|
|
2149
|
+
coveragePercent: eventResult.coveragePercent,
|
|
2150
|
+
details: eventResult.details,
|
|
2151
|
+
};
|
|
2152
|
+
const thresholds = { ...((_a = config.thresholds) !== null && _a !== void 0 ? _a : {}) };
|
|
2153
|
+
// Run plugins
|
|
2154
|
+
const pluginContext = {
|
|
2155
|
+
testPatterns: (_b = config.testPatterns) !== null && _b !== void 0 ? _b : [],
|
|
2156
|
+
results: [result],
|
|
2157
|
+
config,
|
|
2158
|
+
};
|
|
2159
|
+
const pluginResults = await (0, pluginLoader_1.runPlugins)(config, pluginContext);
|
|
2160
|
+
const allResults = [result, ...pluginResults];
|
|
2161
|
+
const observabilityInfo = (0, observability_1.buildObservabilityInfo)(metricsPort);
|
|
2162
|
+
(0, reporting_1.generateMultiFormatReports)(allResults, formats, reportsDir, thresholds, observabilityInfo);
|
|
2163
|
+
console.log(`Event coverage: ${eventResult.coveredItems}/${eventResult.totalItems} events covered (${eventResult.coveragePercent}%)`);
|
|
2164
|
+
if (eventResult.details.unresolvedCount > 0) {
|
|
2165
|
+
console.log(` Unresolved topics: ${eventResult.details.unresolvedCount}`);
|
|
2224
2166
|
}
|
|
2225
|
-
|
|
2226
|
-
|
|
2227
|
-
|
|
2228
|
-
|
|
2229
|
-
|
|
2230
|
-
|
|
2231
|
-
|
|
2232
|
-
|
|
2233
|
-
|
|
2167
|
+
for (const [broker, count] of Object.entries(eventResult.details.brokerBreakdown)) {
|
|
2168
|
+
if (count > 0)
|
|
2169
|
+
console.log(` ${broker}: ${count} nodes`);
|
|
2170
|
+
}
|
|
2171
|
+
console.log(`Reports written to: ${reportsDir}`);
|
|
2172
|
+
span.end({ totalItems: eventResult.totalItems, coveredItems: eventResult.coveredItems, coveragePercent: eventResult.coveragePercent });
|
|
2173
|
+
logger.info({ event: 'analysis_complete', coverageType: 'event' }, 'Event coverage analysis complete');
|
|
2174
|
+
await finaliseObservability(allResults, thresholds, metricsPort, serviceName);
|
|
2175
|
+
// Threshold check
|
|
2176
|
+
const failures = (0, reporting_1.checkThresholds)(allResults, thresholds);
|
|
2177
|
+
if (failures.length > 0) {
|
|
2178
|
+
for (const msg of failures) {
|
|
2179
|
+
console.error(`THRESHOLD FAILURE: ${msg}`);
|
|
2234
2180
|
}
|
|
2181
|
+
process.exitCode = 1;
|
|
2235
2182
|
}
|
|
2236
2183
|
});
|
|
2184
|
+
// ─── generate-tests command ──────────────────────────────────────────────────
|
|
2237
2185
|
program
|
|
2238
|
-
.command('
|
|
2239
|
-
.description('
|
|
2240
|
-
.option('--
|
|
2241
|
-
.option('--
|
|
2242
|
-
.option('--
|
|
2243
|
-
.option('--
|
|
2244
|
-
.option('--
|
|
2186
|
+
.command('generate-tests')
|
|
2187
|
+
.description('Generate test files for coverage gaps detected in reports/')
|
|
2188
|
+
.option('--source <glob>', 'Glob pattern for source files', 'src/**/*.ts')
|
|
2189
|
+
.option('--tests <glob>', 'Glob pattern for existing test files', 'tests/**/*.ts')
|
|
2190
|
+
.option('--out-dir <dir>', 'Output directory for generated tests')
|
|
2191
|
+
.option('--base-url <url>', 'Base URL for API requests', 'http://localhost:3000')
|
|
2192
|
+
.option('--dry-run', 'Show what would be generated without writing files', false)
|
|
2245
2193
|
.action(async (options) => {
|
|
2246
|
-
const
|
|
2247
|
-
|
|
2194
|
+
const logger = (0, observability_1.getLogger)();
|
|
2195
|
+
const reportsDir = path.resolve('reports');
|
|
2196
|
+
logger.info({ event: 'generation_start' }, 'Starting test generation...');
|
|
2197
|
+
console.log('Starting test generation...');
|
|
2198
|
+
const { TestGenerationEngine } = await Promise.resolve().then(() => __importStar(require('./generation/engine')));
|
|
2199
|
+
const engine = new TestGenerationEngine(process.cwd(), reportsDir);
|
|
2200
|
+
const generated = engine.generateTests({
|
|
2201
|
+
dryRun: options.dryRun,
|
|
2248
2202
|
outDir: options.outDir,
|
|
2249
|
-
|
|
2250
|
-
maxGaps: parseInt(options.maxGaps, 10),
|
|
2251
|
-
priority: options.priority,
|
|
2203
|
+
baseUrl: options.baseUrl,
|
|
2252
2204
|
});
|
|
2253
|
-
console.log(
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2205
|
+
console.log(`Generated ${generated.length} test file(s)`);
|
|
2206
|
+
for (const f of generated) {
|
|
2207
|
+
console.log(` ${options.dryRun ? '[dry-run] ' : ''}${f.outputPath} (${f.gapId})`);
|
|
2208
|
+
}
|
|
2209
|
+
if (options.dryRun) {
|
|
2210
|
+
console.log('\nDry run complete — no files were written.');
|
|
2211
|
+
}
|
|
2257
2212
|
});
|
|
2213
|
+
// ─── score-tests command ─────────────────────────────────────────────────────
|
|
2258
2214
|
program
|
|
2259
2215
|
.command('score-tests')
|
|
2260
|
-
.description('Score
|
|
2261
|
-
.option('--tests <glob>', 'Glob pattern for test files
|
|
2262
|
-
.option('--
|
|
2263
|
-
.option('--fail-below <score>', 'Exit non-zero if any file scores below this', '0')
|
|
2216
|
+
.description('Score existing test files for quality (status assertions, error paths, matchers)')
|
|
2217
|
+
.option('--tests <glob>', 'Glob pattern for test files', 'tests/**/*.ts')
|
|
2218
|
+
.option('--threshold-quality <percent>', 'Minimum average quality score (0-100)', parseFloat, 0)
|
|
2264
2219
|
.action(async (options) => {
|
|
2265
|
-
|
|
2266
|
-
|
|
2267
|
-
|
|
2268
|
-
|
|
2269
|
-
|
|
2270
|
-
|
|
2271
|
-
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
for (const g of report.highestRiskLowQualityGaps) {
|
|
2285
|
-
console.log(` ${g.endpoint}: quality=${g.qualityScore}, risk=${g.riskScore}`);
|
|
2286
|
-
console.log(` → ${g.primaryIssue}`);
|
|
2220
|
+
const logger = (0, observability_1.getLogger)();
|
|
2221
|
+
const testsGlob = options.tests;
|
|
2222
|
+
logger.info({ event: 'scoring_start' }, 'Scoring test quality...');
|
|
2223
|
+
console.log(`Scoring test quality for: ${testsGlob}`);
|
|
2224
|
+
const { TestGenerationEngine } = await Promise.resolve().then(() => __importStar(require('./generation/engine')));
|
|
2225
|
+
const engine = new TestGenerationEngine(process.cwd());
|
|
2226
|
+
const reports = engine.scoreTests(testsGlob);
|
|
2227
|
+
const avgScore = reports.length > 0
|
|
2228
|
+
? Math.round(reports.reduce((s, r) => s + r.overallScore, 0) / reports.length)
|
|
2229
|
+
: 0;
|
|
2230
|
+
console.log(`\nScored ${reports.length} test file(s)`);
|
|
2231
|
+
console.log(`Average quality score: ${avgScore}/100`);
|
|
2232
|
+
const lowQuality = reports.filter((r) => r.overallScore < 60);
|
|
2233
|
+
if (lowQuality.length > 0) {
|
|
2234
|
+
console.log(`\nFiles below 60 quality:`);
|
|
2235
|
+
for (const r of lowQuality) {
|
|
2236
|
+
console.log(` ${r.file}: ${r.overallScore}/100`);
|
|
2237
|
+
for (const v of r.violations) {
|
|
2238
|
+
console.log(` - ${v}`);
|
|
2287
2239
|
}
|
|
2288
2240
|
}
|
|
2289
|
-
console.log(`\n Report written to: ${options.reportsDir}/test-quality.json`);
|
|
2290
2241
|
}
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2242
|
+
const thresholdQuality = options.thresholdQuality;
|
|
2243
|
+
if (thresholdQuality > 0 && avgScore < thresholdQuality) {
|
|
2244
|
+
console.error(`THRESHOLD FAILURE: Average quality ${avgScore}% < ${thresholdQuality}%`);
|
|
2245
|
+
process.exitCode = 1;
|
|
2246
|
+
}
|
|
2247
|
+
});
|
|
2248
|
+
// ─── export-ai-flows command ─────────────────────────────────────────────────
|
|
2249
|
+
program
|
|
2250
|
+
.command('export-ai-flows')
|
|
2251
|
+
.description('Export AI-ready test generation flows for Copilot / LLM consumption')
|
|
2252
|
+
.option('--source <glob>', 'Glob pattern for source files', 'src/**/*.ts')
|
|
2253
|
+
.option('--tests <glob>', 'Glob pattern for test files', 'tests/**/*.ts')
|
|
2254
|
+
.action(async (options) => {
|
|
2255
|
+
const logger = (0, observability_1.getLogger)();
|
|
2256
|
+
const reportsDir = path.resolve('reports');
|
|
2257
|
+
logger.info({ event: 'ai_flows_start' }, 'Exporting AI-ready flows...');
|
|
2258
|
+
console.log('Exporting AI-ready flows...');
|
|
2259
|
+
const { TestGenerationEngine } = await Promise.resolve().then(() => __importStar(require('./generation/engine')));
|
|
2260
|
+
const engine = new TestGenerationEngine(process.cwd(), reportsDir);
|
|
2261
|
+
const manifest = engine.exportAiFlows({
|
|
2262
|
+
sourceGlob: options.source,
|
|
2263
|
+
testsGlob: options.tests,
|
|
2264
|
+
});
|
|
2265
|
+
console.log(`Exported ${manifest.totalFlows} AI-ready flow(s)`);
|
|
2266
|
+
for (const [type, count] of Object.entries(manifest.byType)) {
|
|
2267
|
+
console.log(` ${type}: ${count}`);
|
|
2296
2268
|
}
|
|
2269
|
+
console.log(`\nReports written to: ${reportsDir}`);
|
|
2270
|
+
});
|
|
2271
|
+
// ─── serve command ────────────────────────────────────────────────────────────
|
|
2272
|
+
program
|
|
2273
|
+
.command('serve')
|
|
2274
|
+
.description('Start the coverage dashboard UI and serve reports from your reports directory.')
|
|
2275
|
+
.option('--reports-dir <dir>', 'Directory containing report JSON files (default: reports/)')
|
|
2276
|
+
.option('--port <port>', 'Port to listen on (default: 4000)', parseInt)
|
|
2277
|
+
.option('--open', 'Open the dashboard in your browser automatically')
|
|
2278
|
+
.action((options) => {
|
|
2279
|
+
var _a, _b, _c, _d;
|
|
2280
|
+
const configPath = program.opts()['config'];
|
|
2281
|
+
const analyzerCfg = (0, config_1.loadCentralConfig)(configPath);
|
|
2282
|
+
const reportsDir = (_c = (_a = options['reportsDir']) !== null && _a !== void 0 ? _a : (_b = analyzerCfg.reports) === null || _b === void 0 ? void 0 : _b.outputDir) !== null && _c !== void 0 ? _c : 'reports';
|
|
2283
|
+
const port = (_d = options['port']) !== null && _d !== void 0 ? _d : 4000;
|
|
2284
|
+
(0, serveDashboard_1.serveDashboard)({
|
|
2285
|
+
reportsDir,
|
|
2286
|
+
port,
|
|
2287
|
+
open: Boolean(options['open']),
|
|
2288
|
+
});
|
|
2289
|
+
// Keep the process alive while the server runs
|
|
2297
2290
|
});
|
|
2298
2291
|
// Parse the command-line arguments
|
|
2299
2292
|
program.parse(process.argv);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"businessRuleInference.d.ts","sourceRoot":"","sources":["../../../src/inference/businessRuleInference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AACjD,MAAM,MAAM,QAAQ,GAChB,YAAY,GACZ,eAAe,GACf,gBAAgB,GAChB,YAAY,CAAC;AAEjB,MAAM,WAAW,oBAAoB;IACnC,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,CAAC;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8BAA8B;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,QAAQ,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"businessRuleInference.d.ts","sourceRoot":"","sources":["../../../src/inference/businessRuleInference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AACjD,MAAM,MAAM,QAAQ,GAChB,YAAY,GACZ,eAAe,GACf,gBAAgB,GAChB,YAAY,CAAC;AAEjB,MAAM,WAAW,oBAAoB;IACnC,0DAA0D;IAC1D,EAAE,EAAE,MAAM,CAAC;IACX,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,UAAU,CAAC;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8BAA8B;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,sFAAsF;IACtF,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,QAAQ,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA2ID;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,EAAE,CA4C3E;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EAAE,EACtB,QAAQ,GAAE,MAAM,EAAO,GACtB,2BAA2B,CAuB7B;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,2BAA2B,EACnC,UAAU,EAAE,MAAM,GACjB,MAAM,CAYR;AAID,eAAO,MAAM,kBAAkB,aAM7B,CAAC;AAEH;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAwCnE"}
|