@featurevisor/core
Advanced tools
Comparing version 1.2.1 to 1.2.2
@@ -6,2 +6,10 @@ # Change Log | ||
## [1.2.2](https://github.com/featurevisor/featurevisor/compare/v1.2.1...v1.2.2) (2024-01-17) | ||
**Note:** Version bump only for package @featurevisor/core | ||
## [1.2.1](https://github.com/featurevisor/featurevisor/compare/v1.2.0...v1.2.1) (2024-01-16) | ||
@@ -8,0 +16,0 @@ |
{"/home/runner/work/featurevisor/featurevisor/packages/core/lib/builder/allocator.js": {"path":"/home/runner/work/featurevisor/featurevisor/packages/core/lib/builder/allocator.js","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":79}},"2":{"start":{"line":5,"column":17},"end":{"line":5,"column":19}},"3":{"start":{"line":6,"column":20},"end":{"line":6,"column":24}},"4":{"start":{"line":7,"column":12},"end":{"line":7,"column":13}},"5":{"start":{"line":8,"column":4},"end":{"line":15,"column":5}},"6":{"start":{"line":9,"column":20},"end":{"line":9,"column":38}},"7":{"start":{"line":10,"column":20},"end":{"line":10,"column":28}},"8":{"start":{"line":10,"column":36},"end":{"line":10,"column":44}},"9":{"start":{"line":11,"column":24},"end":{"line":11,"column":56}},"10":{"start":{"line":12,"column":8},"end":{"line":12,"column":48}},"11":{"start":{"line":13,"column":8},"end":{"line":13,"column":31}},"12":{"start":{"line":14,"column":8},"end":{"line":14,"column":12}},"13":{"start":{"line":16,"column":4},"end":{"line":16,"column":18}},"14":{"start":{"line":18,"column":0},"end":{"line":18,"column":38}},"15":{"start":{"line":20,"column":17},"end":{"line":20,"column":19}},"16":{"start":{"line":21,"column":20},"end":{"line":21,"column":24}},"17":{"start":{"line":22,"column":12},"end":{"line":22,"column":13}},"18":{"start":{"line":23,"column":4},"end":{"line":32,"column":5}},"19":{"start":{"line":24,"column":20},"end":{"line":24,"column":38}},"20":{"start":{"line":25,"column":20},"end":{"line":25,"column":28}},"21":{"start":{"line":25,"column":36},"end":{"line":25,"column":44}},"22":{"start":{"line":26,"column":24},"end":{"line":26,"column":56}},"23":{"start":{"line":27,"column":8},"end":{"line":29,"column":9}},"24":{"start":{"line":28,"column":12},"end":{"line":28,"column":50}},"25":{"start":{"line":30,"column":8},"end":{"line":30,"column":31}},"26":{"start":{"line":31,"column":8},"end":{"line":31,"column":12}},"27":{"start":{"line":33,"column":4},"end":{"line":33,"column":18}},"28":{"start":{"line":35,"column":0},"end":{"line":35,"column":86}}},"fnMap":{"0":{"name":"getAllocation","decl":{"start":{"line":4,"column":9},"end":{"line":4,"column":22}},"loc":{"start":{"line":4,"column":46},"end":{"line":17,"column":1}},"line":4},"1":{"name":"getUpdatedAvailableRangesAfterFilling","decl":{"start":{"line":19,"column":9},"end":{"line":19,"column":46}},"loc":{"start":{"line":19,"column":70},"end":{"line":34,"column":1}},"line":19}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":11},"end":{"line":8,"column":54}},"type":"binary-expr","locations":[{"start":{"line":8,"column":11},"end":{"line":8,"column":24}},{"start":{"line":8,"column":28},"end":{"line":8,"column":54}}],"line":8},"1":{"loc":{"start":{"line":23,"column":11},"end":{"line":23,"column":54}},"type":"binary-expr","locations":[{"start":{"line":23,"column":11},"end":{"line":23,"column":24}},{"start":{"line":23,"column":28},"end":{"line":23,"column":54}}],"line":23},"2":{"loc":{"start":{"line":27,"column":8},"end":{"line":29,"column":9}},"type":"if","locations":[{"start":{"line":27,"column":8},"end":{"line":29,"column":9}},{"start":{},"end":{}}],"line":27}},"s":{"0":2,"1":2,"2":29,"3":29,"4":29,"5":29,"6":34,"7":34,"8":34,"9":34,"10":34,"11":34,"12":34,"13":29,"14":2,"15":30,"16":30,"17":30,"18":30,"19":35,"20":35,"21":35,"22":35,"23":35,"24":23,"25":35,"26":35,"27":30,"28":2},"f":{"0":29,"1":30},"b":{"0":[63,34],"1":[65,35],"2":[23,12]},"inputSourceMap":null,"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"3f955d0206be9d8eced2e04673bc829826236c6e"} | ||
,"/home/runner/work/featurevisor/featurevisor/packages/core/lib/builder/traffic.js": {"path":"/home/runner/work/featurevisor/featurevisor/packages/core/lib/builder/traffic.js","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":128}},"2":{"start":{"line":4,"column":12},"end":{"line":4,"column":40}},"3":{"start":{"line":5,"column":18},"end":{"line":5,"column":40}},"4":{"start":{"line":8,"column":4},"end":{"line":16,"column":5}},"5":{"start":{"line":9,"column":8},"end":{"line":13,"column":9}},"6":{"start":{"line":12,"column":12},"end":{"line":12,"column":24}},"7":{"start":{"line":15,"column":8},"end":{"line":15,"column":21}},"8":{"start":{"line":17,"column":26},"end":{"line":22,"column":19}},"9":{"start":{"line":19,"column":24},"end":{"line":19,"column":32}},"10":{"start":{"line":19,"column":43},"end":{"line":19,"column":52}},"11":{"start":{"line":20,"column":12},"end":{"line":20,"column":54}},"12":{"start":{"line":23,"column":4},"end":{"line":29,"column":29}},"13":{"start":{"line":24,"column":20},"end":{"line":24,"column":28}},"14":{"start":{"line":24,"column":39},"end":{"line":24,"column":48}},"15":{"start":{"line":25,"column":8},"end":{"line":28,"column":11}},"16":{"start":{"line":31,"column":0},"end":{"line":31,"column":62}},"17":{"start":{"line":34,"column":4},"end":{"line":36,"column":5}},"18":{"start":{"line":35,"column":8},"end":{"line":35,"column":17}},"19":{"start":{"line":37,"column":29},"end":{"line":37,"column":59}},"20":{"start":{"line":38,"column":4},"end":{"line":38,"column":50}},"21":{"start":{"line":40,"column":0},"end":{"line":40,"column":54}},"22":{"start":{"line":43,"column":4},"end":{"line":45,"column":5}},"23":{"start":{"line":44,"column":8},"end":{"line":44,"column":21}},"24":{"start":{"line":46,"column":4},"end":{"line":48,"column":5}},"25":{"start":{"line":47,"column":8},"end":{"line":47,"column":21}},"26":{"start":{"line":49,"column":4},"end":{"line":49,"column":86}},"27":{"start":{"line":51,"column":0},"end":{"line":51,"column":54}},"28":{"start":{"line":59,"column":17},"end":{"line":59,"column":19}},"29":{"start":{"line":61,"column":26},"end":{"line":61,"column":97}},"30":{"start":{"line":62,"column":4},"end":{"line":127,"column":7}},"31":{"start":{"line":63,"column":29},"end":{"line":63,"column":50}},"32":{"start":{"line":64,"column":22},"end":{"line":71,"column":9}},"33":{"start":{"line":73,"column":8},"end":{"line":75,"column":9}},"34":{"start":{"line":74,"column":12},"end":{"line":74,"column":53}},"35":{"start":{"line":76,"column":8},"end":{"line":78,"column":9}},"36":{"start":{"line":77,"column":12},"end":{"line":77,"column":53}},"37":{"start":{"line":80,"column":32},"end":{"line":80,"column":86}},"38":{"start":{"line":81,"column":34},"end":{"line":81,"column":179}},"39":{"start":{"line":81,"column":144},"end":{"line":81,"column":176}},"40":{"start":{"line":82,"column":33},"end":{"line":82,"column":95}},"41":{"start":{"line":83,"column":28},"end":{"line":83,"column":83}},"42":{"start":{"line":84,"column":31},"end":{"line":87,"column":25}},"43":{"start":{"line":88,"column":37},"end":{"line":88,"column":80}},"44":{"start":{"line":89,"column":8},"end":{"line":102,"column":9}},"45":{"start":{"line":91,"column":32},"end":{"line":91,"column":33}},"46":{"start":{"line":92,"column":12},"end":{"line":100,"column":15}},"47":{"start":{"line":93,"column":32},"end":{"line":93,"column":44}},"48":{"start":{"line":93,"column":54},"end":{"line":93,"column":62}},"49":{"start":{"line":94,"column":29},"end":{"line":97,"column":17}},"50":{"start":{"line":98,"column":16},"end":{"line":98,"column":53}},"51":{"start":{"line":99,"column":16},"end":{"line":99,"column":30}},"52":{"start":{"line":101,"column":12},"end":{"line":101,"column":124}},"53":{"start":{"line":103,"column":8},"end":{"line":119,"column":9}},"54":{"start":{"line":104,"column":12},"end":{"line":118,"column":15}},"55":{"start":{"line":105,"column":29},"end":{"line":105,"column":45}},"56":{"start":{"line":106,"column":33},"end":{"line":106,"column":75}},"57":{"start":{"line":107,"column":34},"end":{"line":109,"column":57}},"58":{"start":{"line":110,"column":35},"end":{"line":110,"column":102}},"59":{"start":{"line":111,"column":16},"end":{"line":116,"column":19}},"60":{"start":{"line":112,"column":20},"end":{"line":115,"column":23}},"61":{"start":{"line":117,"column":16},"end":{"line":117,"column":133}},"62":{"start":{"line":120,"column":8},"end":{"line":125,"column":11}},"63":{"start":{"line":121,"column":12},"end":{"line":123,"column":13}},"64":{"start":{"line":122,"column":16},"end":{"line":122,"column":29}},"65":{"start":{"line":124,"column":12},"end":{"line":124,"column":24}},"66":{"start":{"line":126,"column":8},"end":{"line":126,"column":29}},"67":{"start":{"line":128,"column":4},"end":{"line":128,"column":18}},"68":{"start":{"line":130,"column":0},"end":{"line":130,"column":32}}},"fnMap":{"0":{"name":"detectIfVariationsChanged","decl":{"start":{"line":6,"column":9},"end":{"line":6,"column":34}},"loc":{"start":{"line":7,"column":17},"end":{"line":30,"column":1}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":18,"column":44},"end":{"line":18,"column":45}},"loc":{"start":{"line":18,"column":58},"end":{"line":21,"column":9}},"line":18},"2":{"name":"(anonymous_2)","decl":{"start":{"line":23,"column":58},"end":{"line":23,"column":59}},"loc":{"start":{"line":23,"column":72},"end":{"line":29,"column":5}},"line":23},"3":{"name":"getRulePercentageDiff","decl":{"start":{"line":32,"column":9},"end":{"line":32,"column":30}},"loc":{"start":{"line":33,"column":21},"end":{"line":39,"column":1}},"line":33},"4":{"name":"detectIfRangesChanged","decl":{"start":{"line":41,"column":9},"end":{"line":41,"column":30}},"loc":{"start":{"line":42,"column":17},"end":{"line":50,"column":1}},"line":42},"5":{"name":"getTraffic","decl":{"start":{"line":52,"column":9},"end":{"line":52,"column":19}},"loc":{"start":{"line":58,"column":8},"end":{"line":129,"column":1}},"line":58},"6":{"name":"(anonymous_6)","decl":{"start":{"line":62,"column":24},"end":{"line":62,"column":25}},"loc":{"start":{"line":62,"column":46},"end":{"line":127,"column":5}},"line":62},"7":{"name":"(anonymous_7)","decl":{"start":{"line":81,"column":129},"end":{"line":81,"column":130}},"loc":{"start":{"line":81,"column":142},"end":{"line":81,"column":178}},"line":81},"8":{"name":"(anonymous_8)","decl":{"start":{"line":92,"column":68},"end":{"line":92,"column":69}},"loc":{"start":{"line":92,"column":82},"end":{"line":100,"column":13}},"line":92},"9":{"name":"(anonymous_9)","decl":{"start":{"line":104,"column":31},"end":{"line":104,"column":32}},"loc":{"start":{"line":104,"column":52},"end":{"line":118,"column":13}},"line":104},"10":{"name":"(anonymous_10)","decl":{"start":{"line":111,"column":37},"end":{"line":111,"column":38}},"loc":{"start":{"line":111,"column":54},"end":{"line":116,"column":17}},"line":111},"11":{"name":"(anonymous_11)","decl":{"start":{"line":120,"column":55},"end":{"line":120,"column":56}},"loc":{"start":{"line":120,"column":68},"end":{"line":125,"column":9}},"line":120}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":4},"end":{"line":16,"column":5}},"type":"if","locations":[{"start":{"line":8,"column":4},"end":{"line":16,"column":5}},{"start":{},"end":{}}],"line":8},"1":{"loc":{"start":{"line":8,"column":8},"end":{"line":8,"column":77}},"type":"binary-expr","locations":[{"start":{"line":8,"column":8},"end":{"line":8,"column":24}},{"start":{"line":8,"column":28},"end":{"line":8,"column":77}}],"line":8},"2":{"loc":{"start":{"line":9,"column":8},"end":{"line":13,"column":9}},"type":"if","locations":[{"start":{"line":9,"column":8},"end":{"line":13,"column":9}},{"start":{},"end":{}}],"line":9},"3":{"loc":{"start":{"line":9,"column":12},"end":{"line":9,"column":70}},"type":"binary-expr","locations":[{"start":{"line":9,"column":12},"end":{"line":9,"column":41}},{"start":{"line":9,"column":45},"end":{"line":9,"column":70}}],"line":9},"4":{"loc":{"start":{"line":17,"column":26},"end":{"line":22,"column":19}},"type":"cond-expr","locations":[{"start":{"line":18,"column":10},"end":{"line":21,"column":11}},{"start":{"line":22,"column":10},"end":{"line":22,"column":19}}],"line":17},"5":{"loc":{"start":{"line":34,"column":4},"end":{"line":36,"column":5}},"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":36,"column":5}},{"start":{},"end":{}}],"line":34},"6":{"loc":{"start":{"line":43,"column":4},"end":{"line":45,"column":5}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":45,"column":5}},{"start":{},"end":{}}],"line":43},"7":{"loc":{"start":{"line":46,"column":4},"end":{"line":48,"column":5}},"type":"if","locations":[{"start":{"line":46,"column":4},"end":{"line":48,"column":5}},{"start":{},"end":{}}],"line":46},"8":{"loc":{"start":{"line":61,"column":26},"end":{"line":61,"column":97}},"type":"cond-expr","locations":[{"start":{"line":61,"column":56},"end":{"line":61,"column":62}},{"start":{"line":61,"column":65},"end":{"line":61,"column":97}}],"line":61},"9":{"loc":{"start":{"line":61,"column":26},"end":{"line":61,"column":53}},"type":"binary-expr","locations":[{"start":{"line":61,"column":26},"end":{"line":61,"column":32}},{"start":{"line":61,"column":36},"end":{"line":61,"column":53}}],"line":61},"10":{"loc":{"start":{"line":66,"column":22},"end":{"line":68,"column":37}},"type":"cond-expr","locations":[{"start":{"line":67,"column":18},"end":{"line":67,"column":53}},{"start":{"line":68,"column":18},"end":{"line":68,"column":37}}],"line":66},"11":{"loc":{"start":{"line":73,"column":8},"end":{"line":75,"column":9}},"type":"if","locations":[{"start":{"line":73,"column":8},"end":{"line":75,"column":9}},{"start":{},"end":{}}],"line":73},"12":{"loc":{"start":{"line":76,"column":8},"end":{"line":78,"column":9}},"type":"if","locations":[{"start":{"line":76,"column":8},"end":{"line":78,"column":9}},{"start":{},"end":{}}],"line":76},"13":{"loc":{"start":{"line":81,"column":34},"end":{"line":81,"column":179}},"type":"cond-expr","locations":[{"start":{"line":81,"column":91},"end":{"line":81,"column":97}},{"start":{"line":81,"column":100},"end":{"line":81,"column":179}}],"line":81},"14":{"loc":{"start":{"line":81,"column":34},"end":{"line":81,"column":88}},"type":"binary-expr","locations":[{"start":{"line":81,"column":34},"end":{"line":81,"column":58}},{"start":{"line":81,"column":62},"end":{"line":81,"column":88}}],"line":81},"15":{"loc":{"start":{"line":84,"column":31},"end":{"line":87,"column":25}},"type":"binary-expr","locations":[{"start":{"line":84,"column":31},"end":{"line":84,"column":51}},{"start":{"line":85,"column":12},"end":{"line":85,"column":29}},{"start":{"line":86,"column":12},"end":{"line":86,"column":34}},{"start":{"line":87,"column":12},"end":{"line":87,"column":25}}],"line":84},"16":{"loc":{"start":{"line":89,"column":8},"end":{"line":102,"column":9}},"type":"if","locations":[{"start":{"line":89,"column":8},"end":{"line":102,"column":9}},{"start":{},"end":{}}],"line":89},"17":{"loc":{"start":{"line":89,"column":12},"end":{"line":89,"column":52}},"type":"binary-expr","locations":[{"start":{"line":89,"column":12},"end":{"line":89,"column":31}},{"start":{"line":89,"column":35},"end":{"line":89,"column":52}}],"line":89},"18":{"loc":{"start":{"line":103,"column":8},"end":{"line":119,"column":9}},"type":"if","locations":[{"start":{"line":103,"column":8},"end":{"line":119,"column":9}},{"start":{},"end":{}}],"line":103},"19":{"loc":{"start":{"line":107,"column":34},"end":{"line":109,"column":57}},"type":"cond-expr","locations":[{"start":{"line":108,"column":22},"end":{"line":108,"column":57}},{"start":{"line":109,"column":22},"end":{"line":109,"column":57}}],"line":107},"20":{"loc":{"start":{"line":121,"column":12},"end":{"line":123,"column":13}},"type":"if","locations":[{"start":{"line":121,"column":12},"end":{"line":123,"column":13}},{"start":{},"end":{}}],"line":121},"21":{"loc":{"start":{"line":121,"column":16},"end":{"line":121,"column":52}},"type":"binary-expr","locations":[{"start":{"line":121,"column":16},"end":{"line":121,"column":23}},{"start":{"line":121,"column":27},"end":{"line":121,"column":52}}],"line":121}},"s":{"0":1,"1":1,"2":1,"3":1,"4":9,"5":3,"6":3,"7":0,"8":6,"9":15,"10":15,"11":15,"12":6,"13":16,"14":16,"15":16,"16":1,"17":9,"18":3,"19":6,"20":6,"21":1,"22":9,"23":3,"24":6,"25":6,"26":0,"27":1,"28":9,"29":9,"30":9,"31":9,"32":9,"33":9,"34":0,"35":9,"36":0,"37":9,"38":9,"39":6,"40":9,"41":9,"42":9,"43":9,"44":9,"45":1,"46":1,"47":2,"48":2,"49":2,"50":2,"51":2,"52":1,"53":9,"54":9,"55":22,"56":22,"57":22,"58":22,"59":22,"60":21,"61":22,"62":9,"63":23,"64":0,"65":23,"66":9,"67":9,"68":1},"f":{"0":9,"1":15,"2":16,"3":9,"4":9,"5":9,"6":9,"7":6,"8":2,"9":22,"10":21,"11":23},"b":{"0":[3,6],"1":[9,6],"2":[3,0],"3":[3,3],"4":[6,0],"5":[3,6],"6":[3,6],"7":[6,0],"8":[0,9],"9":[9,0],"10":[0,9],"11":[0,9],"12":[0,9],"13":[3,6],"14":[9,9],"15":[9,6,2,1],"16":[1,8],"17":[9,6],"18":[9,0],"19":[20,2],"20":[0,23],"21":[23,23]},"inputSourceMap":null,"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1002e6c46d06cbfdef3414f50f33926569731fd7"} | ||
,"/home/runner/work/featurevisor/featurevisor/packages/core/lib/tester/checkIfObjectsAreEqual.js": {"path":"/home/runner/work/featurevisor/featurevisor/packages/core/lib/tester/checkIfObjectsAreEqual.js","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":40}},"2":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"3":{"start":{"line":6,"column":8},"end":{"line":6,"column":20}},"4":{"start":{"line":8,"column":4},"end":{"line":10,"column":5}},"5":{"start":{"line":9,"column":8},"end":{"line":9,"column":21}},"6":{"start":{"line":11,"column":16},"end":{"line":11,"column":30}},"7":{"start":{"line":11,"column":40},"end":{"line":11,"column":54}},"8":{"start":{"line":12,"column":4},"end":{"line":14,"column":5}},"9":{"start":{"line":13,"column":8},"end":{"line":13,"column":21}},"10":{"start":{"line":15,"column":4},"end":{"line":20,"column":5}},"11":{"start":{"line":15,"column":18},"end":{"line":15,"column":19}},"12":{"start":{"line":15,"column":31},"end":{"line":15,"column":36}},"13":{"start":{"line":16,"column":18},"end":{"line":16,"column":29}},"14":{"start":{"line":17,"column":8},"end":{"line":19,"column":9}},"15":{"start":{"line":18,"column":12},"end":{"line":18,"column":25}},"16":{"start":{"line":21,"column":4},"end":{"line":21,"column":16}},"17":{"start":{"line":23,"column":0},"end":{"line":23,"column":56}}},"fnMap":{"0":{"name":"checkIfObjectsAreEqual","decl":{"start":{"line":4,"column":9},"end":{"line":4,"column":31}},"loc":{"start":{"line":4,"column":38},"end":{"line":22,"column":1}},"line":4}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"type":"if","locations":[{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},{"start":{},"end":{}}],"line":5},"1":{"loc":{"start":{"line":8,"column":4},"end":{"line":10,"column":5}},"type":"if","locations":[{"start":{"line":8,"column":4},"end":{"line":10,"column":5}},{"start":{},"end":{}}],"line":8},"2":{"loc":{"start":{"line":8,"column":8},"end":{"line":8,"column":82}},"type":"binary-expr","locations":[{"start":{"line":8,"column":8},"end":{"line":8,"column":29}},{"start":{"line":8,"column":33},"end":{"line":8,"column":43}},{"start":{"line":8,"column":47},"end":{"line":8,"column":68}},{"start":{"line":8,"column":72},"end":{"line":8,"column":82}}],"line":8},"3":{"loc":{"start":{"line":12,"column":4},"end":{"line":14,"column":5}},"type":"if","locations":[{"start":{"line":12,"column":4},"end":{"line":14,"column":5}},{"start":{},"end":{}}],"line":12},"4":{"loc":{"start":{"line":17,"column":8},"end":{"line":19,"column":9}},"type":"if","locations":[{"start":{"line":17,"column":8},"end":{"line":19,"column":9}},{"start":{},"end":{}}],"line":17},"5":{"loc":{"start":{"line":17,"column":12},"end":{"line":17,"column":75}},"type":"binary-expr","locations":[{"start":{"line":17,"column":12},"end":{"line":17,"column":32}},{"start":{"line":17,"column":36},"end":{"line":17,"column":75}}],"line":17}},"s":{"0":1,"1":1,"2":12,"3":5,"4":7,"5":2,"6":5,"7":5,"8":5,"9":0,"10":5,"11":5,"12":5,"13":8,"14":8,"15":2,"16":3,"17":1},"f":{"0":12},"b":{"0":[5,7],"1":[2,5],"2":[7,5,5,5],"3":[0,5],"4":[2,6],"5":[8,8]},"inputSourceMap":null,"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c2f02cd076de0f81c931226cbd251570afb46668"} | ||
,"/home/runner/work/featurevisor/featurevisor/packages/core/lib/tester/matrix.js": {"path":"/home/runner/work/featurevisor/featurevisor/packages/core/lib/tester/matrix.js","statementMap":{"0":{"start":{"line":2,"column":15},"end":{"line":12,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":10,"column":6}},"2":{"start":{"line":4,"column":8},"end":{"line":8,"column":9}},"3":{"start":{"line":4,"column":24},"end":{"line":4,"column":25}},"4":{"start":{"line":4,"column":31},"end":{"line":4,"column":47}},"5":{"start":{"line":5,"column":12},"end":{"line":5,"column":29}},"6":{"start":{"line":6,"column":12},"end":{"line":7,"column":28}},"7":{"start":{"line":6,"column":29},"end":{"line":7,"column":28}},"8":{"start":{"line":7,"column":16},"end":{"line":7,"column":28}},"9":{"start":{"line":9,"column":8},"end":{"line":9,"column":17}},"10":{"start":{"line":11,"column":4},"end":{"line":11,"column":43}},"11":{"start":{"line":13,"column":0},"end":{"line":13,"column":62}},"12":{"start":{"line":14,"column":0},"end":{"line":14,"column":245}},"13":{"start":{"line":17,"column":14},"end":{"line":17,"column":23}},"14":{"start":{"line":18,"column":17},"end":{"line":18,"column":28}},"15":{"start":{"line":19,"column":4},"end":{"line":27,"column":5}},"16":{"start":{"line":19,"column":17},"end":{"line":19,"column":18}},"17":{"start":{"line":20,"column":26},"end":{"line":20,"column":90}},"18":{"start":{"line":21,"column":8},"end":{"line":26,"column":9}},"19":{"start":{"line":22,"column":12},"end":{"line":22,"column":43}},"20":{"start":{"line":25,"column":12},"end":{"line":25,"column":83}},"21":{"start":{"line":30,"column":15},"end":{"line":30,"column":34}},"22":{"start":{"line":31,"column":4},"end":{"line":33,"column":5}},"23":{"start":{"line":32,"column":8},"end":{"line":32,"column":18}},"24":{"start":{"line":34,"column":23},"end":{"line":34,"column":25}},"25":{"start":{"line":35,"column":4},"end":{"line":35,"column":60}},"26":{"start":{"line":36,"column":4},"end":{"line":36,"column":24}},"27":{"start":{"line":38,"column":0},"end":{"line":38,"column":54}},"28":{"start":{"line":40,"column":4},"end":{"line":53,"column":5}},"29":{"start":{"line":41,"column":34},"end":{"line":41,"column":61}},"30":{"start":{"line":43,"column":8},"end":{"line":45,"column":9}},"31":{"start":{"line":44,"column":12},"end":{"line":44,"column":25}},"32":{"start":{"line":47,"column":8},"end":{"line":50,"column":9}},"33":{"start":{"line":48,"column":22},"end":{"line":48,"column":71}},"34":{"start":{"line":49,"column":12},"end":{"line":49,"column":36}},"35":{"start":{"line":52,"column":8},"end":{"line":52,"column":100}},"36":{"start":{"line":52,"column":65},"end":{"line":52,"column":96}},"37":{"start":{"line":54,"column":4},"end":{"line":54,"column":17}},"38":{"start":{"line":56,"column":0},"end":{"line":56,"column":58}},"39":{"start":{"line":61,"column":29},"end":{"line":61,"column":52}},"40":{"start":{"line":63,"column":4},"end":{"line":63,"column":106}},"41":{"start":{"line":65,"column":4},"end":{"line":68,"column":11}},"42":{"start":{"line":66,"column":8},"end":{"line":66,"column":89}},"43":{"start":{"line":67,"column":8},"end":{"line":67,"column":19}},"44":{"start":{"line":70,"column":4},"end":{"line":70,"column":88}},"45":{"start":{"line":71,"column":4},"end":{"line":76,"column":5}},"46":{"start":{"line":72,"column":8},"end":{"line":75,"column":54}},"47":{"start":{"line":78,"column":4},"end":{"line":80,"column":5}},"48":{"start":{"line":79,"column":8},"end":{"line":79,"column":110}},"49":{"start":{"line":81,"column":4},"end":{"line":81,"column":30}},"50":{"start":{"line":83,"column":0},"end":{"line":83,"column":80}},"51":{"start":{"line":85,"column":4},"end":{"line":89,"column":5}},"52":{"start":{"line":86,"column":24},"end":{"line":86,"column":57}},"53":{"start":{"line":87,"column":8},"end":{"line":87,"column":175}},"54":{"start":{"line":88,"column":8},"end":{"line":88,"column":27}},"55":{"start":{"line":90,"column":21},"end":{"line":90,"column":23}},"56":{"start":{"line":91,"column":23},"end":{"line":91,"column":72}},"57":{"start":{"line":92,"column":4},"end":{"line":97,"column":5}},"58":{"start":{"line":92,"column":22},"end":{"line":92,"column":23}},"59":{"start":{"line":93,"column":26},"end":{"line":93,"column":46}},"60":{"start":{"line":94,"column":24},"end":{"line":94,"column":92}},"61":{"start":{"line":95,"column":8},"end":{"line":95,"column":175}},"62":{"start":{"line":96,"column":8},"end":{"line":96,"column":35}},"63":{"start":{"line":98,"column":4},"end":{"line":98,"column":22}},"64":{"start":{"line":100,"column":0},"end":{"line":100,"column":72}},"65":{"start":{"line":105,"column":29},"end":{"line":105,"column":52}},"66":{"start":{"line":107,"column":4},"end":{"line":110,"column":11}},"67":{"start":{"line":108,"column":8},"end":{"line":108,"column":89}},"68":{"start":{"line":109,"column":8},"end":{"line":109,"column":19}},"69":{"start":{"line":112,"column":4},"end":{"line":114,"column":5}},"70":{"start":{"line":113,"column":8},"end":{"line":113,"column":110}},"71":{"start":{"line":115,"column":4},"end":{"line":115,"column":30}},"72":{"start":{"line":117,"column":0},"end":{"line":117,"column":80}},"73":{"start":{"line":119,"column":4},"end":{"line":123,"column":5}},"74":{"start":{"line":120,"column":24},"end":{"line":120,"column":57}},"75":{"start":{"line":121,"column":8},"end":{"line":121,"column":129}},"76":{"start":{"line":122,"column":8},"end":{"line":122,"column":27}},"77":{"start":{"line":124,"column":21},"end":{"line":124,"column":23}},"78":{"start":{"line":125,"column":23},"end":{"line":125,"column":72}},"79":{"start":{"line":126,"column":4},"end":{"line":131,"column":5}},"80":{"start":{"line":126,"column":22},"end":{"line":126,"column":23}},"81":{"start":{"line":127,"column":26},"end":{"line":127,"column":46}},"82":{"start":{"line":128,"column":24},"end":{"line":128,"column":92}},"83":{"start":{"line":129,"column":8},"end":{"line":129,"column":129}},"84":{"start":{"line":130,"column":8},"end":{"line":130,"column":35}},"85":{"start":{"line":132,"column":4},"end":{"line":132,"column":22}},"86":{"start":{"line":134,"column":0},"end":{"line":134,"column":72}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":42},"end":{"line":2,"column":43}},"loc":{"start":{"line":2,"column":54},"end":{"line":12,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":32},"end":{"line":3,"column":33}},"loc":{"start":{"line":3,"column":44},"end":{"line":10,"column":5}},"line":3},"2":{"name":"generateCombinations","decl":{"start":{"line":15,"column":9},"end":{"line":15,"column":29}},"loc":{"start":{"line":15,"column":69},"end":{"line":28,"column":1}},"line":15},"3":{"name":"getMatrixCombinations","decl":{"start":{"line":29,"column":9},"end":{"line":29,"column":30}},"loc":{"start":{"line":29,"column":39},"end":{"line":37,"column":1}},"line":29},"4":{"name":"applyCombinationToValue","decl":{"start":{"line":39,"column":9},"end":{"line":39,"column":32}},"loc":{"start":{"line":39,"column":53},"end":{"line":55,"column":1}},"line":39},"5":{"name":"(anonymous_5)","decl":{"start":{"line":52,"column":45},"end":{"line":52,"column":46}},"loc":{"start":{"line":52,"column":63},"end":{"line":52,"column":98}},"line":52},"6":{"name":"applyCombinationToFeatureAssertion","decl":{"start":{"line":60,"column":9},"end":{"line":60,"column":43}},"loc":{"start":{"line":60,"column":68},"end":{"line":82,"column":1}},"line":60},"7":{"name":"(anonymous_7)","decl":{"start":{"line":65,"column":80},"end":{"line":65,"column":81}},"loc":{"start":{"line":65,"column":100},"end":{"line":68,"column":5}},"line":65},"8":{"name":"getFeatureAssertionsFromMatrix","decl":{"start":{"line":84,"column":9},"end":{"line":84,"column":39}},"loc":{"start":{"line":84,"column":69},"end":{"line":99,"column":1}},"line":84},"9":{"name":"applyCombinationToSegmentAssertion","decl":{"start":{"line":104,"column":9},"end":{"line":104,"column":43}},"loc":{"start":{"line":104,"column":68},"end":{"line":116,"column":1}},"line":104},"10":{"name":"(anonymous_10)","decl":{"start":{"line":107,"column":80},"end":{"line":107,"column":81}},"loc":{"start":{"line":107,"column":100},"end":{"line":110,"column":5}},"line":107},"11":{"name":"getSegmentAssertionsFromMatrix","decl":{"start":{"line":118,"column":9},"end":{"line":118,"column":39}},"loc":{"start":{"line":118,"column":69},"end":{"line":133,"column":1}},"line":118}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":15},"end":{"line":12,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":16},"end":{"line":2,"column":20}},{"start":{"line":2,"column":24},"end":{"line":2,"column":37}},{"start":{"line":2,"column":42},"end":{"line":12,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":15},"end":{"line":10,"column":5}},"type":"binary-expr","locations":[{"start":{"line":3,"column":15},"end":{"line":3,"column":28}},{"start":{"line":3,"column":32},"end":{"line":10,"column":5}}],"line":3},"2":{"loc":{"start":{"line":6,"column":29},"end":{"line":7,"column":28}},"type":"if","locations":[{"start":{"line":6,"column":29},"end":{"line":7,"column":28}},{"start":{},"end":{}}],"line":6},"3":{"loc":{"start":{"line":21,"column":8},"end":{"line":26,"column":9}},"type":"if","locations":[{"start":{"line":21,"column":8},"end":{"line":26,"column":9}},{"start":{"line":24,"column":13},"end":{"line":26,"column":9}}],"line":21},"4":{"loc":{"start":{"line":31,"column":4},"end":{"line":33,"column":5}},"type":"if","locations":[{"start":{"line":31,"column":4},"end":{"line":33,"column":5}},{"start":{},"end":{}}],"line":31},"5":{"loc":{"start":{"line":40,"column":4},"end":{"line":53,"column":5}},"type":"if","locations":[{"start":{"line":40,"column":4},"end":{"line":53,"column":5}},{"start":{},"end":{}}],"line":40},"6":{"loc":{"start":{"line":43,"column":8},"end":{"line":45,"column":9}},"type":"if","locations":[{"start":{"line":43,"column":8},"end":{"line":45,"column":9}},{"start":{},"end":{}}],"line":43},"7":{"loc":{"start":{"line":47,"column":8},"end":{"line":50,"column":9}},"type":"if","locations":[{"start":{"line":47,"column":8},"end":{"line":50,"column":9}},{"start":{},"end":{}}],"line":47},"8":{"loc":{"start":{"line":47,"column":12},"end":{"line":47,"column":95}},"type":"binary-expr","locations":[{"start":{"line":47,"column":12},"end":{"line":47,"column":44}},{"start":{"line":47,"column":48},"end":{"line":47,"column":71}},{"start":{"line":47,"column":75},"end":{"line":47,"column":95}}],"line":47},"9":{"loc":{"start":{"line":71,"column":4},"end":{"line":76,"column":5}},"type":"if","locations":[{"start":{"line":71,"column":4},"end":{"line":76,"column":5}},{"start":{},"end":{}}],"line":71},"10":{"loc":{"start":{"line":73,"column":12},"end":{"line":75,"column":53}},"type":"cond-expr","locations":[{"start":{"line":74,"column":18},"end":{"line":74,"column":51}},{"start":{"line":75,"column":18},"end":{"line":75,"column":53}}],"line":73},"11":{"loc":{"start":{"line":78,"column":4},"end":{"line":80,"column":5}},"type":"if","locations":[{"start":{"line":78,"column":4},"end":{"line":80,"column":5}},{"start":{},"end":{}}],"line":78},"12":{"loc":{"start":{"line":85,"column":4},"end":{"line":89,"column":5}},"type":"if","locations":[{"start":{"line":85,"column":4},"end":{"line":89,"column":5}},{"start":{},"end":{}}],"line":85},"13":{"loc":{"start":{"line":87,"column":117},"end":{"line":87,"column":173}},"type":"binary-expr","locations":[{"start":{"line":87,"column":117},"end":{"line":87,"column":138}},{"start":{"line":87,"column":142},"end":{"line":87,"column":173}}],"line":87},"14":{"loc":{"start":{"line":95,"column":117},"end":{"line":95,"column":173}},"type":"binary-expr","locations":[{"start":{"line":95,"column":117},"end":{"line":95,"column":138}},{"start":{"line":95,"column":142},"end":{"line":95,"column":173}}],"line":95},"15":{"loc":{"start":{"line":112,"column":4},"end":{"line":114,"column":5}},"type":"if","locations":[{"start":{"line":112,"column":4},"end":{"line":114,"column":5}},{"start":{},"end":{}}],"line":112},"16":{"loc":{"start":{"line":119,"column":4},"end":{"line":123,"column":5}},"type":"if","locations":[{"start":{"line":119,"column":4},"end":{"line":123,"column":5}},{"start":{},"end":{}}],"line":119},"17":{"loc":{"start":{"line":121,"column":80},"end":{"line":121,"column":127}},"type":"binary-expr","locations":[{"start":{"line":121,"column":80},"end":{"line":121,"column":101}},{"start":{"line":121,"column":105},"end":{"line":121,"column":127}}],"line":121},"18":{"loc":{"start":{"line":129,"column":80},"end":{"line":129,"column":127}},"type":"binary-expr","locations":[{"start":{"line":129,"column":80},"end":{"line":129,"column":101}},{"start":{"line":129,"column":105},"end":{"line":129,"column":127}}],"line":129}},"s":{"0":1,"1":2,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":2,"11":1,"12":1,"13":10,"14":10,"15":10,"16":10,"17":20,"18":20,"19":12,"20":8,"21":3,"22":3,"23":1,"24":2,"25":2,"26":2,"27":1,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":1,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":1,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":1,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":1,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":1},"f":{"0":2,"1":0,"2":10,"3":3,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0},"b":{"0":[1,1,1],"1":[2,0],"2":[0,0],"3":[12,8],"4":[1,2],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0]},"inputSourceMap":null,"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"39a13f8af7d3876a2d9ee289d9d6e56242a8a778"} | ||
,"/home/runner/work/featurevisor/featurevisor/packages/core/lib/tester/matrix.js": {"path":"/home/runner/work/featurevisor/featurevisor/packages/core/lib/tester/matrix.js","statementMap":{"0":{"start":{"line":2,"column":15},"end":{"line":12,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":10,"column":6}},"2":{"start":{"line":4,"column":8},"end":{"line":8,"column":9}},"3":{"start":{"line":4,"column":24},"end":{"line":4,"column":25}},"4":{"start":{"line":4,"column":31},"end":{"line":4,"column":47}},"5":{"start":{"line":5,"column":12},"end":{"line":5,"column":29}},"6":{"start":{"line":6,"column":12},"end":{"line":7,"column":28}},"7":{"start":{"line":6,"column":29},"end":{"line":7,"column":28}},"8":{"start":{"line":7,"column":16},"end":{"line":7,"column":28}},"9":{"start":{"line":9,"column":8},"end":{"line":9,"column":17}},"10":{"start":{"line":11,"column":4},"end":{"line":11,"column":43}},"11":{"start":{"line":13,"column":0},"end":{"line":13,"column":62}},"12":{"start":{"line":14,"column":0},"end":{"line":14,"column":245}},"13":{"start":{"line":17,"column":14},"end":{"line":17,"column":23}},"14":{"start":{"line":18,"column":17},"end":{"line":18,"column":28}},"15":{"start":{"line":19,"column":4},"end":{"line":27,"column":5}},"16":{"start":{"line":19,"column":17},"end":{"line":19,"column":18}},"17":{"start":{"line":20,"column":26},"end":{"line":20,"column":90}},"18":{"start":{"line":21,"column":8},"end":{"line":26,"column":9}},"19":{"start":{"line":22,"column":12},"end":{"line":22,"column":43}},"20":{"start":{"line":25,"column":12},"end":{"line":25,"column":83}},"21":{"start":{"line":30,"column":15},"end":{"line":30,"column":34}},"22":{"start":{"line":31,"column":4},"end":{"line":33,"column":5}},"23":{"start":{"line":32,"column":8},"end":{"line":32,"column":18}},"24":{"start":{"line":34,"column":23},"end":{"line":34,"column":25}},"25":{"start":{"line":35,"column":4},"end":{"line":35,"column":60}},"26":{"start":{"line":36,"column":4},"end":{"line":36,"column":24}},"27":{"start":{"line":38,"column":0},"end":{"line":38,"column":54}},"28":{"start":{"line":40,"column":4},"end":{"line":53,"column":5}},"29":{"start":{"line":41,"column":34},"end":{"line":41,"column":61}},"30":{"start":{"line":43,"column":8},"end":{"line":45,"column":9}},"31":{"start":{"line":44,"column":12},"end":{"line":44,"column":25}},"32":{"start":{"line":47,"column":8},"end":{"line":50,"column":9}},"33":{"start":{"line":48,"column":22},"end":{"line":48,"column":71}},"34":{"start":{"line":49,"column":12},"end":{"line":49,"column":36}},"35":{"start":{"line":52,"column":8},"end":{"line":52,"column":100}},"36":{"start":{"line":52,"column":65},"end":{"line":52,"column":96}},"37":{"start":{"line":54,"column":4},"end":{"line":54,"column":17}},"38":{"start":{"line":56,"column":0},"end":{"line":56,"column":58}},"39":{"start":{"line":61,"column":29},"end":{"line":61,"column":52}},"40":{"start":{"line":63,"column":4},"end":{"line":63,"column":106}},"41":{"start":{"line":65,"column":4},"end":{"line":68,"column":11}},"42":{"start":{"line":66,"column":8},"end":{"line":66,"column":89}},"43":{"start":{"line":67,"column":8},"end":{"line":67,"column":19}},"44":{"start":{"line":70,"column":4},"end":{"line":70,"column":88}},"45":{"start":{"line":71,"column":4},"end":{"line":76,"column":5}},"46":{"start":{"line":72,"column":8},"end":{"line":75,"column":54}},"47":{"start":{"line":78,"column":4},"end":{"line":80,"column":5}},"48":{"start":{"line":79,"column":8},"end":{"line":79,"column":110}},"49":{"start":{"line":81,"column":4},"end":{"line":81,"column":30}},"50":{"start":{"line":83,"column":0},"end":{"line":83,"column":80}},"51":{"start":{"line":85,"column":4},"end":{"line":89,"column":5}},"52":{"start":{"line":86,"column":24},"end":{"line":86,"column":57}},"53":{"start":{"line":87,"column":8},"end":{"line":87,"column":173}},"54":{"start":{"line":88,"column":8},"end":{"line":88,"column":27}},"55":{"start":{"line":90,"column":21},"end":{"line":90,"column":23}},"56":{"start":{"line":91,"column":23},"end":{"line":91,"column":72}},"57":{"start":{"line":92,"column":4},"end":{"line":97,"column":5}},"58":{"start":{"line":92,"column":22},"end":{"line":92,"column":23}},"59":{"start":{"line":93,"column":26},"end":{"line":93,"column":46}},"60":{"start":{"line":94,"column":24},"end":{"line":94,"column":92}},"61":{"start":{"line":95,"column":8},"end":{"line":95,"column":173}},"62":{"start":{"line":96,"column":8},"end":{"line":96,"column":35}},"63":{"start":{"line":98,"column":4},"end":{"line":98,"column":22}},"64":{"start":{"line":100,"column":0},"end":{"line":100,"column":72}},"65":{"start":{"line":105,"column":29},"end":{"line":105,"column":52}},"66":{"start":{"line":107,"column":4},"end":{"line":110,"column":11}},"67":{"start":{"line":108,"column":8},"end":{"line":108,"column":89}},"68":{"start":{"line":109,"column":8},"end":{"line":109,"column":19}},"69":{"start":{"line":112,"column":4},"end":{"line":114,"column":5}},"70":{"start":{"line":113,"column":8},"end":{"line":113,"column":110}},"71":{"start":{"line":115,"column":4},"end":{"line":115,"column":30}},"72":{"start":{"line":117,"column":0},"end":{"line":117,"column":80}},"73":{"start":{"line":119,"column":4},"end":{"line":123,"column":5}},"74":{"start":{"line":120,"column":24},"end":{"line":120,"column":57}},"75":{"start":{"line":121,"column":8},"end":{"line":121,"column":127}},"76":{"start":{"line":122,"column":8},"end":{"line":122,"column":27}},"77":{"start":{"line":124,"column":21},"end":{"line":124,"column":23}},"78":{"start":{"line":125,"column":23},"end":{"line":125,"column":72}},"79":{"start":{"line":126,"column":4},"end":{"line":131,"column":5}},"80":{"start":{"line":126,"column":22},"end":{"line":126,"column":23}},"81":{"start":{"line":127,"column":26},"end":{"line":127,"column":46}},"82":{"start":{"line":128,"column":24},"end":{"line":128,"column":92}},"83":{"start":{"line":129,"column":8},"end":{"line":129,"column":127}},"84":{"start":{"line":130,"column":8},"end":{"line":130,"column":35}},"85":{"start":{"line":132,"column":4},"end":{"line":132,"column":22}},"86":{"start":{"line":134,"column":0},"end":{"line":134,"column":72}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":42},"end":{"line":2,"column":43}},"loc":{"start":{"line":2,"column":54},"end":{"line":12,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":32},"end":{"line":3,"column":33}},"loc":{"start":{"line":3,"column":44},"end":{"line":10,"column":5}},"line":3},"2":{"name":"generateCombinations","decl":{"start":{"line":15,"column":9},"end":{"line":15,"column":29}},"loc":{"start":{"line":15,"column":69},"end":{"line":28,"column":1}},"line":15},"3":{"name":"getMatrixCombinations","decl":{"start":{"line":29,"column":9},"end":{"line":29,"column":30}},"loc":{"start":{"line":29,"column":39},"end":{"line":37,"column":1}},"line":29},"4":{"name":"applyCombinationToValue","decl":{"start":{"line":39,"column":9},"end":{"line":39,"column":32}},"loc":{"start":{"line":39,"column":53},"end":{"line":55,"column":1}},"line":39},"5":{"name":"(anonymous_5)","decl":{"start":{"line":52,"column":45},"end":{"line":52,"column":46}},"loc":{"start":{"line":52,"column":63},"end":{"line":52,"column":98}},"line":52},"6":{"name":"applyCombinationToFeatureAssertion","decl":{"start":{"line":60,"column":9},"end":{"line":60,"column":43}},"loc":{"start":{"line":60,"column":68},"end":{"line":82,"column":1}},"line":60},"7":{"name":"(anonymous_7)","decl":{"start":{"line":65,"column":80},"end":{"line":65,"column":81}},"loc":{"start":{"line":65,"column":100},"end":{"line":68,"column":5}},"line":65},"8":{"name":"getFeatureAssertionsFromMatrix","decl":{"start":{"line":84,"column":9},"end":{"line":84,"column":39}},"loc":{"start":{"line":84,"column":69},"end":{"line":99,"column":1}},"line":84},"9":{"name":"applyCombinationToSegmentAssertion","decl":{"start":{"line":104,"column":9},"end":{"line":104,"column":43}},"loc":{"start":{"line":104,"column":68},"end":{"line":116,"column":1}},"line":104},"10":{"name":"(anonymous_10)","decl":{"start":{"line":107,"column":80},"end":{"line":107,"column":81}},"loc":{"start":{"line":107,"column":100},"end":{"line":110,"column":5}},"line":107},"11":{"name":"getSegmentAssertionsFromMatrix","decl":{"start":{"line":118,"column":9},"end":{"line":118,"column":39}},"loc":{"start":{"line":118,"column":69},"end":{"line":133,"column":1}},"line":118}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":15},"end":{"line":12,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":16},"end":{"line":2,"column":20}},{"start":{"line":2,"column":24},"end":{"line":2,"column":37}},{"start":{"line":2,"column":42},"end":{"line":12,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":15},"end":{"line":10,"column":5}},"type":"binary-expr","locations":[{"start":{"line":3,"column":15},"end":{"line":3,"column":28}},{"start":{"line":3,"column":32},"end":{"line":10,"column":5}}],"line":3},"2":{"loc":{"start":{"line":6,"column":29},"end":{"line":7,"column":28}},"type":"if","locations":[{"start":{"line":6,"column":29},"end":{"line":7,"column":28}},{"start":{},"end":{}}],"line":6},"3":{"loc":{"start":{"line":21,"column":8},"end":{"line":26,"column":9}},"type":"if","locations":[{"start":{"line":21,"column":8},"end":{"line":26,"column":9}},{"start":{"line":24,"column":13},"end":{"line":26,"column":9}}],"line":21},"4":{"loc":{"start":{"line":31,"column":4},"end":{"line":33,"column":5}},"type":"if","locations":[{"start":{"line":31,"column":4},"end":{"line":33,"column":5}},{"start":{},"end":{}}],"line":31},"5":{"loc":{"start":{"line":40,"column":4},"end":{"line":53,"column":5}},"type":"if","locations":[{"start":{"line":40,"column":4},"end":{"line":53,"column":5}},{"start":{},"end":{}}],"line":40},"6":{"loc":{"start":{"line":43,"column":8},"end":{"line":45,"column":9}},"type":"if","locations":[{"start":{"line":43,"column":8},"end":{"line":45,"column":9}},{"start":{},"end":{}}],"line":43},"7":{"loc":{"start":{"line":47,"column":8},"end":{"line":50,"column":9}},"type":"if","locations":[{"start":{"line":47,"column":8},"end":{"line":50,"column":9}},{"start":{},"end":{}}],"line":47},"8":{"loc":{"start":{"line":47,"column":12},"end":{"line":47,"column":95}},"type":"binary-expr","locations":[{"start":{"line":47,"column":12},"end":{"line":47,"column":44}},{"start":{"line":47,"column":48},"end":{"line":47,"column":71}},{"start":{"line":47,"column":75},"end":{"line":47,"column":95}}],"line":47},"9":{"loc":{"start":{"line":71,"column":4},"end":{"line":76,"column":5}},"type":"if","locations":[{"start":{"line":71,"column":4},"end":{"line":76,"column":5}},{"start":{},"end":{}}],"line":71},"10":{"loc":{"start":{"line":73,"column":12},"end":{"line":75,"column":53}},"type":"cond-expr","locations":[{"start":{"line":74,"column":18},"end":{"line":74,"column":51}},{"start":{"line":75,"column":18},"end":{"line":75,"column":53}}],"line":73},"11":{"loc":{"start":{"line":78,"column":4},"end":{"line":80,"column":5}},"type":"if","locations":[{"start":{"line":78,"column":4},"end":{"line":80,"column":5}},{"start":{},"end":{}}],"line":78},"12":{"loc":{"start":{"line":85,"column":4},"end":{"line":89,"column":5}},"type":"if","locations":[{"start":{"line":85,"column":4},"end":{"line":89,"column":5}},{"start":{},"end":{}}],"line":85},"13":{"loc":{"start":{"line":87,"column":115},"end":{"line":87,"column":171}},"type":"binary-expr","locations":[{"start":{"line":87,"column":115},"end":{"line":87,"column":136}},{"start":{"line":87,"column":140},"end":{"line":87,"column":171}}],"line":87},"14":{"loc":{"start":{"line":95,"column":115},"end":{"line":95,"column":171}},"type":"binary-expr","locations":[{"start":{"line":95,"column":115},"end":{"line":95,"column":136}},{"start":{"line":95,"column":140},"end":{"line":95,"column":171}}],"line":95},"15":{"loc":{"start":{"line":112,"column":4},"end":{"line":114,"column":5}},"type":"if","locations":[{"start":{"line":112,"column":4},"end":{"line":114,"column":5}},{"start":{},"end":{}}],"line":112},"16":{"loc":{"start":{"line":119,"column":4},"end":{"line":123,"column":5}},"type":"if","locations":[{"start":{"line":119,"column":4},"end":{"line":123,"column":5}},{"start":{},"end":{}}],"line":119},"17":{"loc":{"start":{"line":121,"column":78},"end":{"line":121,"column":125}},"type":"binary-expr","locations":[{"start":{"line":121,"column":78},"end":{"line":121,"column":99}},{"start":{"line":121,"column":103},"end":{"line":121,"column":125}}],"line":121},"18":{"loc":{"start":{"line":129,"column":78},"end":{"line":129,"column":125}},"type":"binary-expr","locations":[{"start":{"line":129,"column":78},"end":{"line":129,"column":99}},{"start":{"line":129,"column":103},"end":{"line":129,"column":125}}],"line":129}},"s":{"0":1,"1":2,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":2,"11":1,"12":1,"13":10,"14":10,"15":10,"16":10,"17":20,"18":20,"19":12,"20":8,"21":3,"22":3,"23":1,"24":2,"25":2,"26":2,"27":1,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":1,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":1,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":1,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":1,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":1},"f":{"0":2,"1":0,"2":10,"3":3,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0},"b":{"0":[1,1,1],"1":[2,0],"2":[0,0],"3":[12,8],"4":[1,2],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,0],"17":[0,0],"18":[0,0]},"inputSourceMap":null,"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4c9cc8f88c8e8f83b89b3362807c40a345d442fb"} | ||
,"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.ts": {"path":"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/allocator.ts","statementMap":{"0":{"start":{"line":4,"column":26},"end":{"line":4,"column":28}},"1":{"start":{"line":6,"column":18},"end":{"line":6,"column":22}},"2":{"start":{"line":7,"column":10},"end":{"line":7,"column":11}},"3":{"start":{"line":8,"column":2},"end":{"line":16,"column":null}},"4":{"start":{"line":9,"column":18},"end":{"line":9,"column":36}},"5":{"start":{"line":10,"column":25},"end":{"line":10,"column":30}},"6":{"start":{"line":12,"column":22},"end":{"line":12,"column":54}},"7":{"start":{"line":13,"column":4},"end":{"line":13,"column":44}},"8":{"start":{"line":14,"column":4},"end":{"line":14,"column":27}},"9":{"start":{"line":15,"column":4},"end":{"line":15,"column":8}},"10":{"start":{"line":18,"column":2},"end":{"line":18,"column":16}},"11":{"start":{"line":3,"column":0},"end":{"line":3,"column":16}},"12":{"start":{"line":25,"column":26},"end":{"line":25,"column":28}},"13":{"start":{"line":27,"column":18},"end":{"line":27,"column":22}},"14":{"start":{"line":28,"column":10},"end":{"line":28,"column":11}},"15":{"start":{"line":29,"column":2},"end":{"line":38,"column":null}},"16":{"start":{"line":30,"column":18},"end":{"line":30,"column":36}},"17":{"start":{"line":31,"column":25},"end":{"line":31,"column":30}},"18":{"start":{"line":32,"column":22},"end":{"line":32,"column":54}},"19":{"start":{"line":33,"column":4},"end":{"line":35,"column":null}},"20":{"start":{"line":34,"column":6},"end":{"line":34,"column":44}},"21":{"start":{"line":36,"column":4},"end":{"line":36,"column":27}},"22":{"start":{"line":37,"column":4},"end":{"line":37,"column":8}},"23":{"start":{"line":40,"column":2},"end":{"line":40,"column":16}},"24":{"start":{"line":21,"column":0},"end":{"line":21,"column":16}}},"fnMap":{"0":{"name":"getAllocation","decl":{"start":{"line":3,"column":16},"end":{"line":3,"column":29}},"loc":{"start":{"line":3,"column":72},"end":{"line":19,"column":1}}},"1":{"name":"getUpdatedAvailableRangesAfterFilling","decl":{"start":{"line":21,"column":16},"end":{"line":21,"column":53}},"loc":{"start":{"line":23,"column":18},"end":{"line":41,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":9},"end":{"line":8,"column":52}},"type":"binary-expr","locations":[{"start":{"line":8,"column":9},"end":{"line":8,"column":22}},{"start":{"line":8,"column":26},"end":{"line":8,"column":52}}]},"1":{"loc":{"start":{"line":29,"column":9},"end":{"line":29,"column":52}},"type":"binary-expr","locations":[{"start":{"line":29,"column":9},"end":{"line":29,"column":22}},{"start":{"line":29,"column":26},"end":{"line":29,"column":52}}]},"2":{"loc":{"start":{"line":33,"column":4},"end":{"line":35,"column":null}},"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":35,"column":null}}]}},"s":{"0":29,"1":29,"2":29,"3":29,"4":34,"5":34,"6":34,"7":34,"8":34,"9":34,"10":29,"11":2,"12":30,"13":30,"14":30,"15":30,"16":35,"17":35,"18":35,"19":35,"20":23,"21":35,"22":35,"23":30,"24":2},"f":{"0":29,"1":30},"b":{"0":[63,34],"1":[65,35],"2":[23]}} | ||
@@ -6,0 +6,0 @@ ,"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.ts": {"path":"/home/runner/work/featurevisor/featurevisor/packages/core/src/builder/traffic.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":56}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":83}},"2":{"start":{"line":10,"column":2},"end":{"line":19,"column":null}},"3":{"start":{"line":11,"column":4},"end":{"line":15,"column":null}},"4":{"start":{"line":14,"column":6},"end":{"line":14,"column":18}},"5":{"start":{"line":18,"column":4},"end":{"line":18,"column":17}},"6":{"start":{"line":21,"column":26},"end":{"line":23,"column":15}},"7":{"start":{"line":22,"column":64},"end":{"line":22,"column":81}},"8":{"start":{"line":25,"column":2},"end":{"line":32,"column":4}},"9":{"start":{"line":27,"column":61},"end":{"line":30,"column":8}},"10":{"start":{"line":6,"column":0},"end":{"line":6,"column":16}},"11":{"start":{"line":39,"column":2},"end":{"line":41,"column":null}},"12":{"start":{"line":40,"column":4},"end":{"line":40,"column":13}},"13":{"start":{"line":43,"column":29},"end":{"line":43,"column":59}},"14":{"start":{"line":45,"column":2},"end":{"line":45,"column":48}},"15":{"start":{"line":35,"column":0},"end":{"line":35,"column":16}},"16":{"start":{"line":52,"column":2},"end":{"line":54,"column":null}},"17":{"start":{"line":53,"column":4},"end":{"line":53,"column":17}},"18":{"start":{"line":56,"column":2},"end":{"line":58,"column":null}},"19":{"start":{"line":57,"column":4},"end":{"line":57,"column":17}},"20":{"start":{"line":60,"column":2},"end":{"line":60,"column":84}},"21":{"start":{"line":48,"column":0},"end":{"line":48,"column":16}},"22":{"start":{"line":72,"column":28},"end":{"line":72,"column":30}},"23":{"start":{"line":76,"column":4},"end":{"line":76,"column":82}},"24":{"start":{"line":78,"column":2},"end":{"line":165,"column":5}},"25":{"start":{"line":79,"column":27},"end":{"line":79,"column":48}},"26":{"start":{"line":81,"column":29},"end":{"line":89,"column":6}},"27":{"start":{"line":92,"column":4},"end":{"line":94,"column":null}},"28":{"start":{"line":93,"column":6},"end":{"line":93,"column":47}},"29":{"start":{"line":96,"column":4},"end":{"line":98,"column":null}},"30":{"start":{"line":97,"column":6},"end":{"line":97,"column":47}},"31":{"start":{"line":101,"column":30},"end":{"line":101,"column":84}},"32":{"start":{"line":102,"column":32},"end":{"line":102,"column":94}},"33":{"start":{"line":102,"column":69},"end":{"line":102,"column":93}},"34":{"start":{"line":103,"column":31},"end":{"line":103,"column":93}},"35":{"start":{"line":104,"column":26},"end":{"line":104,"column":81}},"36":{"start":{"line":107,"column":6},"end":{"line":110,"column":19}},"37":{"start":{"line":112,"column":33},"end":{"line":112,"column":76}},"38":{"start":{"line":114,"column":4},"end":{"line":130,"column":null}},"39":{"start":{"line":116,"column":24},"end":{"line":116,"column":25}},"40":{"start":{"line":118,"column":6},"end":{"line":127,"column":9}},"41":{"start":{"line":119,"column":23},"end":{"line":122,"column":10}},"42":{"start":{"line":124,"column":8},"end":{"line":124,"column":43}},"43":{"start":{"line":126,"column":8},"end":{"line":126,"column":22}},"44":{"start":{"line":129,"column":6},"end":{"line":129,"column":99}},"45":{"start":{"line":132,"column":4},"end":{"line":154,"column":null}},"46":{"start":{"line":133,"column":6},"end":{"line":153,"column":9}},"47":{"start":{"line":134,"column":23},"end":{"line":134,"column":49}},"48":{"start":{"line":135,"column":27},"end":{"line":135,"column":63}},"49":{"start":{"line":137,"column":28},"end":{"line":139,"column":47}},"50":{"start":{"line":140,"column":29},"end":{"line":140,"column":79}},"51":{"start":{"line":142,"column":8},"end":{"line":147,"column":11}},"52":{"start":{"line":143,"column":10},"end":{"line":146,"column":13}},"53":{"start":{"line":149,"column":8},"end":{"line":152,"column":10}},"54":{"start":{"line":156,"column":4},"end":{"line":162,"column":7}},"55":{"start":{"line":157,"column":6},"end":{"line":159,"column":null}},"56":{"start":{"line":158,"column":8},"end":{"line":158,"column":21}},"57":{"start":{"line":161,"column":6},"end":{"line":161,"column":18}},"58":{"start":{"line":164,"column":4},"end":{"line":164,"column":25}},"59":{"start":{"line":167,"column":2},"end":{"line":167,"column":16}},"60":{"start":{"line":63,"column":0},"end":{"line":63,"column":16}}},"fnMap":{"0":{"name":"detectIfVariationsChanged","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":41}},"loc":{"start":{"line":8,"column":35},"end":{"line":33,"column":1}}},"1":{"name":"(anonymous_1)","decl":{"start":{"line":22,"column":40},"end":{"line":22,"column":41}},"loc":{"start":{"line":22,"column":64},"end":{"line":22,"column":81}}},"2":{"name":"(anonymous_2)","decl":{"start":{"line":27,"column":37},"end":{"line":27,"column":38}},"loc":{"start":{"line":27,"column":61},"end":{"line":30,"column":8}}},"3":{"name":"getRulePercentageDiff","decl":{"start":{"line":35,"column":16},"end":{"line":35,"column":37}},"loc":{"start":{"line":37,"column":21},"end":{"line":46,"column":1}}},"4":{"name":"detectIfRangesChanged","decl":{"start":{"line":48,"column":16},"end":{"line":48,"column":37}},"loc":{"start":{"line":50,"column":35},"end":{"line":61,"column":1}}},"5":{"name":"getTraffic","decl":{"start":{"line":63,"column":16},"end":{"line":63,"column":26}},"loc":{"start":{"line":70,"column":18},"end":{"line":168,"column":1}}},"6":{"name":"(anonymous_6)","decl":{"start":{"line":78,"column":22},"end":{"line":78,"column":32}},"loc":{"start":{"line":78,"column":42},"end":{"line":165,"column":3}}},"7":{"name":"(anonymous_7)","decl":{"start":{"line":102,"column":62},"end":{"line":102,"column":63}},"loc":{"start":{"line":102,"column":69},"end":{"line":102,"column":93}}},"8":{"name":"(anonymous_8)","decl":{"start":{"line":118,"column":62},"end":{"line":118,"column":72}},"loc":{"start":{"line":118,"column":92},"end":{"line":127,"column":7}}},"9":{"name":"(anonymous_9)","decl":{"start":{"line":133,"column":25},"end":{"line":133,"column":35}},"loc":{"start":{"line":133,"column":44},"end":{"line":153,"column":7}}},"10":{"name":"(anonymous_10)","decl":{"start":{"line":142,"column":29},"end":{"line":142,"column":39}},"loc":{"start":{"line":142,"column":44},"end":{"line":147,"column":9}}},"11":{"name":"(anonymous_11)","decl":{"start":{"line":156,"column":51},"end":{"line":156,"column":52}},"loc":{"start":{"line":156,"column":57},"end":{"line":162,"column":5}}}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":2},"end":{"line":19,"column":null}},"type":"if","locations":[{"start":{"line":10,"column":2},"end":{"line":19,"column":null}}]},"1":{"loc":{"start":{"line":10,"column":6},"end":{"line":10,"column":75}},"type":"binary-expr","locations":[{"start":{"line":10,"column":6},"end":{"line":10,"column":22}},{"start":{"line":10,"column":26},"end":{"line":10,"column":75}}]},"2":{"loc":{"start":{"line":11,"column":4},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":11,"column":4},"end":{"line":15,"column":null}}]},"3":{"loc":{"start":{"line":11,"column":8},"end":{"line":11,"column":66}},"type":"binary-expr","locations":[{"start":{"line":11,"column":8},"end":{"line":11,"column":37}},{"start":{"line":11,"column":41},"end":{"line":11,"column":66}}]},"4":{"loc":{"start":{"line":21,"column":26},"end":{"line":23,"column":15}},"type":"cond-expr","locations":[{"start":{"line":22,"column":6},"end":{"line":22,"column":84}},{"start":{"line":23,"column":6},"end":{"line":23,"column":15}}]},"5":{"loc":{"start":{"line":39,"column":2},"end":{"line":41,"column":null}},"type":"if","locations":[{"start":{"line":39,"column":2},"end":{"line":41,"column":null}}]},"6":{"loc":{"start":{"line":52,"column":2},"end":{"line":54,"column":null}},"type":"if","locations":[{"start":{"line":52,"column":2},"end":{"line":54,"column":null}}]},"7":{"loc":{"start":{"line":56,"column":2},"end":{"line":58,"column":null}},"type":"if","locations":[{"start":{"line":56,"column":2},"end":{"line":58,"column":null}}]},"8":{"loc":{"start":{"line":76,"column":4},"end":{"line":76,"column":82}},"type":"cond-expr","locations":[{"start":{"line":76,"column":34},"end":{"line":76,"column":40}},{"start":{"line":76,"column":44},"end":{"line":76,"column":82}}]},"9":{"loc":{"start":{"line":76,"column":4},"end":{"line":76,"column":31}},"type":"binary-expr","locations":[{"start":{"line":76,"column":4},"end":{"line":76,"column":10}},{"start":{"line":76,"column":14},"end":{"line":76,"column":31}}]},"10":{"loc":{"start":{"line":84,"column":8},"end":{"line":86,"column":31}},"type":"cond-expr","locations":[{"start":{"line":85,"column":12},"end":{"line":85,"column":47}},{"start":{"line":86,"column":12},"end":{"line":86,"column":31}}]},"11":{"loc":{"start":{"line":92,"column":4},"end":{"line":94,"column":null}},"type":"if","locations":[{"start":{"line":92,"column":4},"end":{"line":94,"column":null}}]},"12":{"loc":{"start":{"line":96,"column":4},"end":{"line":98,"column":null}},"type":"if","locations":[{"start":{"line":96,"column":4},"end":{"line":98,"column":null}}]},"13":{"loc":{"start":{"line":102,"column":32},"end":{"line":102,"column":94}},"type":"cond-expr","locations":[{"start":{"line":102,"column":47},"end":{"line":102,"column":49}},{"start":{"line":102,"column":32},"end":{"line":102,"column":94}}]},"14":{"loc":{"start":{"line":102,"column":32},"end":{"line":102,"column":49}},"type":"binary-expr","locations":[{"start":{"line":102,"column":32},"end":{"line":102,"column":49}},{"start":{"line":102,"column":32},"end":{"line":102,"column":49}}]},"15":{"loc":{"start":{"line":107,"column":6},"end":{"line":110,"column":19}},"type":"binary-expr","locations":[{"start":{"line":107,"column":6},"end":{"line":107,"column":26}},{"start":{"line":108,"column":6},"end":{"line":108,"column":23}},{"start":{"line":109,"column":6},"end":{"line":109,"column":28}},{"start":{"line":110,"column":6},"end":{"line":110,"column":19}}]},"16":{"loc":{"start":{"line":114,"column":4},"end":{"line":130,"column":null}},"type":"if","locations":[{"start":{"line":114,"column":4},"end":{"line":130,"column":null}}]},"17":{"loc":{"start":{"line":114,"column":8},"end":{"line":114,"column":48}},"type":"binary-expr","locations":[{"start":{"line":114,"column":8},"end":{"line":114,"column":27}},{"start":{"line":114,"column":31},"end":{"line":114,"column":48}}]},"18":{"loc":{"start":{"line":132,"column":4},"end":{"line":154,"column":null}},"type":"if","locations":[{"start":{"line":132,"column":4},"end":{"line":154,"column":null}}]},"19":{"loc":{"start":{"line":137,"column":28},"end":{"line":139,"column":47}},"type":"cond-expr","locations":[{"start":{"line":138,"column":12},"end":{"line":138,"column":47}},{"start":{"line":139,"column":12},"end":{"line":139,"column":47}}]},"20":{"loc":{"start":{"line":157,"column":6},"end":{"line":159,"column":null}},"type":"if","locations":[{"start":{"line":157,"column":6},"end":{"line":159,"column":null}}]},"21":{"loc":{"start":{"line":157,"column":10},"end":{"line":157,"column":46}},"type":"binary-expr","locations":[{"start":{"line":157,"column":10},"end":{"line":157,"column":17}},{"start":{"line":157,"column":21},"end":{"line":157,"column":46}}]}},"s":{"0":1,"1":1,"2":9,"3":3,"4":3,"5":0,"6":6,"7":15,"8":6,"9":16,"10":1,"11":9,"12":3,"13":6,"14":6,"15":1,"16":9,"17":3,"18":6,"19":6,"20":0,"21":1,"22":9,"23":9,"24":9,"25":9,"26":9,"27":9,"28":0,"29":9,"30":0,"31":9,"32":9,"33":6,"34":9,"35":9,"36":9,"37":9,"38":9,"39":1,"40":1,"41":2,"42":2,"43":2,"44":1,"45":9,"46":9,"47":22,"48":22,"49":22,"50":22,"51":22,"52":21,"53":22,"54":9,"55":23,"56":0,"57":23,"58":9,"59":9,"60":1},"f":{"0":9,"1":15,"2":16,"3":9,"4":9,"5":9,"6":9,"7":6,"8":2,"9":22,"10":21,"11":23},"b":{"0":[3],"1":[9,6],"2":[3],"3":[3,3],"4":[6,0],"5":[3],"6":[3],"7":[6],"8":[0,9],"9":[9,0],"10":[0,9],"11":[0],"12":[0],"13":[3,6],"14":[9,9],"15":[9,6,2,1],"16":[1],"17":[9,6],"18":[9],"19":[20,2],"20":[0],"21":[23,23]}} |
@@ -87,3 +87,3 @@ "use strict"; | ||
var assertion = __assign({}, assertionWithMatrix); | ||
assertion.description = " Assertion #".concat(aIndex + 1, ": (").concat(assertion.environment, ") ").concat(assertion.description || "at ".concat(assertion.at, "%")); | ||
assertion.description = "Assertion #".concat(aIndex + 1, ": (").concat(assertion.environment, ") ").concat(assertion.description || "at ".concat(assertion.at, "%")); | ||
return [assertion]; | ||
@@ -96,3 +96,3 @@ } | ||
var assertion = applyCombinationToFeatureAssertion(combination, assertionWithMatrix); | ||
assertion.description = " Assertion #".concat(aIndex + 1, ": (").concat(assertion.environment, ") ").concat(assertion.description || "at ".concat(assertion.at, "%")); | ||
assertion.description = "Assertion #".concat(aIndex + 1, ": (").concat(assertion.environment, ") ").concat(assertion.description || "at ".concat(assertion.at, "%")); | ||
assertions.push(assertion); | ||
@@ -123,3 +123,3 @@ } | ||
var assertion = __assign({}, assertionWithMatrix); | ||
assertion.description = " Assertion #".concat(aIndex + 1, ": ").concat(assertion.description || "#".concat(aIndex + 1)); | ||
assertion.description = "Assertion #".concat(aIndex + 1, ": ").concat(assertion.description || "#".concat(aIndex + 1)); | ||
return [assertion]; | ||
@@ -132,3 +132,3 @@ } | ||
var assertion = applyCombinationToSegmentAssertion(combination, assertionWithMatrix); | ||
assertion.description = " Assertion #".concat(aIndex + 1, ": ").concat(assertion.description || "#".concat(aIndex + 1)); | ||
assertion.description = "Assertion #".concat(aIndex + 1, ": ").concat(assertion.description || "#".concat(aIndex + 1)); | ||
assertions.push(assertion); | ||
@@ -135,0 +135,0 @@ } |
@@ -1,2 +0,2 @@ | ||
import { TestFeature } from "@featurevisor/types"; | ||
import { TestFeature, TestResult } from "@featurevisor/types"; | ||
import { Datasource } from "../datasource"; | ||
@@ -7,2 +7,2 @@ import { ProjectConfig } from "../config"; | ||
showDatafile?: boolean; | ||
}, patterns: any): Promise<boolean>; | ||
}, patterns: any): Promise<TestResult>; |
@@ -45,3 +45,2 @@ "use strict"; | ||
var checkIfObjectsAreEqual_1 = require("./checkIfObjectsAreEqual"); | ||
var cliFormat_1 = require("./cliFormat"); | ||
var matrix_1 = require("./matrix"); | ||
@@ -51,9 +50,17 @@ function testFeature(datasource, projectConfig, test, options, patterns) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var hasError, featureKey, aIndex, assertions, _loop_1, bIndex; | ||
var testStartTime, featureKey, testResult, aIndex, assertions, _loop_1, bIndex, state_1; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
hasError = false; | ||
testStartTime = Date.now(); | ||
featureKey = test.feature; | ||
console.log(cliFormat_1.CLI_FORMAT_BOLD, " Feature \"".concat(featureKey, "\":")); | ||
testResult = { | ||
type: "feature", | ||
key: featureKey, | ||
// to be updated later | ||
notFound: false, | ||
duration: 0, | ||
passed: true, | ||
assertions: [], | ||
}; | ||
aIndex = 0; | ||
@@ -65,11 +72,17 @@ _a.label = 1; | ||
_loop_1 = function (bIndex) { | ||
var assertion, requiredChain, featuresToInclude, existingState, datafileContent, sdk, isEnabled, variation, feature; | ||
var assertionStartTime, assertion, testResultAssertion, requiredChain, featuresToInclude, existingState, datafileContent, sdk, feature, isEnabled, variation; | ||
return __generator(this, function (_b) { | ||
switch (_b.label) { | ||
case 0: | ||
assertionStartTime = Date.now(); | ||
assertion = assertions[bIndex]; | ||
testResultAssertion = { | ||
description: assertion.description, | ||
duration: 0, | ||
passed: true, | ||
errors: [], | ||
}; | ||
if (patterns.assertionPattern && !patterns.assertionPattern.test(assertion.description)) { | ||
return [2 /*return*/, "continue"]; | ||
} | ||
console.log(assertion.description); | ||
return [4 /*yield*/, datasource.getRequiredFeaturesChain(test.feature)]; | ||
@@ -104,2 +117,10 @@ case 1: | ||
} | ||
return [4 /*yield*/, datasource.readFeature(featureKey)]; | ||
case 4: | ||
feature = _b.sent(); | ||
if (!feature) { | ||
testResult.notFound = true; | ||
testResult.passed = false; | ||
return [2 /*return*/, { value: testResult }]; | ||
} | ||
// isEnabled | ||
@@ -109,4 +130,9 @@ if ("expectedToBeEnabled" in assertion) { | ||
if (isEnabled !== assertion.expectedToBeEnabled) { | ||
hasError = true; | ||
console.error(cliFormat_1.CLI_FORMAT_RED, " isEnabled failed: expected \"".concat(assertion.expectedToBeEnabled, "\", received \"").concat(isEnabled, "\"")); | ||
testResult.passed = false; | ||
testResultAssertion.passed = false; | ||
testResultAssertion.errors.push({ | ||
type: "flag", | ||
expected: assertion.expectedToBeEnabled, | ||
actual: isEnabled, | ||
}); | ||
} | ||
@@ -118,14 +144,12 @@ } | ||
if (variation !== assertion.expectedVariation) { | ||
hasError = true; | ||
console.error(cliFormat_1.CLI_FORMAT_RED, " Variation failed: expected \"".concat(assertion.expectedVariation, "\", received \"").concat(variation, "\"")); | ||
testResult.passed = false; | ||
testResultAssertion.passed = false; | ||
testResultAssertion.errors.push({ | ||
type: "variation", | ||
expected: assertion.expectedVariation, | ||
actual: variation, | ||
}); | ||
} | ||
} | ||
return [4 /*yield*/, datasource.readFeature(featureKey)]; | ||
case 4: | ||
feature = _b.sent(); | ||
if (!feature) { | ||
hasError = true; | ||
console.error(cliFormat_1.CLI_FORMAT_RED, " Feature \"".concat(featureKey, "\" failed: feature not found")); | ||
return [2 /*return*/, "continue"]; | ||
} | ||
// variables | ||
if (typeof assertion.expectedVariables === "object") { | ||
@@ -139,4 +163,10 @@ Object.keys(assertion.expectedVariables).forEach(function (variableKey) { | ||
if (!variableSchema) { | ||
hasError = true; | ||
console.error(cliFormat_1.CLI_FORMAT_RED, " Variable \"".concat(variableKey, "\" failed: variable schema not found in feature")); | ||
testResult.passed = false; | ||
testResultAssertion.passed = false; | ||
testResultAssertion.errors.push({ | ||
type: "variable", | ||
expected: assertion.expectedVariation, | ||
actual: undefined, | ||
message: "schema for variable \"".concat(variableKey, "\" not found in feature"), | ||
}); | ||
return; | ||
@@ -159,5 +189,12 @@ } | ||
if (!passed) { | ||
console.error(cliFormat_1.CLI_FORMAT_RED, " Variable \"".concat(variableKey, "\" failed:")); | ||
console.error(cliFormat_1.CLI_FORMAT_RED, " expected: ".concat(JSON.stringify(parsedExpectedValue))); | ||
console.error(cliFormat_1.CLI_FORMAT_RED, " received: ".concat(JSON.stringify(actualValue))); | ||
testResult.passed = false; | ||
testResultAssertion.passed = false; | ||
testResultAssertion.errors.push({ | ||
type: "variable", | ||
expected: typeof expectedValue !== "string" ? JSON.stringify(expectedValue) : expectedValue, | ||
actual: typeof actualValue !== "string" ? JSON.stringify(actualValue) : actualValue, | ||
details: { | ||
variableKey: variableKey, | ||
}, | ||
}); | ||
} | ||
@@ -177,12 +214,18 @@ } | ||
if (!passed) { | ||
console.error(cliFormat_1.CLI_FORMAT_RED, " Variable \"".concat(variableKey, "\" failed:")); | ||
console.error(cliFormat_1.CLI_FORMAT_RED, " expected: ".concat(JSON.stringify(expectedValue))); | ||
console.error(cliFormat_1.CLI_FORMAT_RED, " received: ".concat(JSON.stringify(actualValue))); | ||
testResult.passed = false; | ||
testResultAssertion.passed = false; | ||
testResultAssertion.errors.push({ | ||
type: "variable", | ||
expected: expectedValue, | ||
actual: actualValue, | ||
details: { | ||
variableKey: variableKey, | ||
}, | ||
}); | ||
} | ||
} | ||
if (!passed) { | ||
hasError = true; | ||
} | ||
}); | ||
} | ||
testResultAssertion.duration = Date.now() - assertionStartTime; | ||
testResult.assertions.push(testResultAssertion); | ||
return [2 /*return*/]; | ||
@@ -198,3 +241,5 @@ } | ||
case 3: | ||
_a.sent(); | ||
state_1 = _a.sent(); | ||
if (typeof state_1 === "object") | ||
return [2 /*return*/, state_1.value]; | ||
_a.label = 4; | ||
@@ -207,3 +252,5 @@ case 4: | ||
return [3 /*break*/, 1]; | ||
case 6: return [2 /*return*/, hasError]; | ||
case 6: | ||
testResult.duration = Date.now() - testStartTime; | ||
return [2 /*return*/, testResult]; | ||
} | ||
@@ -210,0 +257,0 @@ }); |
@@ -44,6 +44,8 @@ "use strict"; | ||
var cliFormat_1 = require("./cliFormat"); | ||
var prettyDuration_1 = require("./prettyDuration"); | ||
var printTestResult_1 = require("./printTestResult"); | ||
function testProject(deps, options) { | ||
if (options === void 0) { options = {}; } | ||
return __awaiter(this, void 0, void 0, function () { | ||
var rootDirectoryPath, projectConfig, datasource, hasError, testFiles, patterns, _i, testFiles_1, testFile, testFilePath, t, test_1, segmentHasError, test_2, featureHasError; | ||
var rootDirectoryPath, projectConfig, datasource, hasError, testFiles, startTime, patterns, passedTestsCount, failedTestsCount, passedAssertionsCount, failedAssertionsCount, _i, testFiles_1, testFile, testFilePath, t, test_1, testResult, test_2, testResult, diffInMs, testSpecsMessage, testAssertionsMessage; | ||
return __generator(this, function (_a) { | ||
@@ -67,2 +69,3 @@ switch (_a.label) { | ||
} | ||
startTime = Date.now(); | ||
patterns = { | ||
@@ -72,2 +75,6 @@ keyPattern: options.keyPattern ? new RegExp(options.keyPattern) : undefined, | ||
}; | ||
passedTestsCount = 0; | ||
failedTestsCount = 0; | ||
passedAssertionsCount = 0; | ||
failedAssertionsCount = 0; | ||
_i = 0, testFiles_1 = testFiles; | ||
@@ -87,9 +94,16 @@ _a.label = 2; | ||
} | ||
console.log(cliFormat_1.CLI_FORMAT_BOLD, "\nTesting: ".concat(testFilePath.replace(rootDirectoryPath, ""))); | ||
return [4 /*yield*/, (0, testSegment_1.testSegment)(datasource, test_1, patterns)]; | ||
case 4: | ||
segmentHasError = _a.sent(); | ||
if (segmentHasError) { | ||
testResult = _a.sent(); | ||
(0, printTestResult_1.printTestResult)(testResult, testFilePath, rootDirectoryPath); | ||
if (!testResult.passed) { | ||
hasError = true; | ||
failedTestsCount++; | ||
failedAssertionsCount += testResult.assertions.filter(function (a) { return !a.passed; }).length; | ||
passedAssertionsCount += testResult.assertions.length - failedAssertionsCount; | ||
} | ||
else { | ||
passedTestsCount++; | ||
passedAssertionsCount += testResult.assertions.length; | ||
} | ||
return [3 /*break*/, 8]; | ||
@@ -102,9 +116,16 @@ case 5: | ||
} | ||
console.log(cliFormat_1.CLI_FORMAT_BOLD, "\nTesting: ".concat(testFilePath.replace(rootDirectoryPath, ""))); | ||
return [4 /*yield*/, (0, testFeature_1.testFeature)(datasource, projectConfig, test_2, options, patterns)]; | ||
case 6: | ||
featureHasError = _a.sent(); | ||
if (featureHasError) { | ||
testResult = _a.sent(); | ||
(0, printTestResult_1.printTestResult)(testResult, testFilePath, rootDirectoryPath); | ||
if (!testResult.passed) { | ||
hasError = true; | ||
failedTestsCount++; | ||
failedAssertionsCount += testResult.assertions.filter(function (a) { return !a.passed; }).length; | ||
passedAssertionsCount += testResult.assertions.length - failedAssertionsCount; | ||
} | ||
else { | ||
passedTestsCount++; | ||
passedAssertionsCount += testResult.assertions.length; | ||
} | ||
return [3 /*break*/, 8]; | ||
@@ -119,10 +140,15 @@ case 7: | ||
case 9: | ||
console.log(""); | ||
diffInMs = Date.now() - startTime; | ||
console.log("\n---\n"); | ||
testSpecsMessage = "Test specs: ".concat(passedTestsCount, " passed, ").concat(failedTestsCount, " failed"); | ||
testAssertionsMessage = "Assertions: ".concat(passedAssertionsCount, " passed, ").concat(failedAssertionsCount, " failed"); | ||
if (hasError) { | ||
console.log(cliFormat_1.CLI_FORMAT_RED, "Some tests failed"); | ||
console.log(cliFormat_1.CLI_FORMAT_RED, testSpecsMessage); | ||
console.log(cliFormat_1.CLI_FORMAT_RED, testAssertionsMessage); | ||
} | ||
else { | ||
console.log(cliFormat_1.CLI_FORMAT_GREEN, "All tests passed"); | ||
console.log(cliFormat_1.CLI_FORMAT_GREEN, testSpecsMessage); | ||
console.log(cliFormat_1.CLI_FORMAT_GREEN, testAssertionsMessage); | ||
} | ||
console.log(""); | ||
console.log(cliFormat_1.CLI_FORMAT_BOLD, "Time: ".concat((0, prettyDuration_1.prettyDuration)(diffInMs))); | ||
return [2 /*return*/, hasError]; | ||
@@ -129,0 +155,0 @@ } |
@@ -1,3 +0,3 @@ | ||
import { TestSegment } from "@featurevisor/types"; | ||
import { TestSegment, TestResult } from "@featurevisor/types"; | ||
import { Datasource } from "../datasource"; | ||
export declare function testSegment(datasource: Datasource, test: TestSegment, patterns: any): Promise<boolean>; | ||
export declare function testSegment(datasource: Datasource, test: TestSegment, patterns: any): Promise<TestResult>; |
@@ -41,13 +41,20 @@ "use strict"; | ||
var sdk_1 = require("@featurevisor/sdk"); | ||
var cliFormat_1 = require("./cliFormat"); | ||
var matrix_1 = require("./matrix"); | ||
function testSegment(datasource, test, patterns) { | ||
return __awaiter(this, void 0, void 0, function () { | ||
var hasError, segmentKey, segmentExists, parsedSegment, conditions; | ||
var testStartTime, segmentKey, testResult, segmentExists, parsedSegment, conditions; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: | ||
hasError = false; | ||
testStartTime = Date.now(); | ||
segmentKey = test.segment; | ||
console.log(cliFormat_1.CLI_FORMAT_BOLD, " Segment \"".concat(segmentKey, "\":")); | ||
testResult = { | ||
type: "segment", | ||
key: segmentKey, | ||
// to be updated later | ||
notFound: false, | ||
duration: 0, | ||
passed: true, | ||
assertions: [], | ||
}; | ||
return [4 /*yield*/, datasource.segmentExists(segmentKey)]; | ||
@@ -57,5 +64,5 @@ case 1: | ||
if (!segmentExists) { | ||
console.error(cliFormat_1.CLI_FORMAT_RED, " Segment does not exist: ".concat(segmentKey)); | ||
hasError = true; | ||
return [2 /*return*/, hasError]; | ||
testResult.notFound = true; | ||
testResult.passed = false; | ||
return [2 /*return*/, testResult]; | ||
} | ||
@@ -69,15 +76,31 @@ return [4 /*yield*/, datasource.readSegment(segmentKey)]; | ||
assertions.forEach(function (assertion) { | ||
var assertionStartTime = Date.now(); | ||
var testResultAssertion = { | ||
description: assertion.description, | ||
duration: 0, | ||
passed: true, | ||
errors: [], | ||
}; | ||
if (patterns.assertionPattern && !patterns.assertionPattern.test(assertion.description)) { | ||
return; | ||
} | ||
console.log(assertion.description); | ||
var expected = assertion.expectedToMatch; | ||
var actual = (0, sdk_1.allConditionsAreMatched)(conditions, assertion.context); | ||
if (actual !== expected) { | ||
hasError = true; | ||
console.error(cliFormat_1.CLI_FORMAT_RED, " Segment failed: expected \"".concat(expected, "\", got \"").concat(actual, "\"")); | ||
var passed = actual === expected; | ||
if (!passed) { | ||
var testResultAssertionError = { | ||
type: "segment", | ||
expected: expected, | ||
actual: actual, | ||
}; | ||
testResultAssertion.errors.push(testResultAssertionError); | ||
testResult.passed = false; | ||
testResultAssertion.passed = passed; | ||
} | ||
testResult.assertions.push(testResultAssertion); | ||
testResultAssertion.duration = Date.now() - assertionStartTime; | ||
}); | ||
}); | ||
return [2 /*return*/, hasError]; | ||
testResult.duration = Date.now() - testStartTime; | ||
return [2 /*return*/, testResult]; | ||
} | ||
@@ -84,0 +107,0 @@ }); |
{ | ||
"name": "@featurevisor/core", | ||
"version": "1.2.1", | ||
"version": "1.2.2", | ||
"description": "Core package of Featurevisor for Node.js usage", | ||
@@ -47,5 +47,5 @@ "main": "lib/index.js", | ||
"dependencies": { | ||
"@featurevisor/sdk": "^1.2.0", | ||
"@featurevisor/site": "^1.2.1", | ||
"@featurevisor/types": "^1.2.0", | ||
"@featurevisor/sdk": "^1.2.2", | ||
"@featurevisor/site": "^1.2.2", | ||
"@featurevisor/types": "^1.2.2", | ||
"axios": "^1.3.4", | ||
@@ -61,3 +61,3 @@ "joi": "^17.8.3", | ||
}, | ||
"gitHead": "2cb917005c4ab458ab4901d5d45a7db55a92a3cd" | ||
"gitHead": "65f5422bceb755a6d6a2e5b0c025b41486612c73" | ||
} |
@@ -108,3 +108,3 @@ import { AssertionMatrix, FeatureAssertion, SegmentAssertion } from "@featurevisor/types"; | ||
const assertion = { ...assertionWithMatrix }; | ||
assertion.description = ` Assertion #${aIndex + 1}: (${assertion.environment}) ${ | ||
assertion.description = `Assertion #${aIndex + 1}: (${assertion.environment}) ${ | ||
assertion.description || `at ${assertion.at}%` | ||
@@ -122,3 +122,3 @@ }`; | ||
const assertion = applyCombinationToFeatureAssertion(combination, assertionWithMatrix); | ||
assertion.description = ` Assertion #${aIndex + 1}: (${assertion.environment}) ${ | ||
assertion.description = `Assertion #${aIndex + 1}: (${assertion.environment}) ${ | ||
assertion.description || `at ${assertion.at}%` | ||
@@ -166,3 +166,3 @@ }`; | ||
const assertion = { ...assertionWithMatrix }; | ||
assertion.description = ` Assertion #${aIndex + 1}: ${ | ||
assertion.description = `Assertion #${aIndex + 1}: ${ | ||
assertion.description || `#${aIndex + 1}` | ||
@@ -180,3 +180,3 @@ }`; | ||
const assertion = applyCombinationToSegmentAssertion(combination, assertionWithMatrix); | ||
assertion.description = ` Assertion #${aIndex + 1}: ${ | ||
assertion.description = `Assertion #${aIndex + 1}: ${ | ||
assertion.description || `#${aIndex + 1}` | ||
@@ -183,0 +183,0 @@ }`; |
@@ -1,2 +0,7 @@ | ||
import { TestFeature } from "@featurevisor/types"; | ||
import { | ||
TestFeature, | ||
TestResult, | ||
TestResultAssertion, | ||
TestResultAssertionError, | ||
} from "@featurevisor/types"; | ||
import { createInstance, MAX_BUCKETED_NUMBER } from "@featurevisor/sdk"; | ||
@@ -11,3 +16,2 @@ | ||
import { checkIfObjectsAreEqual } from "./checkIfObjectsAreEqual"; | ||
import { CLI_FORMAT_BOLD, CLI_FORMAT_RED } from "./cliFormat"; | ||
import { getFeatureAssertionsFromMatrix } from "./matrix"; | ||
@@ -21,8 +25,17 @@ | ||
patterns, | ||
): Promise<boolean> { | ||
let hasError = false; | ||
): Promise<TestResult> { | ||
const testStartTime = Date.now(); | ||
const featureKey = test.feature; | ||
console.log(CLI_FORMAT_BOLD, ` Feature "${featureKey}":`); | ||
const testResult: TestResult = { | ||
type: "feature", | ||
key: featureKey, | ||
// to be updated later | ||
notFound: false, | ||
duration: 0, | ||
passed: true, | ||
assertions: [], | ||
}; | ||
for (let aIndex = 0; aIndex < test.assertions.length; aIndex++) { | ||
@@ -32,4 +45,12 @@ const assertions = getFeatureAssertionsFromMatrix(aIndex, test.assertions[aIndex]); | ||
for (let bIndex = 0; bIndex < assertions.length; bIndex++) { | ||
const assertionStartTime = Date.now(); | ||
const assertion = assertions[bIndex]; | ||
const testResultAssertion: TestResultAssertion = { | ||
description: assertion.description as string, | ||
duration: 0, | ||
passed: true, | ||
errors: [], | ||
}; | ||
if (patterns.assertionPattern && !patterns.assertionPattern.test(assertion.description)) { | ||
@@ -39,4 +60,2 @@ continue; | ||
console.log(assertion.description); | ||
const requiredChain = await datasource.getRequiredFeaturesChain(test.feature); | ||
@@ -75,2 +94,10 @@ const featuresToInclude = Array.from(requiredChain); | ||
const feature = await datasource.readFeature(featureKey); | ||
if (!feature) { | ||
testResult.notFound = true; | ||
testResult.passed = false; | ||
return testResult; | ||
} | ||
// isEnabled | ||
@@ -81,8 +108,10 @@ if ("expectedToBeEnabled" in assertion) { | ||
if (isEnabled !== assertion.expectedToBeEnabled) { | ||
hasError = true; | ||
testResult.passed = false; | ||
testResultAssertion.passed = false; | ||
console.error( | ||
CLI_FORMAT_RED, | ||
` isEnabled failed: expected "${assertion.expectedToBeEnabled}", received "${isEnabled}"`, | ||
); | ||
(testResultAssertion.errors as TestResultAssertionError[]).push({ | ||
type: "flag", | ||
expected: assertion.expectedToBeEnabled, | ||
actual: isEnabled, | ||
}); | ||
} | ||
@@ -96,8 +125,10 @@ } | ||
if (variation !== assertion.expectedVariation) { | ||
hasError = true; | ||
testResult.passed = false; | ||
testResultAssertion.passed = false; | ||
console.error( | ||
CLI_FORMAT_RED, | ||
` Variation failed: expected "${assertion.expectedVariation}", received "${variation}"`, | ||
); | ||
(testResultAssertion.errors as TestResultAssertionError[]).push({ | ||
type: "variation", | ||
expected: assertion.expectedVariation, | ||
actual: variation, | ||
}); | ||
} | ||
@@ -107,12 +138,2 @@ } | ||
// variables | ||
const feature = await datasource.readFeature(featureKey); | ||
if (!feature) { | ||
hasError = true; | ||
console.error(CLI_FORMAT_RED, ` Feature "${featureKey}" failed: feature not found`); | ||
continue; | ||
} | ||
if (typeof assertion.expectedVariables === "object") { | ||
@@ -129,8 +150,11 @@ Object.keys(assertion.expectedVariables).forEach(function (variableKey) { | ||
if (!variableSchema) { | ||
hasError = true; | ||
testResult.passed = false; | ||
testResultAssertion.passed = false; | ||
console.error( | ||
CLI_FORMAT_RED, | ||
` Variable "${variableKey}" failed: variable schema not found in feature`, | ||
); | ||
(testResultAssertion.errors as TestResultAssertionError[]).push({ | ||
type: "variable", | ||
expected: assertion.expectedVariation, | ||
actual: undefined, | ||
message: `schema for variable "${variableKey}" not found in feature`, | ||
}); | ||
@@ -156,8 +180,14 @@ return; | ||
if (!passed) { | ||
console.error(CLI_FORMAT_RED, ` Variable "${variableKey}" failed:`); | ||
console.error( | ||
CLI_FORMAT_RED, | ||
` expected: ${JSON.stringify(parsedExpectedValue)}`, | ||
); | ||
console.error(CLI_FORMAT_RED, ` received: ${JSON.stringify(actualValue)}`); | ||
testResult.passed = false; | ||
testResultAssertion.passed = false; | ||
(testResultAssertion.errors as TestResultAssertionError[]).push({ | ||
type: "variable", | ||
expected: | ||
typeof expectedValue !== "string" ? JSON.stringify(expectedValue) : expectedValue, | ||
actual: typeof actualValue !== "string" ? JSON.stringify(actualValue) : actualValue, | ||
details: { | ||
variableKey, | ||
}, | ||
}); | ||
} | ||
@@ -175,17 +205,26 @@ } else { | ||
if (!passed) { | ||
console.error(CLI_FORMAT_RED, ` Variable "${variableKey}" failed:`); | ||
console.error(CLI_FORMAT_RED, ` expected: ${JSON.stringify(expectedValue)}`); | ||
console.error(CLI_FORMAT_RED, ` received: ${JSON.stringify(actualValue)}`); | ||
testResult.passed = false; | ||
testResultAssertion.passed = false; | ||
(testResultAssertion.errors as TestResultAssertionError[]).push({ | ||
type: "variable", | ||
expected: expectedValue as string, | ||
actual: actualValue as string, | ||
details: { | ||
variableKey, | ||
}, | ||
}); | ||
} | ||
} | ||
if (!passed) { | ||
hasError = true; | ||
} | ||
}); | ||
} | ||
testResultAssertion.duration = Date.now() - assertionStartTime; | ||
testResult.assertions.push(testResultAssertion); | ||
} | ||
} | ||
return hasError; | ||
testResult.duration = Date.now() - testStartTime; | ||
return testResult; | ||
} |
@@ -9,2 +9,4 @@ import * as fs from "fs"; | ||
import { Dependencies } from "../dependencies"; | ||
import { prettyDuration } from "./prettyDuration"; | ||
import { printTestResult } from "./printTestResult"; | ||
@@ -42,2 +44,4 @@ export interface TestProjectOptions { | ||
const startTime = Date.now(); | ||
const patterns = { | ||
@@ -48,2 +52,8 @@ keyPattern: options.keyPattern ? new RegExp(options.keyPattern) : undefined, | ||
let passedTestsCount = 0; | ||
let failedTestsCount = 0; | ||
let passedAssertionsCount = 0; | ||
let failedAssertionsCount = 0; | ||
for (const testFile of testFiles) { | ||
@@ -62,8 +72,15 @@ const testFilePath = datasource.getTestSpecName(testFile); | ||
console.log(CLI_FORMAT_BOLD, `\nTesting: ${testFilePath.replace(rootDirectoryPath, "")}`); | ||
const testResult = await testSegment(datasource, test, patterns); | ||
printTestResult(testResult, testFilePath, rootDirectoryPath); | ||
const segmentHasError = await testSegment(datasource, test, patterns); | ||
if (!testResult.passed) { | ||
hasError = true; | ||
failedTestsCount++; | ||
if (segmentHasError) { | ||
hasError = true; | ||
failedAssertionsCount += testResult.assertions.filter((a) => !a.passed).length; | ||
passedAssertionsCount += testResult.assertions.length - failedAssertionsCount; | ||
} else { | ||
passedTestsCount++; | ||
passedAssertionsCount += testResult.assertions.length; | ||
} | ||
@@ -78,8 +95,15 @@ } else if ((t as TestFeature).feature) { | ||
console.log(CLI_FORMAT_BOLD, `\nTesting: ${testFilePath.replace(rootDirectoryPath, "")}`); | ||
const testResult = await testFeature(datasource, projectConfig, test, options, patterns); | ||
printTestResult(testResult, testFilePath, rootDirectoryPath); | ||
const featureHasError = await testFeature(datasource, projectConfig, test, options, patterns); | ||
if (!testResult.passed) { | ||
hasError = true; | ||
failedTestsCount++; | ||
if (featureHasError) { | ||
hasError = true; | ||
failedAssertionsCount += testResult.assertions.filter((a) => !a.passed).length; | ||
passedAssertionsCount += testResult.assertions.length - failedAssertionsCount; | ||
} else { | ||
passedTestsCount++; | ||
passedAssertionsCount += testResult.assertions.length; | ||
} | ||
@@ -92,11 +116,19 @@ } else { | ||
console.log(""); | ||
const diffInMs = Date.now() - startTime; | ||
console.log("\n---\n"); | ||
const testSpecsMessage = `Test specs: ${passedTestsCount} passed, ${failedTestsCount} failed`; | ||
const testAssertionsMessage = `Assertions: ${passedAssertionsCount} passed, ${failedAssertionsCount} failed`; | ||
if (hasError) { | ||
console.log(CLI_FORMAT_RED, `Some tests failed`); | ||
console.log(CLI_FORMAT_RED, testSpecsMessage); | ||
console.log(CLI_FORMAT_RED, testAssertionsMessage); | ||
} else { | ||
console.log(CLI_FORMAT_GREEN, `All tests passed`); | ||
console.log(CLI_FORMAT_GREEN, testSpecsMessage); | ||
console.log(CLI_FORMAT_GREEN, testAssertionsMessage); | ||
} | ||
console.log(""); | ||
console.log(CLI_FORMAT_BOLD, `Time: ${prettyDuration(diffInMs)}`); | ||
return hasError; | ||
} |
@@ -1,2 +0,8 @@ | ||
import { TestSegment, Condition } from "@featurevisor/types"; | ||
import { | ||
TestSegment, | ||
Condition, | ||
TestResult, | ||
TestResultAssertion, | ||
TestResultAssertionError, | ||
} from "@featurevisor/types"; | ||
import { allConditionsAreMatched } from "@featurevisor/sdk"; | ||
@@ -6,3 +12,2 @@ | ||
import { CLI_FORMAT_BOLD, CLI_FORMAT_RED } from "./cliFormat"; | ||
import { getSegmentAssertionsFromMatrix } from "./matrix"; | ||
@@ -14,16 +19,24 @@ | ||
patterns, | ||
): Promise<boolean> { | ||
let hasError = false; | ||
): Promise<TestResult> { | ||
const testStartTime = Date.now(); | ||
const segmentKey = test.segment; | ||
console.log(CLI_FORMAT_BOLD, ` Segment "${segmentKey}":`); | ||
const testResult: TestResult = { | ||
type: "segment", | ||
key: segmentKey, | ||
// to be updated later | ||
notFound: false, | ||
duration: 0, | ||
passed: true, | ||
assertions: [], | ||
}; | ||
const segmentExists = await datasource.segmentExists(segmentKey); | ||
if (!segmentExists) { | ||
console.error(CLI_FORMAT_RED, ` Segment does not exist: ${segmentKey}`); | ||
hasError = true; | ||
testResult.notFound = true; | ||
testResult.passed = false; | ||
return hasError; | ||
return testResult; | ||
} | ||
@@ -38,2 +51,10 @@ | ||
assertions.forEach(function (assertion) { | ||
const assertionStartTime = Date.now(); | ||
const testResultAssertion: TestResultAssertion = { | ||
description: assertion.description as string, | ||
duration: 0, | ||
passed: true, | ||
errors: [], | ||
}; | ||
if (patterns.assertionPattern && !patterns.assertionPattern.test(assertion.description)) { | ||
@@ -43,19 +64,26 @@ return; | ||
console.log(assertion.description); | ||
const expected = assertion.expectedToMatch; | ||
const actual = allConditionsAreMatched(conditions, assertion.context); | ||
const passed = actual === expected; | ||
if (actual !== expected) { | ||
hasError = true; | ||
if (!passed) { | ||
const testResultAssertionError: TestResultAssertionError = { | ||
type: "segment", | ||
expected, | ||
actual, | ||
}; | ||
console.error( | ||
CLI_FORMAT_RED, | ||
` Segment failed: expected "${expected}", got "${actual}"`, | ||
); | ||
(testResultAssertion.errors as TestResultAssertionError[]).push(testResultAssertionError); | ||
testResult.passed = false; | ||
testResultAssertion.passed = passed; | ||
} | ||
testResult.assertions.push(testResultAssertion); | ||
testResultAssertion.duration = Date.now() - assertionStartTime; | ||
}); | ||
}); | ||
return hasError; | ||
testResult.duration = Date.now() - testStartTime; | ||
return testResult; | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
864405
265
10462
Updated@featurevisor/sdk@^1.2.2
Updated@featurevisor/site@^1.2.2
Updated@featurevisor/types@^1.2.2