| {"/Users/vesakarv/Projects/js/fastener/src/fastener.js":{"path":"/Users/vesakarv/Projects/js/fastener/src/fastener.js","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":5,"column":3}},"1":{"start":{"line":6,"column":0},"end":{"line":6,"column":260}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":16}},"3":{"start":{"line":8,"column":0},"end":{"line":8,"column":20}},"4":{"start":{"line":9,"column":0},"end":{"line":9,"column":20}},"5":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"6":{"start":{"line":11,"column":0},"end":{"line":11,"column":24}},"7":{"start":{"line":13,"column":18},"end":{"line":13,"column":39}},"8":{"start":{"line":18,"column":2},"end":{"line":20,"column":3}},"9":{"start":{"line":19,"column":4},"end":{"line":19,"column":13}},"10":{"start":{"line":24,"column":12},"end":{"line":24,"column":18}},"11":{"start":{"line":25,"column":2},"end":{"line":27,"column":3}},"12":{"start":{"line":26,"column":4},"end":{"line":26,"column":12}},"13":{"start":{"line":27,"column":3},"end":{"line":27,"column":14}},"14":{"start":{"line":30,"column":15},"end":{"line":32,"column":1}},"15":{"start":{"line":31,"column":2},"end":{"line":31,"column":31}},"16":{"start":{"line":33,"column":15},"end":{"line":35,"column":1}},"17":{"start":{"line":34,"column":2},"end":{"line":34,"column":31}},"18":{"start":{"line":40,"column":11},"end":{"line":40,"column":15}},"19":{"start":{"line":41,"column":2},"end":{"line":44,"column":3}},"20":{"start":{"line":42,"column":4},"end":{"line":42,"column":68}},"21":{"start":{"line":43,"column":4},"end":{"line":43,"column":19}},"22":{"start":{"line":45,"column":2},"end":{"line":45,"column":12}},"23":{"start":{"line":50,"column":13},"end":{"line":52,"column":1}},"24":{"start":{"line":51,"column":2},"end":{"line":51,"column":158}},"25":{"start":{"line":57,"column":2},"end":{"line":60,"column":3}},"26":{"start":{"line":58,"column":4},"end":{"line":58,"column":30}},"27":{"start":{"line":59,"column":4},"end":{"line":59,"column":19}},"28":{"start":{"line":64,"column":13},"end":{"line":64,"column":17}},"29":{"start":{"line":65,"column":14},"end":{"line":65,"column":18}},"30":{"start":{"line":66,"column":14},"end":{"line":66,"column":20}},"31":{"start":{"line":67,"column":2},"end":{"line":69,"column":3}},"32":{"start":{"line":68,"column":4},"end":{"line":68,"column":144}},"33":{"start":{"line":68,"column":43},"end":{"line":68,"column":73}},"34":{"start":{"line":68,"column":78},"end":{"line":68,"column":144}},"35":{"start":{"line":68,"column":93},"end":{"line":68,"column":111}},"36":{"start":{"line":68,"column":116},"end":{"line":68,"column":144}},"37":{"start":{"line":69,"column":3},"end":{"line":69,"column":55}},"38":{"start":{"line":75,"column":2},"end":{"line":78,"column":3}},"39":{"start":{"line":76,"column":4},"end":{"line":76,"column":24}},"40":{"start":{"line":77,"column":4},"end":{"line":77,"column":19}},"41":{"start":{"line":82,"column":13},"end":{"line":82,"column":17}},"42":{"start":{"line":83,"column":14},"end":{"line":83,"column":18}},"43":{"start":{"line":84,"column":2},"end":{"line":86,"column":3}},"44":{"start":{"line":85,"column":4},"end":{"line":85,"column":28}},"45":{"start":{"line":86,"column":3},"end":{"line":88,"column":3}},"46":{"start":{"line":87,"column":4},"end":{"line":87,"column":31}},"47":{"start":{"line":88,"column":3},"end":{"line":88,"column":51}},"48":{"start":{"line":93,"column":10},"end":{"line":95,"column":1}},"49":{"start":{"line":94,"column":2},"end":{"line":94,"column":17}},"50":{"start":{"line":96,"column":12},"end":{"line":98,"column":1}},"51":{"start":{"line":97,"column":2},"end":{"line":97,"column":15}},"52":{"start":{"line":100,"column":11},"end":{"line":102,"column":1}},"53":{"start":{"line":101,"column":2},"end":{"line":101,"column":59}},"54":{"start":{"line":103,"column":10},"end":{"line":103,"column":52}},"55":{"start":{"line":105,"column":14},"end":{"line":107,"column":1}},"56":{"start":{"line":106,"column":2},"end":{"line":106,"column":28}},"57":{"start":{"line":108,"column":13},"end":{"line":108,"column":61}},"58":{"start":{"line":111,"column":13},"end":{"line":111,"column":22}},"59":{"start":{"line":112,"column":14},"end":{"line":112,"column":24}},"60":{"start":{"line":113,"column":12},"end":{"line":113,"column":20}},"61":{"start":{"line":114,"column":14},"end":{"line":114,"column":24}},"62":{"start":{"line":115,"column":11},"end":{"line":115,"column":18}},"63":{"start":{"line":117,"column":2},"end":{"line":134,"column":3}},"64":{"start":{"line":120,"column":20},"end":{"line":120,"column":22}},"65":{"start":{"line":121,"column":8},"end":{"line":121,"column":40}},"66":{"start":{"line":122,"column":8},"end":{"line":122,"column":65}},"67":{"start":{"line":122,"column":47},"end":{"line":122,"column":65}},"68":{"start":{"line":123,"column":8},"end":{"line":123,"column":32}},"69":{"start":{"line":124,"column":8},"end":{"line":124,"column":66}},"70":{"start":{"line":128,"column":21},"end":{"line":128,"column":23}},"71":{"start":{"line":129,"column":8},"end":{"line":129,"column":42}},"72":{"start":{"line":130,"column":8},"end":{"line":130,"column":67}},"73":{"start":{"line":130,"column":47},"end":{"line":130,"column":67}},"74":{"start":{"line":131,"column":8},"end":{"line":131,"column":34}},"75":{"start":{"line":132,"column":8},"end":{"line":132,"column":67}},"76":{"start":{"line":138,"column":14},"end":{"line":138,"column":21}},"77":{"start":{"line":139,"column":2},"end":{"line":139,"column":148}},"78":{"start":{"line":139,"column":73},"end":{"line":139,"column":148}},"79":{"start":{"line":140,"column":2},"end":{"line":140,"column":164}},"80":{"start":{"line":140,"column":90},"end":{"line":140,"column":164}},"81":{"start":{"line":142,"column":13},"end":{"line":142,"column":61}},"82":{"start":{"line":145,"column":2},"end":{"line":147,"column":3}},"83":{"start":{"line":146,"column":4},"end":{"line":146,"column":28}},"84":{"start":{"line":147,"column":3},"end":{"line":147,"column":12}},"85":{"start":{"line":149,"column":15},"end":{"line":149,"column":67}},"86":{"start":{"line":151,"column":15},"end":{"line":157,"column":1}},"87":{"start":{"line":152,"column":2},"end":{"line":156,"column":4}},"88":{"start":{"line":153,"column":16},"end":{"line":153,"column":23}},"89":{"start":{"line":154,"column":4},"end":{"line":154,"column":101}},"90":{"start":{"line":154,"column":42},"end":{"line":154,"column":101}},"91":{"start":{"line":155,"column":4},"end":{"line":155,"column":88}},"92":{"start":{"line":155,"column":41},"end":{"line":155,"column":88}},"93":{"start":{"line":159,"column":15},"end":{"line":159,"column":48}},"94":{"start":{"line":160,"column":15},"end":{"line":160,"column":49}},"95":{"start":{"line":162,"column":11},"end":{"line":169,"column":1}},"96":{"start":{"line":163,"column":13},"end":{"line":163,"column":23}},"97":{"start":{"line":164,"column":14},"end":{"line":164,"column":25}},"98":{"start":{"line":165,"column":12},"end":{"line":165,"column":21}},"99":{"start":{"line":166,"column":14},"end":{"line":166,"column":25}},"100":{"start":{"line":167,"column":11},"end":{"line":167,"column":19}},"101":{"start":{"line":168,"column":2},"end":{"line":168,"column":156}},"102":{"start":{"line":171,"column":12},"end":{"line":178,"column":1}},"103":{"start":{"line":172,"column":13},"end":{"line":172,"column":23}},"104":{"start":{"line":173,"column":14},"end":{"line":173,"column":25}},"105":{"start":{"line":174,"column":12},"end":{"line":174,"column":21}},"106":{"start":{"line":175,"column":14},"end":{"line":175,"column":25}},"107":{"start":{"line":176,"column":11},"end":{"line":176,"column":19}},"108":{"start":{"line":177,"column":2},"end":{"line":177,"column":160}},"109":{"start":{"line":181,"column":10},"end":{"line":181,"column":15}},"110":{"start":{"line":181,"column":16},"end":{"line":181,"column":40}},"111":{"start":{"line":184,"column":10},"end":{"line":184,"column":15}},"112":{"start":{"line":184,"column":16},"end":{"line":184,"column":40}},"113":{"start":{"line":187,"column":15},"end":{"line":189,"column":1}},"114":{"start":{"line":188,"column":2},"end":{"line":188,"column":26}},"115":{"start":{"line":192,"column":10},"end":{"line":192,"column":15}},"116":{"start":{"line":192,"column":16},"end":{"line":192,"column":50}},"117":{"start":{"line":196,"column":10},"end":{"line":196,"column":17}},"118":{"start":{"line":196,"column":18},"end":{"line":196,"column":38}},"119":{"start":{"line":198,"column":16},"end":{"line":198,"column":70}},"120":{"start":{"line":201,"column":2},"end":{"line":210,"column":3}},"121":{"start":{"line":203,"column":6},"end":{"line":203,"column":19}},"122":{"start":{"line":205,"column":6},"end":{"line":205,"column":18}},"123":{"start":{"line":207,"column":6},"end":{"line":207,"column":30}},"124":{"start":{"line":209,"column":6},"end":{"line":209,"column":16}},"125":{"start":{"line":213,"column":21},"end":{"line":217,"column":1}},"126":{"start":{"line":214,"column":2},"end":{"line":216,"column":8}},"127":{"start":{"line":215,"column":4},"end":{"line":215,"column":61}},"128":{"start":{"line":218,"column":20},"end":{"line":218,"column":82}},"129":{"start":{"line":220,"column":18},"end":{"line":224,"column":1}},"130":{"start":{"line":221,"column":2},"end":{"line":223,"column":4}},"131":{"start":{"line":222,"column":4},"end":{"line":222,"column":68}},"132":{"start":{"line":225,"column":18},"end":{"line":227,"column":1}},"133":{"start":{"line":226,"column":2},"end":{"line":226,"column":65}},"134":{"start":{"line":228,"column":17},"end":{"line":228,"column":73}},"135":{"start":{"line":231,"column":13},"end":{"line":231,"column":15}},"136":{"start":{"line":232,"column":2},"end":{"line":235,"column":3}},"137":{"start":{"line":233,"column":4},"end":{"line":233,"column":24}},"138":{"start":{"line":234,"column":4},"end":{"line":234,"column":13}},"139":{"start":{"line":236,"column":2},"end":{"line":236,"column":14}}},"fnMap":{"0":{"name":"firstKey","decl":{"start":{"line":17,"column":9},"end":{"line":17,"column":17}},"loc":{"start":{"line":17,"column":21},"end":{"line":21,"column":1}}},"1":{"name":"lastKey","decl":{"start":{"line":23,"column":9},"end":{"line":23,"column":16}},"loc":{"start":{"line":23,"column":20},"end":{"line":28,"column":1}}},"2":{"name":"isString","decl":{"start":{"line":30,"column":24},"end":{"line":30,"column":32}},"loc":{"start":{"line":30,"column":36},"end":{"line":32,"column":1}}},"3":{"name":"isNumber","decl":{"start":{"line":33,"column":24},"end":{"line":33,"column":32}},"loc":{"start":{"line":33,"column":36},"end":{"line":35,"column":1}}},"4":{"name":"reverse","decl":{"start":{"line":39,"column":9},"end":{"line":39,"column":16}},"loc":{"start":{"line":39,"column":23},"end":{"line":46,"column":1}}},"5":{"name":"zipper","decl":{"start":{"line":50,"column":22},"end":{"line":50,"column":28}},"loc":{"start":{"line":50,"column":58},"end":{"line":52,"column":1}}},"6":{"name":"intoObject","decl":{"start":{"line":56,"column":9},"end":{"line":56,"column":19}},"loc":{"start":{"line":56,"column":34},"end":{"line":61,"column":1}}},"7":{"name":"fromObject","decl":{"start":{"line":63,"column":9},"end":{"line":63,"column":19}},"loc":{"start":{"line":63,"column":37},"end":{"line":70,"column":1}}},"8":{"name":"intoArray","decl":{"start":{"line":74,"column":9},"end":{"line":74,"column":18}},"loc":{"start":{"line":74,"column":32},"end":{"line":79,"column":1}}},"9":{"name":"fromArray","decl":{"start":{"line":81,"column":9},"end":{"line":81,"column":18}},"loc":{"start":{"line":81,"column":35},"end":{"line":89,"column":1}}},"10":{"name":"get","decl":{"start":{"line":93,"column":33},"end":{"line":93,"column":36}},"loc":{"start":{"line":93,"column":40},"end":{"line":95,"column":1}}},"11":{"name":"keyOf","decl":{"start":{"line":96,"column":37},"end":{"line":96,"column":42}},"loc":{"start":{"line":96,"column":46},"end":{"line":98,"column":1}}},"12":{"name":"setU","decl":{"start":{"line":100,"column":20},"end":{"line":100,"column":24}},"loc":{"start":{"line":100,"column":35},"end":{"line":102,"column":1}}},"13":{"name":"modifyU","decl":{"start":{"line":105,"column":23},"end":{"line":105,"column":30}},"loc":{"start":{"line":105,"column":37},"end":{"line":107,"column":1}}},"14":{"name":"up","decl":{"start":{"line":110,"column":9},"end":{"line":110,"column":11}},"loc":{"start":{"line":110,"column":18},"end":{"line":135,"column":1}}},"15":{"name":"downToU","decl":{"start":{"line":137,"column":9},"end":{"line":137,"column":16}},"loc":{"start":{"line":137,"column":25},"end":{"line":141,"column":1}}},"16":{"name":"downPathU","decl":{"start":{"line":144,"column":9},"end":{"line":144,"column":18}},"loc":{"start":{"line":144,"column":28},"end":{"line":148,"column":1}}},"17":{"name":"downMost","decl":{"start":{"line":151,"column":24},"end":{"line":151,"column":32}},"loc":{"start":{"line":151,"column":39},"end":{"line":157,"column":1}}},"18":{"name":"(anonymous_18)","decl":{"start":{"line":152,"column":9},"end":{"line":152,"column":10}},"loc":{"start":{"line":152,"column":22},"end":{"line":156,"column":3}}},"19":{"name":"left","decl":{"start":{"line":162,"column":35},"end":{"line":162,"column":39}},"loc":{"start":{"line":162,"column":47},"end":{"line":169,"column":1}}},"20":{"name":"right","decl":{"start":{"line":171,"column":37},"end":{"line":171,"column":42}},"loc":{"start":{"line":171,"column":50},"end":{"line":178,"column":1}}},"21":{"name":"head","decl":{"start":{"line":180,"column":9},"end":{"line":180,"column":13}},"loc":{"start":{"line":180,"column":17},"end":{"line":182,"column":1}}},"22":{"name":"last","decl":{"start":{"line":183,"column":9},"end":{"line":183,"column":13}},"loc":{"start":{"line":183,"column":17},"end":{"line":185,"column":1}}},"23":{"name":"toZipper","decl":{"start":{"line":187,"column":43},"end":{"line":187,"column":51}},"loc":{"start":{"line":187,"column":59},"end":{"line":189,"column":1}}},"24":{"name":"fromZipper","decl":{"start":{"line":191,"column":9},"end":{"line":191,"column":19}},"loc":{"start":{"line":191,"column":23},"end":{"line":193,"column":1}}},"25":{"name":"queryMoveU","decl":{"start":{"line":195,"column":9},"end":{"line":195,"column":19}},"loc":{"start":{"line":195,"column":35},"end":{"line":197,"column":1}}},"26":{"name":"bwd","decl":{"start":{"line":200,"column":9},"end":{"line":200,"column":12}},"loc":{"start":{"line":200,"column":22},"end":{"line":211,"column":1}}},"27":{"name":"transformMoveU","decl":{"start":{"line":213,"column":30},"end":{"line":213,"column":44}},"loc":{"start":{"line":213,"column":57},"end":{"line":217,"column":1}}},"28":{"name":"(anonymous_28)","decl":{"start":{"line":214,"column":29},"end":{"line":214,"column":30}},"loc":{"start":{"line":214,"column":42},"end":{"line":216,"column":3}}},"29":{"name":"everywhereG","decl":{"start":{"line":220,"column":27},"end":{"line":220,"column":38}},"loc":{"start":{"line":220,"column":42},"end":{"line":224,"column":1}}},"30":{"name":"(anonymous_30)","decl":{"start":{"line":221,"column":9},"end":{"line":221,"column":10}},"loc":{"start":{"line":221,"column":22},"end":{"line":223,"column":3}}},"31":{"name":"everywhereU","decl":{"start":{"line":225,"column":27},"end":{"line":225,"column":38}},"loc":{"start":{"line":225,"column":45},"end":{"line":227,"column":1}}},"32":{"name":"pathOf","decl":{"start":{"line":230,"column":9},"end":{"line":230,"column":15}},"loc":{"start":{"line":230,"column":19},"end":{"line":237,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":42,"column":9},"end":{"line":42,"column":67}},"type":"cond-expr","locations":[{"start":{"line":42,"column":29},"end":{"line":42,"column":51}},{"start":{"line":42,"column":54},"end":{"line":42,"column":67}}]},"1":{"loc":{"start":{"line":51,"column":9},"end":{"line":51,"column":157}},"type":"cond-expr","locations":[{"start":{"line":51,"column":42},"end":{"line":51,"column":102}},{"start":{"line":51,"column":105},"end":{"line":51,"column":157}}]},"2":{"loc":{"start":{"line":68,"column":4},"end":{"line":68,"column":144}},"type":"if","locations":[{"start":{"line":68,"column":4},"end":{"line":68,"column":144}},{"start":{"line":68,"column":4},"end":{"line":68,"column":144}}]},"3":{"loc":{"start":{"line":68,"column":78},"end":{"line":68,"column":144}},"type":"if","locations":[{"start":{"line":68,"column":78},"end":{"line":68,"column":144}},{"start":{"line":68,"column":78},"end":{"line":68,"column":144}}]},"4":{"loc":{"start":{"line":117,"column":2},"end":{"line":134,"column":3}},"type":"switch","locations":[{"start":{"line":118,"column":4},"end":{"line":125,"column":7}},{"start":{"line":126,"column":4},"end":{"line":133,"column":7}}]},"5":{"loc":{"start":{"line":122,"column":8},"end":{"line":122,"column":65}},"type":"if","locations":[{"start":{"line":122,"column":8},"end":{"line":122,"column":65}},{"start":{"line":122,"column":8},"end":{"line":122,"column":65}}]},"6":{"loc":{"start":{"line":130,"column":8},"end":{"line":130,"column":67}},"type":"if","locations":[{"start":{"line":130,"column":8},"end":{"line":130,"column":67}},{"start":{"line":130,"column":8},"end":{"line":130,"column":67}}]},"7":{"loc":{"start":{"line":139,"column":2},"end":{"line":139,"column":148}},"type":"if","locations":[{"start":{"line":139,"column":2},"end":{"line":139,"column":148}},{"start":{"line":139,"column":2},"end":{"line":139,"column":148}}]},"8":{"loc":{"start":{"line":139,"column":6},"end":{"line":139,"column":71}},"type":"binary-expr","locations":[{"start":{"line":139,"column":6},"end":{"line":139,"column":38}},{"start":{"line":139,"column":42},"end":{"line":139,"column":55}},{"start":{"line":139,"column":59},"end":{"line":139,"column":71}}]},"9":{"loc":{"start":{"line":140,"column":2},"end":{"line":140,"column":164}},"type":"if","locations":[{"start":{"line":140,"column":2},"end":{"line":140,"column":164}},{"start":{"line":140,"column":2},"end":{"line":140,"column":164}}]},"10":{"loc":{"start":{"line":140,"column":6},"end":{"line":140,"column":88}},"type":"binary-expr","locations":[{"start":{"line":140,"column":6},"end":{"line":140,"column":37}},{"start":{"line":140,"column":41},"end":{"line":140,"column":54}},{"start":{"line":140,"column":58},"end":{"line":140,"column":66}},{"start":{"line":140,"column":70},"end":{"line":140,"column":88}}]},"11":{"loc":{"start":{"line":145,"column":35},"end":{"line":145,"column":45}},"type":"binary-expr","locations":[{"start":{"line":145,"column":35},"end":{"line":145,"column":36}},{"start":{"line":145,"column":40},"end":{"line":145,"column":45}}]},"12":{"loc":{"start":{"line":154,"column":4},"end":{"line":154,"column":101}},"type":"if","locations":[{"start":{"line":154,"column":4},"end":{"line":154,"column":101}},{"start":{"line":154,"column":4},"end":{"line":154,"column":101}}]},"13":{"loc":{"start":{"line":154,"column":57},"end":{"line":154,"column":96}},"type":"cond-expr","locations":[{"start":{"line":154,"column":64},"end":{"line":154,"column":79}},{"start":{"line":154,"column":82},"end":{"line":154,"column":96}}]},"14":{"loc":{"start":{"line":155,"column":4},"end":{"line":155,"column":88}},"type":"if","locations":[{"start":{"line":155,"column":4},"end":{"line":155,"column":88}},{"start":{"line":155,"column":4},"end":{"line":155,"column":88}}]},"15":{"loc":{"start":{"line":155,"column":56},"end":{"line":155,"column":83}},"type":"cond-expr","locations":[{"start":{"line":155,"column":63},"end":{"line":155,"column":64}},{"start":{"line":155,"column":67},"end":{"line":155,"column":83}}]},"16":{"loc":{"start":{"line":168,"column":9},"end":{"line":168,"column":155}},"type":"cond-expr","locations":[{"start":{"line":168,"column":16},"end":{"line":168,"column":146}},{"start":{"line":168,"column":149},"end":{"line":168,"column":155}}]},"17":{"loc":{"start":{"line":168,"column":16},"end":{"line":168,"column":146}},"type":"cond-expr","locations":[{"start":{"line":168,"column":32},"end":{"line":168,"column":85}},{"start":{"line":168,"column":88},"end":{"line":168,"column":146}}]},"18":{"loc":{"start":{"line":177,"column":9},"end":{"line":177,"column":159}},"type":"cond-expr","locations":[{"start":{"line":177,"column":17},"end":{"line":177,"column":150}},{"start":{"line":177,"column":153},"end":{"line":177,"column":159}}]},"19":{"loc":{"start":{"line":177,"column":17},"end":{"line":177,"column":150}},"type":"cond-expr","locations":[{"start":{"line":177,"column":33},"end":{"line":177,"column":87}},{"start":{"line":177,"column":90},"end":{"line":177,"column":150}}]},"20":{"loc":{"start":{"line":181,"column":23},"end":{"line":181,"column":39}},"type":"binary-expr","locations":[{"start":{"line":181,"column":23},"end":{"line":181,"column":24}},{"start":{"line":181,"column":28},"end":{"line":181,"column":39}}]},"21":{"loc":{"start":{"line":184,"column":23},"end":{"line":184,"column":39}},"type":"binary-expr","locations":[{"start":{"line":184,"column":23},"end":{"line":184,"column":24}},{"start":{"line":184,"column":28},"end":{"line":184,"column":39}}]},"22":{"loc":{"start":{"line":192,"column":23},"end":{"line":192,"column":49}},"type":"cond-expr","locations":[{"start":{"line":192,"column":27},"end":{"line":192,"column":40}},{"start":{"line":192,"column":43},"end":{"line":192,"column":49}}]},"23":{"loc":{"start":{"line":196,"column":25},"end":{"line":196,"column":37}},"type":"cond-expr","locations":[{"start":{"line":196,"column":29},"end":{"line":196,"column":33}},{"start":{"line":196,"column":36},"end":{"line":196,"column":37}}]},"24":{"loc":{"start":{"line":201,"column":2},"end":{"line":210,"column":3}},"type":"switch","locations":[{"start":{"line":202,"column":4},"end":{"line":203,"column":19}},{"start":{"line":204,"column":4},"end":{"line":205,"column":18}},{"start":{"line":206,"column":4},"end":{"line":207,"column":30}},{"start":{"line":208,"column":4},"end":{"line":209,"column":16}}]},"25":{"loc":{"start":{"line":232,"column":9},"end":{"line":232,"column":47}},"type":"binary-expr","locations":[{"start":{"line":232,"column":9},"end":{"line":232,"column":10}},{"start":{"line":232,"column":14},"end":{"line":232,"column":47}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":5,"9":5,"10":2,"11":2,"12":4,"13":2,"14":1,"15":28,"16":1,"17":31,"18":39,"19":39,"20":17,"21":17,"22":39,"23":1,"24":56,"25":14,"26":1,"27":1,"28":26,"29":26,"30":26,"31":26,"32":40,"33":11,"34":29,"35":26,"36":3,"37":26,"38":12,"39":12,"40":12,"41":18,"42":18,"43":18,"44":15,"45":18,"46":16,"47":18,"48":1,"49":20,"50":1,"51":4,"52":1,"53":12,"54":1,"55":1,"56":12,"57":1,"58":20,"59":20,"60":20,"61":20,"62":20,"63":20,"64":6,"65":6,"66":6,"67":6,"68":6,"69":6,"70":7,"71":7,"72":7,"73":7,"74":7,"75":7,"76":51,"77":51,"78":26,"79":25,"80":18,"81":1,"82":10,"83":25,"84":10,"85":1,"86":1,"87":2,"88":21,"89":21,"90":7,"91":14,"92":8,"93":1,"94":1,"95":1,"96":10,"97":10,"98":10,"99":10,"100":10,"101":10,"102":1,"103":13,"104":13,"105":13,"106":13,"107":13,"108":13,"109":2,"110":2,"111":2,"112":2,"113":1,"114":37,"115":8,"116":8,"117":23,"118":23,"119":1,"120":8,"121":0,"122":3,"123":0,"124":5,"125":1,"126":15,"127":8,"128":1,"129":1,"130":13,"131":6,"132":1,"133":7,"134":1,"135":6,"136":6,"137":7,"138":7,"139":6},"f":{"0":5,"1":2,"2":28,"3":31,"4":39,"5":56,"6":14,"7":26,"8":12,"9":18,"10":20,"11":4,"12":12,"13":12,"14":20,"15":51,"16":10,"17":2,"18":21,"19":10,"20":13,"21":2,"22":2,"23":37,"24":8,"25":23,"26":8,"27":15,"28":8,"29":13,"30":6,"31":7,"32":6},"b":{"0":[11,6],"1":[29,27],"2":[11,29],"3":[26,3],"4":[6,7],"5":[6,0],"6":[7,0],"7":[26,25],"8":[51,28,27],"9":[18,7],"10":[25,19,19,19],"11":[35,31],"12":[7,14],"13":[5,2],"14":[8,6],"15":[4,4],"16":[6,4],"17":[5,1],"18":[6,7],"19":[5,1],"20":[2,1],"21":[2,1],"22":[4,4],"23":[16,7],"24":[0,3,0,5],"25":[13,10]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"f13b6227dbb53c4f8c873c1ad1569fe1e9461575","contentHash":"3794991fcd65b66d8df5e5b0c7a3ab73_10.0.0"}} |
+242
| (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.F = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | ||
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { | ||
| value: true | ||
| }); | ||
| exports.everywhere = exports.transformMove = exports.queryMove = exports.toZipper = exports.right = exports.left = exports.downLast = exports.downHead = exports.downPath = exports.downTo = exports.modify = exports.set = exports.keyOf = exports.get = undefined; | ||
| exports.up = up; | ||
| exports.head = head; | ||
| exports.last = last; | ||
| exports.fromZipper = fromZipper; | ||
| exports.pathOf = pathOf; | ||
| var _infestines = require("infestines"); | ||
| // | ||
| function firstKey(o) { | ||
| for (var k in o) { | ||
| return k; | ||
| } | ||
| } | ||
| function lastKey(o) { | ||
| var key = void 0; | ||
| for (var k in o) { | ||
| key = k; | ||
| }return key; | ||
| } | ||
| var isString = function isString(x) { | ||
| return typeof x === "string"; | ||
| }; | ||
| var isNumber = function isNumber(x) { | ||
| return typeof x === "number"; | ||
| }; | ||
| // | ||
| function reverse(from) { | ||
| var to = null; | ||
| while (from) { | ||
| to = from.length === 3 ? [to, from[1], from[2]] : [to, from[1]]; | ||
| from = from[0]; | ||
| } | ||
| return to; | ||
| } | ||
| // | ||
| var zipper = function zipper(left, focus, key, right, up) { | ||
| return (0, _infestines.isDefined)(up) ? { left: left, focus: focus, key: key, right: right, up: up } : { left: left, focus: focus, key: key, right: right }; | ||
| }; | ||
| // | ||
| function intoObject(list, object) { | ||
| while (list) { | ||
| object[list[2]] = list[1]; | ||
| list = list[0]; | ||
| } | ||
| } | ||
| function fromObject(object, key, up) { | ||
| var left = null; | ||
| var right = null; | ||
| var focus = void 0; | ||
| for (var k in object) { | ||
| if ((0, _infestines.isDefined)(focus)) right = [right, object[k], k];else if (key === k) focus = object[k];else left = [left, object[k], k]; | ||
| }return zipper(left, focus, key, reverse(right), up); | ||
| } | ||
| // | ||
| function intoArray(list, array) { | ||
| while (list) { | ||
| array.push(list[1]); | ||
| list = list[0]; | ||
| } | ||
| } | ||
| function fromArray(array, key, up) { | ||
| var left = null; | ||
| var right = null; | ||
| for (var i = 0; i < key; ++i) { | ||
| left = [left, array[i]]; | ||
| }for (var _i = array.length - 1; key < _i; --_i) { | ||
| right = [right, array[_i]]; | ||
| }return zipper(left, array[key], key, right, up); | ||
| } | ||
| // | ||
| var get = exports.get = function get(z) { | ||
| return z.focus; | ||
| }; | ||
| var keyOf = exports.keyOf = function keyOf(z) { | ||
| return z.key; | ||
| }; | ||
| var setU = function setU(focus, z) { | ||
| return (0, _infestines.assocPartialU)("focus", focus, z); | ||
| }; | ||
| var set = exports.set = (0, _infestines.curry)(setU); | ||
| var modifyU = function modifyU(f, z) { | ||
| return setU(f(get(z)), z); | ||
| }; | ||
| var modify = exports.modify = (0, _infestines.curry)(modifyU); | ||
| function up(_ref) { | ||
| var left = _ref.left, | ||
| focus = _ref.focus, | ||
| key = _ref.key, | ||
| right = _ref.right, | ||
| up = _ref.up; | ||
| switch (typeof key) { | ||
| case "number": | ||
| { | ||
| var array = []; | ||
| intoArray(reverse(left), array); | ||
| if ((0, _infestines.isDefined)(focus)) array.push(focus); | ||
| intoArray(right, array); | ||
| return (0, _infestines.assocPartialU)("focus", array, up); | ||
| } | ||
| case "string": | ||
| { | ||
| var object = {}; | ||
| intoObject(reverse(left), object); | ||
| if ((0, _infestines.isDefined)(focus)) object[key] = focus; | ||
| intoObject(right, object); | ||
| return (0, _infestines.assocPartialU)("focus", object, up); | ||
| } | ||
| } | ||
| } | ||
| function downToU(key, z) { | ||
| var focus = z.focus; | ||
| if ((0, _infestines.isObject)(focus) && isString(key) && key in focus) return fromObject(focus, key, (0, _infestines.dissocPartialU)("focus", z)); | ||
| if ((0, _infestines.isArray)(focus) && isNumber(key) && 0 <= key && key < focus.length) return fromArray(focus, key, (0, _infestines.dissocPartialU)("focus", z)); | ||
| } | ||
| var downTo = exports.downTo = (0, _infestines.curry)(downToU); | ||
| function downPathU(path, z) { | ||
| for (var i = 0, n = path.length; z && i < n; ++i) { | ||
| z = downToU(path[i], z); | ||
| }return z; | ||
| } | ||
| var downPath = exports.downPath = (0, _infestines.curry)(downPathU); | ||
| var downMost = function downMost(head) { | ||
| return function (z) { | ||
| var focus = z.focus; | ||
| if ((0, _infestines.isObject)(focus)) return downToU(head ? firstKey(focus) : lastKey(focus), z); | ||
| if ((0, _infestines.isArray)(focus)) return downToU(head ? 0 : focus.length - 1, z); | ||
| }; | ||
| }; | ||
| var downHead = exports.downHead = downMost(true); | ||
| var downLast = exports.downLast = downMost(false); | ||
| var left = exports.left = function left(_ref2) { | ||
| var left = _ref2.left, | ||
| focus = _ref2.focus, | ||
| key = _ref2.key, | ||
| right = _ref2.right, | ||
| up = _ref2.up; | ||
| return left ? isNumber(key) ? zipper(left[0], left[1], key - 1, [right, focus], up) : zipper(left[0], left[1], left[2], [right, focus, key], up) : void 0; | ||
| }; | ||
| var right = exports.right = function right(_ref3) { | ||
| var left = _ref3.left, | ||
| focus = _ref3.focus, | ||
| key = _ref3.key, | ||
| right = _ref3.right, | ||
| up = _ref3.up; | ||
| return right ? isNumber(key) ? zipper([left, focus], right[1], key + 1, right[0], up) : zipper([left, focus, key], right[1], right[2], right[0], up) : void 0; | ||
| }; | ||
| function head(z) { | ||
| var u = up(z);return u && downHead(u); | ||
| } | ||
| function last(z) { | ||
| var u = up(z);return u && downLast(u); | ||
| } | ||
| var toZipper = exports.toZipper = function toZipper(focus) { | ||
| return { focus: focus }; | ||
| }; | ||
| function fromZipper(z) { | ||
| var u = up(z);return u ? fromZipper(u) : get(z); | ||
| } | ||
| function queryMoveU(move, b, f, z) { | ||
| var m = move(z);return m ? f(m) : b; | ||
| } | ||
| var queryMove = exports.queryMove = (0, _infestines.curry)(queryMoveU); | ||
| function bwd(move, z) { | ||
| switch (move) { | ||
| case left: | ||
| return right; | ||
| case right: | ||
| return left; | ||
| case up: | ||
| return downTo(keyOf(z)); | ||
| default: | ||
| return up; | ||
| } | ||
| } | ||
| var transformMoveU = function transformMoveU(move, f, z) { | ||
| return queryMoveU(move, z, function (x) { | ||
| return queryMoveU(bwd(move, z), z, _infestines.id, f(x)); | ||
| }, z); | ||
| }; | ||
| var transformMove = exports.transformMove = (0, _infestines.curry)(transformMoveU); | ||
| var everywhereG = function everywhereG(f) { | ||
| return function (z) { | ||
| return transformMoveU(right, everywhereG(f), everywhereU(f, z)); | ||
| }; | ||
| }; | ||
| var everywhereU = function everywhereU(f, z) { | ||
| return modifyU(f, transformMoveU(downHead, everywhereG(f), z)); | ||
| }; | ||
| var everywhere = exports.everywhere = (0, _infestines.curry)(everywhereU); | ||
| function pathOf(z) { | ||
| var path = []; | ||
| while (z && (0, _infestines.isDefined)(z.key)) { | ||
| path.unshift(z.key); | ||
| z = z.up; | ||
| } | ||
| return path; | ||
| } | ||
| },{"infestines":undefined}]},{},[1])(1) | ||
| }); | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvZmFzdGVuZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7UUNrR2dCLEUsR0FBQSxFO1FBOERBLEksR0FBQSxJO1FBQ0EsSSxHQUFBLEk7UUFJQSxVLEdBQUEsVTtRQXdCQSxNLEdBQUEsTTs7QUE3TGhCOztBQVVBOztBQUVBLFNBQVMsUUFBVCxDQUFrQixDQUFsQixFQUFxQjtBQUNuQixPQUFLLElBQU0sQ0FBWCxJQUFnQixDQUFoQjtBQUNFLFdBQU8sQ0FBUDtBQURGO0FBRUQ7O0FBRUQsU0FBUyxPQUFULENBQWlCLENBQWpCLEVBQW9CO0FBQ2xCLE1BQUksWUFBSjtBQUNBLE9BQUssSUFBTSxDQUFYLElBQWdCLENBQWhCO0FBQ0UsVUFBTSxDQUFOO0FBREYsR0FFQSxPQUFPLEdBQVA7QUFDRDs7QUFFRCxJQUFNLFdBQVcsU0FBWCxRQUFXO0FBQUEsU0FBSyxPQUFPLENBQVAsS0FBYSxRQUFsQjtBQUFBLENBQWpCO0FBQ0EsSUFBTSxXQUFXLFNBQVgsUUFBVztBQUFBLFNBQUssT0FBTyxDQUFQLEtBQWEsUUFBbEI7QUFBQSxDQUFqQjs7QUFFQTs7QUFFQSxTQUFTLE9BQVQsQ0FBaUIsSUFBakIsRUFBdUI7QUFDckIsTUFBSSxLQUFLLElBQVQ7QUFDQSxTQUFPLElBQVAsRUFBYTtBQUNYLFNBQUssS0FBSyxNQUFMLEtBQWdCLENBQWhCLEdBQW9CLENBQUMsRUFBRCxFQUFLLEtBQUssQ0FBTCxDQUFMLEVBQWMsS0FBSyxDQUFMLENBQWQsQ0FBcEIsR0FBNkMsQ0FBQyxFQUFELEVBQUssS0FBSyxDQUFMLENBQUwsQ0FBbEQ7QUFDQSxXQUFPLEtBQUssQ0FBTCxDQUFQO0FBQ0Q7QUFDRCxTQUFPLEVBQVA7QUFDRDs7QUFFRDs7QUFFQSxJQUFNLFNBQVMsU0FBVCxNQUFTLENBQUMsSUFBRCxFQUFPLEtBQVAsRUFBYyxHQUFkLEVBQW1CLEtBQW5CLEVBQTBC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U0FDbEIsUUFBUSxDQUFSLEVBQVcsZUFBZSxRQUFmLEVBQXlCLFlBQVksQ0FBWixDQUF6QixFQUF5QyxDQUF6QyxDQUFYLENBRGtCO0FBQUEsQ0FBcEI7QUFFTyxJQUFNLGtDQUFhLHVCQUFNLFdBQU4sQ0FBbkI7O0FBRUEsU0FBUyxNQUFULENBQWdCLENBQWhCLEVBQW1CO0FBQ3hCLE1BQU0sT0FBTyxFQUFiO0FBQ0EsU0FBTyxLQUFLLDJCQUFVLEVBQUUsR0FBWixDQUFaLEVBQThCO0FBQzVCLFNBQUssT0FBTCxDQUFhLEVBQUUsR0FBZjtBQUNBLFFBQUksRUFBRSxFQUFOO0FBQ0Q7QUFDRCxTQUFPLElBQVA7QUFDRCIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCJpbXBvcnQge1xuICBhc3NvY1BhcnRpYWxVLFxuICBjdXJyeSxcbiAgZGlzc29jUGFydGlhbFUsXG4gIGlkLFxuICBpc0FycmF5LFxuICBpc0RlZmluZWQsXG4gIGlzT2JqZWN0XG59IGZyb20gXCJpbmZlc3RpbmVzXCJcblxuLy9cblxuZnVuY3Rpb24gZmlyc3RLZXkobykge1xuICBmb3IgKGNvbnN0IGsgaW4gbylcbiAgICByZXR1cm4ga1xufVxuXG5mdW5jdGlvbiBsYXN0S2V5KG8pIHtcbiAgbGV0IGtleVxuICBmb3IgKGNvbnN0IGsgaW4gbylcbiAgICBrZXkgPSBrXG4gIHJldHVybiBrZXlcbn1cblxuY29uc3QgaXNTdHJpbmcgPSB4ID0+IHR5cGVvZiB4ID09PSBcInN0cmluZ1wiXG5jb25zdCBpc051bWJlciA9IHggPT4gdHlwZW9mIHggPT09IFwibnVtYmVyXCJcblxuLy9cblxuZnVuY3Rpb24gcmV2ZXJzZShmcm9tKSB7XG4gIGxldCB0byA9IG51bGxcbiAgd2hpbGUgKGZyb20pIHtcbiAgICB0byA9IGZyb20ubGVuZ3RoID09PSAzID8gW3RvLCBmcm9tWzFdLCBmcm9tWzJdXSA6IFt0bywgZnJvbVsxXV1cbiAgICBmcm9tID0gZnJvbVswXVxuICB9XG4gIHJldHVybiB0b1xufVxuXG4vL1xuXG5jb25zdCB6aXBwZXIgPSAobGVmdCwgZm9jdXMsIGtleSwgcmlnaHQsIHVwKSA9PiBpc0RlZmluZWQodXApXG4gID8ge2xlZnQsIGZvY3VzLCBrZXksIHJpZ2h0LCB1cH1cbiAgOiB7bGVmdCwgZm9jdXMsIGtleSwgcmlnaHR9XG5cbi8vXG5cbmZ1bmN0aW9uIGludG9PYmplY3QobGlzdCwgb2JqZWN0KSB7XG4gIHdoaWxlIChsaXN0KSB7XG4gICAgb2JqZWN0W2xpc3RbMl1dID0gbGlzdFsxXVxuICAgIGxpc3QgPSBsaXN0WzBdXG4gIH1cbn1cblxuZnVuY3Rpb24gZnJvbU9iamVjdChvYmplY3QsIGtleSwgdXApIHtcbiAgbGV0IGxlZnQgPSBudWxsXG4gIGxldCByaWdodCA9IG51bGxcbiAgbGV0IGZvY3VzXG4gIGZvciAoY29uc3QgayBpbiBvYmplY3QpXG4gICAgaWYgKGlzRGVmaW5lZChmb2N1cykpXG4gICAgICByaWdodCA9IFtyaWdodCwgb2JqZWN0W2tdLCBrXVxuICAgIGVsc2VcbiAgICAgIGlmIChrZXkgPT09IGspXG4gICAgICAgIGZvY3VzID0gb2JqZWN0W2tdXG4gICAgICBlbHNlXG4gICAgICAgIGxlZnQgPSBbbGVmdCwgb2JqZWN0W2tdLCBrXVxuICByZXR1cm4gemlwcGVyKGxlZnQsIGZvY3VzLCBrZXksIHJldmVyc2UocmlnaHQpLCB1cClcbn1cblxuLy9cblxuZnVuY3Rpb24gaW50b0FycmF5KGxpc3QsIGFycmF5KSB7XG4gIHdoaWxlIChsaXN0KSB7XG4gICAgYXJyYXkucHVzaChsaXN0WzFdKVxuICAgIGxpc3QgPSBsaXN0WzBdXG4gIH1cbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5KGFycmF5LCBrZXksIHVwKSB7XG4gIGxldCBsZWZ0ID0gbnVsbFxuICBsZXQgcmlnaHQgPSBudWxsXG4gIGZvciAobGV0IGk9MDsgaTxrZXk7ICsraSlcbiAgICBsZWZ0ID0gW2xlZnQsIGFycmF5W2ldXVxuICBmb3IgKGxldCBpPWFycmF5Lmxlbmd0aC0xOyBrZXkgPCBpOyAtLWkpXG4gICAgcmlnaHQgPSBbcmlnaHQsIGFycmF5W2ldXVxuICByZXR1cm4gemlwcGVyKGxlZnQsIGFycmF5W2tleV0sIGtleSwgcmlnaHQsIHVwKVxufVxuXG4vL1xuXG5leHBvcnQgY29uc3QgZ2V0ID0geiA9PiB6LmZvY3VzXG5leHBvcnQgY29uc3Qga2V5T2YgPSB6ID0+IHoua2V5XG5cbmNvbnN0IHNldFUgPSAoZm9jdXMsIHopID0+IGFzc29jUGFydGlhbFUoXCJmb2N1c1wiLCBmb2N1cywgeilcbmV4cG9ydCBjb25zdCBzZXQgPSBjdXJyeShzZXRVKVxuXG5jb25zdCBtb2RpZnlVID0gKGYsIHopID0+IHNldFUoZihnZXQoeikpLCB6KVxuZXhwb3J0IGNvbnN0IG1vZGlmeSA9IGN1cnJ5KG1vZGlmeVUpXG5cbmV4cG9ydCBmdW5jdGlvbiB1cCh7bGVmdCwgZm9jdXMsIGtleSwgcmlnaHQsIHVwfSkge1xuICBzd2l0Y2ggKHR5cGVvZiBrZXkpIHtcbiAgICBjYXNlIFwibnVtYmVyXCI6IHtcbiAgICAgIGNvbnN0IGFycmF5ID0gW11cbiAgICAgIGludG9BcnJheShyZXZlcnNlKGxlZnQpLCBhcnJheSlcbiAgICAgIGlmIChpc0RlZmluZWQoZm9jdXMpKVxuICAgICAgICBhcnJheS5wdXNoKGZvY3VzKVxuICAgICAgaW50b0FycmF5KHJpZ2h0LCBhcnJheSlcbiAgICAgIHJldHVybiBhc3NvY1BhcnRpYWxVKFwiZm9jdXNcIiwgYXJyYXksIHVwKVxuICAgIH1cbiAgICBjYXNlIFwic3RyaW5nXCI6IHtcbiAgICAgIGNvbnN0IG9iamVjdCA9IHt9XG4gICAgICBpbnRvT2JqZWN0KHJldmVyc2UobGVmdCksIG9iamVjdClcbiAgICAgIGlmIChpc0RlZmluZWQoZm9jdXMpKVxuICAgICAgICBvYmplY3Rba2V5XSA9IGZvY3VzXG4gICAgICBpbnRvT2JqZWN0KHJpZ2h0LCBvYmplY3QpXG4gICAgICByZXR1cm4gYXNzb2NQYXJ0aWFsVShcImZvY3VzXCIsIG9iamVjdCwgdXApXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGRvd25Ub1Uoa2V5LCB6KSB7XG4gIGNvbnN0IGZvY3VzID0gei5mb2N1c1xuICBpZiAoaXNPYmplY3QoZm9jdXMpICYmIGlzU3RyaW5nKGtleSkgJiYga2V5IGluIGZvY3VzKVxuICAgIHJldHVybiBmcm9tT2JqZWN0KGZvY3VzLCBrZXksIGRpc3NvY1BhcnRpYWxVKFwiZm9jdXNcIiwgeikpXG4gIGlmIChpc0FycmF5KGZvY3VzKSAmJiBpc051bWJlcihrZXkpICYmIDAgPD0ga2V5ICYmIGtleSA8IGZvY3VzLmxlbmd0aClcbiAgICByZXR1cm4gZnJvbUFycmF5KGZvY3VzLCBrZXksIGRpc3NvY1BhcnRpYWxVKFwiZm9jdXNcIiwgeikpXG59XG5leHBvcnQgY29uc3QgZG93blRvID0gY3VycnkoZG93blRvVSlcblxuZnVuY3Rpb24gZG93blBhdGhVKHBhdGgsIHopIHtcbiAgZm9yIChsZXQgaT0wLCBuPXBhdGgubGVuZ3RoOyB6ICYmIGk8bjsgKytpKVxuICAgIHogPSBkb3duVG9VKHBhdGhbaV0sIHopXG4gIHJldHVybiB6XG59XG5leHBvcnQgY29uc3QgZG93blBhdGggPSBjdXJyeShkb3duUGF0aFUpXG5cbmNvbnN0IGRvd25Nb3N0ID0gaGVhZCA9PiB6ID0+IHtcbiAgY29uc3QgZm9jdXMgPSB6LmZvY3VzXG4gIGlmIChpc09iamVjdChmb2N1cykpXG4gICAgcmV0dXJuIGRvd25Ub1UoaGVhZCA/IGZpcnN0S2V5KGZvY3VzKSA6IGxhc3RLZXkoZm9jdXMpLCB6KVxuICBpZiAoaXNBcnJheShmb2N1cykpXG4gICAgcmV0dXJuIGRvd25Ub1UoaGVhZCA/IDAgOiBmb2N1cy5sZW5ndGgtMSwgeilcbn1cblxuZXhwb3J0IGNvbnN0IGRvd25IZWFkID0gZG93bk1vc3QodHJ1ZSlcbmV4cG9ydCBjb25zdCBkb3duTGFzdCA9IGRvd25Nb3N0KGZhbHNlKVxuXG5leHBvcnQgY29uc3QgbGVmdCA9ICh7bGVmdCwgZm9jdXMsIGtleSwgcmlnaHQsIHVwfSkgPT5cbiAgbGVmdFxuICA/IGlzTnVtYmVyKGtleSlcbiAgICA/IHppcHBlcihsZWZ0WzBdLCBsZWZ0WzFdLCBrZXktMSwgICBbcmlnaHQsIGZvY3VzXSwgdXApXG4gICAgOiB6aXBwZXIobGVmdFswXSwgbGVmdFsxXSwgbGVmdFsyXSwgW3JpZ2h0LCBmb2N1cywga2V5XSwgdXApXG4gIDogdm9pZCAwXG5cbmV4cG9ydCBjb25zdCByaWdodCA9ICh7bGVmdCwgZm9jdXMsIGtleSwgcmlnaHQsIHVwfSkgPT5cbiAgcmlnaHRcbiAgPyBpc051bWJlcihrZXkpXG4gICAgPyB6aXBwZXIoW2xlZnQsIGZvY3VzXSwgICAgICByaWdodFsxXSwga2V5KzEsICAgIHJpZ2h0WzBdLCB1cClcbiAgICA6IHppcHBlcihbbGVmdCwgZm9jdXMsIGtleV0sIHJpZ2h0WzFdLCByaWdodFsyXSwgcmlnaHRbMF0sIHVwKVxuICA6IHZvaWQgMFxuXG5leHBvcnQgZnVuY3Rpb24gaGVhZCh6KSB7Y29uc3QgdSA9IHVwKHopOyByZXR1cm4gdSAmJiBkb3duSGVhZCh1KX1cbmV4cG9ydCBmdW5jdGlvbiBsYXN0KHopIHtjb25zdCB1ID0gdXAoeik7IHJldHVybiB1ICYmIGRvd25MYXN0KHUpfVxuXG5leHBvcnQgY29uc3QgdG9aaXBwZXIgPSBmb2N1cyA9PiAoe2ZvY3VzfSlcblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21aaXBwZXIoeikge2NvbnN0IHU9dXAoeik7IHJldHVybiB1ID8gZnJvbVppcHBlcih1KSA6IGdldCh6KX1cblxuZnVuY3Rpb24gcXVlcnlNb3ZlVShtb3ZlLCBiLCBmLCB6KSB7Y29uc3QgbSA9IG1vdmUoeik7IHJldHVybiBtID8gZihtKSA6IGJ9XG5leHBvcnQgY29uc3QgcXVlcnlNb3ZlID0gY3VycnkocXVlcnlNb3ZlVSlcblxuZnVuY3Rpb24gYndkKG1vdmUsIHopIHtcbiAgc3dpdGNoIChtb3ZlKSB7XG4gICAgY2FzZSBsZWZ0OiByZXR1cm4gcmlnaHRcbiAgICBjYXNlIHJpZ2h0OiByZXR1cm4gbGVmdFxuICAgIGNhc2UgdXA6IHJldHVybiBkb3duVG8oa2V5T2YoeikpXG4gICAgZGVmYXVsdDogcmV0dXJuIHVwXG4gIH1cbn1cblxuY29uc3QgdHJhbnNmb3JtTW92ZVUgPSAobW92ZSwgZiwgeikgPT5cbiAgcXVlcnlNb3ZlVShtb3ZlLCB6LCB4ID0+IHF1ZXJ5TW92ZVUoYndkKG1vdmUsIHopLCB6LCBpZCwgZih4KSksIHopXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtTW92ZSA9IGN1cnJ5KHRyYW5zZm9ybU1vdmVVKVxuXG5jb25zdCBldmVyeXdoZXJlRyA9IGYgPT4geiA9PlxuICB0cmFuc2Zvcm1Nb3ZlVShyaWdodCwgZXZlcnl3aGVyZUcoZiksIGV2ZXJ5d2hlcmVVKGYsIHopKVxuY29uc3QgZXZlcnl3aGVyZVUgPSAoZiwgeikgPT5cbiAgbW9kaWZ5VShmLCB0cmFuc2Zvcm1Nb3ZlVShkb3duSGVhZCwgZXZlcnl3aGVyZUcoZiksIHopKVxuZXhwb3J0IGNvbnN0IGV2ZXJ5d2hlcmUgPSBjdXJyeShldmVyeXdoZXJlVSlcblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhPZih6KSB7XG4gIGNvbnN0IHBhdGggPSBbXVxuICB3aGlsZSAoeiAmJiBpc0RlZmluZWQoei5rZXkpKSB7XG4gICAgcGF0aC51bnNoaWZ0KHoua2V5KVxuICAgIHogPSB6LnVwXG4gIH1cbiAgcmV0dXJuIHBhdGhcbn1cbiJdfQ== |
| (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.F = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | ||
| "use strict";function firstKey(e){for(var r in e)return r}function lastKey(e){var r=void 0;for(var t in e)r=t;return r}function reverse(e){for(var r=null;e;)r=3===e.length?[r,e[1],e[2]]:[r,e[1]],e=e[0];return r}function intoObject(e,r){for(;e;)r[e[2]]=e[1],e=e[0]}function fromObject(e,r,t){var n=null,o=null,i=void 0;for(var s in e)(0,_infestines.isDefined)(i)?o=[o,e[s],s]:r===s?i=e[s]:n=[n,e[s],s];return zipper(n,i,r,reverse(o),t)}function intoArray(e,r){for(;e;)r.push(e[1]),e=e[0]}function fromArray(e,r,t){for(var n=null,o=null,i=0;i<r;++i)n=[n,e[i]];for(var s=e.length-1;r<s;--s)o=[o,e[s]];return zipper(n,e[r],r,o,t)}function up(e){var r=e.left,t=e.focus,n=e.key,o=e.right,i=e.up;switch(typeof n){case"number":var s=[];return intoArray(reverse(r),s),(0,_infestines.isDefined)(t)&&s.push(t),intoArray(o,s),(0,_infestines.assocPartialU)("focus",s,i);case"string":var f={};return intoObject(reverse(r),f),(0,_infestines.isDefined)(t)&&(f[n]=t),intoObject(o,f),(0,_infestines.assocPartialU)("focus",f,i)}}function downToU(e,r){var t=r.focus;return(0,_infestines.isObject)(t)&&isString(e)&&e in t?fromObject(t,e,(0,_infestines.dissocPartialU)("focus",r)):(0,_infestines.isArray)(t)&&isNumber(e)&&0<=e&&e<t.length?fromArray(t,e,(0,_infestines.dissocPartialU)("focus",r)):void 0}function downPathU(e,r){for(var t=0,n=e.length;r&&t<n;++t)r=downToU(e[t],r);return r}function head(e){var r=up(e);return r&&downHead(r)}function last(e){var r=up(e);return r&&downLast(r)}function fromZipper(e){var r=up(e);return r?fromZipper(r):get(e)}function queryMoveU(e,r,t,n){var o=e(n);return o?t(o):r}function bwd(e,r){switch(e){case left:return right;case right:return left;case up:return downTo(keyOf(r));default:return up}}function pathOf(e){for(var r=[];e&&(0,_infestines.isDefined)(e.key);)r.unshift(e.key),e=e.up;return r}Object.defineProperty(exports,"__esModule",{value:!0}),exports.everywhere=exports.transformMove=exports.queryMove=exports.toZipper=exports.right=exports.left=exports.downLast=exports.downHead=exports.downPath=exports.downTo=exports.modify=exports.set=exports.keyOf=exports.get=void 0,exports.up=up,exports.head=head,exports.last=last,exports.fromZipper=fromZipper,exports.pathOf=pathOf;var _infestines=require("infestines"),isString=function(e){return"string"==typeof e},isNumber=function(e){return"number"==typeof e},zipper=function(e,r,t,n,o){return(0,_infestines.isDefined)(o)?{left:e,focus:r,key:t,right:n,up:o}:{left:e,focus:r,key:t,right:n}},get=exports.get=function(e){return e.focus},keyOf=exports.keyOf=function(e){return e.key},setU=function(e,r){return(0,_infestines.assocPartialU)("focus",e,r)},set=exports.set=(0,_infestines.curry)(setU),modifyU=function(e,r){return setU(e(get(r)),r)},modify=exports.modify=(0,_infestines.curry)(modifyU),downTo=exports.downTo=(0,_infestines.curry)(downToU),downPath=exports.downPath=(0,_infestines.curry)(downPathU),downMost=function(e){return function(r){var t=r.focus;return(0,_infestines.isObject)(t)?downToU(e?firstKey(t):lastKey(t),r):(0,_infestines.isArray)(t)?downToU(e?0:t.length-1,r):void 0}},downHead=exports.downHead=downMost(!0),downLast=exports.downLast=downMost(!1),left=exports.left=function e(r){var e=r.left,t=r.focus,n=r.key,o=r.right,i=r.up;return e?isNumber(n)?zipper(e[0],e[1],n-1,[o,t],i):zipper(e[0],e[1],e[2],[o,t,n],i):void 0},right=exports.right=function e(r){var t=r.left,n=r.focus,o=r.key,e=r.right,i=r.up;return e?isNumber(o)?zipper([t,n],e[1],o+1,e[0],i):zipper([t,n,o],e[1],e[2],e[0],i):void 0},toZipper=exports.toZipper=function(e){return{focus:e}},queryMove=exports.queryMove=(0,_infestines.curry)(queryMoveU),transformMoveU=function(e,r,t){return queryMoveU(e,t,function(n){return queryMoveU(bwd(e,t),t,_infestines.id,r(n))},t)},transformMove=exports.transformMove=(0,_infestines.curry)(transformMoveU),everywhereG=function e(r){return function(t){return transformMoveU(right,e(r),everywhereU(r,t))}},everywhereU=function(e,r){return modifyU(e,transformMoveU(downHead,everywhereG(e),r))},everywhere=exports.everywhere=(0,_infestines.curry)(everywhereU); | ||
| },{"infestines":undefined}]},{},[1])(1) | ||
| }); |
Sorry, the diff of this file is not supported yet
+24
-8
@@ -6,3 +6,3 @@ "use strict"; | ||
| }); | ||
| exports.everywhere = exports.transformMove = exports.queryMove = exports.toZipper = exports.right = exports.left = exports.downLast = exports.downHead = exports.downTo = exports.modify = exports.set = exports.keyOf = exports.get = undefined; | ||
| exports.everywhere = exports.transformMove = exports.queryMove = exports.toZipper = exports.right = exports.left = exports.downLast = exports.downHead = exports.downPath = exports.downTo = exports.modify = exports.set = exports.keyOf = exports.get = undefined; | ||
| exports.up = up; | ||
@@ -12,2 +12,3 @@ exports.head = head; | ||
| exports.fromZipper = fromZipper; | ||
| exports.pathOf = pathOf; | ||
@@ -104,3 +105,3 @@ var _infestines = require("infestines"); | ||
| }; | ||
| var set = exports.set = (0, _infestines.curry2)(setU); | ||
| var set = exports.set = (0, _infestines.curry)(setU); | ||
@@ -110,3 +111,3 @@ var modifyU = function modifyU(f, z) { | ||
| }; | ||
| var modify = exports.modify = (0, _infestines.curry2)(modifyU); | ||
| var modify = exports.modify = (0, _infestines.curry)(modifyU); | ||
@@ -145,4 +146,10 @@ function up(_ref) { | ||
| } | ||
| var downTo = exports.downTo = (0, _infestines.curry)(downToU); | ||
| var downTo = exports.downTo = (0, _infestines.curry2)(downToU); | ||
| function downPathU(path, z) { | ||
| for (var i = 0, n = path.length; z && i < n; ++i) { | ||
| z = downToU(path[i], z); | ||
| }return z; | ||
| } | ||
| var downPath = exports.downPath = (0, _infestines.curry)(downPathU); | ||
@@ -196,3 +203,3 @@ var downMost = function downMost(head) { | ||
| } | ||
| var queryMove = exports.queryMove = (0, _infestines.curry4)(queryMoveU); | ||
| var queryMove = exports.queryMove = (0, _infestines.curry)(queryMoveU); | ||
@@ -217,3 +224,3 @@ function bwd(move, z) { | ||
| }; | ||
| var transformMove = exports.transformMove = (0, _infestines.curry3)(transformMoveU); | ||
| var transformMove = exports.transformMove = (0, _infestines.curry)(transformMoveU); | ||
@@ -228,3 +235,12 @@ var everywhereG = function everywhereG(f) { | ||
| }; | ||
| var everywhere = exports.everywhere = (0, _infestines.curry2)(everywhereU); | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9mYXN0ZW5lci5qcyJdLCJuYW1lcyI6WyJ1cCIsImhlYWQiLCJsYXN0IiwiZnJvbVppcHBlciIsImZpcnN0S2V5IiwibyIsImsiLCJsYXN0S2V5Iiwia2V5IiwiaXNTdHJpbmciLCJ4IiwiaXNOdW1iZXIiLCJyZXZlcnNlIiwiZnJvbSIsInRvIiwibGVuZ3RoIiwiemlwcGVyIiwibGVmdCIsImZvY3VzIiwicmlnaHQiLCJpbnRvT2JqZWN0IiwibGlzdCIsIm9iamVjdCIsImZyb21PYmplY3QiLCJpbnRvQXJyYXkiLCJhcnJheSIsInB1c2giLCJmcm9tQXJyYXkiLCJpIiwiZ2V0IiwieiIsImtleU9mIiwic2V0VSIsInNldCIsIm1vZGlmeVUiLCJmIiwibW9kaWZ5IiwiZG93blRvVSIsImRvd25UbyIsImRvd25Nb3N0IiwiZG93bkhlYWQiLCJkb3duTGFzdCIsInUiLCJ0b1ppcHBlciIsInF1ZXJ5TW92ZVUiLCJtb3ZlIiwiYiIsIm0iLCJxdWVyeU1vdmUiLCJid2QiLCJ0cmFuc2Zvcm1Nb3ZlVSIsInRyYW5zZm9ybU1vdmUiLCJldmVyeXdoZXJlRyIsImV2ZXJ5d2hlcmVVIiwiZXZlcnl3aGVyZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBb0dnQkEsRSxHQUFBQSxFO1FBd0RBQyxJLEdBQUFBLEk7UUFDQUMsSSxHQUFBQSxJO1FBSUFDLFUsR0FBQUEsVTs7QUFqS2hCOztBQVlBOztBQUVBLFNBQVNDLFFBQVQsQ0FBa0JDLENBQWxCLEVBQXFCO0FBQ25CLE9BQUssSUFBTUMsQ0FBWCxJQUFnQkQsQ0FBaEI7QUFDRSxXQUFPQyxDQUFQO0FBREY7QUFFRDs7QUFFRCxTQUFTQyxPQUFULENBQWlCRixDQUFqQixFQUFvQjtBQUNsQixNQUFJRyxZQUFKO0FBQ0EsT0FBSyxJQUFNRixDQUFYLElBQWdCRCxDQUFoQjtBQUNFRyxVQUFNRixDQUFOO0FBREYsR0FFQSxPQUFPRSxHQUFQO0FBQ0Q7O0FBRUQsSUFBTUMsV0FBVyxTQUFYQSxRQUFXO0FBQUEsU0FB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QUFtQmYsQ0FBbkIsRUFBc0I7QUFDcEIsVUFBUWUsSUFBUjtBQUNFLFNBQUs1QixJQUFMO0FBQVcsYUFBT0UsS0FBUDtBQUNYLFNBQUtBLEtBQUw7QUFBWSxhQUFPRixJQUFQO0FBQ1osU0FBS2pCLEVBQUw7QUFBUyxhQUFPc0MsT0FBT1AsTUFBTUQsQ0FBTixDQUFQLENBQVA7QUFDVDtBQUFTLGFBQU85QixFQUFQO0FBSlg7QUFNRDs7QUFFRCxJQUFNa0QsaUJBQWlCLFNBQWpCQSxjQUFpQixDQUFDTCxJQUFELEVBQU9WLENBQVAsRUFBVUwsQ0FBVjtBQUFBLFNBQ3JCYyxXQUFXQyxJQUFYLEVBQWlCZixDQUFqQixFQUFvQjtBQUFBLFdBQUtjLFdBQVdLLElBQUlKLElBQUosRUFBVWYsQ0FBVixDQUFYLEVBQXlCQSxDQUF6QixrQkFBZ0NLLEVBQUV6QixDQUFGLENBQWhDLENBQUw7QUFBQSxHQUFwQixFQUFnRW9CLENBQWhFLENBRHFCO0FBQUEsQ0FBdkI7QUFFTyxJQUFNcUIsd0NBQWdCLHdCQUFPRCxjQUFQLENBQXRCOztBQUVQLElBQU1FLGNBQWMsU0FBZEEsV0FBYztBQUFBLFNBQUs7QUFBQSxXQUN2QkYsZUFBZS9CLEtBQWYsRUFBc0JpQyxZQUFZakIsQ0FBWixDQUF0QixFQUFzQ2tCLFlBQVlsQixDQUFaLEVBQWVMLENBQWYsQ0FBdEMsQ0FEdUI7QUFBQSxHQUFMO0FBQUEsQ0FBcEI7QUFFQSxJQUFNdUIsY0FBYyxTQUFkQSxXQUFjLENBQUNsQixDQUFELEVBQUlMLENBQUo7QUFBQSxTQUNsQkksUUFBUUMsQ0FBUixFQUFXZSxlQUFlVixRQUFmLEVBQXlCWSxZQUFZakIsQ0FBWixDQUF6QixFQUF5Q0wsQ0FBekMsQ0FBWCxDQURrQjtBQUFBLENBQXBCO0FBRU8sSUFBTXdCLGtDQUFhLHdCQUFPRCxXQUFQLENBQW5CIiwiZmlsZSI6ImZhc3RlbmVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXNzb2NQYXJ0aWFsVSxcbiAgY3VycnkyLFxuICBjdXJyeTMsXG4gIGN1cnJ5NCxcbiAgZGlzc29jUGFydGlhbFUsXG4gIGlkLFxuICBpc0FycmF5LFxuICBpc0RlZmluZWQsXG4gIGlzT2JqZWN0XG59IGZyb20gXCJpbmZlc3RpbmVzXCJcblxuLy9cblxuZnVuY3Rpb24gZmlyc3RLZXkobykge1xuICBmb3IgKGNvbnN0IGsgaW4gbylcbiAgICByZXR1cm4ga1xufVxuXG5mdW5jdGlvbiBsYXN0S2V5KG8pIHtcbiAgbGV0IGtleVxuICBmb3IgKGNvbnN0IGsgaW4gbylcbiAgICBrZXkgPSBrXG4gIHJldHVybiBrZXlcbn1cblxuY29uc3QgaXNTdHJpbmcgPSB4ID0+IHR5cGVvZiB4ID09PSBcInN0cmluZ1wiXG5jb25zdCBpc051bWJlciA9IHggPT4gdHlwZW9mIHggPT09IFwibnVtYmVyXCJcblxuLy9cblxuZnVuY3Rpb24gcmV2ZXJzZShmcm9tKSB7XG4gIGxldCB0byA9IG51bGxcbiAgd2hpbGUgKGZyb20pIHtcbiAgICB0byA9IGZyb20ubGVuZ3RoID09PSAzID8gW3RvLCBmcm9tWzFdLCBmcm9tWzJdXSA6IFt0bywgZnJvbVsxXV1cbiAgICBmcm9tID0gZnJvbVswXVxuICB9XG4gIHJldHVybiB0b1xufVxuXG4vL1xuXG5jb25zdCB6aXBwZXIgPSAobGVmdCwgZm9jdXMsIGtleSwgcmlnaHQsIHVwKSA9PiBpc0RlZmluZWQodXApXG4gID8ge2xlZnQsIGZvY3VzLCBrZXksIHJpZ2h0LCB1cH1cbiAgOiB7bGVmdCwgZm9jdXMsIGtleSwgcmlnaHR9XG5cbi8vXG5cbmZ1bmN0aW9uIGludG9PYmplY3QobGlzdCwgb2JqZWN0KSB7XG4gIHdoaWxlIChsaXN0KSB7XG4gICAgb2JqZWN0W2xpc3RbMl1dID0gbGlzdFsxXVxuICAgIGxpc3QgPSBsaXN0WzBdXG4gIH1cbn1cblxuZnVuY3Rpb24gZnJvbU9iamVjdChvYmplY3QsIGtleSwgdXApIHtcbiAgbGV0IGxlZnQgPSBudWxsXG4gIGxldCByaWdodCA9IG51bGxcbiAgbGV0IGZvY3VzXG4gIGZvciAoY29uc3QgayBpbiBvYmplY3QpXG4gICAgaWYgKGlzRGVmaW5lZChmb2N1cykpXG4gICAgICByaWdodCA9IFtyaWdodCwgb2JqZWN0W2tdLCBrXVxuICAgIGVsc2VcbiAgICAgIGlmIChrZXkgPT09IGspXG4gICAgICAgIGZvY3VzID0gb2JqZWN0W2tdXG4gICAgICBlbHNlXG4gICAgICAgIGxlZnQgPSBbbGVmdCwgb2JqZWN0W2tdLCBrXVxuICByZXR1cm4gemlwcGVyKGxlZnQsIGZvY3VzLCBrZXksIHJldmVyc2UocmlnaHQpLCB1cClcbn1cblxuLy9cblxuZnVuY3Rpb24gaW50b0FycmF5KGxpc3QsIGFycmF5KSB7XG4gIHdoaWxlIChsaXN0KSB7XG4gICAgYXJyYXkucHVzaChsaXN0WzFdKVxuICAgIGxpc3QgPSBsaXN0WzBdXG4gIH1cbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5KGFycmF5LCBrZXksIHVwKSB7XG4gIGxldCBsZWZ0ID0gbnVsbFxuICBsZXQgcmlnaHQgPSBudWxsXG4gIGZvciAobGV0IGk9MDsgaTxrZXk7ICsraSlcbiAgICBsZWZ0ID0gW2xlZnQsIGFycmF5W2ldXVxuICBmb3IgKGxldCBpPWFycmF5Lmxlbmd0aC0xOyBrZXkgPCBpOyAtLWkpXG4gICAgcmlnaHQgPSBbcmlnaHQsIGFycmF5W2ldXVxuICByZXR1cm4gemlwcGVyKGxlZnQsIGFycmF5W2tleV0sIGtleSwgcmlnaHQsIHVwKVxufVxuXG4vL1xuXG5leHBvcnQgY29uc3QgZ2V0ID0geiA9PiB6LmZvY3VzXG5leHBvcnQgY29uc3Qga2V5T2YgPSB6ID0+IHoua2V5XG5cbmNvbnN0IHNldFUgPSAoZm9jdXMsIHopID0+IGFzc29jUGFydGlhbFUoXCJmb2N1c1wiLCBmb2N1cywgeilcbmV4cG9ydCBjb25zdCBzZXQgPSBjdXJyeTIoc2V0VSlcblxuY29uc3QgbW9kaWZ5VSA9IChmLCB6KSA9PiBzZXRVKGYoZ2V0KHopKSwgeilcbmV4cG9ydCBjb25zdCBtb2RpZnkgPSBjdXJyeTIobW9kaWZ5VSlcblxuZXhwb3J0IGZ1bmN0aW9uIHVwKHtsZWZ0LCBmb2N1cywga2V5LCByaWdodCwgdXB9KSB7XG4gIHN3aXRjaCAodHlwZW9mIGtleSkge1xuICAgIGNhc2UgXCJudW1iZXJcIjoge1xuICAgICAgY29uc3QgYXJyYXkgPSBbXVxuICAgICAgaW50b0FycmF5KHJldmVyc2UobGVmdCksIGFycmF5KVxuICAgICAgaWYgKGlzRGVmaW5lZChmb2N1cykpXG4gICAgICAgIGFycmF5LnB1c2goZm9jdXMpXG4gICAgICBpbnRvQXJyYXkocmlnaHQsIGFycmF5KVxuICAgICAgcmV0dXJuIGFzc29jUGFydGlhbFUoXCJmb2N1c1wiLCBhcnJheSwgdXApXG4gICAgfVxuICAgIGNhc2UgXCJzdHJpbmdcIjoge1xuICAgICAgY29uc3Qgb2JqZWN0ID0ge31cbiAgICAgIGludG9PYmplY3QocmV2ZXJzZShsZWZ0KSwgb2JqZWN0KVxuICAgICAgaWYgKGlzRGVmaW5lZChmb2N1cykpXG4gICAgICAgIG9iamVjdFtrZXldID0gZm9jdXNcbiAgICAgIGludG9PYmplY3QocmlnaHQsIG9iamVjdClcbiAgICAgIHJldHVybiBhc3NvY1BhcnRpYWxVKFwiZm9jdXNcIiwgb2JqZWN0LCB1cClcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZG93blRvVShrZXksIHopIHtcbiAgY29uc3QgZm9jdXMgPSB6LmZvY3VzXG4gIGlmIChpc09iamVjdChmb2N1cykgJiYgaXNTdHJpbmcoa2V5KSAmJiBrZXkgaW4gZm9jdXMpXG4gICAgcmV0dXJuIGZyb21PYmplY3QoZm9jdXMsIGtleSwgZGlzc29jUGFydGlhbFUoXCJmb2N1c1wiLCB6KSlcbiAgaWYgKGlzQXJyYXkoZm9jdXMpICYmIGlzTnVtYmVyKGtleSkgJiYgMCA8PSBrZXkgJiYga2V5IDwgZm9jdXMubGVuZ3RoKVxuICAgIHJldHVybiBmcm9tQXJyYXkoZm9jdXMsIGtleSwgZGlzc29jUGFydGlhbFUoXCJmb2N1c1wiLCB6KSlcbn1cblxuZXhwb3J0IGNvbnN0IGRvd25UbyA9IGN1cnJ5Mihkb3duVG9VKVxuXG5jb25zdCBkb3duTW9zdCA9IGhlYWQgPT4geiA9PiB7XG4gIGNvbnN0IGZvY3VzID0gei5mb2N1c1xuICBpZiAoaXNPYmplY3QoZm9jdXMpKVxuICAgIHJldHVybiBkb3duVG9VKGhlYWQgPyBmaXJzdEtleShmb2N1cykgOiBsYXN0S2V5KGZvY3VzKSwgeilcbiAgaWYgKGlzQXJyYXkoZm9jdXMpKVxuICAgIHJldHVybiBkb3duVG9VKGhlYWQgPyAwIDogZm9jdXMubGVuZ3RoLTEsIHopXG59XG5cbmV4cG9ydCBjb25zdCBkb3duSGVhZCA9IGRvd25Nb3N0KHRydWUpXG5leHBvcnQgY29uc3QgZG93bkxhc3QgPSBkb3duTW9zdChmYWxzZSlcblxuZXhwb3J0IGNvbnN0IGxlZnQgPSAoe2xlZnQsIGZvY3VzLCBrZXksIHJpZ2h0LCB1cH0pID0+XG4gIGxlZnRcbiAgPyBpc051bWJlcihrZXkpXG4gICAgPyB6aXBwZXIobGVmdFswXSwgbGVmdFsxXSwga2V5LTEsICAgW3JpZ2h0LCBmb2N1c10sIHVwKVxuICAgIDogemlwcGVyKGxlZnRbMF0sIGxlZnRbMV0sIGxlZnRbMl0sIFtyaWdodCwgZm9jdXMsIGtleV0sIHVwKVxuICA6IHZvaWQgMFxuXG5leHBvcnQgY29uc3QgcmlnaHQgPSAoe2xlZnQsIGZvY3VzLCBrZXksIHJpZ2h0LCB1cH0pID0+XG4gIHJpZ2h0XG4gID8gaXNOdW1iZXIoa2V5KVxuICAgID8gemlwcGVyKFtsZWZ0LCBmb2N1c10sICAgICAgcmlnaHRbMV0sIGtleSsxLCAgICByaWdodFswXSwgdXApXG4gICAgOiB6aXBwZXIoW2xlZnQsIGZvY3VzLCBrZXldLCByaWdodFsxXSwgcmlnaHRbMl0sIHJpZ2h0WzBdLCB1cClcbiAgOiB2b2lkIDBcblxuZXhwb3J0IGZ1bmN0aW9uIGhlYWQoeikge2NvbnN0IHUgPSB1cCh6KTsgcmV0dXJuIHUgJiYgZG93bkhlYWQodSl9XG5leHBvcnQgZnVuY3Rpb24gbGFzdCh6KSB7Y29uc3QgdSA9IHVwKHopOyByZXR1cm4gdSAmJiBkb3duTGFzdCh1KX1cblxuZXhwb3J0IGNvbnN0IHRvWmlwcGVyID0gZm9jdXMgPT4gKHtmb2N1c30pXG5cbmV4cG9ydCBmdW5jdGlvbiBmcm9tWmlwcGVyKHopIHtjb25zdCB1PXVwKHopOyByZXR1cm4gdSA/IGZyb21aaXBwZXIodSkgOiBnZXQoeil9XG5cbmZ1bmN0aW9uIHF1ZXJ5TW92ZVUobW92ZSwgYiwgZiwgeikge2NvbnN0IG0gPSBtb3ZlKHopOyByZXR1cm4gbSA/IGYobSkgOiBifVxuZXhwb3J0IGNvbnN0IHF1ZXJ5TW92ZSA9IGN1cnJ5NChxdWVyeU1vdmVVKVxuXG5mdW5jdGlvbiBid2QobW92ZSwgeikge1xuICBzd2l0Y2ggKG1vdmUpIHtcbiAgICBjYXNlIGxlZnQ6IHJldHVybiByaWdodFxuICAgIGNhc2UgcmlnaHQ6IHJldHVybiBsZWZ0XG4gICAgY2FzZSB1cDogcmV0dXJuIGRvd25UbyhrZXlPZih6KSlcbiAgICBkZWZhdWx0OiByZXR1cm4gdXBcbiAgfVxufVxuXG5jb25zdCB0cmFuc2Zvcm1Nb3ZlVSA9IChtb3ZlLCBmLCB6KSA9PlxuICBxdWVyeU1vdmVVKG1vdmUsIHosIHggPT4gcXVlcnlNb3ZlVShid2QobW92ZSwgeiksIHosIGlkLCBmKHgpKSwgeilcbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1Nb3ZlID0gY3VycnkzKHRyYW5zZm9ybU1vdmVVKVxuXG5jb25zdCBldmVyeXdoZXJlRyA9IGYgPT4geiA9PlxuICB0cmFuc2Zvcm1Nb3ZlVShyaWdodCwgZXZlcnl3aGVyZUcoZiksIGV2ZXJ5d2hlcmVVKGYsIHopKVxuY29uc3QgZXZlcnl3aGVyZVUgPSAoZiwgeikgPT5cbiAgbW9kaWZ5VShmLCB0cmFuc2Zvcm1Nb3ZlVShkb3duSGVhZCwgZXZlcnl3aGVyZUcoZiksIHopKVxuZXhwb3J0IGNvbnN0IGV2ZXJ5d2hlcmUgPSBjdXJyeTIoZXZlcnl3aGVyZVUpXG4iXX0= | ||
| var everywhere = exports.everywhere = (0, _infestines.curry)(everywhereU); | ||
| function pathOf(z) { | ||
| var path = []; | ||
| while (z && (0, _infestines.isDefined)(z.key)) { | ||
| path.unshift(z.key); | ||
| z = z.up; | ||
| } | ||
| return path; | ||
| } | ||
| //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9mYXN0ZW5lci5qcyJdLCJuYW1lcyI6WyJ1cCIsImhlYWQiLCJsYXN0IiwiZnJvbVppcHBlciIsInBhdGhPZiIsImZpcnN0S2V5IiwibyIsImsiLCJsYXN0S2V5Iiwia2V5IiwiaXNTdHJpbmciLCJ4IiwiaXNOdW1iZXIiLCJyZXZlcnNlIiwiZnJvbSIsInRvIiwibGVuZ3RoIiwiemlwcGVyIiwibGVmdCIsImZvY3VzIiwicmlnaHQiLCJpbnRvT2JqZWN0IiwibGlzdCIsIm9iamVjdCIsImZyb21PYmplY3QiLCJpbnRvQXJyYXkiLCJhcnJheSIsInB1c2giLCJmcm9tQXJyYXkiLCJpIiwiZ2V0IiwieiIsImtleU9mIiwic2V0VSIsInNldCIsIm1vZGlmeVUiLCJmIiwibW9kaWZ5IiwiZG93blRvVSIsImRvd25UbyIsImRvd25QYXRoVSIsInBhdGgiLCJuIiwiZG93blBhdGgiLCJkb3duTW9zdCIsImRvd25IZWFkIiwiZG93bkxhc3QiLCJ1IiwidG9aaXBwZXIiLCJxdWVyeU1vdmVVIiwibW92ZSIsImIiLCJtIiwicXVlcnlNb3ZlIiwiYndkIiwidHJhbnNmb3JtTW92ZVUiLCJ0cmFuc2Zvcm1Nb3ZlIiwiZXZlcnl3aGVyZUciLCJldmVyeXdoZXJlVSIsImV2ZXJ5d2hlcmUiLCJ1bnNoaWZ0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7UUFrR2dCQSxFLEdBQUFBLEU7UUE4REFDLEksR0FBQUEsSTtRQUNBQyxJLEdBQUFBLEk7UUFJQUMsVSxHQUFBQSxVO1FBd0JBQyxNLEdBQUFBLE07O0FBN0xoQjs7QUFVQTs7QUFFQSxTQUFTQyxRQUFULENBQWtCQyxDQUFsQixFQUFxQjtBQUNuQixPQUFLLElBQU1DLENBQVgsSUFBZ0JELENBQWhCO0FBQ0UsV0FBT0MsQ0FBUDtBQURGO0FBRUQ7O0FBRUQsU0FBU0MsT0FBVCxDQUFpQkYsQ0FBakIsRUFBb0I7QUFDbEIsTUFBSUcsWUFBSjtBQUNBLE9BQUssSUFBTUYsQ0FBWCxJQUFnQkQsQ0FBaEI7QUFDRUcsVUFB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c0IsWUFBWXRCLENBQVosRUFBZUwsQ0FBZixDQUF0QyxDQUR1QjtBQUFBLEdBQUw7QUFBQSxDQUFwQjtBQUVBLElBQU0yQixjQUFjLFNBQWRBLFdBQWMsQ0FBQ3RCLENBQUQsRUFBSUwsQ0FBSjtBQUFBLFNBQ2xCSSxRQUFRQyxDQUFSLEVBQVdtQixlQUFlVixRQUFmLEVBQXlCWSxZQUFZckIsQ0FBWixDQUF6QixFQUF5Q0wsQ0FBekMsQ0FBWCxDQURrQjtBQUFBLENBQXBCO0FBRU8sSUFBTTRCLGtDQUFhLHVCQUFNRCxXQUFOLENBQW5COztBQUVBLFNBQVN0RCxNQUFULENBQWdCMkIsQ0FBaEIsRUFBbUI7QUFDeEIsTUFBTVUsT0FBTyxFQUFiO0FBQ0EsU0FBT1YsS0FBSywyQkFBVUEsRUFBRXRCLEdBQVosQ0FBWixFQUE4QjtBQUM1QmdDLFNBQUttQixPQUFMLENBQWE3QixFQUFFdEIsR0FBZjtBQUNBc0IsUUFBSUEsRUFBRS9CLEVBQU47QUFDRDtBQUNELFNBQU95QyxJQUFQO0FBQ0QiLCJmaWxlIjoiZmFzdGVuZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhc3NvY1BhcnRpYWxVLFxuICBjdXJyeSxcbiAgZGlzc29jUGFydGlhbFUsXG4gIGlkLFxuICBpc0FycmF5LFxuICBpc0RlZmluZWQsXG4gIGlzT2JqZWN0XG59IGZyb20gXCJpbmZlc3RpbmVzXCJcblxuLy9cblxuZnVuY3Rpb24gZmlyc3RLZXkobykge1xuICBmb3IgKGNvbnN0IGsgaW4gbylcbiAgICByZXR1cm4ga1xufVxuXG5mdW5jdGlvbiBsYXN0S2V5KG8pIHtcbiAgbGV0IGtleVxuICBmb3IgKGNvbnN0IGsgaW4gbylcbiAgICBrZXkgPSBrXG4gIHJldHVybiBrZXlcbn1cblxuY29uc3QgaXNTdHJpbmcgPSB4ID0+IHR5cGVvZiB4ID09PSBcInN0cmluZ1wiXG5jb25zdCBpc051bWJlciA9IHggPT4gdHlwZW9mIHggPT09IFwibnVtYmVyXCJcblxuLy9cblxuZnVuY3Rpb24gcmV2ZXJzZShmcm9tKSB7XG4gIGxldCB0byA9IG51bGxcbiAgd2hpbGUgKGZyb20pIHtcbiAgICB0byA9IGZyb20ubGVuZ3RoID09PSAzID8gW3RvLCBmcm9tWzFdLCBmcm9tWzJdXSA6IFt0bywgZnJvbVsxXV1cbiAgICBmcm9tID0gZnJvbVswXVxuICB9XG4gIHJldHVybiB0b1xufVxuXG4vL1xuXG5jb25zdCB6aXBwZXIgPSAobGVmdCwgZm9jdXMsIGtleSwgcmlnaHQsIHVwKSA9PiBpc0RlZmluZWQodXApXG4gID8ge2xlZnQsIGZvY3VzLCBrZXksIHJpZ2h0LCB1cH1cbiAgOiB7bGVmdCwgZm9jdXMsIGtleSwgcmlnaHR9XG5cbi8vXG5cbmZ1bmN0aW9uIGludG9PYmplY3QobGlzdCwgb2JqZWN0KSB7XG4gIHdoaWxlIChsaXN0KSB7XG4gICAgb2JqZWN0W2xpc3RbMl1dID0gbGlzdFsxXVxuICAgIGxpc3QgPSBsaXN0WzBdXG4gIH1cbn1cblxuZnVuY3Rpb24gZnJvbU9iamVjdChvYmplY3QsIGtleSwgdXApIHtcbiAgbGV0IGxlZnQgPSBudWxsXG4gIGxldCByaWdodCA9IG51bGxcbiAgbGV0IGZvY3VzXG4gIGZvciAoY29uc3QgayBpbiBvYmplY3QpXG4gICAgaWYgKGlzRGVmaW5lZChmb2N1cykpXG4gICAgICByaWdodCA9IFtyaWdodCwgb2JqZWN0W2tdLCBrXVxuICAgIGVsc2VcbiAgICAgIGlmIChrZXkgPT09IGspXG4gICAgICAgIGZvY3VzID0gb2JqZWN0W2tdXG4gICAgICBlbHNlXG4gICAgICAgIGxlZnQgPSBbbGVmdCwgb2JqZWN0W2tdLCBrXVxuICByZXR1cm4gemlwcGVyKGxlZnQsIGZvY3VzLCBrZXksIHJldmVyc2UocmlnaHQpLCB1cClcbn1cblxuLy9cblxuZnVuY3Rpb24gaW50b0FycmF5KGxpc3QsIGFycmF5KSB7XG4gIHdoaWxlIChsaXN0KSB7XG4gICAgYXJyYXkucHVzaChsaXN0WzFdKVxuICAgIGxpc3QgPSBsaXN0WzBdXG4gIH1cbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5KGFycmF5LCBrZXksIHVwKSB7XG4gIGxldCBsZWZ0ID0gbnVsbFxuICBsZXQgcmlnaHQgPSBudWxsXG4gIGZvciAobGV0IGk9MDsgaTxrZXk7ICsraSlcbiAgICBsZWZ0ID0gW2xlZnQsIGFycmF5W2ldXVxuICBmb3IgKGxldCBpPWFycmF5Lmxlbmd0aC0xOyBrZXkgPCBpOyAtLWkpXG4gICAgcmlnaHQgPSBbcmlnaHQsIGFycmF5W2ldXVxuICByZXR1cm4gemlwcGVyKGxlZnQsIGFycmF5W2tleV0sIGtleSwgcmlnaHQsIHVwKVxufVxuXG4vL1xuXG5leHBvcnQgY29uc3QgZ2V0ID0geiA9PiB6LmZvY3VzXG5leHBvcnQgY29uc3Qga2V5T2YgPSB6ID0+IHoua2V5XG5cbmNvbnN0IHNldFUgPSAoZm9jdXMsIHopID0+IGFzc29jUGFydGlhbFUoXCJmb2N1c1wiLCBmb2N1cywgeilcbmV4cG9ydCBjb25zdCBzZXQgPSBjdXJyeShzZXRVKVxuXG5jb25zdCBtb2RpZnlVID0gKGYsIHopID0+IHNldFUoZihnZXQoeikpLCB6KVxuZXhwb3J0IGNvbnN0IG1vZGlmeSA9IGN1cnJ5KG1vZGlmeVUpXG5cbmV4cG9ydCBmdW5jdGlvbiB1cCh7bGVmdCwgZm9jdXMsIGtleSwgcmlnaHQsIHVwfSkge1xuICBzd2l0Y2ggKHR5cGVvZiBrZXkpIHtcbiAgICBjYXNlIFwibnVtYmVyXCI6IHtcbiAgICAgIGNvbnN0IGFycmF5ID0gW11cbiAgICAgIGludG9BcnJheShyZXZlcnNlKGxlZnQpLCBhcnJheSlcbiAgICAgIGlmIChpc0RlZmluZWQoZm9jdXMpKVxuICAgICAgICBhcnJheS5wdXNoKGZvY3VzKVxuICAgICAgaW50b0FycmF5KHJpZ2h0LCBhcnJheSlcbiAgICAgIHJldHVybiBhc3NvY1BhcnRpYWxVKFwiZm9jdXNcIiwgYXJyYXksIHVwKVxuICAgIH1cbiAgICBjYXNlIFwic3RyaW5nXCI6IHtcbiAgICAgIGNvbnN0IG9iamVjdCA9IHt9XG4gICAgICBpbnRvT2JqZWN0KHJldmVyc2UobGVmdCksIG9iamVjdClcbiAgICAgIGlmIChpc0RlZmluZWQoZm9jdXMpKVxuICAgICAgICBvYmplY3Rba2V5XSA9IGZvY3VzXG4gICAgICBpbnRvT2JqZWN0KHJpZ2h0LCBvYmplY3QpXG4gICAgICByZXR1cm4gYXNzb2NQYXJ0aWFsVShcImZvY3VzXCIsIG9iamVjdCwgdXApXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGRvd25Ub1Uoa2V5LCB6KSB7XG4gIGNvbnN0IGZvY3VzID0gei5mb2N1c1xuICBpZiAoaXNPYmplY3QoZm9jdXMpICYmIGlzU3RyaW5nKGtleSkgJiYga2V5IGluIGZvY3VzKVxuICAgIHJldHVybiBmcm9tT2JqZWN0KGZvY3VzLCBrZXksIGRpc3NvY1BhcnRpYWxVKFwiZm9jdXNcIiwgeikpXG4gIGlmIChpc0FycmF5KGZvY3VzKSAmJiBpc051bWJlcihrZXkpICYmIDAgPD0ga2V5ICYmIGtleSA8IGZvY3VzLmxlbmd0aClcbiAgICByZXR1cm4gZnJvbUFycmF5KGZvY3VzLCBrZXksIGRpc3NvY1BhcnRpYWxVKFwiZm9jdXNcIiwgeikpXG59XG5leHBvcnQgY29uc3QgZG93blRvID0gY3VycnkoZG93blRvVSlcblxuZnVuY3Rpb24gZG93blBhdGhVKHBhdGgsIHopIHtcbiAgZm9yIChsZXQgaT0wLCBuPXBhdGgubGVuZ3RoOyB6ICYmIGk8bjsgKytpKVxuICAgIHogPSBkb3duVG9VKHBhdGhbaV0sIHopXG4gIHJldHVybiB6XG59XG5leHBvcnQgY29uc3QgZG93blBhdGggPSBjdXJyeShkb3duUGF0aFUpXG5cbmNvbnN0IGRvd25Nb3N0ID0gaGVhZCA9PiB6ID0+IHtcbiAgY29uc3QgZm9jdXMgPSB6LmZvY3VzXG4gIGlmIChpc09iamVjdChmb2N1cykpXG4gICAgcmV0dXJuIGRvd25Ub1UoaGVhZCA/IGZpcnN0S2V5KGZvY3VzKSA6IGxhc3RLZXkoZm9jdXMpLCB6KVxuICBpZiAoaXNBcnJheShmb2N1cykpXG4gICAgcmV0dXJuIGRvd25Ub1UoaGVhZCA/IDAgOiBmb2N1cy5sZW5ndGgtMSwgeilcbn1cblxuZXhwb3J0IGNvbnN0IGRvd25IZWFkID0gZG93bk1vc3QodHJ1ZSlcbmV4cG9ydCBjb25zdCBkb3duTGFzdCA9IGRvd25Nb3N0KGZhbHNlKVxuXG5leHBvcnQgY29uc3QgbGVmdCA9ICh7bGVmdCwgZm9jdXMsIGtleSwgcmlnaHQsIHVwfSkgPT5cbiAgbGVmdFxuICA/IGlzTnVtYmVyKGtleSlcbiAgICA/IHppcHBlcihsZWZ0WzBdLCBsZWZ0WzFdLCBrZXktMSwgICBbcmlnaHQsIGZvY3VzXSwgdXApXG4gICAgOiB6aXBwZXIobGVmdFswXSwgbGVmdFsxXSwgbGVmdFsyXSwgW3JpZ2h0LCBmb2N1cywga2V5XSwgdXApXG4gIDogdm9pZCAwXG5cbmV4cG9ydCBjb25zdCByaWdodCA9ICh7bGVmdCwgZm9jdXMsIGtleSwgcmlnaHQsIHVwfSkgPT5cbiAgcmlnaHRcbiAgPyBpc051bWJlcihrZXkpXG4gICAgPyB6aXBwZXIoW2xlZnQsIGZvY3VzXSwgICAgICByaWdodFsxXSwga2V5KzEsICAgIHJpZ2h0WzBdLCB1cClcbiAgICA6IHppcHBlcihbbGVmdCwgZm9jdXMsIGtleV0sIHJpZ2h0WzFdLCByaWdodFsyXSwgcmlnaHRbMF0sIHVwKVxuICA6IHZvaWQgMFxuXG5leHBvcnQgZnVuY3Rpb24gaGVhZCh6KSB7Y29uc3QgdSA9IHVwKHopOyByZXR1cm4gdSAmJiBkb3duSGVhZCh1KX1cbmV4cG9ydCBmdW5jdGlvbiBsYXN0KHopIHtjb25zdCB1ID0gdXAoeik7IHJldHVybiB1ICYmIGRvd25MYXN0KHUpfVxuXG5leHBvcnQgY29uc3QgdG9aaXBwZXIgPSBmb2N1cyA9PiAoe2ZvY3VzfSlcblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21aaXBwZXIoeikge2NvbnN0IHU9dXAoeik7IHJldHVybiB1ID8gZnJvbVppcHBlcih1KSA6IGdldCh6KX1cblxuZnVuY3Rpb24gcXVlcnlNb3ZlVShtb3ZlLCBiLCBmLCB6KSB7Y29uc3QgbSA9IG1vdmUoeik7IHJldHVybiBtID8gZihtKSA6IGJ9XG5leHBvcnQgY29uc3QgcXVlcnlNb3ZlID0gY3VycnkocXVlcnlNb3ZlVSlcblxuZnVuY3Rpb24gYndkKG1vdmUsIHopIHtcbiAgc3dpdGNoIChtb3ZlKSB7XG4gICAgY2FzZSBsZWZ0OiByZXR1cm4gcmlnaHRcbiAgICBjYXNlIHJpZ2h0OiByZXR1cm4gbGVmdFxuICAgIGNhc2UgdXA6IHJldHVybiBkb3duVG8oa2V5T2YoeikpXG4gICAgZGVmYXVsdDogcmV0dXJuIHVwXG4gIH1cbn1cblxuY29uc3QgdHJhbnNmb3JtTW92ZVUgPSAobW92ZSwgZiwgeikgPT5cbiAgcXVlcnlNb3ZlVShtb3ZlLCB6LCB4ID0+IHF1ZXJ5TW92ZVUoYndkKG1vdmUsIHopLCB6LCBpZCwgZih4KSksIHopXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtTW92ZSA9IGN1cnJ5KHRyYW5zZm9ybU1vdmVVKVxuXG5jb25zdCBldmVyeXdoZXJlRyA9IGYgPT4geiA9PlxuICB0cmFuc2Zvcm1Nb3ZlVShyaWdodCwgZXZlcnl3aGVyZUcoZiksIGV2ZXJ5d2hlcmVVKGYsIHopKVxuY29uc3QgZXZlcnl3aGVyZVUgPSAoZiwgeikgPT5cbiAgbW9kaWZ5VShmLCB0cmFuc2Zvcm1Nb3ZlVShkb3duSGVhZCwgZXZlcnl3aGVyZUcoZiksIHopKVxuZXhwb3J0IGNvbnN0IGV2ZXJ5d2hlcmUgPSBjdXJyeShldmVyeXdoZXJlVSlcblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhPZih6KSB7XG4gIGNvbnN0IHBhdGggPSBbXVxuICB3aGlsZSAoeiAmJiBpc0RlZmluZWQoei5rZXkpKSB7XG4gICAgcGF0aC51bnNoaWZ0KHoua2V5KVxuICAgIHogPSB6LnVwXG4gIH1cbiAgcmV0dXJuIHBhdGhcbn1cbiJdfQ== |
+15
-8
| { | ||
| "name": "fastener", | ||
| "version": "2.0.0", | ||
| "version": "2.1.0", | ||
| "description": "Zipper for manipulating JSON", | ||
| "main": "lib/fastener.js", | ||
| "scripts": { | ||
| "bench": "NODE_ENV=production node bench/bench.js", | ||
| "dist": "babel src --source-maps inline --out-dir lib", | ||
| "bench": "NODE_ENV=production node --expose-gc bench/bench.js", | ||
| "dist": "npm run dist:bowerify & npm run dist:bowerify.min & npm run dist:commonjs & wait", | ||
| "dist:bowerify": " NODE_ENV=dev browserify src/fastener.js -t babelify --no-bundle-external -d -s F -g envify -o dist/fastener.js", | ||
| "dist:bowerify.min": "NODE_ENV=production browserify src/fastener.js -t babelify --no-bundle-external -s F -g envify -g uglifyify -o dist/fastener.min.js", | ||
| "dist:commonjs": "babel src --source-maps inline --out-dir lib", | ||
| "docs": "./scripts/generate-docs", | ||
@@ -13,2 +16,3 @@ "docs-bundle": "NODE_ENV=dev browserify -r ./lib/fastener:fastener -r ramda -r infestines -r babel-polyfill -g envify -g uglifyify > docs/bundle.js", | ||
| "prepublish": "npm run lint && npm run test && npm run dist", | ||
| "report-coverage": "nyc report --reporter=lcov > coverage.lcov && codecov", | ||
| "test": "nyc mocha" | ||
@@ -35,3 +39,3 @@ }, | ||
| "dependencies": { | ||
| "infestines": "^0.2.0" | ||
| "infestines": "^0.3.2" | ||
| }, | ||
@@ -62,12 +66,15 @@ "devDependencies": { | ||
| "babel-register": "^6.18.0", | ||
| "benchmark": "^2.1.2", | ||
| "browserify": "^13.1.1", | ||
| "babelify": "^7.3.0", | ||
| "benchmark": "^2.1.3", | ||
| "browserify": "^13.3.0", | ||
| "codecov": "^1.0.1", | ||
| "envify": "^4.0.0", | ||
| "eslint": "^3.12.2", | ||
| "eslint": "^3.13.0", | ||
| "marked": "^0.3.6", | ||
| "mocha": "^3.2.0", | ||
| "nyc": "^10.0.0", | ||
| "ramda": "^0.22.1", | ||
| "ramda": "^0.23.0", | ||
| "sprintf-js": "^1.0.3", | ||
| "uglifyify": "^3.0.4" | ||
| } | ||
| } |
+75
-52
@@ -9,3 +9,3 @@ [ [≡](#contents) | [Tutorial](#tutorial) | [Reference](#reference) | [Related Work](#related-work) | [GitHub](https://github.com/polytypic/fastener) | [Try Fastener!](https://polytypic.github.io/fastener/) ] | ||
| [](http://badge.fury.io/js/fastener) [](https://travis-ci.org/polytypic/fastener) [](https://david-dm.org/polytypic/fastener) [](https://david-dm.org/polytypic/fastener?type=dev) | ||
| [](http://badge.fury.io/js/fastener) [](https://travis-ci.org/polytypic/fastener) [](https://codecov.io/github/polytypic/fastener?branch=master) [](https://david-dm.org/polytypic/fastener) [](https://david-dm.org/polytypic/fastener?type=dev) | ||
@@ -17,25 +17,28 @@ ## Contents | ||
| * [Introduction and Elimination](#introduction-and-elimination) | ||
| * [`F.toZipper(json)`](#toZipper "toZipper :: JSON -> Zipper") | ||
| * [`F.fromZipper(zipper)`](#fromZipper "fromZipper :: Zipper -> JSON") | ||
| * [`F.toZipper(json)`](#F-toZipper "F.toZipper: JSON -> Zipper") | ||
| * [`F.fromZipper(zipper)`](#F-fromZipper "F.fromZipper: Zipper -> JSON") | ||
| * [Focus](#focus) | ||
| * [`F.get(zipper)`](#get "get :: Zipper -> JSON") | ||
| * [`F.modify(fn, zipper)`](#modify "modify :: (JSON -> JSON) -> Zipper -> Zipper") | ||
| * [`F.set(json, zipper)`](#set "set :: JSON -> Zipper -> Zipper") | ||
| * [`F.get(zipper)`](#F-get "F.get: Zipper -> JSON") | ||
| * [`F.modify(json => json, zipper)`](#F-modify "F.modify: (JSON -> JSON) -> Zipper -> Zipper") | ||
| * [`F.set(json, zipper)`](#F-set "F.set: JSON -> Zipper -> Zipper") | ||
| * [Movement](#movement) | ||
| * [Parent-Child movement](#parent-child-movement) | ||
| * [`F.downHead(zipper)`](#downHead "downHead :: Zipper -> Maybe Zipper") | ||
| * [`F.downLast(zipper)`](#downLast "downLast :: Zipper -> Maybe Zipper") | ||
| * [`F.downTo(key, zipper)`](#downTo "downTo :: (String|Number) -> Zipper -> Maybe Zipper") | ||
| * [`F.keyOf(zipper)`](#keyOf "keyOf :: Zipper -> Maybe (String|Number)") | ||
| * [`F.up(zipper)`](#up "up :: Zipper -> Maybe Zipper") | ||
| * [`F.downHead(zipper)`](#F-downHead "F.downHead: Zipper -> Maybe Zipper") | ||
| * [`F.downLast(zipper)`](#F-downLast "F.downLast: Zipper -> Maybe Zipper") | ||
| * [`F.downTo(key, zipper)`](#F-downTo "F.downTo: (String|Number) -> Zipper -> Maybe Zipper") | ||
| * [`F.keyOf(zipper)`](#F-keyOf "F.keyOf: Zipper -> Maybe (String|Number)") | ||
| * [`F.up(zipper)`](#F-up "F.up: Zipper -> Maybe Zipper") | ||
| * [Path movement](#path-movement) | ||
| * [`F.downPath([...keys], zipper)`](#F-downPath "F.downPath: [String|Number] -> Zipper -> Maybe Zipper") | ||
| * [`F.pathOf(zipper)`](#F-pathOf "F.pathOf: Zipper -> [String|Number]") | ||
| * [Sibling movement](#sibling-movement) | ||
| * [`F.head(zipper)`](#head "head :: Zipper -> Maybe Zipper") | ||
| * [`F.last(zipper)`](#last "last :: Zipper -> Maybe Zipper") | ||
| * [`F.left(zipper)`](#left "left :: Zipper -> Maybe Zipper") | ||
| * [`F.right(zipper)`](#right "right :: Zipper -> Maybe Zipper") | ||
| * [`F.head(zipper)`](#F-head "F.head: Zipper -> Maybe Zipper") | ||
| * [`F.last(zipper)`](#F-last "F.last: Zipper -> Maybe Zipper") | ||
| * [`F.left(zipper)`](#F-left "F.left: Zipper -> Maybe Zipper") | ||
| * [`F.right(zipper)`](#F-right "F.right: Zipper -> Maybe Zipper") | ||
| * [Queries](#queries) | ||
| * [`F.queryMove(move, default, fn, zipper)`](#queryMove "F.queryMove :: (Zipper -> Maybe Zipper) -> a -> (Zipper -> a) -> Zipper -> a") | ||
| * [`F.queryMove(zipper => maybeZipper, value, zipper => value, zipper)`](#F-queryMove "F.queryMove: (Zipper -> Maybe Zipper) -> a -> (Zipper -> a) -> Zipper -> a") | ||
| * [Transforms](#transforms) | ||
| * [`F.transformMove(move, fn, zipper)`](#transformMove "F.transformMove :: (downHead|downLast|downTo(key)|left|right|up) -> (Zipper -> Zipper) -> Zipper -> Zipper") | ||
| * [`F.everywhere(fn, zipper)`](#everywhere "F.everywhere :: (JSON -> JSON) -> Zipper -> Zipper") | ||
| * [`F.transformMove(move, zipper => zipper, zipper)`](#F-transformMove "F.transformMove: (F.downHead|F.downLast|F.downTo(key)|F.left|F.right|F.up) -> (Zipper -> Zipper) -> Zipper -> Zipper") | ||
| * [`F.everywhere(json => json, zipper)`](#F-everywhere "F.everywhere: (JSON -> JSON) -> Zipper -> Zipper") | ||
| * [Related Work](#related-work) | ||
@@ -68,3 +71,3 @@ | ||
| First we just create a zipper using [`F.toZipper`](#toZipper): | ||
| First we just create a zipper using [`F.toZipper`](#F-toZipper): | ||
@@ -76,9 +79,10 @@ ```js | ||
| As can be seen, the zipper is just a simple JSON object and the `focus` is the | ||
| `data` object that we gave to [`F.toZipper`](#toZipper). However, you should | ||
| use the zipper combinators to operate on zippers rather than rely on their exact | ||
| format. | ||
| As can be seen, **_the zipper is just a simple JSON object_** and the `focus` is | ||
| the `data` object that we gave to [`F.toZipper`](#F-toZipper). As long the data | ||
| structure being manipulated is JSON, you can serialize and deserialize zippers | ||
| as JSON. However, it is recommended that you use the zipper combinators to | ||
| operate on zippers rather than rely on their exact format. | ||
| Let's then move into the `contents` property of the object using | ||
| [`F.downTo`](#downTo): | ||
| [`F.downTo`](#F-downTo): | ||
@@ -97,3 +101,3 @@ ```js | ||
| As seen above, the `focus` now has the `contents` array. We can use | ||
| [`F.get`](#get) to extract the value under focus: | ||
| [`F.get`](#F-get) to extract the value under focus: | ||
@@ -110,3 +114,3 @@ | ||
| Then we move into the first element of `contents` using | ||
| [`F.downHead`](#downHead): | ||
| [`F.downHead`](#F-downHead): | ||
@@ -142,3 +146,3 @@ ```js | ||
| And to the next property, `title`, using [`F.right`](#right): | ||
| And to the next property, `title`, using [`F.right`](#F-right): | ||
@@ -162,3 +166,3 @@ ```js | ||
| Let's then use [`F.modify`](#modify) to modify the `title`: | ||
| Let's then use [`F.modify`](#F-modify) to modify the `title`: | ||
@@ -183,3 +187,3 @@ ```js | ||
| When we now move outwards using [`F.up`](#up) we can see the changed title | ||
| When we now move outwards using [`F.up`](#F-up) we can see the changed title | ||
| become part of the data: | ||
@@ -203,3 +207,3 @@ | ||
| We can also just move back to the root and get the updated data structure using | ||
| [`F.fromZipper`](#fromZipper): | ||
| [`F.fromZipper`](#F-fromZipper): | ||
@@ -232,3 +236,3 @@ ```js | ||
| Like all the basic zipper movement combinators, [`F.downTo`](#downTo) is a | ||
| Like all the basic zipper movement combinators, [`F.downTo`](#F-downTo) is a | ||
| *partial function* that returns `undefined` in case the index is out of bounds. | ||
@@ -295,3 +299,3 @@ Let's define a simple function to compose partial functions: | ||
| #### <a name="toZipper"></a> [≡](#contents) [`F.toZipper(json)`](#toZipper "toZipper :: JSON -> Zipper") | ||
| #### <a name="F-toZipper"></a> [≡](#contents) [`F.toZipper(json)`](#F-toZipper "F.toZipper: JSON -> Zipper") | ||
@@ -311,3 +315,3 @@ `F.toZipper(json)` creates a new zipper that is focused on the root of the given | ||
| #### <a name="fromZipper"></a> [≡](#contents) [`F.fromZipper(zipper)`](#fromZipper "fromZipper :: Zipper -> JSON") | ||
| #### <a name="F-fromZipper"></a> [≡](#contents) [`F.fromZipper(zipper)`](#F-fromZipper "F.fromZipper: Zipper -> JSON") | ||
@@ -331,3 +335,3 @@ `F.fromZipper(zipper)` extracts the modified JSON object from the given zipper. | ||
| #### <a name="get"></a> [≡](#contents) [`F.get(zipper)`](#get "get :: Zipper -> JSON") | ||
| #### <a name="F-get"></a> [≡](#contents) [`F.get(zipper)`](#F-get "F.get: Zipper -> JSON") | ||
@@ -349,3 +353,3 @@ `F.get(zipper)` returns the element that the zipper is focused on. | ||
| #### <a name="modify"></a> [≡](#contents) [`F.modify(fn, zipper)`](#modify "modify :: (JSON -> JSON) -> Zipper -> Zipper") | ||
| #### <a name="F-modify"></a> [≡](#contents) [`F.modify(json => json, zipper)`](#F-modify "F.modify: (JSON -> JSON) -> Zipper -> Zipper") | ||
@@ -366,3 +370,3 @@ `F.modify(fn, zipper)` is equivalent to `F.set(fn(F.get(zipper)), zipper)` and | ||
| #### <a name="set"></a> [≡](#contents) [`F.set(json, zipper)`](#set "set :: JSON -> Zipper -> Zipper") | ||
| #### <a name="F-set"></a> [≡](#contents) [`F.set(json, zipper)`](#F-set "F.set: JSON -> Zipper -> Zipper") | ||
@@ -392,3 +396,3 @@ `F.set(json, zipper)` replaces the element that the zipper is focused on with | ||
| ##### <a name="downHead"></a> [≡](#contents) [`F.downHead(zipper)`](#downHead "downHead :: Zipper -> Maybe Zipper") | ||
| ##### <a name="F-downHead"></a> [≡](#contents) [`F.downHead(zipper)`](#F-downHead "F.downHead: Zipper -> Maybe Zipper") | ||
@@ -398,3 +402,3 @@ `F.downHead(zipper)` moves the focus to the leftmost element of the object or | ||
| ##### <a name="downLast"></a> [≡](#contents) [`F.downLast(zipper)`](#downLast "downLast :: Zipper -> Maybe Zipper") | ||
| ##### <a name="F-downLast"></a> [≡](#contents) [`F.downLast(zipper)`](#F-downLast "F.downLast: Zipper -> Maybe Zipper") | ||
@@ -404,3 +408,3 @@ `F.downLast(zipper)` moves the focus to the rightmost element of the object or | ||
| ##### <a name="downTo"></a> [≡](#contents) [`F.downTo(key, zipper)`](#downTo "downTo :: (String|Number) -> Zipper -> Maybe Zipper") | ||
| ##### <a name="F-downTo"></a> [≡](#contents) [`F.downTo(key, zipper)`](#F-downTo "F.downTo: (String|Number) -> Zipper -> Maybe Zipper") | ||
@@ -410,3 +414,3 @@ `F.downTo(key, zipper)` moves the focus to the specified object property or | ||
| ##### <a name="keyOf"></a> [≡](#contents) [`F.keyOf(zipper)`](#keyOf "keyOf :: Zipper -> Maybe (String|Number)") | ||
| ##### <a name="F-keyOf"></a> [≡](#contents) [`F.keyOf(zipper)`](#F-keyOf "F.keyOf: Zipper -> Maybe (String|Number)") | ||
@@ -416,3 +420,3 @@ `F.keyOf(zipper)` returns the object property name or the array index that the | ||
| ##### <a name="up"></a> [≡](#contents) [`F.up(zipper)`](#up "up :: Zipper -> Maybe Zipper") | ||
| ##### <a name="F-up"></a> [≡](#contents) [`F.up(zipper)`](#F-up "F.up: Zipper -> Maybe Zipper") | ||
@@ -422,2 +426,16 @@ `F.up(zipper)` moves the focus from an array element or object property to the | ||
| #### Path movement | ||
| Path movement is moving the focus along a path from a parent object or array to | ||
| a nested child element. | ||
| ##### <a name="F-downPath"></a> [≡](#contents) [`F.downPath([...keys], zipper)`](#F-downPath "F.downPath: [String|Number] -> Zipper -> Maybe Zipper") | ||
| `F.downPath(path, zipper)` moves the focus along the specified path of keys. | ||
| ##### <a name="F-pathOf"></a> [≡](#contents) [`F.pathOf(zipper)`](#F-pathOf "F.pathOf: Zipper -> [String|Number]") | ||
| `F.pathOf(zipper)` returns the path from the root to the current element focused | ||
| on by the zipper. | ||
| #### Sibling movement | ||
@@ -427,15 +445,15 @@ | ||
| ##### <a name="head"></a> [≡](#contents) [`F.head(zipper)`](#head "head :: Zipper -> Maybe Zipper") | ||
| ##### <a name="F-head"></a> [≡](#contents) [`F.head(zipper)`](#F-head "F.head: Zipper -> Maybe Zipper") | ||
| `F.head(zipper)` moves the focus to the leftmost sibling of the current focus. | ||
| ##### <a name="last"></a> [≡](#contents) [`F.last(zipper)`](#last "last :: Zipper -> Maybe Zipper") | ||
| ##### <a name="F-last"></a> [≡](#contents) [`F.last(zipper)`](#F-last "F.last: Zipper -> Maybe Zipper") | ||
| `F.last(zipper)` moves the focus to the rightmost sibling of the current focus. | ||
| ##### <a name="left"></a> [≡](#contents) [`F.left(zipper)`](#left "left :: Zipper -> Maybe Zipper") | ||
| ##### <a name="F-left"></a> [≡](#contents) [`F.left(zipper)`](#F-left "F.left: Zipper -> Maybe Zipper") | ||
| `F.left(zipper)` moves the focus to the element on the left of the current focus. | ||
| ##### <a name="right"></a> [≡](#contents) [`F.right(zipper)`](#right "right :: Zipper -> Maybe Zipper") | ||
| ##### <a name="F-right"></a> [≡](#contents) [`F.right(zipper)`](#F-right "F.right: Zipper -> Maybe Zipper") | ||
@@ -446,3 +464,3 @@ `F.right(zipper)` moves the focus to the element on the right of the current focus. | ||
| #### <a name="queryMove"></a> [≡](#contents) [`F.queryMove(move, default, fn, zipper)`](#queryMove "F.queryMove :: (Zipper -> Maybe Zipper) -> a -> (Zipper -> a) -> Zipper -> a") | ||
| #### <a name="F-queryMove"></a> [≡](#contents) [`F.queryMove(zipper => maybeZipper, value, zipper => value, zipper)`](#F-queryMove "F.queryMove: (Zipper -> Maybe Zipper) -> a -> (Zipper -> a) -> Zipper -> a") | ||
@@ -468,9 +486,14 @@ `F.queryMove(move, default, fn, zipper)` applies the given function `fn` to the | ||
| #### <a name="transformMove"></a> [≡](#contents) [`F.transformMove(move, fn, zipper)`](#transformMove "F.transformMove :: (downHead|downLast|downTo(key)|left|right|up) -> (Zipper -> Zipper) -> Zipper -> Zipper") | ||
| #### <a name="F-transformMove"></a> [≡](#contents) [`F.transformMove(move, zipper => zipper, zipper)`](#F-transformMove "F.transformMove: (F.downHead|F.downLast|F.downTo(key)|F.left|F.right|F.up) -> (Zipper -> Zipper) -> Zipper -> Zipper") | ||
| `F.transformMove(move, fn, zipper)` applies the given function to the zipper | ||
| focused on after the given movement. The function must the return a zipper | ||
| focused on the same element that it was given. Then the focus is moved back to | ||
| the element that the zipper was originally focused on. Nothing is done in case | ||
| of an illegal move. | ||
| focused on after the given movement. The movement `move` must be one | ||
| of | ||
| [`F.downHead`](#F-downHead), | ||
| [`F.downLast`](#F-downLast), | ||
| [`F.downTo(key)`](#F-downTo), [`F.left`](#F-left), [`F.right`](#F-right), | ||
| or [`F.up`](#F-up). The function `fn` must the return a zipper focused on the | ||
| same element that it was given. Then the focus is moved back to the element | ||
| that the zipper was originally focused on. Nothing is done in case of an | ||
| illegal move. | ||
@@ -492,3 +515,3 @@ For example: | ||
| #### <a name="everywhere"></a> [≡](#contents) [`F.everywhere(fn, zipper)`](#everywhere "F.everywhere :: (JSON -> JSON) -> Zipper -> Zipper") | ||
| #### <a name="F-everywhere"></a> [≡](#contents) [`F.everywhere(json => json, zipper)`](#F-everywhere "F.everywhere: (JSON -> JSON) -> Zipper -> Zipper") | ||
@@ -495,0 +518,0 @@ `F.everywhere(fn, zipper)` performs a transform of the focused element by |
+22
-9
| import { | ||
| assocPartialU, | ||
| curry2, | ||
| curry3, | ||
| curry4, | ||
| curry, | ||
| dissocPartialU, | ||
@@ -96,6 +94,6 @@ id, | ||
| const setU = (focus, z) => assocPartialU("focus", focus, z) | ||
| export const set = curry2(setU) | ||
| export const set = curry(setU) | ||
| const modifyU = (f, z) => setU(f(get(z)), z) | ||
| export const modify = curry2(modifyU) | ||
| export const modify = curry(modifyU) | ||
@@ -130,4 +128,10 @@ export function up({left, focus, key, right, up}) { | ||
| } | ||
| export const downTo = curry(downToU) | ||
| export const downTo = curry2(downToU) | ||
| function downPathU(path, z) { | ||
| for (let i=0, n=path.length; z && i<n; ++i) | ||
| z = downToU(path[i], z) | ||
| return z | ||
| } | ||
| export const downPath = curry(downPathU) | ||
@@ -167,3 +171,3 @@ const downMost = head => z => { | ||
| function queryMoveU(move, b, f, z) {const m = move(z); return m ? f(m) : b} | ||
| export const queryMove = curry4(queryMoveU) | ||
| export const queryMove = curry(queryMoveU) | ||
@@ -181,3 +185,3 @@ function bwd(move, z) { | ||
| queryMoveU(move, z, x => queryMoveU(bwd(move, z), z, id, f(x)), z) | ||
| export const transformMove = curry3(transformMoveU) | ||
| export const transformMove = curry(transformMoveU) | ||
@@ -188,2 +192,11 @@ const everywhereG = f => z => | ||
| modifyU(f, transformMoveU(downHead, everywhereG(f), z)) | ||
| export const everywhere = curry2(everywhereU) | ||
| export const everywhere = curry(everywhereU) | ||
| export function pathOf(z) { | ||
| const path = [] | ||
| while (z && isDefined(z.key)) { | ||
| path.unshift(z.key) | ||
| z = z.up | ||
| } | ||
| return path | ||
| } |
-20
| { | ||
| "parser": "babel-eslint", | ||
| "extends": "eslint:recommended", | ||
| "rules": { | ||
| "arrow-parens": [2, "as-needed"], | ||
| "no-console": 0, | ||
| "no-const-assign": 2, | ||
| "no-sparse-arrays": 0, | ||
| "no-unneeded-ternary": 2, | ||
| "no-var": 2, | ||
| "prefer-arrow-callback": 2, | ||
| "semi": [2, "never"] | ||
| }, | ||
| "env": { | ||
| "browser": true, | ||
| "es6": true, | ||
| "mocha": true, | ||
| "node": true | ||
| } | ||
| } |
| {"/Users/vesakarv/Projects/js/fastener/src/fastener.js":{"path":"/Users/vesakarv/Projects/js/fastener/src/fastener.js","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":5,"column":3}},"1":{"start":{"line":6,"column":0},"end":{"line":6,"column":241}},"2":{"start":{"line":7,"column":0},"end":{"line":7,"column":16}},"3":{"start":{"line":8,"column":0},"end":{"line":8,"column":20}},"4":{"start":{"line":9,"column":0},"end":{"line":9,"column":20}},"5":{"start":{"line":10,"column":0},"end":{"line":10,"column":32}},"6":{"start":{"line":12,"column":18},"end":{"line":12,"column":39}},"7":{"start":{"line":17,"column":2},"end":{"line":19,"column":3}},"8":{"start":{"line":18,"column":4},"end":{"line":18,"column":13}},"9":{"start":{"line":23,"column":12},"end":{"line":23,"column":18}},"10":{"start":{"line":24,"column":2},"end":{"line":26,"column":3}},"11":{"start":{"line":25,"column":4},"end":{"line":25,"column":12}},"12":{"start":{"line":26,"column":3},"end":{"line":26,"column":14}},"13":{"start":{"line":29,"column":15},"end":{"line":31,"column":1}},"14":{"start":{"line":30,"column":2},"end":{"line":30,"column":31}},"15":{"start":{"line":32,"column":15},"end":{"line":34,"column":1}},"16":{"start":{"line":33,"column":2},"end":{"line":33,"column":31}},"17":{"start":{"line":39,"column":11},"end":{"line":39,"column":15}},"18":{"start":{"line":40,"column":2},"end":{"line":43,"column":3}},"19":{"start":{"line":41,"column":4},"end":{"line":41,"column":68}},"20":{"start":{"line":42,"column":4},"end":{"line":42,"column":19}},"21":{"start":{"line":44,"column":2},"end":{"line":44,"column":12}},"22":{"start":{"line":49,"column":13},"end":{"line":51,"column":1}},"23":{"start":{"line":50,"column":2},"end":{"line":50,"column":158}},"24":{"start":{"line":56,"column":2},"end":{"line":59,"column":3}},"25":{"start":{"line":57,"column":4},"end":{"line":57,"column":30}},"26":{"start":{"line":58,"column":4},"end":{"line":58,"column":19}},"27":{"start":{"line":63,"column":13},"end":{"line":63,"column":17}},"28":{"start":{"line":64,"column":14},"end":{"line":64,"column":18}},"29":{"start":{"line":65,"column":14},"end":{"line":65,"column":20}},"30":{"start":{"line":66,"column":2},"end":{"line":68,"column":3}},"31":{"start":{"line":67,"column":4},"end":{"line":67,"column":144}},"32":{"start":{"line":67,"column":43},"end":{"line":67,"column":73}},"33":{"start":{"line":67,"column":78},"end":{"line":67,"column":144}},"34":{"start":{"line":67,"column":93},"end":{"line":67,"column":111}},"35":{"start":{"line":67,"column":116},"end":{"line":67,"column":144}},"36":{"start":{"line":68,"column":3},"end":{"line":68,"column":55}},"37":{"start":{"line":74,"column":2},"end":{"line":77,"column":3}},"38":{"start":{"line":75,"column":4},"end":{"line":75,"column":24}},"39":{"start":{"line":76,"column":4},"end":{"line":76,"column":19}},"40":{"start":{"line":81,"column":13},"end":{"line":81,"column":17}},"41":{"start":{"line":82,"column":14},"end":{"line":82,"column":18}},"42":{"start":{"line":83,"column":2},"end":{"line":85,"column":3}},"43":{"start":{"line":84,"column":4},"end":{"line":84,"column":28}},"44":{"start":{"line":85,"column":3},"end":{"line":87,"column":3}},"45":{"start":{"line":86,"column":4},"end":{"line":86,"column":31}},"46":{"start":{"line":87,"column":3},"end":{"line":87,"column":51}},"47":{"start":{"line":92,"column":10},"end":{"line":94,"column":1}},"48":{"start":{"line":93,"column":2},"end":{"line":93,"column":17}},"49":{"start":{"line":95,"column":12},"end":{"line":97,"column":1}},"50":{"start":{"line":96,"column":2},"end":{"line":96,"column":15}},"51":{"start":{"line":99,"column":11},"end":{"line":101,"column":1}},"52":{"start":{"line":100,"column":2},"end":{"line":100,"column":59}},"53":{"start":{"line":102,"column":10},"end":{"line":102,"column":53}},"54":{"start":{"line":104,"column":14},"end":{"line":106,"column":1}},"55":{"start":{"line":105,"column":2},"end":{"line":105,"column":28}},"56":{"start":{"line":107,"column":13},"end":{"line":107,"column":62}},"57":{"start":{"line":110,"column":13},"end":{"line":110,"column":22}},"58":{"start":{"line":111,"column":14},"end":{"line":111,"column":24}},"59":{"start":{"line":112,"column":12},"end":{"line":112,"column":20}},"60":{"start":{"line":113,"column":14},"end":{"line":113,"column":24}},"61":{"start":{"line":114,"column":11},"end":{"line":114,"column":18}},"62":{"start":{"line":116,"column":2},"end":{"line":133,"column":3}},"63":{"start":{"line":119,"column":20},"end":{"line":119,"column":22}},"64":{"start":{"line":120,"column":8},"end":{"line":120,"column":40}},"65":{"start":{"line":121,"column":8},"end":{"line":121,"column":65}},"66":{"start":{"line":121,"column":47},"end":{"line":121,"column":65}},"67":{"start":{"line":122,"column":8},"end":{"line":122,"column":32}},"68":{"start":{"line":123,"column":8},"end":{"line":123,"column":66}},"69":{"start":{"line":127,"column":21},"end":{"line":127,"column":23}},"70":{"start":{"line":128,"column":8},"end":{"line":128,"column":42}},"71":{"start":{"line":129,"column":8},"end":{"line":129,"column":67}},"72":{"start":{"line":129,"column":47},"end":{"line":129,"column":67}},"73":{"start":{"line":130,"column":8},"end":{"line":130,"column":34}},"74":{"start":{"line":131,"column":8},"end":{"line":131,"column":67}},"75":{"start":{"line":137,"column":14},"end":{"line":137,"column":21}},"76":{"start":{"line":138,"column":2},"end":{"line":138,"column":148}},"77":{"start":{"line":138,"column":73},"end":{"line":138,"column":148}},"78":{"start":{"line":139,"column":2},"end":{"line":139,"column":164}},"79":{"start":{"line":139,"column":90},"end":{"line":139,"column":164}},"80":{"start":{"line":142,"column":13},"end":{"line":142,"column":62}},"81":{"start":{"line":144,"column":15},"end":{"line":150,"column":1}},"82":{"start":{"line":145,"column":2},"end":{"line":149,"column":4}},"83":{"start":{"line":146,"column":16},"end":{"line":146,"column":23}},"84":{"start":{"line":147,"column":4},"end":{"line":147,"column":101}},"85":{"start":{"line":147,"column":42},"end":{"line":147,"column":101}},"86":{"start":{"line":148,"column":4},"end":{"line":148,"column":88}},"87":{"start":{"line":148,"column":41},"end":{"line":148,"column":88}},"88":{"start":{"line":152,"column":15},"end":{"line":152,"column":48}},"89":{"start":{"line":153,"column":15},"end":{"line":153,"column":49}},"90":{"start":{"line":155,"column":11},"end":{"line":162,"column":1}},"91":{"start":{"line":156,"column":13},"end":{"line":156,"column":23}},"92":{"start":{"line":157,"column":14},"end":{"line":157,"column":25}},"93":{"start":{"line":158,"column":12},"end":{"line":158,"column":21}},"94":{"start":{"line":159,"column":14},"end":{"line":159,"column":25}},"95":{"start":{"line":160,"column":11},"end":{"line":160,"column":19}},"96":{"start":{"line":161,"column":2},"end":{"line":161,"column":156}},"97":{"start":{"line":164,"column":12},"end":{"line":171,"column":1}},"98":{"start":{"line":165,"column":13},"end":{"line":165,"column":23}},"99":{"start":{"line":166,"column":14},"end":{"line":166,"column":25}},"100":{"start":{"line":167,"column":12},"end":{"line":167,"column":21}},"101":{"start":{"line":168,"column":14},"end":{"line":168,"column":25}},"102":{"start":{"line":169,"column":11},"end":{"line":169,"column":19}},"103":{"start":{"line":170,"column":2},"end":{"line":170,"column":160}},"104":{"start":{"line":174,"column":10},"end":{"line":174,"column":15}},"105":{"start":{"line":174,"column":16},"end":{"line":174,"column":40}},"106":{"start":{"line":177,"column":10},"end":{"line":177,"column":15}},"107":{"start":{"line":177,"column":16},"end":{"line":177,"column":40}},"108":{"start":{"line":180,"column":15},"end":{"line":182,"column":1}},"109":{"start":{"line":181,"column":2},"end":{"line":181,"column":26}},"110":{"start":{"line":185,"column":10},"end":{"line":185,"column":15}},"111":{"start":{"line":185,"column":16},"end":{"line":185,"column":50}},"112":{"start":{"line":189,"column":10},"end":{"line":189,"column":17}},"113":{"start":{"line":189,"column":18},"end":{"line":189,"column":38}},"114":{"start":{"line":191,"column":16},"end":{"line":191,"column":71}},"115":{"start":{"line":194,"column":2},"end":{"line":203,"column":3}},"116":{"start":{"line":196,"column":6},"end":{"line":196,"column":19}},"117":{"start":{"line":198,"column":6},"end":{"line":198,"column":18}},"118":{"start":{"line":200,"column":6},"end":{"line":200,"column":30}},"119":{"start":{"line":202,"column":6},"end":{"line":202,"column":16}},"120":{"start":{"line":206,"column":21},"end":{"line":210,"column":1}},"121":{"start":{"line":207,"column":2},"end":{"line":209,"column":8}},"122":{"start":{"line":208,"column":4},"end":{"line":208,"column":61}},"123":{"start":{"line":211,"column":20},"end":{"line":211,"column":83}},"124":{"start":{"line":213,"column":18},"end":{"line":217,"column":1}},"125":{"start":{"line":214,"column":2},"end":{"line":216,"column":4}},"126":{"start":{"line":215,"column":4},"end":{"line":215,"column":68}},"127":{"start":{"line":218,"column":18},"end":{"line":220,"column":1}},"128":{"start":{"line":219,"column":2},"end":{"line":219,"column":65}},"129":{"start":{"line":221,"column":17},"end":{"line":221,"column":74}}},"fnMap":{"0":{"name":"firstKey","decl":{"start":{"line":16,"column":9},"end":{"line":16,"column":17}},"loc":{"start":{"line":16,"column":21},"end":{"line":20,"column":1}}},"1":{"name":"lastKey","decl":{"start":{"line":22,"column":9},"end":{"line":22,"column":16}},"loc":{"start":{"line":22,"column":20},"end":{"line":27,"column":1}}},"2":{"name":"isString","decl":{"start":{"line":29,"column":24},"end":{"line":29,"column":32}},"loc":{"start":{"line":29,"column":36},"end":{"line":31,"column":1}}},"3":{"name":"isNumber","decl":{"start":{"line":32,"column":24},"end":{"line":32,"column":32}},"loc":{"start":{"line":32,"column":36},"end":{"line":34,"column":1}}},"4":{"name":"reverse","decl":{"start":{"line":38,"column":9},"end":{"line":38,"column":16}},"loc":{"start":{"line":38,"column":23},"end":{"line":45,"column":1}}},"5":{"name":"zipper","decl":{"start":{"line":49,"column":22},"end":{"line":49,"column":28}},"loc":{"start":{"line":49,"column":58},"end":{"line":51,"column":1}}},"6":{"name":"intoObject","decl":{"start":{"line":55,"column":9},"end":{"line":55,"column":19}},"loc":{"start":{"line":55,"column":34},"end":{"line":60,"column":1}}},"7":{"name":"fromObject","decl":{"start":{"line":62,"column":9},"end":{"line":62,"column":19}},"loc":{"start":{"line":62,"column":37},"end":{"line":69,"column":1}}},"8":{"name":"intoArray","decl":{"start":{"line":73,"column":9},"end":{"line":73,"column":18}},"loc":{"start":{"line":73,"column":32},"end":{"line":78,"column":1}}},"9":{"name":"fromArray","decl":{"start":{"line":80,"column":9},"end":{"line":80,"column":18}},"loc":{"start":{"line":80,"column":35},"end":{"line":88,"column":1}}},"10":{"name":"get","decl":{"start":{"line":92,"column":33},"end":{"line":92,"column":36}},"loc":{"start":{"line":92,"column":40},"end":{"line":94,"column":1}}},"11":{"name":"keyOf","decl":{"start":{"line":95,"column":37},"end":{"line":95,"column":42}},"loc":{"start":{"line":95,"column":46},"end":{"line":97,"column":1}}},"12":{"name":"setU","decl":{"start":{"line":99,"column":20},"end":{"line":99,"column":24}},"loc":{"start":{"line":99,"column":35},"end":{"line":101,"column":1}}},"13":{"name":"modifyU","decl":{"start":{"line":104,"column":23},"end":{"line":104,"column":30}},"loc":{"start":{"line":104,"column":37},"end":{"line":106,"column":1}}},"14":{"name":"up","decl":{"start":{"line":109,"column":9},"end":{"line":109,"column":11}},"loc":{"start":{"line":109,"column":18},"end":{"line":134,"column":1}}},"15":{"name":"downToU","decl":{"start":{"line":136,"column":9},"end":{"line":136,"column":16}},"loc":{"start":{"line":136,"column":25},"end":{"line":140,"column":1}}},"16":{"name":"downMost","decl":{"start":{"line":144,"column":24},"end":{"line":144,"column":32}},"loc":{"start":{"line":144,"column":39},"end":{"line":150,"column":1}}},"17":{"name":"(anonymous_17)","decl":{"start":{"line":145,"column":9},"end":{"line":145,"column":10}},"loc":{"start":{"line":145,"column":22},"end":{"line":149,"column":3}}},"18":{"name":"left","decl":{"start":{"line":155,"column":35},"end":{"line":155,"column":39}},"loc":{"start":{"line":155,"column":47},"end":{"line":162,"column":1}}},"19":{"name":"right","decl":{"start":{"line":164,"column":37},"end":{"line":164,"column":42}},"loc":{"start":{"line":164,"column":50},"end":{"line":171,"column":1}}},"20":{"name":"head","decl":{"start":{"line":173,"column":9},"end":{"line":173,"column":13}},"loc":{"start":{"line":173,"column":17},"end":{"line":175,"column":1}}},"21":{"name":"last","decl":{"start":{"line":176,"column":9},"end":{"line":176,"column":13}},"loc":{"start":{"line":176,"column":17},"end":{"line":178,"column":1}}},"22":{"name":"toZipper","decl":{"start":{"line":180,"column":43},"end":{"line":180,"column":51}},"loc":{"start":{"line":180,"column":59},"end":{"line":182,"column":1}}},"23":{"name":"fromZipper","decl":{"start":{"line":184,"column":9},"end":{"line":184,"column":19}},"loc":{"start":{"line":184,"column":23},"end":{"line":186,"column":1}}},"24":{"name":"queryMoveU","decl":{"start":{"line":188,"column":9},"end":{"line":188,"column":19}},"loc":{"start":{"line":188,"column":35},"end":{"line":190,"column":1}}},"25":{"name":"bwd","decl":{"start":{"line":193,"column":9},"end":{"line":193,"column":12}},"loc":{"start":{"line":193,"column":22},"end":{"line":204,"column":1}}},"26":{"name":"transformMoveU","decl":{"start":{"line":206,"column":30},"end":{"line":206,"column":44}},"loc":{"start":{"line":206,"column":57},"end":{"line":210,"column":1}}},"27":{"name":"(anonymous_27)","decl":{"start":{"line":207,"column":29},"end":{"line":207,"column":30}},"loc":{"start":{"line":207,"column":42},"end":{"line":209,"column":3}}},"28":{"name":"everywhereG","decl":{"start":{"line":213,"column":27},"end":{"line":213,"column":38}},"loc":{"start":{"line":213,"column":42},"end":{"line":217,"column":1}}},"29":{"name":"(anonymous_29)","decl":{"start":{"line":214,"column":9},"end":{"line":214,"column":10}},"loc":{"start":{"line":214,"column":22},"end":{"line":216,"column":3}}},"30":{"name":"everywhereU","decl":{"start":{"line":218,"column":27},"end":{"line":218,"column":38}},"loc":{"start":{"line":218,"column":45},"end":{"line":220,"column":1}}}},"branchMap":{"0":{"loc":{"start":{"line":41,"column":9},"end":{"line":41,"column":67}},"type":"cond-expr","locations":[{"start":{"line":41,"column":29},"end":{"line":41,"column":51}},{"start":{"line":41,"column":54},"end":{"line":41,"column":67}}]},"1":{"loc":{"start":{"line":50,"column":9},"end":{"line":50,"column":157}},"type":"cond-expr","locations":[{"start":{"line":50,"column":42},"end":{"line":50,"column":102}},{"start":{"line":50,"column":105},"end":{"line":50,"column":157}}]},"2":{"loc":{"start":{"line":67,"column":4},"end":{"line":67,"column":144}},"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":144}},{"start":{"line":67,"column":4},"end":{"line":67,"column":144}}]},"3":{"loc":{"start":{"line":67,"column":78},"end":{"line":67,"column":144}},"type":"if","locations":[{"start":{"line":67,"column":78},"end":{"line":67,"column":144}},{"start":{"line":67,"column":78},"end":{"line":67,"column":144}}]},"4":{"loc":{"start":{"line":116,"column":2},"end":{"line":133,"column":3}},"type":"switch","locations":[{"start":{"line":117,"column":4},"end":{"line":124,"column":7}},{"start":{"line":125,"column":4},"end":{"line":132,"column":7}}]},"5":{"loc":{"start":{"line":121,"column":8},"end":{"line":121,"column":65}},"type":"if","locations":[{"start":{"line":121,"column":8},"end":{"line":121,"column":65}},{"start":{"line":121,"column":8},"end":{"line":121,"column":65}}]},"6":{"loc":{"start":{"line":129,"column":8},"end":{"line":129,"column":67}},"type":"if","locations":[{"start":{"line":129,"column":8},"end":{"line":129,"column":67}},{"start":{"line":129,"column":8},"end":{"line":129,"column":67}}]},"7":{"loc":{"start":{"line":138,"column":2},"end":{"line":138,"column":148}},"type":"if","locations":[{"start":{"line":138,"column":2},"end":{"line":138,"column":148}},{"start":{"line":138,"column":2},"end":{"line":138,"column":148}}]},"8":{"loc":{"start":{"line":138,"column":6},"end":{"line":138,"column":71}},"type":"binary-expr","locations":[{"start":{"line":138,"column":6},"end":{"line":138,"column":38}},{"start":{"line":138,"column":42},"end":{"line":138,"column":55}},{"start":{"line":138,"column":59},"end":{"line":138,"column":71}}]},"9":{"loc":{"start":{"line":139,"column":2},"end":{"line":139,"column":164}},"type":"if","locations":[{"start":{"line":139,"column":2},"end":{"line":139,"column":164}},{"start":{"line":139,"column":2},"end":{"line":139,"column":164}}]},"10":{"loc":{"start":{"line":139,"column":6},"end":{"line":139,"column":88}},"type":"binary-expr","locations":[{"start":{"line":139,"column":6},"end":{"line":139,"column":37}},{"start":{"line":139,"column":41},"end":{"line":139,"column":54}},{"start":{"line":139,"column":58},"end":{"line":139,"column":66}},{"start":{"line":139,"column":70},"end":{"line":139,"column":88}}]},"11":{"loc":{"start":{"line":147,"column":4},"end":{"line":147,"column":101}},"type":"if","locations":[{"start":{"line":147,"column":4},"end":{"line":147,"column":101}},{"start":{"line":147,"column":4},"end":{"line":147,"column":101}}]},"12":{"loc":{"start":{"line":147,"column":57},"end":{"line":147,"column":96}},"type":"cond-expr","locations":[{"start":{"line":147,"column":64},"end":{"line":147,"column":79}},{"start":{"line":147,"column":82},"end":{"line":147,"column":96}}]},"13":{"loc":{"start":{"line":148,"column":4},"end":{"line":148,"column":88}},"type":"if","locations":[{"start":{"line":148,"column":4},"end":{"line":148,"column":88}},{"start":{"line":148,"column":4},"end":{"line":148,"column":88}}]},"14":{"loc":{"start":{"line":148,"column":56},"end":{"line":148,"column":83}},"type":"cond-expr","locations":[{"start":{"line":148,"column":63},"end":{"line":148,"column":64}},{"start":{"line":148,"column":67},"end":{"line":148,"column":83}}]},"15":{"loc":{"start":{"line":161,"column":9},"end":{"line":161,"column":155}},"type":"cond-expr","locations":[{"start":{"line":161,"column":16},"end":{"line":161,"column":146}},{"start":{"line":161,"column":149},"end":{"line":161,"column":155}}]},"16":{"loc":{"start":{"line":161,"column":16},"end":{"line":161,"column":146}},"type":"cond-expr","locations":[{"start":{"line":161,"column":32},"end":{"line":161,"column":85}},{"start":{"line":161,"column":88},"end":{"line":161,"column":146}}]},"17":{"loc":{"start":{"line":170,"column":9},"end":{"line":170,"column":159}},"type":"cond-expr","locations":[{"start":{"line":170,"column":17},"end":{"line":170,"column":150}},{"start":{"line":170,"column":153},"end":{"line":170,"column":159}}]},"18":{"loc":{"start":{"line":170,"column":17},"end":{"line":170,"column":150}},"type":"cond-expr","locations":[{"start":{"line":170,"column":33},"end":{"line":170,"column":87}},{"start":{"line":170,"column":90},"end":{"line":170,"column":150}}]},"19":{"loc":{"start":{"line":174,"column":23},"end":{"line":174,"column":39}},"type":"binary-expr","locations":[{"start":{"line":174,"column":23},"end":{"line":174,"column":24}},{"start":{"line":174,"column":28},"end":{"line":174,"column":39}}]},"20":{"loc":{"start":{"line":177,"column":23},"end":{"line":177,"column":39}},"type":"binary-expr","locations":[{"start":{"line":177,"column":23},"end":{"line":177,"column":24}},{"start":{"line":177,"column":28},"end":{"line":177,"column":39}}]},"21":{"loc":{"start":{"line":185,"column":23},"end":{"line":185,"column":49}},"type":"cond-expr","locations":[{"start":{"line":185,"column":27},"end":{"line":185,"column":40}},{"start":{"line":185,"column":43},"end":{"line":185,"column":49}}]},"22":{"loc":{"start":{"line":189,"column":25},"end":{"line":189,"column":37}},"type":"cond-expr","locations":[{"start":{"line":189,"column":29},"end":{"line":189,"column":33}},{"start":{"line":189,"column":36},"end":{"line":189,"column":37}}]},"23":{"loc":{"start":{"line":194,"column":2},"end":{"line":203,"column":3}},"type":"switch","locations":[{"start":{"line":195,"column":4},"end":{"line":196,"column":19}},{"start":{"line":197,"column":4},"end":{"line":198,"column":18}},{"start":{"line":199,"column":4},"end":{"line":200,"column":30}},{"start":{"line":201,"column":4},"end":{"line":202,"column":16}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":5,"8":5,"9":2,"10":2,"11":4,"12":2,"13":1,"14":12,"15":1,"16":21,"17":19,"18":19,"19":9,"20":9,"21":19,"22":1,"23":30,"24":8,"25":1,"26":1,"27":10,"28":10,"29":10,"30":10,"31":17,"32":4,"33":13,"34":10,"35":3,"36":10,"37":10,"38":11,"39":11,"40":8,"41":8,"42":8,"43":8,"44":8,"45":8,"46":8,"47":1,"48":12,"49":1,"50":4,"51":1,"52":10,"53":1,"54":1,"55":10,"56":1,"57":14,"58":14,"59":14,"60":14,"61":14,"62":14,"63":5,"64":5,"65":5,"66":5,"67":5,"68":5,"69":4,"70":4,"71":4,"72":4,"73":4,"74":4,"75":22,"76":22,"77":10,"78":12,"79":8,"80":1,"81":1,"82":2,"83":21,"84":21,"85":7,"86":14,"87":8,"88":1,"89":1,"90":1,"91":10,"92":10,"93":10,"94":10,"95":10,"96":10,"97":1,"98":13,"99":13,"100":13,"101":13,"102":13,"103":13,"104":2,"105":2,"106":2,"107":2,"108":1,"109":23,"110":4,"111":4,"112":19,"113":19,"114":1,"115":6,"116":0,"117":3,"118":0,"119":3,"120":1,"121":13,"122":6,"123":1,"124":1,"125":13,"126":6,"127":1,"128":7,"129":1},"f":{"0":5,"1":2,"2":12,"3":21,"4":19,"5":30,"6":8,"7":10,"8":10,"9":8,"10":12,"11":4,"12":10,"13":10,"14":14,"15":22,"16":2,"17":21,"18":10,"19":13,"20":2,"21":2,"22":23,"23":4,"24":19,"25":6,"26":13,"27":6,"28":13,"29":6,"30":7},"b":{"0":[4,5],"1":[12,18],"2":[4,13],"3":[10,3],"4":[5,4],"5":[5,0],"6":[4,0],"7":[10,12],"8":[22,12,11],"9":[8,4],"10":[12,9,9,9],"11":[7,14],"12":[5,2],"13":[8,6],"14":[4,4],"15":[6,4],"16":[5,1],"17":[6,7],"18":[5,1],"19":[2,1],"20":[2,1],"21":[2,2],"22":[12,7],"23":[0,3,0,3]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"1b2da72681f795c42c45af01e15971ccc78574e4","contentHash":"7261d798f540e3a98260735142910353_10.0.0"}} |
| language: node_js | ||
| node_js: | ||
| - "4" | ||
| - "6" |
| 'use strict'; | ||
| const F = require("../lib/fastener") | ||
| const inc = x => typeof x === "number" ? x + 1 : x | ||
| const nested = [{x:1,y:[2,{d:3},4],z:{a:5}}] | ||
| const vs10 = Array(10).fill(1) | ||
| const vs100 = Array(100).fill(1) | ||
| const vs1000 = Array(1000).fill(1) | ||
| const bs = [ | ||
| 'F.fromZipper(F.everywhere(inc, F.toZipper(nested)))', | ||
| 'F.fromZipper(F.everywhere(inc, F.toZipper(vs10)))', | ||
| 'F.fromZipper(F.everywhere(inc, F.toZipper(vs100)))', | ||
| 'F.fromZipper(F.everywhere(inc, F.toZipper(vs1000)))' | ||
| ] | ||
| const s = new require("benchmark").Suite() | ||
| bs.forEach(b => s.add(b, eval("() => " + b))) | ||
| s.on('cycle', e => console.log(String(e.target))).run() |
Sorry, the diff of this file is not supported yet
| import * as I from "infestines" | ||
| import * as F from "../src/fastener" | ||
| function show(x) { | ||
| switch (typeof x) { | ||
| case "string": | ||
| case "object": | ||
| return JSON.stringify(x) | ||
| default: | ||
| return `${x}` | ||
| } | ||
| } | ||
| const testEq = (expr, expect) => it(`${expr} => ${show(expect)}`, () => { | ||
| const actual = eval(`(F, seq) => ${expr}`)(F, I.seq) | ||
| if (!I.acyclicEqualsU(actual, expect)) | ||
| throw new Error(`Expected: ${show(expect)}, actual: ${show(actual)}`) | ||
| }) | ||
| describe("fastener", () => { | ||
| testEq("seq(F.toZipper({xs: [1,2,3]})," + | ||
| " F.downTo('xs')," + | ||
| " F.downLast," + | ||
| " F.modify(x => x - 2)," + | ||
| " F.up," + | ||
| " F.up," + | ||
| " F.downHead," + | ||
| " F.downLast," + | ||
| " F.head," + | ||
| " F.right," + | ||
| " F.right," + | ||
| " F.modify(x => x + 1)," + | ||
| " F.left," + | ||
| " F.modify(x => x - 1)," + | ||
| " F.fromZipper)", | ||
| {xs: [1, 1, 2]}) | ||
| }) | ||
| describe("downHead and downLast", () => { | ||
| testEq("seq(F.toZipper({x: 1, y: 2}), F.downLast, F.right)", undefined) | ||
| testEq("seq(F.toZipper({y: 1, x: 2}), F.downLast, F.right)", undefined) | ||
| testEq("seq(F.toZipper({x: 1, y: 2}), F.downHead, F.left)", undefined) | ||
| testEq("seq(F.toZipper({y: 1, x: 2}), F.downHead, F.left)", undefined) | ||
| testEq("seq(F.toZipper(['x', 'y']), F.downLast, F.right)", undefined) | ||
| testEq("seq(F.toZipper(['x', 'y']), F.downHead, F.left)", undefined) | ||
| }) | ||
| describe("illegal moves", () => { | ||
| ["downHead", "downLast", "downTo(0)", "left", "right", "up", "keyOf", "head", "last"] | ||
| .forEach(op => testEq(`seq(F.toZipper(1), F.${op})`, undefined)) | ||
| testEq("seq(F.toZipper({x: 1}), F.downTo(0))", undefined) | ||
| testEq("seq(F.toZipper({x: 1}), F.downTo('y'))", undefined) | ||
| testEq("seq(F.toZipper([1,2,3]), F.downTo(5))", undefined) | ||
| }) | ||
| describe("keyOf", () => { | ||
| testEq("seq(F.toZipper({x: 1, y: 2})," + | ||
| " F.downTo('x')," + | ||
| " F.keyOf)", | ||
| 'x') | ||
| testEq("seq(F.toZipper({x: 1, y: 2})," + | ||
| " F.downTo('y')," + | ||
| " F.keyOf)", | ||
| 'y') | ||
| testEq("seq(F.toZipper(['a','b','c','d'])," + | ||
| " F.downHead," + | ||
| " F.last," + | ||
| " F.left," + | ||
| " F.left," + | ||
| " F.right," + | ||
| " F.keyOf)", | ||
| 2) | ||
| }) | ||
| describe("everywhere", () => { | ||
| testEq("seq(F.toZipper({foo: [1, {y: 2}, 3], bar: 0})," + | ||
| " F.everywhere(x => typeof x == 'number' ? x+1 : x)," + | ||
| " F.fromZipper)", | ||
| {foo: [2, {y: 3}, 4], bar: 1}) | ||
| }) |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
116630
64.67%656
53.63%510
4.72%1
-66.67%35
9.38%12
-14.29%1
Infinity%+ Added
- Removed
Updated