api-tests-coverage 1.0.9 → 1.0.10
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/dist/dashboard/assets/{_basePickBy-CW9m1gAF.js → _basePickBy-DZR484hj.js} +1 -1
- package/dist/dashboard/assets/{_baseUniq-Cz9Wv_1o.js → _baseUniq-BZHS9wTU.js} +1 -1
- package/dist/dashboard/{dist/assets/arc-D1c5N9j9.js → assets/arc-D4xT0thw.js} +1 -1
- package/dist/dashboard/{dist/assets/architectureDiagram-VXUJARFQ-DCThDJJL.js → assets/architectureDiagram-VXUJARFQ-Bs48s9rH.js} +1 -1
- package/dist/dashboard/assets/{blockDiagram-VD42YOAC-7WLq10tc.js → blockDiagram-VD42YOAC-BvkiW8lj.js} +1 -1
- package/dist/dashboard/assets/{c4Diagram-YG6GDRKO-DQ6F3dCg.js → c4Diagram-YG6GDRKO-DuP3tG_c.js} +1 -1
- package/dist/dashboard/assets/channel-YFEOkJua.js +1 -0
- package/dist/dashboard/assets/{chunk-4BX2VUAB-9d8ahBcQ.js → chunk-4BX2VUAB-BrU7mtb9.js} +1 -1
- package/dist/dashboard/assets/{chunk-55IACEB6-DoDGO_Bn.js → chunk-55IACEB6-DwsmCNp_.js} +1 -1
- package/dist/dashboard/{dist/assets/chunk-B4BG7PRW-DtOAWUMl.js → assets/chunk-B4BG7PRW-D5WlZonc.js} +1 -1
- package/dist/dashboard/{dist/assets/chunk-DI55MBZ5-D8EspuAI.js → assets/chunk-DI55MBZ5-B-xsiGYI.js} +1 -1
- package/dist/dashboard/assets/{chunk-FMBD7UC4-2n8Ehv6e.js → chunk-FMBD7UC4-DRb5NEMr.js} +1 -1
- package/dist/dashboard/assets/{chunk-QN33PNHL-C_ll8qBD.js → chunk-QN33PNHL-BRSlHScq.js} +1 -1
- package/dist/dashboard/assets/{chunk-QZHKN3VN-DELgunJM.js → chunk-QZHKN3VN-Cix7nLqx.js} +1 -1
- package/dist/dashboard/assets/{chunk-TZMSLE5B-NWlzmrEM.js → chunk-TZMSLE5B-BtXpcWN4.js} +1 -1
- package/dist/dashboard/assets/classDiagram-2ON5EDUG-CE9rmEXI.js +1 -0
- package/dist/dashboard/assets/classDiagram-v2-WZHVMYZB-CE9rmEXI.js +1 -0
- package/dist/dashboard/assets/clone-BAVNftx6.js +1 -0
- package/dist/dashboard/{dist/assets/cose-bilkent-S5V4N54A-CqMWoTVR.js → assets/cose-bilkent-S5V4N54A-DrNDePwE.js} +1 -1
- package/dist/dashboard/assets/{dagre-6UL2VRFP-B317hoVZ.js → dagre-6UL2VRFP-DgEqrxGj.js} +1 -1
- package/dist/dashboard/assets/{diagram-PSM6KHXK-BD57GDxW.js → diagram-PSM6KHXK-Y-M5J_PO.js} +1 -1
- package/dist/dashboard/assets/{diagram-QEK2KX5R-B7vZx7ZZ.js → diagram-QEK2KX5R-BXMS0hEZ.js} +1 -1
- package/dist/dashboard/assets/{diagram-S2PKOQOG-C-Eeg0BN.js → diagram-S2PKOQOG-Bk_jyoxg.js} +1 -1
- package/dist/dashboard/{dist/assets/erDiagram-Q2GNP2WA-DfYB0TOu.js → assets/erDiagram-Q2GNP2WA-BbPQp6RA.js} +1 -1
- package/dist/dashboard/{dist/assets/flowDiagram-NV44I4VS-BkheLOyQ.js → assets/flowDiagram-NV44I4VS-1j044bLK.js} +1 -1
- package/dist/dashboard/assets/{ganttDiagram-JELNMOA3-DbNp3CL8.js → ganttDiagram-JELNMOA3-Cjy_BOl2.js} +1 -1
- package/dist/dashboard/assets/{gitGraphDiagram-V2S2FVAM-C5VOCa_s.js → gitGraphDiagram-V2S2FVAM-RgQMxxaQ.js} +1 -1
- package/dist/dashboard/assets/{graph-Ci7CYTIy.js → graph-BVGuJ5gs.js} +1 -1
- package/dist/dashboard/assets/index-Bt72YjAZ.css +1 -0
- package/dist/dashboard/assets/{index-DE34Ncpq.js → index-DuT2LnIf.js} +97 -96
- package/dist/dashboard/assets/{infoDiagram-HS3SLOUP-CIfsVrgN.js → infoDiagram-HS3SLOUP-CxmZGT-4.js} +1 -1
- package/dist/dashboard/{dist/assets/journeyDiagram-XKPGCS4Q-8I66yxzt.js → assets/journeyDiagram-XKPGCS4Q-CdvZAxeA.js} +1 -1
- package/dist/dashboard/{dist/assets/kanban-definition-3W4ZIXB7-DOmr-NQ9.js → assets/kanban-definition-3W4ZIXB7-DTse5xX8.js} +1 -1
- package/dist/dashboard/{dist/assets/layout-BTQZOyDZ.js → assets/layout-CnKzeCpQ.js} +1 -1
- package/dist/dashboard/assets/{mindmap-definition-VGOIOE7T-CqWkxJdf.js → mindmap-definition-VGOIOE7T-BVsYbH_c.js} +1 -1
- package/dist/dashboard/assets/{pieDiagram-ADFJNKIX-BCADLXzp.js → pieDiagram-ADFJNKIX-BpwMMFZ3.js} +1 -1
- package/dist/dashboard/assets/{quadrantDiagram-AYHSOK5B-Dg_6Vh1Q.js → quadrantDiagram-AYHSOK5B-C6NljtBN.js} +1 -1
- package/dist/dashboard/{dist/assets/requirementDiagram-UZGBJVZJ-CA87MpOS.js → assets/requirementDiagram-UZGBJVZJ-Ban4o6oK.js} +1 -1
- package/dist/dashboard/assets/{sankeyDiagram-TZEHDZUN-CHnIdrhm.js → sankeyDiagram-TZEHDZUN-BDImwZtB.js} +1 -1
- package/dist/dashboard/assets/{sequenceDiagram-WL72ISMW-Dp6xL301.js → sequenceDiagram-WL72ISMW-nMYJrjDT.js} +1 -1
- package/dist/dashboard/assets/{stateDiagram-FKZM4ZOC-DxGFYBLI.js → stateDiagram-FKZM4ZOC-DkBAMCJV.js} +1 -1
- package/dist/dashboard/assets/stateDiagram-v2-4FDKWEC3-CtkfyoSn.js +1 -0
- package/dist/dashboard/{dist/assets/timeline-definition-IT6M3QCI-CrMAvKwo.js → assets/timeline-definition-IT6M3QCI-CGUDCWFx.js} +1 -1
- package/dist/dashboard/{dist/assets/treemap-GDKQZRPO-C7e3LA34.js → assets/treemap-GDKQZRPO-D-XpcCUD.js} +1 -1
- package/dist/dashboard/{dist/assets/xychartDiagram-PRI3JC2R-DBeb02lL.js → assets/xychartDiagram-PRI3JC2R-BlIpbwyn.js} +1 -1
- package/dist/dashboard/dist/assets/{_basePickBy--qgenNPq.js → _basePickBy-DZR484hj.js} +1 -1
- package/dist/dashboard/dist/assets/{_baseUniq-CUHm9crC.js → _baseUniq-BZHS9wTU.js} +1 -1
- package/dist/dashboard/{assets/arc-DT25_rOH.js → dist/assets/arc-D4xT0thw.js} +1 -1
- package/dist/dashboard/{assets/architectureDiagram-VXUJARFQ-sddHV_RY.js → dist/assets/architectureDiagram-VXUJARFQ-Bs48s9rH.js} +1 -1
- package/dist/dashboard/dist/assets/{blockDiagram-VD42YOAC-BZ7-TACV.js → blockDiagram-VD42YOAC-BvkiW8lj.js} +1 -1
- package/dist/dashboard/dist/assets/{c4Diagram-YG6GDRKO-BebrJmGB.js → c4Diagram-YG6GDRKO-DuP3tG_c.js} +1 -1
- package/dist/dashboard/dist/assets/channel-YFEOkJua.js +1 -0
- package/dist/dashboard/dist/assets/{chunk-4BX2VUAB-C2PVph5w.js → chunk-4BX2VUAB-BrU7mtb9.js} +1 -1
- package/dist/dashboard/dist/assets/{chunk-55IACEB6-BL2iYVPK.js → chunk-55IACEB6-DwsmCNp_.js} +1 -1
- package/dist/dashboard/{assets/chunk-B4BG7PRW-BTnP2N-l.js → dist/assets/chunk-B4BG7PRW-D5WlZonc.js} +1 -1
- package/dist/dashboard/{assets/chunk-DI55MBZ5-DXohPVKZ.js → dist/assets/chunk-DI55MBZ5-B-xsiGYI.js} +1 -1
- package/dist/dashboard/dist/assets/{chunk-FMBD7UC4-DVV3MUyn.js → chunk-FMBD7UC4-DRb5NEMr.js} +1 -1
- package/dist/dashboard/dist/assets/{chunk-QN33PNHL-CNOKKDgF.js → chunk-QN33PNHL-BRSlHScq.js} +1 -1
- package/dist/dashboard/dist/assets/{chunk-QZHKN3VN-b10c-Iks.js → chunk-QZHKN3VN-Cix7nLqx.js} +1 -1
- package/dist/dashboard/dist/assets/{chunk-TZMSLE5B-BkI0RHW5.js → chunk-TZMSLE5B-BtXpcWN4.js} +1 -1
- package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-CE9rmEXI.js +1 -0
- package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-CE9rmEXI.js +1 -0
- package/dist/dashboard/dist/assets/clone-BAVNftx6.js +1 -0
- package/dist/dashboard/{assets/cose-bilkent-S5V4N54A-B4WnMQqX.js → dist/assets/cose-bilkent-S5V4N54A-DrNDePwE.js} +1 -1
- package/dist/dashboard/dist/assets/{dagre-6UL2VRFP-BcmqdcVT.js → dagre-6UL2VRFP-DgEqrxGj.js} +1 -1
- package/dist/dashboard/dist/assets/{diagram-PSM6KHXK-Dxe_ZeID.js → diagram-PSM6KHXK-Y-M5J_PO.js} +1 -1
- package/dist/dashboard/dist/assets/{diagram-QEK2KX5R-wQ8wk_wm.js → diagram-QEK2KX5R-BXMS0hEZ.js} +1 -1
- package/dist/dashboard/dist/assets/{diagram-S2PKOQOG-DE_7OyI2.js → diagram-S2PKOQOG-Bk_jyoxg.js} +1 -1
- package/dist/dashboard/{assets/erDiagram-Q2GNP2WA-Sr67kxaS.js → dist/assets/erDiagram-Q2GNP2WA-BbPQp6RA.js} +1 -1
- package/dist/dashboard/{assets/flowDiagram-NV44I4VS-BwsBHwQ2.js → dist/assets/flowDiagram-NV44I4VS-1j044bLK.js} +1 -1
- package/dist/dashboard/dist/assets/{ganttDiagram-JELNMOA3-Dv0TS2qN.js → ganttDiagram-JELNMOA3-Cjy_BOl2.js} +1 -1
- package/dist/dashboard/dist/assets/{gitGraphDiagram-V2S2FVAM-Co8phpa1.js → gitGraphDiagram-V2S2FVAM-RgQMxxaQ.js} +1 -1
- package/dist/dashboard/dist/assets/{graph-D8K70adm.js → graph-BVGuJ5gs.js} +1 -1
- package/dist/dashboard/dist/assets/index-Bt72YjAZ.css +1 -0
- package/dist/dashboard/dist/assets/{index-BJlq7ORf.js → index-DuT2LnIf.js} +97 -96
- package/dist/dashboard/dist/assets/{infoDiagram-HS3SLOUP-Qwosd--X.js → infoDiagram-HS3SLOUP-CxmZGT-4.js} +1 -1
- package/dist/dashboard/{assets/journeyDiagram-XKPGCS4Q-D8CW3fPs.js → dist/assets/journeyDiagram-XKPGCS4Q-CdvZAxeA.js} +1 -1
- package/dist/dashboard/{assets/kanban-definition-3W4ZIXB7-CpaumI4L.js → dist/assets/kanban-definition-3W4ZIXB7-DTse5xX8.js} +1 -1
- package/dist/dashboard/{assets/layout-zud4xhhe.js → dist/assets/layout-CnKzeCpQ.js} +1 -1
- package/dist/dashboard/dist/assets/{mindmap-definition-VGOIOE7T-DnAHPuGZ.js → mindmap-definition-VGOIOE7T-BVsYbH_c.js} +1 -1
- package/dist/dashboard/dist/assets/{pieDiagram-ADFJNKIX-Dj5EZ8Xw.js → pieDiagram-ADFJNKIX-BpwMMFZ3.js} +1 -1
- package/dist/dashboard/dist/assets/{quadrantDiagram-AYHSOK5B-BElhVhB9.js → quadrantDiagram-AYHSOK5B-C6NljtBN.js} +1 -1
- package/dist/dashboard/{assets/requirementDiagram-UZGBJVZJ-CcLac02-.js → dist/assets/requirementDiagram-UZGBJVZJ-Ban4o6oK.js} +1 -1
- package/dist/dashboard/dist/assets/{sankeyDiagram-TZEHDZUN-sc1Ndkyn.js → sankeyDiagram-TZEHDZUN-BDImwZtB.js} +1 -1
- package/dist/dashboard/dist/assets/{sequenceDiagram-WL72ISMW-Dv5Zx3Tb.js → sequenceDiagram-WL72ISMW-nMYJrjDT.js} +1 -1
- package/dist/dashboard/dist/assets/{stateDiagram-FKZM4ZOC-R3tg0iuT.js → stateDiagram-FKZM4ZOC-DkBAMCJV.js} +1 -1
- package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-CtkfyoSn.js +1 -0
- package/dist/dashboard/{assets/timeline-definition-IT6M3QCI-BdvWQ55q.js → dist/assets/timeline-definition-IT6M3QCI-CGUDCWFx.js} +1 -1
- package/dist/dashboard/dist/assets/treemap-GDKQZRPO-D-XpcCUD.js +162 -0
- package/dist/dashboard/{assets/xychartDiagram-PRI3JC2R-C2KcyFpw.js → dist/assets/xychartDiagram-PRI3JC2R-BlIpbwyn.js} +1 -1
- package/dist/dashboard/dist/index.html +2 -2
- package/dist/dashboard/index.html +2 -2
- package/dist/src/businessCoverage.d.ts.map +1 -1
- package/dist/src/businessCoverage.js +53 -2
- package/dist/src/index.js +74 -6
- package/dist/src/inference/routeInference.d.ts.map +1 -1
- package/dist/src/inference/routeInference.js +87 -1
- package/package.json +1 -1
- package/dist/dashboard/assets/channel-CJN0ayk9.js +0 -1
- package/dist/dashboard/assets/classDiagram-2ON5EDUG-DD7jeLQl.js +0 -1
- package/dist/dashboard/assets/classDiagram-v2-WZHVMYZB-DD7jeLQl.js +0 -1
- package/dist/dashboard/assets/clone-CdC-VoG4.js +0 -1
- package/dist/dashboard/assets/index-HrRX8fCW.css +0 -1
- package/dist/dashboard/assets/stateDiagram-v2-4FDKWEC3-l_xKoe09.js +0 -1
- package/dist/dashboard/assets/treemap-GDKQZRPO-DX-9Cs8K.js +0 -162
- package/dist/dashboard/dist/assets/channel-B7nagIQI.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-2ON5EDUG-BaWA959r.js +0 -1
- package/dist/dashboard/dist/assets/classDiagram-v2-WZHVMYZB-BaWA959r.js +0 -1
- package/dist/dashboard/dist/assets/clone-9jVj5p80.js +0 -1
- package/dist/dashboard/dist/assets/index-HrRX8fCW.css +0 -1
- package/dist/dashboard/dist/assets/stateDiagram-v2-4FDKWEC3-DKN4XxW9.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{s as gi,g as xi,q as Xt,p as di,a as pi,b as fi,_ as n,l as Nt,H as yi,e as mi,y as bi,F as Ct,i as Ai,D as Yt,E as wi,L as Ci,M as Bt,N as Si,K as Wt,O as zt}from"./index-
|
|
1
|
+
import{s as gi,g as xi,q as Xt,p as di,a as pi,b as fi,_ as n,l as Nt,H as yi,e as mi,y as bi,F as Ct,i as Ai,D as Yt,E as wi,L as Ci,M as Bt,N as Si,K as Wt,O as zt}from"./index-DuT2LnIf.js";var mt=function(){var s=n(function(W,r,u,g){for(u=u||{},g=W.length;g--;u[W[g]]=r);return u},"o"),t=[1,10,12,14,16,18,19,21,23],i=[2,6],e=[1,3],a=[1,5],c=[1,6],d=[1,7],m=[1,5,10,12,14,16,18,19,21,23,34,35,36],b=[1,25],P=[1,26],I=[1,28],R=[1,29],L=[1,30],z=[1,31],F=[1,32],D=[1,33],V=[1,34],f=[1,35],C=[1,36],l=[1,37],M=[1,43],B=[1,42],U=[1,47],X=[1,50],h=[1,10,12,14,16,18,19,21,23,34,35,36],k=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],w=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],S=[1,64],$={trace:n(function(){},"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:n(function(r,u,g,x,A,o,nt){var p=o.length-1;switch(A){case 5:x.setOrientation(o[p]);break;case 9:x.setDiagramTitle(o[p].text.trim());break;case 12:x.setLineData({text:"",type:"text"},o[p]);break;case 13:x.setLineData(o[p-1],o[p]);break;case 14:x.setBarData({text:"",type:"text"},o[p]);break;case 15:x.setBarData(o[p-1],o[p]);break;case 16:this.$=o[p].trim(),x.setAccTitle(this.$);break;case 17:case 18:this.$=o[p].trim(),x.setAccDescription(this.$);break;case 19:this.$=o[p-1];break;case 20:this.$=[Number(o[p-2]),...o[p]];break;case 21:this.$=[Number(o[p])];break;case 22:x.setXAxisTitle(o[p]);break;case 23:x.setXAxisTitle(o[p-1]);break;case 24:x.setXAxisTitle({type:"text",text:""});break;case 25:x.setXAxisBand(o[p]);break;case 26:x.setXAxisRangeData(Number(o[p-2]),Number(o[p]));break;case 27:this.$=o[p-1];break;case 28:this.$=[o[p-2],...o[p]];break;case 29:this.$=[o[p]];break;case 30:x.setYAxisTitle(o[p]);break;case 31:x.setYAxisTitle(o[p-1]);break;case 32:x.setYAxisTitle({type:"text",text:""});break;case 33:x.setYAxisRangeData(Number(o[p-2]),Number(o[p]));break;case 37:this.$={text:o[p],type:"text"};break;case 38:this.$={text:o[p],type:"text"};break;case 39:this.$={text:o[p],type:"markdown"};break;case 40:this.$=o[p];break;case 41:this.$=o[p-1]+""+o[p];break}},"anonymous"),table:[s(t,i,{3:1,4:2,7:4,5:e,34:a,35:c,36:d}),{1:[3]},s(t,i,{4:2,7:4,3:8,5:e,34:a,35:c,36:d}),s(t,i,{4:2,7:4,6:9,3:10,5:e,8:[1,11],34:a,35:c,36:d}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},s(m,[2,34]),s(m,[2,35]),s(m,[2,36]),{1:[2,1]},s(t,i,{4:2,7:4,3:21,5:e,34:a,35:c,36:d}),{1:[2,3]},s(m,[2,5]),s(t,[2,7],{4:22,34:a,35:c,36:d}),{11:23,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:39,13:38,24:M,27:B,29:40,30:41,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:45,15:44,27:U,33:46,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:49,17:48,24:X,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{11:52,17:51,24:X,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},{20:[1,53]},{22:[1,54]},s(h,[2,18]),{1:[2,2]},s(h,[2,8]),s(h,[2,9]),s(k,[2,37],{40:55,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l}),s(k,[2,38]),s(k,[2,39]),s(w,[2,40]),s(w,[2,42]),s(w,[2,43]),s(w,[2,44]),s(w,[2,45]),s(w,[2,46]),s(w,[2,47]),s(w,[2,48]),s(w,[2,49]),s(w,[2,50]),s(w,[2,51]),s(h,[2,10]),s(h,[2,22],{30:41,29:56,24:M,27:B}),s(h,[2,24]),s(h,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},s(h,[2,11]),s(h,[2,30],{33:60,27:U}),s(h,[2,32]),{31:[1,61]},s(h,[2,12]),{17:62,24:X},{25:63,27:S},s(h,[2,14]),{17:65,24:X},s(h,[2,16]),s(h,[2,17]),s(w,[2,41]),s(h,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},s(h,[2,31]),{27:[1,69]},s(h,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},s(h,[2,15]),s(h,[2,26]),s(h,[2,27]),{11:59,32:72,37:24,38:b,39:P,40:27,41:I,42:R,43:L,44:z,45:F,46:D,47:V,48:f,49:C,50:l},s(h,[2,33]),s(h,[2,19]),{25:73,27:S},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:n(function(r,u){if(u.recoverable)this.trace(r);else{var g=new Error(r);throw g.hash=u,g}},"parseError"),parse:n(function(r){var u=this,g=[0],x=[],A=[null],o=[],nt=this.table,p="",lt=0,Et=0,hi=2,It=1,li=o.slice.call(arguments,1),_=Object.create(this.lexer),Y={yy:{}};for(var dt in this.yy)Object.prototype.hasOwnProperty.call(this.yy,dt)&&(Y.yy[dt]=this.yy[dt]);_.setInput(r,Y.yy),Y.yy.lexer=_,Y.yy.parser=this,typeof _.yylloc>"u"&&(_.yylloc={});var pt=_.yylloc;o.push(pt);var ci=_.options&&_.options.ranges;typeof Y.yy.parseError=="function"?this.parseError=Y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;function ui(v){g.length=g.length-2*v,A.length=A.length-v,o.length=o.length-v}n(ui,"popStack");function Vt(){var v;return v=x.pop()||_.lex()||It,typeof v!="number"&&(v instanceof Array&&(x=v,v=x.pop()),v=u.symbols_[v]||v),v}n(Vt,"lex");for(var T,H,E,ft,q={},ct,O,Mt,ut;;){if(H=g[g.length-1],this.defaultActions[H]?E=this.defaultActions[H]:((T===null||typeof T>"u")&&(T=Vt()),E=nt[H]&&nt[H][T]),typeof E>"u"||!E.length||!E[0]){var yt="";ut=[];for(ct in nt[H])this.terminals_[ct]&&ct>hi&&ut.push("'"+this.terminals_[ct]+"'");_.showPosition?yt="Parse error on line "+(lt+1)+`:
|
|
2
2
|
`+_.showPosition()+`
|
|
3
3
|
Expecting `+ut.join(", ")+", got '"+(this.terminals_[T]||T)+"'":yt="Parse error on line "+(lt+1)+": Unexpected "+(T==It?"end of input":"'"+(this.terminals_[T]||T)+"'"),this.parseError(yt,{text:_.match,token:this.terminals_[T]||T,line:_.yylineno,loc:pt,expected:ut})}if(E[0]instanceof Array&&E.length>1)throw new Error("Parse Error: multiple actions possible at state: "+H+", token: "+T);switch(E[0]){case 1:g.push(T),A.push(_.yytext),o.push(_.yylloc),g.push(E[1]),T=null,Et=_.yyleng,p=_.yytext,lt=_.yylineno,pt=_.yylloc;break;case 2:if(O=this.productions_[E[1]][1],q.$=A[A.length-O],q._$={first_line:o[o.length-(O||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(O||1)].first_column,last_column:o[o.length-1].last_column},ci&&(q._$.range=[o[o.length-(O||1)].range[0],o[o.length-1].range[1]]),ft=this.performAction.apply(q,[p,Et,lt,Y.yy,E[1],A,o].concat(li)),typeof ft<"u")return ft;O&&(g=g.slice(0,-1*O*2),A=A.slice(0,-1*O),o=o.slice(0,-1*O)),g.push(this.productions_[E[1]][0]),A.push(q.$),o.push(q._$),Mt=nt[g[g.length-2]][g[g.length-1]],g.push(Mt);break;case 3:return!0}}return!0},"parse")},Lt=function(){var W={EOF:1,parseError:n(function(u,g){if(this.yy.parser)this.yy.parser.parseError(u,g);else throw new Error(u)},"parseError"),setInput:n(function(r,u){return this.yy=u||this.yy||{},this._input=r,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:n(function(){var r=this._input[0];this.yytext+=r,this.yyleng++,this.offset++,this.match+=r,this.matched+=r;var u=r.match(/(?:\r\n?|\n).*/g);return u?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),r},"input"),unput:n(function(r){var u=r.length,g=r.split(/(?:\r\n?|\n)/g);this._input=r+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-u),this.offset-=u;var x=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),g.length-1&&(this.yylineno-=g.length-1);var A=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:g?(g.length===x.length?this.yylloc.first_column:0)+x[x.length-g.length].length-g[0].length:this.yylloc.first_column-u},this.options.ranges&&(this.yylloc.range=[A[0],A[0]+this.yyleng-u]),this.yyleng=this.yytext.length,this},"unput"),more:n(function(){return this._more=!0,this},"more"),reject:n(function(){if(this.options.backtrack_lexer)this._backtrack=!0;else return this.parseError("Lexical error on line "+(this.yylineno+1)+`. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).
|
|
4
4
|
`+this.showPosition(),{text:"",token:null,line:this.yylineno});return this},"reject"),less:n(function(r){this.unput(this.match.slice(r))},"less"),pastInput:n(function(){var r=this.matched.substr(0,this.matched.length-this.match.length);return(r.length>20?"...":"")+r.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:n(function(){var r=this.match;return r.length<20&&(r+=this._input.substr(0,20-r.length)),(r.substr(0,20)+(r.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:n(function(){var r=this.pastInput(),u=new Array(r.length+1).join("-");return r+this.upcomingInput()+`
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>API Coverage Analyzer Dashboard</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-DuT2LnIf.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Bt72YjAZ.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>API Coverage Analyzer Dashboard</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-DuT2LnIf.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Bt72YjAZ.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"businessCoverage.d.ts","sourceRoot":"","sources":["../../src/businessCoverage.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,wEAAwE;IACxE,SAAS,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,YAAY,CAAC;IACnB,kDAAkD;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,qDAAqD;IACrD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,yCAAyC;IACzC,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CA8BpE;
|
|
1
|
+
{"version":3,"file":"businessCoverage.d.ts","sourceRoot":"","sources":["../../src/businessCoverage.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,mCAAmC;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,wEAAwE;IACxE,SAAS,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,YAAY,CAAC;IACnB,kDAAkD;IAClD,OAAO,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,qDAAqD;IACrD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,yCAAyC;IACzC,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,YAAY,EAAE,CAAC;IAC/B,KAAK,EAAE,oBAAoB,EAAE,CAAC;CAC/B;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,EAAE,CA8BpE;AA4HD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,YAAY,EAAE,EACrB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAyDjC;AAID;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,oBAAoB,EAAE,GAChC,sBAAsB,CAOxB;AAID;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,sBAAsB,EAC9B,UAAU,EAAE,MAAM,GACjB,IAAI,CAgHN"}
|
|
@@ -83,8 +83,39 @@ function parseBusinessRules(rulesPath) {
|
|
|
83
83
|
/**
|
|
84
84
|
* Extract all test / it declarations from a file, together with their
|
|
85
85
|
* description string and the surrounding code up to the next declaration.
|
|
86
|
+
*
|
|
87
|
+
* Supports:
|
|
88
|
+
* - JS/TS: test("desc", ...) / it("desc", ...)
|
|
89
|
+
* - Java/Kotlin: @Test public void methodName() { ... }
|
|
86
90
|
*/
|
|
87
91
|
function extractTestEntries(filePath, fileContents) {
|
|
92
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
93
|
+
// ── Java / Kotlin ──────────────────────────────────────────────────────────
|
|
94
|
+
if (ext === '.java' || ext === '.kt' || ext === '.kts') {
|
|
95
|
+
const entries = [];
|
|
96
|
+
// Match @Test annotation followed (within a few lines) by a method declaration.
|
|
97
|
+
// Captures the method name as group 1.
|
|
98
|
+
const javaTestPattern = /@Test\b[^{]*?(?:public|protected|private|default)?\s+(?:\w+\s+)?(\w+)\s*\(\s*\)/g;
|
|
99
|
+
const positions = [];
|
|
100
|
+
let m;
|
|
101
|
+
while ((m = javaTestPattern.exec(fileContents)) !== null) {
|
|
102
|
+
const methodName = m[1];
|
|
103
|
+
// Convert snake_case / camelCase to space-separated for readability / matching
|
|
104
|
+
const desc = methodName.replace(/_/g, ' ');
|
|
105
|
+
positions.push({ start: m.index, desc });
|
|
106
|
+
}
|
|
107
|
+
for (let i = 0; i < positions.length; i++) {
|
|
108
|
+
const start = positions[i].start;
|
|
109
|
+
const end = i + 1 < positions.length ? positions[i + 1].start : fileContents.length;
|
|
110
|
+
entries.push({
|
|
111
|
+
description: positions[i].desc,
|
|
112
|
+
content: fileContents.slice(start, end),
|
|
113
|
+
filePath,
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
return entries;
|
|
117
|
+
}
|
|
118
|
+
// ── JS / TS ────────────────────────────────────────────────────────────────
|
|
88
119
|
const entries = [];
|
|
89
120
|
const declPattern = /\b(?:test|it)\s*\(\s*(['"`])([\s\S]*?)\1/g;
|
|
90
121
|
const positions = [];
|
|
@@ -108,21 +139,41 @@ function extractTestEntries(filePath, fileContents) {
|
|
|
108
139
|
*
|
|
109
140
|
* A match occurs when:
|
|
110
141
|
* 1. The test description contains `@rule <ruleId>` (case-insensitive), OR
|
|
111
|
-
* 2. The test description (lowercased) contains at least one of the keywords
|
|
142
|
+
* 2. The test description (lowercased) contains at least one of the keywords, OR
|
|
143
|
+
* 3. For Java/Kotlin tests: the test body contains ALL "specific" keywords
|
|
144
|
+
* (keywords with ≥ 8 chars, e.g. "authorization", "authentication").
|
|
145
|
+
* Generic short keywords like "null", "data", "first" are excluded from
|
|
146
|
+
* content matching to avoid false positives.
|
|
112
147
|
*/
|
|
113
148
|
function testMatchesKeywords(entry, ruleId, keywords) {
|
|
114
149
|
const descLower = entry.description.toLowerCase();
|
|
150
|
+
const ext = path.extname(entry.filePath).toLowerCase();
|
|
151
|
+
const isJavaLike = ext === '.java' || ext === '.kt' || ext === '.kts';
|
|
115
152
|
// Annotation-based match: @rule BL001
|
|
116
153
|
const annotationPattern = new RegExp(`@rule\\s+${ruleId}`, 'i');
|
|
117
154
|
if (annotationPattern.test(entry.description) || annotationPattern.test(entry.content)) {
|
|
118
155
|
return true;
|
|
119
156
|
}
|
|
120
|
-
// Keyword-based match
|
|
157
|
+
// Keyword-based match against description
|
|
121
158
|
for (const kw of keywords) {
|
|
122
159
|
if (descLower.includes(kw.toLowerCase())) {
|
|
123
160
|
return true;
|
|
124
161
|
}
|
|
125
162
|
}
|
|
163
|
+
// For Java/Kotlin: also search the test body for specific (long) keywords.
|
|
164
|
+
// Using a ≥8-char threshold avoids matching generic words like "null", "data",
|
|
165
|
+
// "first", "last", "header", "cursor" that appear in almost every test body.
|
|
166
|
+
if (isJavaLike) {
|
|
167
|
+
const specificKeywords = keywords.filter((k) => k.length >= 8);
|
|
168
|
+
if (specificKeywords.length > 0) {
|
|
169
|
+
const contentLower = entry.content.toLowerCase();
|
|
170
|
+
for (const kw of specificKeywords) {
|
|
171
|
+
if (contentLower.includes(kw.toLowerCase())) {
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
126
177
|
return false;
|
|
127
178
|
}
|
|
128
179
|
/**
|
package/dist/src/index.js
CHANGED
|
@@ -1438,6 +1438,8 @@ program
|
|
|
1438
1438
|
// These are reused for endpoint, error, and business-rule coverage matching
|
|
1439
1439
|
// (avoids multiple glob expansions which can hang on large projects).
|
|
1440
1440
|
const TEST_DECL_RE = /\b(?:test|it)\s*\(\s*(['"`])([\s\S]*?)\1/g;
|
|
1441
|
+
// Java/Kotlin JUnit: @Test followed by a method declaration
|
|
1442
|
+
const JAVA_TEST_RE = /@Test\b[^{]*?(?:public|protected|private|default)?\s+(?:\w+\s+)?(\w+)\s*\(\s*\)/g;
|
|
1441
1443
|
const testEntries = artifacts.testFiles.flatMap((tf) => {
|
|
1442
1444
|
let content = '';
|
|
1443
1445
|
try {
|
|
@@ -1448,12 +1450,23 @@ program
|
|
|
1448
1450
|
}
|
|
1449
1451
|
const descriptions = [];
|
|
1450
1452
|
const contentLower = content.toLowerCase();
|
|
1453
|
+
const ext = path.extname(tf).toLowerCase();
|
|
1454
|
+
const isJavaLike = ext === '.java' || ext === '.kt' || ext === '.kts';
|
|
1451
1455
|
let m;
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1456
|
+
if (isJavaLike) {
|
|
1457
|
+
// Extract @Test-annotated method names; convert snake_case to spaces for keyword matching
|
|
1458
|
+
JAVA_TEST_RE.lastIndex = 0;
|
|
1459
|
+
while ((m = JAVA_TEST_RE.exec(content)) !== null) {
|
|
1460
|
+
descriptions.push(m[1].replace(/_/g, ' ').toLowerCase());
|
|
1461
|
+
}
|
|
1462
|
+
}
|
|
1463
|
+
else {
|
|
1464
|
+
TEST_DECL_RE.lastIndex = 0;
|
|
1465
|
+
while ((m = TEST_DECL_RE.exec(content)) !== null) {
|
|
1466
|
+
descriptions.push(m[2].toLowerCase());
|
|
1467
|
+
}
|
|
1455
1468
|
}
|
|
1456
|
-
return [{ file: tf, contentLower, descriptions }];
|
|
1469
|
+
return [{ file: tf, contentLower, descriptions, isJavaLike }];
|
|
1457
1470
|
});
|
|
1458
1471
|
if (artifacts.specs.length > 0) {
|
|
1459
1472
|
for (const specPath of artifacts.specs) {
|
|
@@ -1608,7 +1621,7 @@ program
|
|
|
1608
1621
|
const errorItems = errorCandidateRules.map((rule) => {
|
|
1609
1622
|
var _a;
|
|
1610
1623
|
const matchedTestDescriptions = [];
|
|
1611
|
-
for (const { file, descriptions } of testEntries) {
|
|
1624
|
+
for (const { file, descriptions, isJavaLike, contentLower } of testEntries) {
|
|
1612
1625
|
// Match at TEST DESCRIPTION level, not file level
|
|
1613
1626
|
// Require: description contains an error indicator + at least one specific keyword
|
|
1614
1627
|
const specificKws = (_a = rule.specificKeywords) !== null && _a !== void 0 ? _a : [];
|
|
@@ -1626,6 +1639,23 @@ program
|
|
|
1626
1639
|
if (matchingDescs.length > 0) {
|
|
1627
1640
|
matchedTestDescriptions.push(...matchingDescs.map((d) => `[${path.basename(file)}] ${d}`));
|
|
1628
1641
|
}
|
|
1642
|
+
else if (isJavaLike) {
|
|
1643
|
+
// Java/Kotlin: test method names rarely contain exception class names.
|
|
1644
|
+
// Check file body for specific long keywords (≥8 chars, e.g. "authorization")
|
|
1645
|
+
// combined with HTTP 4xx status checks or exception throws.
|
|
1646
|
+
const specificLongKws = specificKws
|
|
1647
|
+
.filter((k) => k.length >= 8)
|
|
1648
|
+
.map((k) => k.toLowerCase());
|
|
1649
|
+
if (specificLongKws.length > 0 && specificLongKws.some((kw) => contentLower.includes(kw))) {
|
|
1650
|
+
const hasErrorInContent = /\.statuscode\s*\(\s*[45]\d{2}|throw\s+new\s+\w*exception/i.test(contentLower);
|
|
1651
|
+
if (hasErrorInContent) {
|
|
1652
|
+
// Prefer test methods that look like error/boundary tests
|
|
1653
|
+
const errorDescs = descriptions.filter((d) => /\b(4\d\d|error|fail|forbidden|unauthorized|invalid|exception|not.?found)\b/.test(d));
|
|
1654
|
+
const descsToReport = errorDescs.length > 0 ? errorDescs : descriptions.slice(0, 1);
|
|
1655
|
+
matchedTestDescriptions.push(...descsToReport.map((d) => `[${path.basename(file)}] ${d}`));
|
|
1656
|
+
}
|
|
1657
|
+
}
|
|
1658
|
+
}
|
|
1629
1659
|
}
|
|
1630
1660
|
return {
|
|
1631
1661
|
id: rule.id,
|
|
@@ -1726,12 +1756,24 @@ program
|
|
|
1726
1756
|
const kwsLower = rule.keywords.map((k) => k.toLowerCase());
|
|
1727
1757
|
const matchedDescs = [];
|
|
1728
1758
|
const matchedFileSet = new Set();
|
|
1729
|
-
for (const { file, descriptions } of testEntries) {
|
|
1759
|
+
for (const { file, descriptions, isJavaLike, contentLower } of testEntries) {
|
|
1730
1760
|
const hitting = descriptions.filter((desc) => kwsLower.length > 0 && kwsLower.some((kw) => desc.includes(kw)));
|
|
1731
1761
|
if (hitting.length > 0) {
|
|
1732
1762
|
matchedDescs.push(...hitting);
|
|
1733
1763
|
matchedFileSet.add(file);
|
|
1734
1764
|
}
|
|
1765
|
+
else if (isJavaLike) {
|
|
1766
|
+
// Java/Kotlin: test method names may not contain exception class names.
|
|
1767
|
+
// Fall back to checking the file body for specific long keywords (≥8 chars).
|
|
1768
|
+
const specificLongKws = kwsLower.filter((k) => k.length >= 8);
|
|
1769
|
+
if (specificLongKws.length > 0 && specificLongKws.some((kw) => contentLower.includes(kw))) {
|
|
1770
|
+
// Prefer tests that look like error/boundary tests; otherwise include all
|
|
1771
|
+
const relevantDescs = descriptions.filter((d) => /\b(4\d\d|error|fail|forbidden|unauthorized|invalid|exception|not.?found)\b/.test(d));
|
|
1772
|
+
const descsToAdd = relevantDescs.length > 0 ? relevantDescs : descriptions;
|
|
1773
|
+
matchedDescs.push(...descsToAdd);
|
|
1774
|
+
matchedFileSet.add(file);
|
|
1775
|
+
}
|
|
1776
|
+
}
|
|
1735
1777
|
}
|
|
1736
1778
|
return {
|
|
1737
1779
|
rule,
|
|
@@ -1842,6 +1884,32 @@ program
|
|
|
1842
1884
|
// Non-fatal — discovery info is also in scan-manifest.json
|
|
1843
1885
|
}
|
|
1844
1886
|
console.log(`\nReports written to: ${reportsDir}`);
|
|
1887
|
+
// ── 4f-intel. Run coverage intelligence automatically ─────────────────
|
|
1888
|
+
try {
|
|
1889
|
+
const coverageResultsForIntel = allCoverageResults.map((r) => ({
|
|
1890
|
+
type: r.type,
|
|
1891
|
+
totalItems: r.totalItems,
|
|
1892
|
+
coveredItems: r.coveredItems,
|
|
1893
|
+
coveragePercent: r.coveragePercent,
|
|
1894
|
+
details: normalizeDetailsForIntelligence(r.type, r.details),
|
|
1895
|
+
}));
|
|
1896
|
+
const intelReport = (0, index_3.runIntelligenceEngine)({
|
|
1897
|
+
coverageResults: coverageResultsForIntel,
|
|
1898
|
+
languages: artifacts.languages,
|
|
1899
|
+
frameworks: artifacts.frameworks,
|
|
1900
|
+
projectName: path.basename(rootDir),
|
|
1901
|
+
outDir: reportsDir,
|
|
1902
|
+
});
|
|
1903
|
+
console.log(`\nCoverage Intelligence: ${intelReport.summary.totalFindings} findings, ` +
|
|
1904
|
+
`${intelReport.summary.totalRecommendations} recommendations ` +
|
|
1905
|
+
`(${intelReport.summary.criticalUncoveredItems} critical uncovered)`);
|
|
1906
|
+
if (intelReport.summary.recommendationsByPriority.P0 > 0) {
|
|
1907
|
+
console.log(`⚠️ P0 Recommendations: ${intelReport.summary.recommendationsByPriority.P0} — immediate action required`);
|
|
1908
|
+
}
|
|
1909
|
+
}
|
|
1910
|
+
catch (intelErr) {
|
|
1911
|
+
warnings.push(`Coverage intelligence failed: ${intelErr instanceof Error ? intelErr.message : String(intelErr)}`);
|
|
1912
|
+
}
|
|
1845
1913
|
}
|
|
1846
1914
|
// ── 4f. Write scan manifest ────────────────────────────────────────────
|
|
1847
1915
|
try {
|
|
@@ -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;AAoDD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,
|
|
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;AAoDD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CAuFrE;AAgHD;;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"}
|
|
@@ -102,6 +102,11 @@ const HANDLER_SCAN_WINDOW_MULTILINE = 25;
|
|
|
102
102
|
* Code-based patterns take priority over JSDoc annotations for the same method+path.
|
|
103
103
|
*/
|
|
104
104
|
function inferRoutesFromFile(filePath) {
|
|
105
|
+
// Dispatch to language-specific parsers before falling back to the generic (Node/Express) path
|
|
106
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
107
|
+
if (ext === '.java' || ext === '.kt' || ext === '.kts') {
|
|
108
|
+
return inferRoutesFromJavaFile(filePath);
|
|
109
|
+
}
|
|
105
110
|
let content;
|
|
106
111
|
try {
|
|
107
112
|
content = fs.readFileSync(filePath, 'utf-8');
|
|
@@ -183,7 +188,88 @@ function findHandlerFunction(lines, startLine, maxLines) {
|
|
|
183
188
|
}
|
|
184
189
|
return undefined;
|
|
185
190
|
}
|
|
186
|
-
// ───
|
|
191
|
+
// ─── Java / Spring inference ──────────────────────────────────────────────────
|
|
192
|
+
/**
|
|
193
|
+
* Matches class-level @RequestMapping (sets the base path for all methods).
|
|
194
|
+
* @RequestMapping(path = "/articles/{slug}")
|
|
195
|
+
* @RequestMapping("/articles")
|
|
196
|
+
* @RequestMapping("tags") ← no leading slash
|
|
197
|
+
*/
|
|
198
|
+
const SPRING_CLASS_BASE_PATH = /@RequestMapping\s*\(\s*(?:path\s*=\s*)?["']([^"']+)["']/;
|
|
199
|
+
/**
|
|
200
|
+
* Matches any Spring method-mapping annotation and an optional path argument.
|
|
201
|
+
* @GetMapping → GET, no sub-path
|
|
202
|
+
* @GetMapping(path = "feed") → GET, sub-path "feed"
|
|
203
|
+
* @GetMapping("feed") → GET, sub-path "feed"
|
|
204
|
+
* @PostMapping(path = "follow") → POST, sub-path "follow"
|
|
205
|
+
* @RequestMapping(path = "{id}", method = RequestMethod.DELETE)
|
|
206
|
+
* @RequestMapping(path = "/users", method = POST)
|
|
207
|
+
*/
|
|
208
|
+
const SPRING_METHOD_MAPPING = /@(Get|Post|Put|Patch|Delete)Mapping(?:\s*\(\s*(?:path\s*=\s*)?["']([^"']*)["'])?/i;
|
|
209
|
+
/** Matches @RequestMapping with explicit method= (used when special HTTP method needed) */
|
|
210
|
+
const SPRING_REQUEST_MAPPING_EXPLICIT = /@RequestMapping\s*\((?:[^)]*?\bpath\s*=\s*["']([^"']+)["'][^)]*?\bmethod\s*=\s*(?:RequestMethod\.)?([A-Z]+)|(?:[^)]*?\bmethod\s*=\s*(?:RequestMethod\.)?([A-Z]+)[^)]*?\bpath\s*=\s*["']([^"']+)["']))/;
|
|
211
|
+
/**
|
|
212
|
+
* Infer Spring routes from a Java or Kotlin source file.
|
|
213
|
+
* Works in two passes:
|
|
214
|
+
* 1. Scan for class-level @RequestMapping to capture the base path.
|
|
215
|
+
* 2. Scan for method-level @xMapping annotations and combine with the base.
|
|
216
|
+
*/
|
|
217
|
+
function inferRoutesFromJavaFile(filePath) {
|
|
218
|
+
var _a, _b, _c, _d, _e;
|
|
219
|
+
let content;
|
|
220
|
+
try {
|
|
221
|
+
content = fs.readFileSync(filePath, 'utf-8');
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
return [];
|
|
225
|
+
}
|
|
226
|
+
const lines = content.split('\n');
|
|
227
|
+
const byKey = new Map();
|
|
228
|
+
const addRoute = (method, routePath, lineNumber) => {
|
|
229
|
+
const key = `${method}:${routePath}`;
|
|
230
|
+
if (!byKey.has(key)) {
|
|
231
|
+
byKey.set(key, { method, path: routePath, sourceFile: filePath, lineNumber, discoveredVia: 'code' });
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
// ── Pass 1: find class-level base path ──────────────────────────────────────
|
|
235
|
+
let basePath = '';
|
|
236
|
+
for (const line of lines) {
|
|
237
|
+
const bm = line.match(SPRING_CLASS_BASE_PATH);
|
|
238
|
+
if (bm) {
|
|
239
|
+
basePath = bm[1].startsWith('/') ? bm[1] : '/' + bm[1];
|
|
240
|
+
break;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// ── Pass 2: find method-level annotations ───────────────────────────────────
|
|
244
|
+
for (let i = 0; i < lines.length; i++) {
|
|
245
|
+
const line = lines[i];
|
|
246
|
+
// @GetMapping / @PostMapping / @PutMapping / @PatchMapping / @DeleteMapping
|
|
247
|
+
const mm = line.match(SPRING_METHOD_MAPPING);
|
|
248
|
+
if (mm) {
|
|
249
|
+
const httpMethod = mm[1].toLowerCase();
|
|
250
|
+
const subPath = (_a = mm[2]) !== null && _a !== void 0 ? _a : '';
|
|
251
|
+
const fullPath = subPath
|
|
252
|
+
? basePath + (subPath.startsWith('/') ? subPath : '/' + subPath)
|
|
253
|
+
: basePath || '/';
|
|
254
|
+
addRoute(httpMethod, fullPath, i + 1);
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
// @RequestMapping(path = "...", method = REQUEST_METHOD_...)
|
|
258
|
+
const em = line.match(SPRING_REQUEST_MAPPING_EXPLICIT);
|
|
259
|
+
if (em) {
|
|
260
|
+
// Two capture group orderings depending on which comes first
|
|
261
|
+
const rawPath = (_c = (_b = em[1]) !== null && _b !== void 0 ? _b : em[4]) !== null && _c !== void 0 ? _c : '';
|
|
262
|
+
const rawMethod = ((_e = (_d = em[2]) !== null && _d !== void 0 ? _d : em[3]) !== null && _e !== void 0 ? _e : '').toLowerCase();
|
|
263
|
+
if (rawPath && rawMethod && exports.HTTP_METHODS.includes(rawMethod)) {
|
|
264
|
+
const fullPath = rawPath.startsWith('/')
|
|
265
|
+
? rawPath
|
|
266
|
+
: basePath + '/' + rawPath;
|
|
267
|
+
addRoute(rawMethod, fullPath, i + 1);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return [...byKey.values()];
|
|
272
|
+
}
|
|
187
273
|
/**
|
|
188
274
|
* Infer routes from a set of service source files.
|
|
189
275
|
*/
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{as as o,at as s}from"./index-DE34Ncpq.js";const t=(a,r)=>o.lang.round(s.parse(a)[r]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-BTnP2N-l.js";import{_ as i}from"./index-DE34Ncpq.js";import"./chunk-FMBD7UC4-2n8Ehv6e.js";import"./chunk-55IACEB6-DoDGO_Bn.js";import"./chunk-QN33PNHL-C_ll8qBD.js";var p={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{p as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-BTnP2N-l.js";import{_ as i}from"./index-DE34Ncpq.js";import"./chunk-FMBD7UC4-2n8Ehv6e.js";import"./chunk-55IACEB6-DoDGO_Bn.js";import"./chunk-QN33PNHL-C_ll8qBD.js";var p={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{p as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as r}from"./_baseUniq-Cz9Wv_1o.js";var e=4;function a(o){return r(o,e)}export{a as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-red-900:oklch(39.6% .141 25.723);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-orange-800:oklch(47% .157 37.304);--color-orange-900:oklch(40.8% .123 38.172);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-400:oklch(82.8% .189 84.429);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-900:oklch(41.4% .112 45.904);--color-yellow-50:oklch(98.7% .026 102.212);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-200:oklch(94.5% .129 101.54);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-yellow-900:oklch(42.1% .095 57.708);--color-green-50:oklch(98.2% .018 155.826);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-gray-950:oklch(13% .028 261.692);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--leading-tight:1.25;--radius-lg:.5rem;--radius-xl:.75rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.end{inset-inline-end:var(--spacing)}.z-50{z-index:50}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-2{height:calc(var(--spacing) * 2)}.h-64{height:calc(var(--spacing) * 64)}.min-h-screen{min-height:100vh}.w-64{width:calc(var(--spacing) * 64)}.w-full{width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-none{max-width:none}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-100>:not(:last-child)){border-color:var(--color-gray-100)}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-blue-200{border-color:var(--color-blue-200)}.border-blue-300{border-color:var(--color-blue-300)}.border-blue-400{border-color:var(--color-blue-400)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-green-200{border-color:var(--color-green-200)}.border-red-200{border-color:var(--color-red-200)}.border-yellow-200{border-color:var(--color-yellow-200)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-500{background-color:var(--color-green-500)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-red-600{background-color:var(--color-red-600)}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-500{background-color:var(--color-yellow-500)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pr-8{padding-right:calc(var(--spacing) * 8)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-2{padding-left:calc(var(--spacing) * 2)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-all{word-break:break-all}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-600{color:var(--color-amber-600)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-500{color:var(--color-green-500)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-orange-600{color:var(--color-orange-600)}.text-orange-800{color:var(--color-orange-800)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.placeholder-gray-400::placeholder{color:var(--color-gray-400)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media (hover:hover){.hover\:bg-blue-100:hover{background-color:var(--color-blue-100)}.hover\:bg-blue-200:hover{background-color:var(--color-blue-200)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-white:hover{color:var(--color-white)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-blue-500:focus-visible{--tw-ring-color:var(--color-blue-500)}@media (min-width:40rem){.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}@media (prefers-color-scheme:dark){:where(.dark\:divide-gray-700>:not(:last-child)){border-color:var(--color-gray-700)}.dark\:border-blue-700{border-color:var(--color-blue-700)}.dark\:border-blue-800{border-color:var(--color-blue-800)}.dark\:border-gray-600{border-color:var(--color-gray-600)}.dark\:border-gray-700{border-color:var(--color-gray-700)}.dark\:border-green-800{border-color:var(--color-green-800)}.dark\:border-red-800{border-color:var(--color-red-800)}.dark\:border-yellow-700{border-color:var(--color-yellow-700)}.dark\:border-yellow-800{border-color:var(--color-yellow-800)}.dark\:bg-amber-900\/40{background-color:#7b330666}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-900\/40{background-color:color-mix(in oklab,var(--color-amber-900) 40%,transparent)}}.dark\:bg-blue-900\/20{background-color:#1c398e33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/20{background-color:color-mix(in oklab,var(--color-blue-900) 20%,transparent)}}.dark\:bg-blue-900\/30{background-color:#1c398e4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/30{background-color:color-mix(in oklab,var(--color-blue-900) 30%,transparent)}}.dark\:bg-blue-900\/40{background-color:#1c398e66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-900\/40{background-color:color-mix(in oklab,var(--color-blue-900) 40%,transparent)}}.dark\:bg-gray-700{background-color:var(--color-gray-700)}.dark\:bg-gray-800{background-color:var(--color-gray-800)}.dark\:bg-gray-900{background-color:var(--color-gray-900)}.dark\:bg-gray-950{background-color:var(--color-gray-950)}.dark\:bg-green-900\/20{background-color:#0d542b33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-green-900\/20{background-color:color-mix(in oklab,var(--color-green-900) 20%,transparent)}}.dark\:bg-orange-900\/30{background-color:#7e2a0c4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-orange-900\/30{background-color:color-mix(in oklab,var(--color-orange-900) 30%,transparent)}}.dark\:bg-orange-900\/40{background-color:#7e2a0c66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-orange-900\/40{background-color:color-mix(in oklab,var(--color-orange-900) 40%,transparent)}}.dark\:bg-red-900\/20{background-color:#82181a33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/20{background-color:color-mix(in oklab,var(--color-red-900) 20%,transparent)}}.dark\:bg-red-900\/30{background-color:#82181a4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/30{background-color:color-mix(in oklab,var(--color-red-900) 30%,transparent)}}.dark\:bg-red-900\/40{background-color:#82181a66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-red-900\/40{background-color:color-mix(in oklab,var(--color-red-900) 40%,transparent)}}.dark\:bg-yellow-900\/20{background-color:#733e0a33}@supports (color:color-mix(in lab,red,red)){.dark\:bg-yellow-900\/20{background-color:color-mix(in oklab,var(--color-yellow-900) 20%,transparent)}}.dark\:bg-yellow-900\/30{background-color:#733e0a4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-yellow-900\/30{background-color:color-mix(in oklab,var(--color-yellow-900) 30%,transparent)}}.dark\:bg-yellow-900\/40{background-color:#733e0a66}@supports (color:color-mix(in lab,red,red)){.dark\:bg-yellow-900\/40{background-color:color-mix(in oklab,var(--color-yellow-900) 40%,transparent)}}.dark\:text-amber-400{color:var(--color-amber-400)}.dark\:text-blue-200{color:var(--color-blue-200)}.dark\:text-blue-300{color:var(--color-blue-300)}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-gray-100{color:var(--color-gray-100)}.dark\:text-gray-200{color:var(--color-gray-200)}.dark\:text-gray-300{color:var(--color-gray-300)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-gray-500{color:var(--color-gray-500)}.dark\:text-green-300{color:var(--color-green-300)}.dark\:text-green-400{color:var(--color-green-400)}.dark\:text-orange-300{color:var(--color-orange-300)}.dark\:text-orange-400{color:var(--color-orange-400)}.dark\:text-red-300{color:var(--color-red-300)}.dark\:text-red-400{color:var(--color-red-400)}.dark\:text-white{color:var(--color-white)}.dark\:text-yellow-300{color:var(--color-yellow-300)}.dark\:text-yellow-400{color:var(--color-yellow-400)}.dark\:placeholder-gray-500::placeholder{color:var(--color-gray-500)}@media (hover:hover){.dark\:hover\:bg-blue-800\/30:hover{background-color:#193cb84d}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-blue-800\/30:hover{background-color:color-mix(in oklab,var(--color-blue-800) 30%,transparent)}}.dark\:hover\:bg-blue-900\/50:hover{background-color:#1c398e80}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-blue-900\/50:hover{background-color:color-mix(in oklab,var(--color-blue-900) 50%,transparent)}}.dark\:hover\:bg-gray-600:hover{background-color:var(--color-gray-600)}.dark\:hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.dark\:hover\:text-gray-200:hover{color:var(--color-gray-200)}}}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-duration{syntax:"*";inherits:false}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as t,b as r,a,S as s}from"./chunk-DI55MBZ5-DXohPVKZ.js";import{_ as i}from"./index-DE34Ncpq.js";import"./chunk-55IACEB6-DoDGO_Bn.js";import"./chunk-QN33PNHL-C_ll8qBD.js";var l={parser:a,get db(){return new s(2)},renderer:r,styles:t,init:i(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")};export{l as diagram};
|