New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

crosswalk

Package Overview
Dependencies
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

crosswalk - npm Package Compare versions

Comparing version 1.1.0 to 1.2.0

.github/workflows/main.yml

4

CHANGELOG.md
# Changelog
## 1.2
- Add wrappers for all HTTP verbs (`router.post`, `router.patch`, etc.) <https://github.com/danvk/crosswalk/pull/2>
## 1.1

@@ -4,0 +8,0 @@

8

coverage/coverage-final.json

@@ -1,5 +0,5 @@

{"/Users/danvk/github/typed-router/src/index.ts": {"path":"/Users/danvk/github/typed-router/src/index.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":9}},"1":{"start":{"line":1,"column":9},"end":{"line":1,"column":45}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":32}},"3":{"start":{"line":3,"column":0},"end":{"line":3,"column":31}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":1,"column":9},"end":{"line":1,"column":25}},"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":45}}}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1},"f":{"0":0},"b":{}}
,"/Users/danvk/github/typed-router/src/openapi.ts": {"path":"/Users/danvk/github/typed-router/src/openapi.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":47}},"1":{"start":{"line":43,"column":17},"end":{"line":43,"column":48}},"2":{"start":{"line":43,"column":47},"end":{"line":43,"column":76}},"3":{"start":{"line":46,"column":17},"end":{"line":46,"column":41}},"4":{"start":{"line":47,"column":2},"end":{"line":51,"column":6}},"5":{"start":{"line":47,"column":46},"end":{"line":51,"column":5}},"6":{"start":{"line":56,"column":2},"end":{"line":56,"column":43}},"7":{"start":{"line":59,"column":19},"end":{"line":59,"column":35}},"8":{"start":{"line":61,"column":14},"end":{"line":61,"column":25}},"9":{"start":{"line":62,"column":2},"end":{"line":64,"column":null}},"10":{"start":{"line":63,"column":4},"end":{"line":63,"column":54}},"11":{"start":{"line":66,"column":15},"end":{"line":66,"column":43}},"12":{"start":{"line":67,"column":14},"end":{"line":67,"column":36}},"13":{"start":{"line":68,"column":2},"end":{"line":70,"column":null}},"14":{"start":{"line":69,"column":4},"end":{"line":69,"column":61}},"15":{"start":{"line":71,"column":2},"end":{"line":71,"column":21}},"16":{"start":{"line":60,"column":0},"end":{"line":60,"column":16}},"17":{"start":{"line":76,"column":2},"end":{"line":76,"column":48}},"18":{"start":{"line":81,"column":6},"end":{"line":81,"column":14}},"19":{"start":{"line":84,"column":37},"end":{"line":84,"column":39}},"20":{"start":{"line":86,"column":19},"end":{"line":86,"column":36}},"21":{"start":{"line":88,"column":2},"end":{"line":118,"column":null}},"22":{"start":{"line":88,"column":25},"end":{"line":88,"column":34}},"23":{"start":{"line":88,"column":21},"end":{"line":88,"column":25}},"24":{"start":{"line":89,"column":24},"end":{"line":89,"column":58}},"25":{"start":{"line":90,"column":4},"end":{"line":90,"column":28}},"26":{"start":{"line":91,"column":19},"end":{"line":91,"column":53}},"27":{"start":{"line":92,"column":4},"end":{"line":117,"column":null}},"28":{"start":{"line":92,"column":30},"end":{"line":92,"column":36}},"29":{"start":{"line":92,"column":30},"end":{"line":92,"column":52}},"30":{"start":{"line":92,"column":15},"end":{"line":92,"column":16}},"31":{"start":{"line":92,"column":20},"end":{"line":92,"column":22}},"32":{"start":{"line":92,"column":25},"end":{"line":92,"column":26}},"33":{"start":{"line":93,"column":29},"end":{"line":93,"column":65}},"34":{"start":{"line":93,"column":17},"end":{"line":93,"column":19}},"35":{"start":{"line":93,"column":25},"end":{"line":93,"column":29}},"36":{"start":{"line":94,"column":37},"end":{"line":94,"column":62}},"37":{"start":{"line":94,"column":21},"end":{"line":94,"column":23}},"38":{"start":{"line":94,"column":31},"end":{"line":94,"column":37}},"39":{"start":{"line":96,"column":34},"end":{"line":96,"column":61}},"40":{"start":{"line":97,"column":6},"end":{"line":103,"column":null}},"41":{"start":{"line":98,"column":8},"end":{"line":102,"column":11}},"42":{"start":{"line":105,"column":19},"end":{"line":113,"column":null}},"43":{"start":{"line":115,"column":6},"end":{"line":115,"column":41}},"44":{"start":{"line":116,"column":6},"end":{"line":116,"column":25}},"45":{"start":{"line":120,"column":2},"end":{"line":122,"column":5}},"46":{"start":{"line":121,"column":4},"end":{"line":121,"column":29}},"47":{"start":{"line":124,"column":2},"end":{"line":133,"column":null}},"48":{"start":{"line":75,"column":0},"end":{"line":75,"column":16}}},"fnMap":{"0":{"name":"(anonymous_8)","decl":{"start":{"line":43,"column":17},"end":{"line":43,"column":21}},"loc":{"start":{"line":43,"column":25},"end":{"line":43,"column":48}}},"1":{"name":"extractPathParams","decl":{"start":{"line":45,"column":9},"end":{"line":45,"column":26}},"loc":{"start":{"line":45,"column":39},"end":{"line":52,"column":1}}},"2":{"name":"(anonymous_10)","decl":{"start":{"line":47,"column":37},"end":{"line":47,"column":38}},"loc":{"start":{"line":47,"column":41},"end":{"line":47,"column":47}}},"3":{"name":"expressPathToOpenApiPath","decl":{"start":{"line":55,"column":9},"end":{"line":55,"column":33}},"loc":{"start":{"line":55,"column":46},"end":{"line":57,"column":1}}},"4":{"name":"followApiRef","decl":{"start":{"line":60,"column":16},"end":{"line":60,"column":28}},"loc":{"start":{"line":60,"column":54},"end":{"line":72,"column":1}}},"5":{"name":"apiSpecToOpenApi","decl":{"start":{"line":75,"column":16},"end":{"line":75,"column":32}},"loc":{"start":{"line":75,"column":64},"end":{"line":135,"column":1}}},"6":{"name":"(anonymous_14)","decl":{"start":{"line":120,"column":19},"end":{"line":120,"column":23}},"loc":{"start":{"line":120,"column":23},"end":{"line":122,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":43,"column":47},"end":{"line":43,"column":50}},"type":"binary-expr","locations":[{"start":{"line":43,"column":47},"end":{"line":43,"column":50}},{"start":{"line":43,"column":54},"end":{"line":43,"column":75}}]},"1":{"loc":{"start":{"line":62,"column":2},"end":{"line":64,"column":null}},"type":"if","locations":[{"start":{"line":62,"column":2},"end":{"line":64,"column":null}},{"start":{"line":62,"column":2},"end":{"line":64,"column":null}}]},"2":{"loc":{"start":{"line":68,"column":2},"end":{"line":70,"column":null}},"type":"if","locations":[{"start":{"line":68,"column":2},"end":{"line":70,"column":null}},{"start":{"line":68,"column":2},"end":{"line":70,"column":null}}]},"3":{"loc":{"start":{"line":97,"column":6},"end":{"line":103,"column":null}},"type":"if","locations":[{"start":{"line":97,"column":6},"end":{"line":103,"column":null}},{"start":{"line":97,"column":6},"end":{"line":103,"column":null}}]},"4":{"loc":{"start":{"line":97,"column":17},"end":{"line":97,"column":19}},"type":"cond-expr","locations":[{"start":{"line":97,"column":17},"end":{"line":97,"column":19}},{"start":{"line":97,"column":10},"end":{"line":97,"column":23}}]},"5":{"loc":{"start":{"line":97,"column":10},"end":{"line":97,"column":19}},"type":"binary-expr","locations":[{"start":{"line":97,"column":10},"end":{"line":97,"column":19}},{"start":{"line":97,"column":10},"end":{"line":97,"column":19}}]},"6":{"loc":{"start":{"line":107,"column":12},"end":{"line":107,"column":29}},"type":"binary-expr","locations":[{"start":{"line":107,"column":12},"end":{"line":107,"column":29}},{"start":{"line":107,"column":33},"end":{"line":107,"column":47}}]}},"s":{"0":2,"1":2,"2":10,"3":6,"4":6,"5":4,"6":2,"7":2,"8":6,"9":6,"10":0,"11":6,"12":6,"13":6,"14":0,"15":6,"16":2,"17":1,"18":3,"19":1,"20":1,"21":1,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":6,"31":6,"32":6,"33":6,"34":6,"35":6,"36":6,"37":6,"38":6,"39":6,"40":6,"41":4,"42":6,"43":6,"44":6,"45":1,"46":6,"47":1,"48":2},"f":{"0":10,"1":6,"2":4,"3":2,"4":6,"5":1,"6":6},"b":{"0":[10,10],"1":[0,6],"2":[0,6],"3":[4,2],"4":[0,6],"5":[6,6],"6":[6,5]}}
,"/Users/danvk/github/typed-router/src/typed-request.ts": {"path":"/Users/danvk/github/typed-router/src/typed-request.ts","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":3,"column":41}},"1":{"start":{"line":11,"column":33},"end":{"line":11,"column":null}},"2":{"start":{"line":12,"column":2},"end":{"line":16,"column":4}},"3":{"start":{"line":13,"column":19},"end":{"line":13,"column":36}},"4":{"start":{"line":14,"column":4},"end":{"line":15,"column":44}},"5":{"start":{"line":14,"column":12},"end":{"line":14,"column":67}},"6":{"start":{"line":15,"column":6},"end":{"line":15,"column":44}},"7":{"start":{"line":11,"column":0},"end":{"line":11,"column":16}},"8":{"start":{"line":31,"column":19},"end":{"line":38,"column":null}},"9":{"start":{"line":31,"column":8},"end":{"line":38,"column":null}},"10":{"start":{"line":39,"column":2},"end":{"line":39,"column":25}},"11":{"start":{"line":26,"column":0},"end":{"line":26,"column":22}},"12":{"start":{"line":43,"column":26},"end":{"line":43,"column":40}},"13":{"start":{"line":43,"column":16},"end":{"line":43,"column":26}},"14":{"start":{"line":44,"column":15},"end":{"line":44,"column":45}},"15":{"start":{"line":46,"column":19},"end":{"line":46,"column":43}},"16":{"start":{"line":52,"column":18},"end":{"line":66,"column":3}},"17":{"start":{"line":63,"column":20},"end":{"line":63,"column":38}},"18":{"start":{"line":64,"column":4},"end":{"line":65,"column":80}},"19":{"start":{"line":65,"column":6},"end":{"line":65,"column":80}},"20":{"start":{"line":68,"column":2},"end":{"line":87,"column":4}},"21":{"start":{"line":75,"column":6},"end":{"line":76,"column":73}},"22":{"start":{"line":75,"column":14},"end":{"line":75,"column":35}},"23":{"start":{"line":76,"column":8},"end":{"line":76,"column":73}},"24":{"start":{"line":84,"column":6},"end":{"line":85,"column":55}},"25":{"start":{"line":85,"column":8},"end":{"line":85,"column":55}},"26":{"start":{"line":42,"column":0},"end":{"line":42,"column":16}}},"fnMap":{"0":{"name":"apiUrlMaker","decl":{"start":{"line":11,"column":16},"end":{"line":11,"column":27}},"loc":{"start":{"line":11,"column":44},"end":{"line":17,"column":1}}},"1":{"name":"(anonymous_14)","decl":{"start":{"line":12,"column":9},"end":{"line":12,"column":34}},"loc":{"start":{"line":12,"column":57},"end":{"line":16,"column":3}}},"2":{"name":"(anonymous_15)","decl":{"start":{"line":14,"column":11},"end":{"line":14,"column":12}},"loc":{"start":{"line":14,"column":11},"end":{"line":15,"column":12}}},"3":{"name":"fetchJson","decl":{"start":{"line":26,"column":22},"end":{"line":26,"column":31}},"loc":{"start":{"line":29,"column":18},"end":{"line":40,"column":null}}},"4":{"name":"typedApi","decl":{"start":{"line":42,"column":16},"end":{"line":42,"column":24}},"loc":{"start":{"line":42,"column":47},"end":{"line":88,"column":1}}},"5":{"name":"(anonymous_20)","decl":{"start":{"line":52,"column":18},"end":{"line":52,"column":null}},"loc":{"start":{"line":57,"column":18},"end":{"line":66,"column":3}}},"6":{"name":"(anonymous_21)","decl":{"start":{"line":64,"column":11},"end":{"line":64,"column":12}},"loc":{"start":{"line":64,"column":46},"end":{"line":65,"column":13}}},"7":{"name":"(anonymous_22)","decl":{"start":{"line":71,"column":9},"end":{"line":71,"column":33}},"loc":{"start":{"line":71,"column":47},"end":{"line":77,"column":5}}},"8":{"name":"(anonymous_23)","decl":{"start":{"line":75,"column":13},"end":{"line":75,"column":14}},"loc":{"start":{"line":75,"column":13},"end":{"line":76,"column":15}}},"9":{"name":"(anonymous_24)","decl":{"start":{"line":79,"column":10},"end":{"line":79,"column":35}},"loc":{"start":{"line":79,"column":49},"end":{"line":86,"column":5}}},"10":{"name":"(anonymous_25)","decl":{"start":{"line":84,"column":13},"end":{"line":84,"column":14}},"loc":{"start":{"line":84,"column":43},"end":{"line":85,"column":15}}}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":33},"end":{"line":11,"column":null}},"type":"if","locations":[{"start":{"line":11,"column":33},"end":{"line":11,"column":null}},{"start":{"line":11,"column":33},"end":{"line":11,"column":null}}]},"1":{"loc":{"start":{"line":31,"column":19},"end":{"line":38,"column":null}},"type":"switch","locations":[{"start":{"line":31,"column":19},"end":{"line":38,"column":null}}]},"2":{"loc":{"start":{"line":43,"column":26},"end":{"line":43,"column":33}},"type":"binary-expr","locations":[{"start":{"line":43,"column":26},"end":{"line":43,"column":33}},{"start":{"line":43,"column":37},"end":{"line":43,"column":39}}]},"3":{"loc":{"start":{"line":43,"column":19},"end":{"line":43,"column":21}},"type":"cond-expr","locations":[{"start":{"line":43,"column":19},"end":{"line":43,"column":21}},{"start":{"line":43,"column":21},"end":{"line":43,"column":26}}]},"4":{"loc":{"start":{"line":44,"column":32},"end":{"line":44,"column":36}},"type":"cond-expr","locations":[{"start":{"line":44,"column":32},"end":{"line":44,"column":36}},{"start":{"line":44,"column":36},"end":{"line":44,"column":45}}]},"5":{"loc":{"start":{"line":44,"column":15},"end":{"line":44,"column":36}},"type":"binary-expr","locations":[{"start":{"line":44,"column":15},"end":{"line":44,"column":36}},{"start":{"line":44,"column":32},"end":{"line":44,"column":36}}]},"6":{"loc":{"start":{"line":44,"column":25},"end":{"line":44,"column":27}},"type":"cond-expr","locations":[{"start":{"line":44,"column":25},"end":{"line":44,"column":27}},{"start":{"line":44,"column":18},"end":{"line":44,"column":32}}]},"7":{"loc":{"start":{"line":44,"column":18},"end":{"line":44,"column":27}},"type":"binary-expr","locations":[{"start":{"line":44,"column":18},"end":{"line":44,"column":27}},{"start":{"line":44,"column":18},"end":{"line":44,"column":27}}]},"8":{"loc":{"start":{"line":76,"column":46},"end":{"line":76,"column":49}},"type":"cond-expr","locations":[{"start":{"line":76,"column":46},"end":{"line":76,"column":49}},{"start":{"line":76,"column":40},"end":{"line":76,"column":58}}]},"9":{"loc":{"start":{"line":76,"column":40},"end":{"line":76,"column":49}},"type":"binary-expr","locations":[{"start":{"line":76,"column":40},"end":{"line":76,"column":49}},{"start":{"line":76,"column":40},"end":{"line":76,"column":49}}]}},"s":{"0":1,"1":6,"2":5,"3":8,"4":8,"5":22,"6":8,"7":1,"8":1,"9":1,"10":1,"11":1,"12":2,"13":2,"14":2,"15":2,"16":2,"17":3,"18":3,"19":3,"20":2,"21":2,"22":5,"23":2,"24":1,"25":1,"26":1},"f":{"0":5,"1":8,"2":8,"3":1,"4":2,"5":3,"6":3,"7":2,"8":2,"9":1,"10":1},"b":{"0":[1,4],"1":[1],"2":[2,0],"3":[2,0],"4":[2,0],"5":[2,2],"6":[0,2],"7":[2,2],"8":[0,2],"9":[2,2]}}
,"/Users/danvk/github/typed-router/src/typed-router.ts": {"path":"/Users/danvk/github/typed-router/src/typed-router.ts","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":3,"column":22}},"1":{"start":{"line":10,"column":0},"end":{"line":10,"column":null}},"2":{"start":{"line":10,"column":31},"end":{"line":10,"column":36}},"3":{"start":{"line":14,"column":28},"end":{"line":14,"column":null}},"4":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}},"5":{"start":{"line":16,"column":4},"end":{"line":16,"column":21}},"6":{"start":{"line":17,"column":4},"end":{"line":17,"column":27}},"7":{"start":{"line":19,"column":0},"end":{"line":19,"column":null}},"8":{"start":{"line":10,"column":13},"end":{"line":10,"column":22}},"9":{"start":{"line":25,"column":0},"end":{"line":25,"column":13}},"10":{"start":{"line":32,"column":4},"end":{"line":32,"column":25}},"11":{"start":{"line":33,"column":4},"end":{"line":37,"column":null}},"12":{"start":{"line":34,"column":6},"end":{"line":34,"column":33}},"13":{"start":{"line":35,"column":6},"end":{"line":35,"column":44}},"14":{"start":{"line":36,"column":6},"end":{"line":36,"column":36}},"15":{"start":{"line":38,"column":4},"end":{"line":38,"column":28}},"16":{"start":{"line":41,"column":2},"end":{"line":54,"column":null}},"17":{"start":{"line":53,"column":4},"end":{"line":53,"column":117}},"18":{"start":{"line":53,"column":81},"end":{"line":53,"column":116}},"19":{"start":{"line":57,"column":2},"end":{"line":142,"column":null}},"20":{"start":{"line":57,"column":2},"end":{"line":57,"column":18}},"21":{"start":{"line":71,"column":24},"end":{"line":71,"column":29}},"22":{"start":{"line":73,"column":4},"end":{"line":104,"column":null}},"23":{"start":{"line":74,"column":21},"end":{"line":74,"column":48}},"24":{"start":{"line":75,"column":6},"end":{"line":77,"column":null}},"25":{"start":{"line":76,"column":8},"end":{"line":76,"column":72}},"26":{"start":{"line":78,"column":32},"end":{"line":78,"column":69}},"27":{"start":{"line":79,"column":23},"end":{"line":79,"column":63}},"28":{"start":{"line":80,"column":29},"end":{"line":80,"column":79}},"29":{"start":{"line":81,"column":24},"end":{"line":81,"column":45}},"30":{"start":{"line":82,"column":6},"end":{"line":89,"column":null}},"31":{"start":{"line":83,"column":8},"end":{"line":83,"column":39}},"32":{"start":{"line":84,"column":13},"end":{"line":89,"column":null}},"33":{"start":{"line":85,"column":8},"end":{"line":85,"column":27}},"34":{"start":{"line":86,"column":13},"end":{"line":89,"column":null}},"35":{"start":{"line":88,"column":8},"end":{"line":88,"column":77}},"36":{"start":{"line":91,"column":6},"end":{"line":103,"column":null}},"37":{"start":{"line":92,"column":8},"end":{"line":99,"column":null}},"38":{"start":{"line":93,"column":10},"end":{"line":93,"column":53}},"39":{"start":{"line":97,"column":29},"end":{"line":97,"column":38}},"40":{"start":{"line":98,"column":10},"end":{"line":98,"column":53}},"41":{"start":{"line":100,"column":8},"end":{"line":102,"column":null}},"42":{"start":{"line":101,"column":10},"end":{"line":101,"column":71}},"43":{"start":{"line":105,"column":4},"end":{"line":105,"column":61}},"44":{"start":{"line":107,"column":4},"end":{"line":141,"column":7}},"45":{"start":{"line":107,"column":39},"end":{"line":107,"column":43}},"46":{"start":{"line":107,"column":46},"end":{"line":107,"column":48}},"47":{"start":{"line":107,"column":56},"end":{"line":107,"column":58}},"48":{"start":{"line":107,"column":62},"end":{"line":107,"column":78}},"49":{"start":{"line":108,"column":21},"end":{"line":108,"column":25}},"50":{"start":{"line":110,"column":6},"end":{"line":116,"column":null}},"51":{"start":{"line":111,"column":8},"end":{"line":115,"column":11}},"52":{"start":{"line":118,"column":6},"end":{"line":121,"column":null}},"53":{"start":{"line":120,"column":8},"end":{"line":120,"column":75}},"54":{"start":{"line":123,"column":6},"end":{"line":140,"column":11}},"55":{"start":{"line":125,"column":10},"end":{"line":131,"column":null}},"56":{"start":{"line":127,"column":17},"end":{"line":131,"column":null}},"57":{"start":{"line":128,"column":12},"end":{"line":128,"column":54}},"58":{"start":{"line":130,"column":12},"end":{"line":130,"column":42}},"59":{"start":{"line":135,"column":10},"end":{"line":139,"column":null}},"60":{"start":{"line":136,"column":12},"end":{"line":136,"column":69}},"61":{"start":{"line":138,"column":12},"end":{"line":138,"column":24}},"62":{"start":{"line":145,"column":2},"end":{"line":173,"column":null}},"63":{"start":{"line":146,"column":4},"end":{"line":148,"column":null}},"64":{"start":{"line":147,"column":6},"end":{"line":147,"column":72}},"65":{"start":{"line":150,"column":21},"end":{"line":150,"column":38}},"66":{"start":{"line":154,"column":8},"end":{"line":154,"column":22}},"67":{"start":{"line":152,"column":25},"end":{"line":152,"column":null}},"68":{"start":{"line":153,"column":31},"end":{"line":153,"column":null}},"69":{"start":{"line":155,"column":4},"end":{"line":160,"column":null}},"70":{"start":{"line":155,"column":23},"end":{"line":155,"column":32}},"71":{"start":{"line":155,"column":19},"end":{"line":155,"column":23}},"72":{"start":{"line":156,"column":22},"end":{"line":156,"column":50}},"73":{"start":{"line":157,"column":6},"end":{"line":159,"column":null}},"74":{"start":{"line":157,"column":27},"end":{"line":157,"column":34}},"75":{"start":{"line":157,"column":23},"end":{"line":157,"column":27}},"76":{"start":{"line":158,"column":8},"end":{"line":158,"column":42}},"77":{"start":{"line":162,"column":4},"end":{"line":165,"column":null}},"78":{"start":{"line":162,"column":33},"end":{"line":162,"column":37}},"79":{"start":{"line":162,"column":33},"end":{"line":162,"column":51}},"80":{"start":{"line":162,"column":15},"end":{"line":162,"column":16}},"81":{"start":{"line":162,"column":22},"end":{"line":162,"column":24}},"82":{"start":{"line":162,"column":28},"end":{"line":162,"column":29}},"83":{"start":{"line":163,"column":21},"end":{"line":163,"column":37}},"84":{"start":{"line":164,"column":6},"end":{"line":164,"column":27}},"85":{"start":{"line":167,"column":4},"end":{"line":172,"column":null}},"86":{"start":{"line":168,"column":22},"end":{"line":168,"column":62}},"87":{"start":{"line":169,"column":6},"end":{"line":171,"column":8}},"88":{"start":{"line":174,"column":0},"end":{"line":174,"column":null}},"89":{"start":{"line":25,"column":13},"end":{"line":25,"column":24}}},"fnMap":{"0":{"name":"(anonymous_7)","decl":{"start":{"line":10,"column":0},"end":{"line":10,"column":13}},"loc":{"start":{"line":10,"column":0},"end":{"line":19,"column":null}}},"1":{"name":"HTTPError","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":14}},"loc":{"start":{"line":14,"column":40},"end":{"line":18,"column":3}}},"2":{"name":"(anonymous_9)","decl":{"start":{"line":25,"column":0},"end":{"line":25,"column":13}},"loc":{"start":{"line":25,"column":0},"end":{"line":174,"column":null}}},"3":{"name":"TypedRouter","decl":{"start":{"line":31,"column":2},"end":{"line":31,"column":14}},"loc":{"start":{"line":31,"column":53},"end":{"line":39,"column":3}}},"4":{"name":"(anonymous_11)","decl":{"start":{"line":41,"column":2},"end":{"line":41,"column":5}},"loc":{"start":{"line":50,"column":69},"end":{"line":54,"column":3}}},"5":{"name":"(anonymous_12)","decl":{"start":{"line":53,"column":47},"end":{"line":53,"column":48}},"loc":{"start":{"line":53,"column":76},"end":{"line":53,"column":88}}},"6":{"name":"(anonymous_13)","decl":{"start":{"line":57,"column":2},"end":{"line":57,"column":18}},"loc":{"start":{"line":69,"column":69},"end":{"line":142,"column":3}}},"7":{"name":"(anonymous_14)","decl":{"start":{"line":107,"column":38},"end":{"line":107,"column":39}},"loc":{"start":{"line":107,"column":38},"end":{"line":141,"column":5}}},"8":{"name":"(anonymous_15)","decl":{"start":{"line":124,"column":14},"end":{"line":124,"column":28}},"loc":{"start":{"line":124,"column":28},"end":{"line":132,"column":9}}},"9":{"name":"(anonymous_16)","decl":{"start":{"line":133,"column":15},"end":{"line":133,"column":16}},"loc":{"start":{"line":133,"column":26},"end":{"line":140,"column":9}}},"10":{"name":"(anonymous_17)","decl":{"start":{"line":145,"column":2},"end":{"line":145,"column":27}},"loc":{"start":{"line":145,"column":2},"end":{"line":173,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":28},"end":{"line":14,"column":null}},"type":"if","locations":[{"start":{"line":14,"column":28},"end":{"line":14,"column":null}},{"start":{"line":14,"column":28},"end":{"line":14,"column":null}}]},"1":{"loc":{"start":{"line":15,"column":4},"end":{"line":15,"column":31}},"type":"binary-expr","locations":[{"start":{"line":15,"column":4},"end":{"line":15,"column":31}},{"start":{"line":15,"column":31},"end":{"line":15,"column":null}}]},"2":{"loc":{"start":{"line":33,"column":4},"end":{"line":37,"column":null}},"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":37,"column":null}},{"start":{"line":33,"column":4},"end":{"line":37,"column":null}}]},"3":{"loc":{"start":{"line":73,"column":4},"end":{"line":104,"column":null}},"type":"if","locations":[{"start":{"line":73,"column":4},"end":{"line":104,"column":null}},{"start":{"line":73,"column":4},"end":{"line":104,"column":null}}]},"4":{"loc":{"start":{"line":75,"column":6},"end":{"line":77,"column":null}},"type":"if","locations":[{"start":{"line":75,"column":6},"end":{"line":77,"column":null}},{"start":{"line":75,"column":6},"end":{"line":77,"column":null}}]},"5":{"loc":{"start":{"line":82,"column":6},"end":{"line":89,"column":null}},"type":"if","locations":[{"start":{"line":82,"column":6},"end":{"line":89,"column":null}},{"start":{"line":82,"column":6},"end":{"line":89,"column":null}}]},"6":{"loc":{"start":{"line":84,"column":13},"end":{"line":89,"column":null}},"type":"if","locations":[{"start":{"line":84,"column":13},"end":{"line":89,"column":null}},{"start":{"line":84,"column":13},"end":{"line":89,"column":null}}]},"7":{"loc":{"start":{"line":84,"column":17},"end":{"line":84,"column":33}},"type":"binary-expr","locations":[{"start":{"line":84,"column":17},"end":{"line":84,"column":33}},{"start":{"line":84,"column":37},"end":{"line":84,"column":64}}]},"8":{"loc":{"start":{"line":86,"column":13},"end":{"line":89,"column":null}},"type":"if","locations":[{"start":{"line":86,"column":13},"end":{"line":89,"column":null}},{"start":{"line":86,"column":13},"end":{"line":89,"column":null}}]},"9":{"loc":{"start":{"line":91,"column":6},"end":{"line":103,"column":null}},"type":"if","locations":[{"start":{"line":91,"column":6},"end":{"line":103,"column":null}},{"start":{"line":91,"column":6},"end":{"line":103,"column":null}}]},"10":{"loc":{"start":{"line":91,"column":10},"end":{"line":91,"column":21}},"type":"binary-expr","locations":[{"start":{"line":91,"column":10},"end":{"line":91,"column":21}},{"start":{"line":91,"column":25},"end":{"line":91,"column":33}}]},"11":{"loc":{"start":{"line":92,"column":8},"end":{"line":99,"column":null}},"type":"if","locations":[{"start":{"line":92,"column":8},"end":{"line":99,"column":null}},{"start":{"line":92,"column":8},"end":{"line":99,"column":null}}]},"12":{"loc":{"start":{"line":100,"column":8},"end":{"line":102,"column":null}},"type":"if","locations":[{"start":{"line":100,"column":8},"end":{"line":102,"column":null}},{"start":{"line":100,"column":8},"end":{"line":102,"column":null}}]},"13":{"loc":{"start":{"line":110,"column":6},"end":{"line":116,"column":null}},"type":"if","locations":[{"start":{"line":110,"column":6},"end":{"line":116,"column":null}},{"start":{"line":110,"column":6},"end":{"line":116,"column":null}}]},"14":{"loc":{"start":{"line":110,"column":10},"end":{"line":110,"column":18}},"type":"binary-expr","locations":[{"start":{"line":110,"column":10},"end":{"line":110,"column":18}},{"start":{"line":110,"column":22},"end":{"line":110,"column":37}}]},"15":{"loc":{"start":{"line":118,"column":6},"end":{"line":121,"column":null}},"type":"if","locations":[{"start":{"line":118,"column":6},"end":{"line":121,"column":null}},{"start":{"line":118,"column":6},"end":{"line":121,"column":null}}]},"16":{"loc":{"start":{"line":125,"column":10},"end":{"line":131,"column":null}},"type":"if","locations":[{"start":{"line":125,"column":10},"end":{"line":131,"column":null}},{"start":{"line":125,"column":10},"end":{"line":131,"column":null}}]},"17":{"loc":{"start":{"line":127,"column":17},"end":{"line":131,"column":null}},"type":"if","locations":[{"start":{"line":127,"column":17},"end":{"line":131,"column":null}},{"start":{"line":127,"column":17},"end":{"line":131,"column":null}}]},"18":{"loc":{"start":{"line":135,"column":10},"end":{"line":139,"column":null}},"type":"if","locations":[{"start":{"line":135,"column":10},"end":{"line":139,"column":null}},{"start":{"line":135,"column":10},"end":{"line":139,"column":null}}]},"19":{"loc":{"start":{"line":135,"column":14},"end":{"line":135,"column":40}},"type":"binary-expr","locations":[{"start":{"line":135,"column":14},"end":{"line":135,"column":40}},{"start":{"line":135,"column":45},"end":{"line":135,"column":55}}]},"20":{"loc":{"start":{"line":146,"column":4},"end":{"line":148,"column":null}},"type":"if","locations":[{"start":{"line":146,"column":4},"end":{"line":148,"column":null}},{"start":{"line":146,"column":4},"end":{"line":148,"column":null}}]},"21":{"loc":{"start":{"line":167,"column":4},"end":{"line":172,"column":null}},"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":172,"column":null}},{"start":{"line":167,"column":4},"end":{"line":172,"column":null}}]}},"s":{"0":2,"1":2,"2":2,"3":3,"4":3,"5":3,"6":3,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2,"16":2,"17":4,"18":5,"19":2,"20":8,"21":8,"22":8,"23":8,"24":8,"25":0,"26":8,"27":8,"28":8,"29":8,"30":8,"31":2,"32":6,"33":4,"34":2,"35":0,"36":8,"37":4,"38":2,"39":2,"40":2,"41":4,"42":0,"43":8,"44":8,"45":60,"46":12,"47":12,"48":12,"49":12,"50":12,"51":3,"52":9,"53":9,"54":9,"55":6,"56":6,"57":0,"58":6,"59":3,"60":3,"61":0,"62":2,"63":2,"64":0,"65":2,"66":2,"67":2,"68":2,"69":2,"70":4,"71":4,"72":4,"73":4,"74":8,"75":12,"76":12,"77":2,"78":2,"79":2,"80":9,"81":9,"82":9,"83":9,"84":9,"85":2,"86":1,"87":1,"88":2,"89":2},"f":{"0":2,"1":3,"2":2,"3":2,"4":4,"5":5,"6":8,"7":12,"8":6,"9":3,"10":2},"b":{"0":[0,3],"1":[3,0],"2":[2,0],"3":[8,0],"4":[0,8],"5":[2,6],"6":[4,2],"7":[6,6],"8":[0,2],"9":[4,4],"10":[8,4],"11":[2,2],"12":[0,4],"13":[3,9],"14":[12,7],"15":[9,0],"16":[0,6],"17":[0,6],"18":[3,0],"19":[3,3],"20":[0,2],"21":[1,1]}}
{"/Users/danvk/github/crosswalk/src/index.ts": {"path":"/Users/danvk/github/crosswalk/src/index.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":9}},"1":{"start":{"line":1,"column":9},"end":{"line":1,"column":45}},"2":{"start":{"line":2,"column":0},"end":{"line":2,"column":32}},"3":{"start":{"line":3,"column":0},"end":{"line":3,"column":31}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":1,"column":9},"end":{"line":1,"column":25}},"loc":{"start":{"line":1,"column":9},"end":{"line":1,"column":45}}}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1},"f":{"0":0},"b":{}}
,"/Users/danvk/github/crosswalk/src/openapi.ts": {"path":"/Users/danvk/github/crosswalk/src/openapi.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":47}},"1":{"start":{"line":43,"column":17},"end":{"line":43,"column":48}},"2":{"start":{"line":43,"column":47},"end":{"line":43,"column":76}},"3":{"start":{"line":46,"column":17},"end":{"line":46,"column":41}},"4":{"start":{"line":47,"column":2},"end":{"line":51,"column":6}},"5":{"start":{"line":47,"column":46},"end":{"line":51,"column":5}},"6":{"start":{"line":56,"column":2},"end":{"line":56,"column":43}},"7":{"start":{"line":59,"column":19},"end":{"line":59,"column":35}},"8":{"start":{"line":61,"column":14},"end":{"line":61,"column":25}},"9":{"start":{"line":62,"column":2},"end":{"line":64,"column":null}},"10":{"start":{"line":63,"column":4},"end":{"line":63,"column":54}},"11":{"start":{"line":66,"column":15},"end":{"line":66,"column":43}},"12":{"start":{"line":67,"column":14},"end":{"line":67,"column":36}},"13":{"start":{"line":68,"column":2},"end":{"line":70,"column":null}},"14":{"start":{"line":69,"column":4},"end":{"line":69,"column":61}},"15":{"start":{"line":71,"column":2},"end":{"line":71,"column":21}},"16":{"start":{"line":60,"column":0},"end":{"line":60,"column":16}},"17":{"start":{"line":76,"column":2},"end":{"line":76,"column":48}},"18":{"start":{"line":81,"column":6},"end":{"line":81,"column":14}},"19":{"start":{"line":84,"column":37},"end":{"line":84,"column":39}},"20":{"start":{"line":86,"column":19},"end":{"line":86,"column":36}},"21":{"start":{"line":88,"column":2},"end":{"line":118,"column":null}},"22":{"start":{"line":88,"column":25},"end":{"line":88,"column":34}},"23":{"start":{"line":88,"column":21},"end":{"line":88,"column":25}},"24":{"start":{"line":89,"column":24},"end":{"line":89,"column":58}},"25":{"start":{"line":90,"column":4},"end":{"line":90,"column":28}},"26":{"start":{"line":91,"column":19},"end":{"line":91,"column":53}},"27":{"start":{"line":92,"column":4},"end":{"line":117,"column":null}},"28":{"start":{"line":92,"column":30},"end":{"line":92,"column":36}},"29":{"start":{"line":92,"column":30},"end":{"line":92,"column":52}},"30":{"start":{"line":92,"column":15},"end":{"line":92,"column":16}},"31":{"start":{"line":92,"column":20},"end":{"line":92,"column":22}},"32":{"start":{"line":92,"column":25},"end":{"line":92,"column":26}},"33":{"start":{"line":93,"column":29},"end":{"line":93,"column":65}},"34":{"start":{"line":93,"column":17},"end":{"line":93,"column":19}},"35":{"start":{"line":93,"column":25},"end":{"line":93,"column":29}},"36":{"start":{"line":94,"column":37},"end":{"line":94,"column":62}},"37":{"start":{"line":94,"column":21},"end":{"line":94,"column":23}},"38":{"start":{"line":94,"column":31},"end":{"line":94,"column":37}},"39":{"start":{"line":96,"column":34},"end":{"line":96,"column":61}},"40":{"start":{"line":97,"column":6},"end":{"line":103,"column":null}},"41":{"start":{"line":98,"column":8},"end":{"line":102,"column":11}},"42":{"start":{"line":105,"column":19},"end":{"line":113,"column":null}},"43":{"start":{"line":115,"column":6},"end":{"line":115,"column":41}},"44":{"start":{"line":116,"column":6},"end":{"line":116,"column":25}},"45":{"start":{"line":120,"column":2},"end":{"line":122,"column":5}},"46":{"start":{"line":121,"column":4},"end":{"line":121,"column":29}},"47":{"start":{"line":124,"column":2},"end":{"line":133,"column":null}},"48":{"start":{"line":75,"column":0},"end":{"line":75,"column":16}}},"fnMap":{"0":{"name":"(anonymous_8)","decl":{"start":{"line":43,"column":17},"end":{"line":43,"column":21}},"loc":{"start":{"line":43,"column":25},"end":{"line":43,"column":48}}},"1":{"name":"extractPathParams","decl":{"start":{"line":45,"column":9},"end":{"line":45,"column":26}},"loc":{"start":{"line":45,"column":39},"end":{"line":52,"column":1}}},"2":{"name":"(anonymous_10)","decl":{"start":{"line":47,"column":37},"end":{"line":47,"column":38}},"loc":{"start":{"line":47,"column":41},"end":{"line":47,"column":47}}},"3":{"name":"expressPathToOpenApiPath","decl":{"start":{"line":55,"column":9},"end":{"line":55,"column":33}},"loc":{"start":{"line":55,"column":46},"end":{"line":57,"column":1}}},"4":{"name":"followApiRef","decl":{"start":{"line":60,"column":16},"end":{"line":60,"column":28}},"loc":{"start":{"line":60,"column":54},"end":{"line":72,"column":1}}},"5":{"name":"apiSpecToOpenApi","decl":{"start":{"line":75,"column":16},"end":{"line":75,"column":32}},"loc":{"start":{"line":75,"column":64},"end":{"line":135,"column":1}}},"6":{"name":"(anonymous_14)","decl":{"start":{"line":120,"column":19},"end":{"line":120,"column":23}},"loc":{"start":{"line":120,"column":23},"end":{"line":122,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":43,"column":47},"end":{"line":43,"column":50}},"type":"binary-expr","locations":[{"start":{"line":43,"column":47},"end":{"line":43,"column":50}},{"start":{"line":43,"column":54},"end":{"line":43,"column":75}}]},"1":{"loc":{"start":{"line":62,"column":2},"end":{"line":64,"column":null}},"type":"if","locations":[{"start":{"line":62,"column":2},"end":{"line":64,"column":null}},{"start":{"line":62,"column":2},"end":{"line":64,"column":null}}]},"2":{"loc":{"start":{"line":68,"column":2},"end":{"line":70,"column":null}},"type":"if","locations":[{"start":{"line":68,"column":2},"end":{"line":70,"column":null}},{"start":{"line":68,"column":2},"end":{"line":70,"column":null}}]},"3":{"loc":{"start":{"line":97,"column":6},"end":{"line":103,"column":null}},"type":"if","locations":[{"start":{"line":97,"column":6},"end":{"line":103,"column":null}},{"start":{"line":97,"column":6},"end":{"line":103,"column":null}}]},"4":{"loc":{"start":{"line":97,"column":17},"end":{"line":97,"column":19}},"type":"cond-expr","locations":[{"start":{"line":97,"column":17},"end":{"line":97,"column":19}},{"start":{"line":97,"column":10},"end":{"line":97,"column":23}}]},"5":{"loc":{"start":{"line":97,"column":10},"end":{"line":97,"column":19}},"type":"binary-expr","locations":[{"start":{"line":97,"column":10},"end":{"line":97,"column":19}},{"start":{"line":97,"column":10},"end":{"line":97,"column":19}}]},"6":{"loc":{"start":{"line":107,"column":12},"end":{"line":107,"column":29}},"type":"binary-expr","locations":[{"start":{"line":107,"column":12},"end":{"line":107,"column":29}},{"start":{"line":107,"column":33},"end":{"line":107,"column":47}}]}},"s":{"0":2,"1":2,"2":10,"3":6,"4":6,"5":4,"6":2,"7":2,"8":6,"9":6,"10":0,"11":6,"12":6,"13":6,"14":0,"15":6,"16":2,"17":1,"18":3,"19":1,"20":1,"21":1,"22":2,"23":2,"24":2,"25":2,"26":2,"27":2,"28":2,"29":2,"30":6,"31":6,"32":6,"33":6,"34":6,"35":6,"36":6,"37":6,"38":6,"39":6,"40":6,"41":4,"42":6,"43":6,"44":6,"45":1,"46":6,"47":1,"48":2},"f":{"0":10,"1":6,"2":4,"3":2,"4":6,"5":1,"6":6},"b":{"0":[10,10],"1":[0,6],"2":[0,6],"3":[4,2],"4":[0,6],"5":[6,6],"6":[6,5]}}
,"/Users/danvk/github/crosswalk/src/typed-request.ts": {"path":"/Users/danvk/github/crosswalk/src/typed-request.ts","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":3,"column":41}},"1":{"start":{"line":11,"column":33},"end":{"line":11,"column":null}},"2":{"start":{"line":12,"column":2},"end":{"line":16,"column":4}},"3":{"start":{"line":13,"column":19},"end":{"line":13,"column":36}},"4":{"start":{"line":14,"column":4},"end":{"line":15,"column":44}},"5":{"start":{"line":14,"column":12},"end":{"line":14,"column":67}},"6":{"start":{"line":15,"column":6},"end":{"line":15,"column":44}},"7":{"start":{"line":11,"column":0},"end":{"line":11,"column":16}},"8":{"start":{"line":31,"column":19},"end":{"line":38,"column":null}},"9":{"start":{"line":31,"column":8},"end":{"line":38,"column":null}},"10":{"start":{"line":39,"column":2},"end":{"line":39,"column":25}},"11":{"start":{"line":26,"column":0},"end":{"line":26,"column":22}},"12":{"start":{"line":43,"column":26},"end":{"line":43,"column":40}},"13":{"start":{"line":43,"column":16},"end":{"line":43,"column":26}},"14":{"start":{"line":44,"column":15},"end":{"line":44,"column":45}},"15":{"start":{"line":46,"column":19},"end":{"line":46,"column":43}},"16":{"start":{"line":52,"column":18},"end":{"line":66,"column":3}},"17":{"start":{"line":63,"column":20},"end":{"line":63,"column":38}},"18":{"start":{"line":64,"column":4},"end":{"line":65,"column":80}},"19":{"start":{"line":65,"column":6},"end":{"line":65,"column":80}},"20":{"start":{"line":68,"column":2},"end":{"line":87,"column":4}},"21":{"start":{"line":75,"column":6},"end":{"line":76,"column":73}},"22":{"start":{"line":75,"column":14},"end":{"line":75,"column":35}},"23":{"start":{"line":76,"column":8},"end":{"line":76,"column":73}},"24":{"start":{"line":84,"column":6},"end":{"line":85,"column":55}},"25":{"start":{"line":85,"column":8},"end":{"line":85,"column":55}},"26":{"start":{"line":42,"column":0},"end":{"line":42,"column":16}}},"fnMap":{"0":{"name":"apiUrlMaker","decl":{"start":{"line":11,"column":16},"end":{"line":11,"column":27}},"loc":{"start":{"line":11,"column":44},"end":{"line":17,"column":1}}},"1":{"name":"(anonymous_14)","decl":{"start":{"line":12,"column":9},"end":{"line":12,"column":34}},"loc":{"start":{"line":12,"column":57},"end":{"line":16,"column":3}}},"2":{"name":"(anonymous_15)","decl":{"start":{"line":14,"column":11},"end":{"line":14,"column":12}},"loc":{"start":{"line":14,"column":11},"end":{"line":15,"column":12}}},"3":{"name":"fetchJson","decl":{"start":{"line":26,"column":22},"end":{"line":26,"column":31}},"loc":{"start":{"line":29,"column":18},"end":{"line":40,"column":null}}},"4":{"name":"typedApi","decl":{"start":{"line":42,"column":16},"end":{"line":42,"column":24}},"loc":{"start":{"line":42,"column":47},"end":{"line":88,"column":1}}},"5":{"name":"(anonymous_20)","decl":{"start":{"line":52,"column":18},"end":{"line":52,"column":null}},"loc":{"start":{"line":57,"column":18},"end":{"line":66,"column":3}}},"6":{"name":"(anonymous_21)","decl":{"start":{"line":64,"column":11},"end":{"line":64,"column":12}},"loc":{"start":{"line":64,"column":46},"end":{"line":65,"column":13}}},"7":{"name":"(anonymous_22)","decl":{"start":{"line":71,"column":9},"end":{"line":71,"column":33}},"loc":{"start":{"line":71,"column":47},"end":{"line":77,"column":5}}},"8":{"name":"(anonymous_23)","decl":{"start":{"line":75,"column":13},"end":{"line":75,"column":14}},"loc":{"start":{"line":75,"column":13},"end":{"line":76,"column":15}}},"9":{"name":"(anonymous_24)","decl":{"start":{"line":79,"column":10},"end":{"line":79,"column":35}},"loc":{"start":{"line":79,"column":49},"end":{"line":86,"column":5}}},"10":{"name":"(anonymous_25)","decl":{"start":{"line":84,"column":13},"end":{"line":84,"column":14}},"loc":{"start":{"line":84,"column":43},"end":{"line":85,"column":15}}}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":33},"end":{"line":11,"column":null}},"type":"if","locations":[{"start":{"line":11,"column":33},"end":{"line":11,"column":null}},{"start":{"line":11,"column":33},"end":{"line":11,"column":null}}]},"1":{"loc":{"start":{"line":31,"column":19},"end":{"line":38,"column":null}},"type":"switch","locations":[{"start":{"line":31,"column":19},"end":{"line":38,"column":null}}]},"2":{"loc":{"start":{"line":43,"column":26},"end":{"line":43,"column":33}},"type":"binary-expr","locations":[{"start":{"line":43,"column":26},"end":{"line":43,"column":33}},{"start":{"line":43,"column":37},"end":{"line":43,"column":39}}]},"3":{"loc":{"start":{"line":43,"column":19},"end":{"line":43,"column":21}},"type":"cond-expr","locations":[{"start":{"line":43,"column":19},"end":{"line":43,"column":21}},{"start":{"line":43,"column":21},"end":{"line":43,"column":26}}]},"4":{"loc":{"start":{"line":44,"column":32},"end":{"line":44,"column":36}},"type":"cond-expr","locations":[{"start":{"line":44,"column":32},"end":{"line":44,"column":36}},{"start":{"line":44,"column":36},"end":{"line":44,"column":45}}]},"5":{"loc":{"start":{"line":44,"column":15},"end":{"line":44,"column":36}},"type":"binary-expr","locations":[{"start":{"line":44,"column":15},"end":{"line":44,"column":36}},{"start":{"line":44,"column":32},"end":{"line":44,"column":36}}]},"6":{"loc":{"start":{"line":44,"column":25},"end":{"line":44,"column":27}},"type":"cond-expr","locations":[{"start":{"line":44,"column":25},"end":{"line":44,"column":27}},{"start":{"line":44,"column":18},"end":{"line":44,"column":32}}]},"7":{"loc":{"start":{"line":44,"column":18},"end":{"line":44,"column":27}},"type":"binary-expr","locations":[{"start":{"line":44,"column":18},"end":{"line":44,"column":27}},{"start":{"line":44,"column":18},"end":{"line":44,"column":27}}]},"8":{"loc":{"start":{"line":76,"column":46},"end":{"line":76,"column":49}},"type":"cond-expr","locations":[{"start":{"line":76,"column":46},"end":{"line":76,"column":49}},{"start":{"line":76,"column":40},"end":{"line":76,"column":58}}]},"9":{"loc":{"start":{"line":76,"column":40},"end":{"line":76,"column":49}},"type":"binary-expr","locations":[{"start":{"line":76,"column":40},"end":{"line":76,"column":49}},{"start":{"line":76,"column":40},"end":{"line":76,"column":49}}]}},"s":{"0":1,"1":6,"2":5,"3":8,"4":8,"5":22,"6":8,"7":1,"8":1,"9":1,"10":1,"11":1,"12":2,"13":2,"14":2,"15":2,"16":2,"17":3,"18":3,"19":3,"20":2,"21":2,"22":5,"23":2,"24":1,"25":1,"26":1},"f":{"0":5,"1":8,"2":8,"3":1,"4":2,"5":3,"6":3,"7":2,"8":2,"9":1,"10":1},"b":{"0":[1,4],"1":[1],"2":[2,0],"3":[2,0],"4":[2,0],"5":[2,2],"6":[0,2],"7":[2,2],"8":[0,2],"9":[2,2]}}
,"/Users/danvk/github/crosswalk/src/typed-router.ts": {"path":"/Users/danvk/github/crosswalk/src/typed-router.ts","statementMap":{"0":{"start":{"line":3,"column":0},"end":{"line":3,"column":22}},"1":{"start":{"line":10,"column":0},"end":{"line":10,"column":null}},"2":{"start":{"line":10,"column":31},"end":{"line":10,"column":36}},"3":{"start":{"line":14,"column":28},"end":{"line":14,"column":null}},"4":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}},"5":{"start":{"line":16,"column":4},"end":{"line":16,"column":21}},"6":{"start":{"line":17,"column":4},"end":{"line":17,"column":27}},"7":{"start":{"line":19,"column":0},"end":{"line":19,"column":null}},"8":{"start":{"line":10,"column":13},"end":{"line":10,"column":22}},"9":{"start":{"line":25,"column":0},"end":{"line":25,"column":13}},"10":{"start":{"line":32,"column":4},"end":{"line":32,"column":25}},"11":{"start":{"line":33,"column":4},"end":{"line":37,"column":null}},"12":{"start":{"line":34,"column":6},"end":{"line":34,"column":33}},"13":{"start":{"line":35,"column":6},"end":{"line":35,"column":44}},"14":{"start":{"line":36,"column":6},"end":{"line":36,"column":36}},"15":{"start":{"line":38,"column":4},"end":{"line":38,"column":28}},"16":{"start":{"line":41,"column":2},"end":{"line":57,"column":null}},"17":{"start":{"line":53,"column":4},"end":{"line":56,"column":6}},"18":{"start":{"line":55,"column":40},"end":{"line":55,"column":null}},"19":{"start":{"line":60,"column":2},"end":{"line":112,"column":null}},"20":{"start":{"line":60,"column":2},"end":{"line":60,"column":18}},"21":{"start":{"line":74,"column":21},"end":{"line":74,"column":53}},"22":{"start":{"line":75,"column":4},"end":{"line":75,"column":61}},"23":{"start":{"line":77,"column":4},"end":{"line":111,"column":7}},"24":{"start":{"line":77,"column":39},"end":{"line":77,"column":43}},"25":{"start":{"line":77,"column":46},"end":{"line":77,"column":48}},"26":{"start":{"line":77,"column":56},"end":{"line":77,"column":58}},"27":{"start":{"line":77,"column":62},"end":{"line":77,"column":78}},"28":{"start":{"line":78,"column":21},"end":{"line":78,"column":25}},"29":{"start":{"line":80,"column":6},"end":{"line":86,"column":null}},"30":{"start":{"line":81,"column":8},"end":{"line":85,"column":11}},"31":{"start":{"line":88,"column":6},"end":{"line":91,"column":null}},"32":{"start":{"line":90,"column":8},"end":{"line":90,"column":75}},"33":{"start":{"line":93,"column":6},"end":{"line":110,"column":11}},"34":{"start":{"line":95,"column":10},"end":{"line":101,"column":null}},"35":{"start":{"line":97,"column":17},"end":{"line":101,"column":null}},"36":{"start":{"line":98,"column":12},"end":{"line":98,"column":54}},"37":{"start":{"line":100,"column":12},"end":{"line":100,"column":42}},"38":{"start":{"line":105,"column":10},"end":{"line":109,"column":null}},"39":{"start":{"line":106,"column":12},"end":{"line":106,"column":69}},"40":{"start":{"line":108,"column":12},"end":{"line":108,"column":24}},"41":{"start":{"line":115,"column":2},"end":{"line":154,"column":null}},"42":{"start":{"line":116,"column":24},"end":{"line":116,"column":29}},"43":{"start":{"line":117,"column":4},"end":{"line":119,"column":null}},"44":{"start":{"line":118,"column":6},"end":{"line":118,"column":18}},"45":{"start":{"line":121,"column":19},"end":{"line":121,"column":46}},"46":{"start":{"line":122,"column":4},"end":{"line":124,"column":null}},"47":{"start":{"line":123,"column":6},"end":{"line":123,"column":70}},"48":{"start":{"line":125,"column":30},"end":{"line":125,"column":67}},"49":{"start":{"line":126,"column":21},"end":{"line":126,"column":61}},"50":{"start":{"line":127,"column":27},"end":{"line":127,"column":77}},"51":{"start":{"line":128,"column":22},"end":{"line":128,"column":43}},"52":{"start":{"line":129,"column":4},"end":{"line":136,"column":null}},"53":{"start":{"line":130,"column":6},"end":{"line":130,"column":37}},"54":{"start":{"line":131,"column":11},"end":{"line":136,"column":null}},"55":{"start":{"line":132,"column":6},"end":{"line":132,"column":25}},"56":{"start":{"line":133,"column":11},"end":{"line":136,"column":null}},"57":{"start":{"line":135,"column":6},"end":{"line":135,"column":75}},"58":{"start":{"line":138,"column":4},"end":{"line":152,"column":null}},"59":{"start":{"line":139,"column":18},"end":{"line":139,"column":19}},"60":{"start":{"line":140,"column":6},"end":{"line":147,"column":null}},"61":{"start":{"line":141,"column":8},"end":{"line":141,"column":59}},"62":{"start":{"line":145,"column":27},"end":{"line":145,"column":36}},"63":{"start":{"line":146,"column":8},"end":{"line":146,"column":51}},"64":{"start":{"line":148,"column":6},"end":{"line":150,"column":null}},"65":{"start":{"line":149,"column":8},"end":{"line":149,"column":69}},"66":{"start":{"line":151,"column":6},"end":{"line":151,"column":22}},"67":{"start":{"line":153,"column":4},"end":{"line":153,"column":16}},"68":{"start":{"line":157,"column":2},"end":{"line":185,"column":null}},"69":{"start":{"line":158,"column":4},"end":{"line":160,"column":null}},"70":{"start":{"line":159,"column":6},"end":{"line":159,"column":72}},"71":{"start":{"line":162,"column":21},"end":{"line":162,"column":38}},"72":{"start":{"line":166,"column":8},"end":{"line":166,"column":22}},"73":{"start":{"line":164,"column":25},"end":{"line":164,"column":null}},"74":{"start":{"line":165,"column":31},"end":{"line":165,"column":null}},"75":{"start":{"line":167,"column":4},"end":{"line":172,"column":null}},"76":{"start":{"line":167,"column":23},"end":{"line":167,"column":32}},"77":{"start":{"line":167,"column":19},"end":{"line":167,"column":23}},"78":{"start":{"line":168,"column":22},"end":{"line":168,"column":50}},"79":{"start":{"line":169,"column":6},"end":{"line":171,"column":null}},"80":{"start":{"line":169,"column":27},"end":{"line":169,"column":34}},"81":{"start":{"line":169,"column":23},"end":{"line":169,"column":27}},"82":{"start":{"line":170,"column":8},"end":{"line":170,"column":42}},"83":{"start":{"line":174,"column":4},"end":{"line":177,"column":null}},"84":{"start":{"line":174,"column":33},"end":{"line":174,"column":37}},"85":{"start":{"line":174,"column":33},"end":{"line":174,"column":51}},"86":{"start":{"line":174,"column":15},"end":{"line":174,"column":16}},"87":{"start":{"line":174,"column":22},"end":{"line":174,"column":24}},"88":{"start":{"line":174,"column":28},"end":{"line":174,"column":29}},"89":{"start":{"line":175,"column":21},"end":{"line":175,"column":37}},"90":{"start":{"line":176,"column":6},"end":{"line":176,"column":27}},"91":{"start":{"line":179,"column":4},"end":{"line":184,"column":null}},"92":{"start":{"line":180,"column":22},"end":{"line":180,"column":62}},"93":{"start":{"line":181,"column":6},"end":{"line":183,"column":8}},"94":{"start":{"line":186,"column":0},"end":{"line":186,"column":null}},"95":{"start":{"line":25,"column":13},"end":{"line":25,"column":24}}},"fnMap":{"0":{"name":"(anonymous_7)","decl":{"start":{"line":10,"column":0},"end":{"line":10,"column":13}},"loc":{"start":{"line":10,"column":0},"end":{"line":19,"column":null}}},"1":{"name":"HTTPError","decl":{"start":{"line":14,"column":2},"end":{"line":14,"column":14}},"loc":{"start":{"line":14,"column":40},"end":{"line":18,"column":3}}},"2":{"name":"(anonymous_9)","decl":{"start":{"line":25,"column":0},"end":{"line":25,"column":13}},"loc":{"start":{"line":25,"column":0},"end":{"line":186,"column":null}}},"3":{"name":"TypedRouter","decl":{"start":{"line":31,"column":2},"end":{"line":31,"column":14}},"loc":{"start":{"line":31,"column":53},"end":{"line":39,"column":3}}},"4":{"name":"(anonymous_11)","decl":{"start":{"line":41,"column":2},"end":{"line":41,"column":5}},"loc":{"start":{"line":50,"column":69},"end":{"line":57,"column":3}}},"5":{"name":"(anonymous_12)","decl":{"start":{"line":55,"column":6},"end":{"line":55,"column":7}},"loc":{"start":{"line":55,"column":35},"end":{"line":55,"column":47}}},"6":{"name":"(anonymous_13)","decl":{"start":{"line":60,"column":2},"end":{"line":60,"column":18}},"loc":{"start":{"line":72,"column":69},"end":{"line":112,"column":3}}},"7":{"name":"(anonymous_14)","decl":{"start":{"line":77,"column":38},"end":{"line":77,"column":39}},"loc":{"start":{"line":77,"column":38},"end":{"line":111,"column":5}}},"8":{"name":"(anonymous_15)","decl":{"start":{"line":94,"column":14},"end":{"line":94,"column":28}},"loc":{"start":{"line":94,"column":28},"end":{"line":102,"column":9}}},"9":{"name":"(anonymous_16)","decl":{"start":{"line":103,"column":15},"end":{"line":103,"column":16}},"loc":{"start":{"line":103,"column":26},"end":{"line":110,"column":9}}},"10":{"name":"(anonymous_17)","decl":{"start":{"line":115,"column":2},"end":{"line":115,"column":14}},"loc":{"start":{"line":115,"column":46},"end":{"line":154,"column":3}}},"11":{"name":"(anonymous_18)","decl":{"start":{"line":157,"column":2},"end":{"line":157,"column":27}},"loc":{"start":{"line":157,"column":2},"end":{"line":185,"column":3}}}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":28},"end":{"line":14,"column":null}},"type":"if","locations":[{"start":{"line":14,"column":28},"end":{"line":14,"column":null}},{"start":{"line":14,"column":28},"end":{"line":14,"column":null}}]},"1":{"loc":{"start":{"line":15,"column":4},"end":{"line":15,"column":31}},"type":"binary-expr","locations":[{"start":{"line":15,"column":4},"end":{"line":15,"column":31}},{"start":{"line":15,"column":31},"end":{"line":15,"column":null}}]},"2":{"loc":{"start":{"line":33,"column":4},"end":{"line":37,"column":null}},"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":37,"column":null}},{"start":{"line":33,"column":4},"end":{"line":37,"column":null}}]},"3":{"loc":{"start":{"line":80,"column":6},"end":{"line":86,"column":null}},"type":"if","locations":[{"start":{"line":80,"column":6},"end":{"line":86,"column":null}},{"start":{"line":80,"column":6},"end":{"line":86,"column":null}}]},"4":{"loc":{"start":{"line":80,"column":10},"end":{"line":80,"column":18}},"type":"binary-expr","locations":[{"start":{"line":80,"column":10},"end":{"line":80,"column":18}},{"start":{"line":80,"column":22},"end":{"line":80,"column":37}}]},"5":{"loc":{"start":{"line":88,"column":6},"end":{"line":91,"column":null}},"type":"if","locations":[{"start":{"line":88,"column":6},"end":{"line":91,"column":null}},{"start":{"line":88,"column":6},"end":{"line":91,"column":null}}]},"6":{"loc":{"start":{"line":95,"column":10},"end":{"line":101,"column":null}},"type":"if","locations":[{"start":{"line":95,"column":10},"end":{"line":101,"column":null}},{"start":{"line":95,"column":10},"end":{"line":101,"column":null}}]},"7":{"loc":{"start":{"line":97,"column":17},"end":{"line":101,"column":null}},"type":"if","locations":[{"start":{"line":97,"column":17},"end":{"line":101,"column":null}},{"start":{"line":97,"column":17},"end":{"line":101,"column":null}}]},"8":{"loc":{"start":{"line":105,"column":10},"end":{"line":109,"column":null}},"type":"if","locations":[{"start":{"line":105,"column":10},"end":{"line":109,"column":null}},{"start":{"line":105,"column":10},"end":{"line":109,"column":null}}]},"9":{"loc":{"start":{"line":105,"column":14},"end":{"line":105,"column":40}},"type":"binary-expr","locations":[{"start":{"line":105,"column":14},"end":{"line":105,"column":40}},{"start":{"line":105,"column":45},"end":{"line":105,"column":55}}]},"10":{"loc":{"start":{"line":117,"column":4},"end":{"line":119,"column":null}},"type":"if","locations":[{"start":{"line":117,"column":4},"end":{"line":119,"column":null}},{"start":{"line":117,"column":4},"end":{"line":119,"column":null}}]},"11":{"loc":{"start":{"line":122,"column":4},"end":{"line":124,"column":null}},"type":"if","locations":[{"start":{"line":122,"column":4},"end":{"line":124,"column":null}},{"start":{"line":122,"column":4},"end":{"line":124,"column":null}}]},"12":{"loc":{"start":{"line":129,"column":4},"end":{"line":136,"column":null}},"type":"if","locations":[{"start":{"line":129,"column":4},"end":{"line":136,"column":null}},{"start":{"line":129,"column":4},"end":{"line":136,"column":null}}]},"13":{"loc":{"start":{"line":131,"column":11},"end":{"line":136,"column":null}},"type":"if","locations":[{"start":{"line":131,"column":11},"end":{"line":136,"column":null}},{"start":{"line":131,"column":11},"end":{"line":136,"column":null}}]},"14":{"loc":{"start":{"line":131,"column":15},"end":{"line":131,"column":31}},"type":"binary-expr","locations":[{"start":{"line":131,"column":15},"end":{"line":131,"column":31}},{"start":{"line":131,"column":35},"end":{"line":131,"column":62}}]},"15":{"loc":{"start":{"line":133,"column":11},"end":{"line":136,"column":null}},"type":"if","locations":[{"start":{"line":133,"column":11},"end":{"line":136,"column":null}},{"start":{"line":133,"column":11},"end":{"line":136,"column":null}}]},"16":{"loc":{"start":{"line":138,"column":4},"end":{"line":152,"column":null}},"type":"if","locations":[{"start":{"line":138,"column":4},"end":{"line":152,"column":null}},{"start":{"line":138,"column":4},"end":{"line":152,"column":null}}]},"17":{"loc":{"start":{"line":138,"column":8},"end":{"line":138,"column":19}},"type":"binary-expr","locations":[{"start":{"line":138,"column":8},"end":{"line":138,"column":19}},{"start":{"line":138,"column":23},"end":{"line":138,"column":31}}]},"18":{"loc":{"start":{"line":140,"column":6},"end":{"line":147,"column":null}},"type":"if","locations":[{"start":{"line":140,"column":6},"end":{"line":147,"column":null}},{"start":{"line":140,"column":6},"end":{"line":147,"column":null}}]},"19":{"loc":{"start":{"line":141,"column":50},"end":{"line":141,"column":54}},"type":"cond-expr","locations":[{"start":{"line":141,"column":50},"end":{"line":141,"column":54}},{"start":{"line":141,"column":54},"end":{"line":141,"column":58}}]},"20":{"loc":{"start":{"line":141,"column":16},"end":{"line":141,"column":54}},"type":"binary-expr","locations":[{"start":{"line":141,"column":16},"end":{"line":141,"column":54}},{"start":{"line":141,"column":50},"end":{"line":141,"column":54}}]},"21":{"loc":{"start":{"line":148,"column":6},"end":{"line":150,"column":null}},"type":"if","locations":[{"start":{"line":148,"column":6},"end":{"line":150,"column":null}},{"start":{"line":148,"column":6},"end":{"line":150,"column":null}}]},"22":{"loc":{"start":{"line":158,"column":4},"end":{"line":160,"column":null}},"type":"if","locations":[{"start":{"line":158,"column":4},"end":{"line":160,"column":null}},{"start":{"line":158,"column":4},"end":{"line":160,"column":null}}]},"23":{"loc":{"start":{"line":179,"column":4},"end":{"line":184,"column":null}},"type":"if","locations":[{"start":{"line":179,"column":4},"end":{"line":184,"column":null}},{"start":{"line":179,"column":4},"end":{"line":184,"column":null}}]}},"s":{"0":2,"1":2,"2":2,"3":3,"4":3,"5":3,"6":3,"7":2,"8":2,"9":2,"10":2,"11":2,"12":2,"13":2,"14":2,"15":2,"16":2,"17":4,"18":5,"19":2,"20":8,"21":8,"22":8,"23":8,"24":60,"25":12,"26":12,"27":12,"28":12,"29":12,"30":3,"31":9,"32":9,"33":9,"34":6,"35":6,"36":0,"37":6,"38":3,"39":3,"40":0,"41":2,"42":8,"43":8,"44":0,"45":8,"46":8,"47":0,"48":8,"49":8,"50":8,"51":8,"52":8,"53":2,"54":6,"55":4,"56":2,"57":0,"58":8,"59":4,"60":4,"61":2,"62":2,"63":2,"64":4,"65":0,"66":4,"67":4,"68":2,"69":2,"70":0,"71":2,"72":2,"73":2,"74":2,"75":2,"76":4,"77":4,"78":4,"79":4,"80":8,"81":12,"82":12,"83":2,"84":2,"85":2,"86":9,"87":9,"88":9,"89":9,"90":9,"91":2,"92":1,"93":1,"94":2,"95":2},"f":{"0":2,"1":3,"2":2,"3":2,"4":4,"5":5,"6":8,"7":12,"8":6,"9":3,"10":8,"11":2},"b":{"0":[0,3],"1":[3,0],"2":[2,0],"3":[3,9],"4":[12,7],"5":[9,0],"6":[0,6],"7":[0,6],"8":[3,0],"9":[3,3],"10":[0,8],"11":[0,8],"12":[2,6],"13":[4,2],"14":[6,6],"15":[0,2],"16":[4,4],"17":[8,4],"18":[2,2],"19":[2,0],"20":[2,2],"21":[0,4],"22":[0,2],"23":[1,1]}}
}

@@ -6,1 +6,7 @@ export interface Endpoint<Request, Response> {

export declare type GetEndpoint<Response> = Endpoint<null, Response>;
export declare type HTTPVerb = 'get' | 'post' | 'put' | 'delete' | 'patch';
export interface APISpec {
[path: string]: {
[method in HTTPVerb]?: Endpoint<any, any>;
};
}

@@ -1,3 +0,3 @@

export { apiSpecToOpenApi } from "./openapi";
export * from "./typed-request";
export * from "./typed-router";
export { apiSpecToOpenApi } from './openapi';
export * from './typed-request';
export * from './typed-router';

@@ -12,3 +12,3 @@ declare type Schema = {

basePath?: string;
schemes?: ("http" | "https")[];
schemes?: ('http' | 'https')[];
}

@@ -15,0 +15,0 @@ export declare function followApiRef(spec: any, schema: Schema): [string, unknown];

@@ -35,9 +35,9 @@ "use strict";

var pathToRegexp = __importStar(require("path-to-regexp"));
var isObject = function (x) { return !!x && typeof x === "object"; };
var isObject = function (x) { return !!x && typeof x === 'object'; };
function extractPathParams(path) {
var tokens = pathToRegexp.parse(path);
return tokens.filter(isObject).map(function (tok) { return ({
name: "" + tok.name,
in: "path",
type: "string",
name: '' + tok.name,
in: 'path',
type: 'string',
}); });

@@ -49,3 +49,3 @@ }

}
var DEFINITION = "#/definitions/";
var DEFINITION = '#/definitions/';
function followApiRef(spec, schema) {

@@ -81,6 +81,6 @@ var ref = schema.$ref;

var parameters = extractPathParams(endpoint);
if ((request === null || request === void 0 ? void 0 : request.type) !== "null") {
if ((request === null || request === void 0 ? void 0 : request.type) !== 'null') {
parameters.push({
name: "body",
in: "body",
name: 'body',
in: 'body',
schema: request,

@@ -102,6 +102,6 @@ });

});
return __assign({ swagger: "2.0", info: {
title: "Generated API",
description: "testing testing",
version: "",
return __assign({ swagger: '2.0', info: {
title: 'Generated API',
description: 'testing testing',
version: '',
}, paths: paths,

@@ -108,0 +108,0 @@ definitions: definitions }, options);

/** Type-safe wrapper around fetch() for REST APIs */
import { ExtractRouteParams, SafeKey, HTTPVerb, Unionize, DeepReadonly } from "./utils";
import { HTTPVerb } from './api-spec';
import { ExtractRouteParams, SafeKey, DeepReadonly, PathsForMethod } from './utils';
declare type ExtractRouteParamsVarArgs<T extends string> = {} extends ExtractRouteParams<T> ? [] : [params: Readonly<ExtractRouteParams<T>>];

@@ -14,14 +15,9 @@ /** Utility for safely constructing API URLs */

export declare function typedApi<API>(options?: Options): {
request: <Path extends keyof API & string, Method extends (keyof API[Path] & "get") | (keyof API[Path] & "post") | (keyof API[Path] & "put") | (keyof API[Path] & "delete") | (keyof API[Path] & "patch")>(endpoint: Path, method: Method) => (queryParams: ExtractRouteParams<Path & string>, body: DeepReadonly<SafeKey<API[Path][Method], "request">>) => Promise<SafeKey<API[Path][Method], "response">>;
get: <Path_1 extends Extract<Unionize<API>, {
v: {
get: any;
};
}>["k"] & keyof API & string>(endpoint: Path_1) => (...params: ExtractRouteParamsVarArgs<Path_1 & string>) => Promise<SafeKey<SafeKey<API[Path_1], "get">, "response">>;
post: <Path_2 extends Extract<Unionize<API>, {
v: {
post: any;
};
}>["k"] & keyof API & string>(endpoint: Path_2) => (params: ExtractRouteParams<Path_2 & string>, body: DeepReadonly<SafeKey<SafeKey<API[Path_2], "post">, "request">>) => Promise<SafeKey<SafeKey<API[Path_2], "post">, "response">>;
get: <Path extends PathsForMethod<API, "get">>(endpoint: Path) => (...params: ExtractRouteParamsVarArgs<Path & string>) => Promise<SafeKey<SafeKey<API[Path], "get">, "response">>;
delete: <Path_1 extends PathsForMethod<API, "delete">>(endpoint: Path_1) => (...params: ExtractRouteParamsVarArgs<Path_1 & string>) => Promise<SafeKey<SafeKey<API[Path_1], "delete">, "response">>;
post: <Path_2 extends PathsForMethod<API, "post">>(endpoint: Path_2) => (queryParams: ExtractRouteParams<Path_2 & string>, body: DeepReadonly<SafeKey<SafeKey<API[Path_2], "post">, "request">>) => Promise<SafeKey<SafeKey<API[Path_2], "post">, "response">>;
patch: <Path_3 extends PathsForMethod<API, "patch">>(endpoint: Path_3) => (queryParams: ExtractRouteParams<Path_3 & string>, body: DeepReadonly<SafeKey<SafeKey<API[Path_3], "patch">, "request">>) => Promise<SafeKey<SafeKey<API[Path_3], "patch">, "response">>;
put: <Path_4 extends PathsForMethod<API, "put">>(endpoint: Path_4) => (queryParams: ExtractRouteParams<Path_4 & string>, body: DeepReadonly<SafeKey<SafeKey<API[Path_4], "put">, "request">>) => Promise<SafeKey<SafeKey<API[Path_4], "put">, "response">>;
request: <Method extends HTTPVerb>(method: Method, path: PathsForMethod<API, Method>) => (queryParams: ExtractRouteParams<PathsForMethod<API, Method>>, body: DeepReadonly<SafeKey<SafeKey<API[PathsForMethod<API, Method>], Method>, "request">>) => Promise<SafeKey<SafeKey<API[PathsForMethod<API, Method>], Method>, "response">>;
};
export {};

@@ -65,4 +65,4 @@ "use strict";

headers: {
Accept: "application/json",
"Content-Type": "application/json",
Accept: 'application/json',
'Content-Type': 'application/json',
},

@@ -81,6 +81,6 @@ body: JSON.stringify(payload),

var _a;
var _b = (options || {}).prefix, prefix = _b === void 0 ? "" : _b;
var _b = (options || {}).prefix, prefix = _b === void 0 ? '' : _b;
var fetcher = (_a = options === null || options === void 0 ? void 0 : options.fetch) !== null && _a !== void 0 ? _a : fetchJson;
var urlMaker = apiUrlMaker(prefix);
var request = function (endpoint, method) {
var requestWithBody = function (method) { return function (endpoint) {
var makeUrl = urlMaker(endpoint);

@@ -90,21 +90,23 @@ return function (queryParams, body) {

};
};
}; };
var requestWithoutBody = function (method) { return function (endpoint) {
return function () {
var params = [];
for (var _i = 0; _i < arguments.length; _i++) {
params[_i] = arguments[_i];
}
return requestWithBody(method)(endpoint)(params === null || params === void 0 ? void 0 : params[0], null);
};
}; };
return {
request: request,
get: function (endpoint) {
return function () {
var params = [];
for (var _i = 0; _i < arguments.length; _i++) {
params[_i] = arguments[_i];
}
return request(endpoint, "get")(params === null || params === void 0 ? void 0 : params[0], null);
};
get: requestWithoutBody('get'),
delete: requestWithoutBody('delete'),
post: requestWithBody('post'),
patch: requestWithBody('patch'),
put: requestWithBody('put'),
request: function (method, path) {
return requestWithBody(method)(path);
},
post: function (endpoint) {
return function (params, body) {
return request(endpoint, "post")(params, body);
};
},
};
}
exports.typedApi = typedApi;
/** Type-safe wrapper around Express router for REST APIs */
/// <reference types="qs" />
import Ajv from 'ajv';
import express from 'express';
import { Endpoint } from './api-spec';
import { ExtractRouteParams, HTTPVerb, SafeKey } from './utils';
import { Endpoint, HTTPVerb } from './api-spec';
import { ExtractRouteParams, PathsForMethod, SafeKey } from './utils';
/** Throw this in a handler to produce an HTTP error response */

@@ -13,2 +14,4 @@ export declare class HTTPError extends Error {

declare type AnyEndpoint = Endpoint<any, any>;
declare type ExpressRequest<Path extends string, Spec> = unknown & express.Request<ExtractRouteParams<Path>, SafeKey<Spec, 'response'>, SafeKey<Spec, 'request'>>;
declare type ExpressResponse<Spec> = unknown & express.Response<SafeKey<Spec, 'response'>>;
export declare class TypedRouter<API> {

@@ -23,5 +26,9 @@ router: express.Router;

constructor(router: express.Router, apiSchema?: any);
get<Path extends keyof API & string, Spec extends SafeKey<API[Path], 'get'> = SafeKey<API[Path], 'get'>>(route: Path, handler: (params: ExtractRouteParams<Path>, request: express.Request<ExtractRouteParams<Path>, SafeKey<Spec, 'response'>>, response: express.Response<SafeKey<Spec, 'response'>>) => Promise<Spec extends AnyEndpoint ? Spec['response'] : never>): void;
get: <Path extends PathsForMethod<API, "get">, Spec extends SafeKey<API[Path], "get"> = SafeKey<API[Path], "get">>(route: Path, handler: (params: ExtractRouteParams<Path>, request: express.Request<ExtractRouteParams<Path>, SafeKey<Spec, "response">, SafeKey<Spec, "request">, import("qs").ParsedQs>, response: express.Response<SafeKey<Spec, "response">>) => Promise<Spec extends AnyEndpoint ? Spec["response"] : never>) => void;
delete: <Path extends PathsForMethod<API, "delete">, Spec extends SafeKey<API[Path], "delete"> = SafeKey<API[Path], "delete">>(route: Path, handler: (params: ExtractRouteParams<Path>, request: express.Request<ExtractRouteParams<Path>, SafeKey<Spec, "response">, SafeKey<Spec, "request">, import("qs").ParsedQs>, response: express.Response<SafeKey<Spec, "response">>) => Promise<Spec extends AnyEndpoint ? Spec["response"] : never>) => void;
post: <Path extends PathsForMethod<API, "post">, Spec extends SafeKey<API[Path], "post"> = SafeKey<API[Path], "post">>(route: Path, handler: (params: ExtractRouteParams<Path>, body: SafeKey<Spec, "request">, request: express.Request<ExtractRouteParams<Path>, SafeKey<Spec, "response">, SafeKey<Spec, "request">, import("qs").ParsedQs>, response: express.Response<SafeKey<Spec, "response">>) => Promise<Spec extends AnyEndpoint ? Spec["response"] : never>) => void;
patch: <Path extends PathsForMethod<API, "patch">, Spec extends SafeKey<API[Path], "patch"> = SafeKey<API[Path], "patch">>(route: Path, handler: (params: ExtractRouteParams<Path>, body: SafeKey<Spec, "request">, request: express.Request<ExtractRouteParams<Path>, SafeKey<Spec, "response">, SafeKey<Spec, "request">, import("qs").ParsedQs>, response: express.Response<SafeKey<Spec, "response">>) => Promise<Spec extends AnyEndpoint ? Spec["response"] : never>) => void;
put: <Path extends PathsForMethod<API, "put">, Spec extends SafeKey<API[Path], "put"> = SafeKey<API[Path], "put">>(route: Path, handler: (params: ExtractRouteParams<Path>, body: SafeKey<Spec, "request">, request: express.Request<ExtractRouteParams<Path>, SafeKey<Spec, "response">, SafeKey<Spec, "request">, import("qs").ParsedQs>, response: express.Response<SafeKey<Spec, "response">>) => Promise<Spec extends AnyEndpoint ? Spec["response"] : never>) => void;
/** Register a handler on the router for the given path and verb */
registerEndpoint<Path extends keyof API & string, Method extends keyof API[Path] & HTTPVerb, Spec extends API[Path][Method] = API[Path][Method]>(method: Method, route: Path, handler: (params: ExtractRouteParams<Path>, body: SafeKey<Spec, 'request'>, request: express.Request<ExtractRouteParams<Path>, SafeKey<Spec, 'response'>, SafeKey<Spec, 'request'>>, response: express.Response<SafeKey<Spec, 'response'>>) => Promise<Spec extends AnyEndpoint ? Spec['response'] : never>): void;
registerEndpoint<Method extends HTTPVerb, Path extends PathsForMethod<API, Method>, Spec extends SafeKey<API[Path], Method> = SafeKey<API[Path], Method>>(method: Method, route: Path, handler: (params: ExtractRouteParams<Path>, body: SafeKey<Spec, 'request'>, request: ExpressRequest<Path, Spec>, response: ExpressResponse<Spec>) => Promise<Spec extends AnyEndpoint ? Spec['response'] : never>): void;
/** Get a validation function for request bodies for the endpoint, or null if not applicable. */

@@ -28,0 +35,0 @@ getValidator(route: string, method: HTTPVerb): Ajv.ValidateFunction | null;

@@ -35,4 +35,18 @@ "use strict";

exports.HTTPError = HTTPError;
var registerWithBody = function (method, router) { return function (route, handler) {
router.registerEndpoint(method, route, handler);
}; };
var registerWithoutBody = function (method, router) { return function (route, handler) {
router.registerEndpoint(method, route, function (params, _, request, response) {
return handler(params, request, response);
});
}; };
var TypedRouter = /** @class */ (function () {
function TypedRouter(router, apiSchema) {
// TODO(danvk): consider replacing get() with a streamlined implementation
this.get = registerWithoutBody('get', this);
this.delete = registerWithoutBody('delete', this);
this.post = registerWithBody('post', this);
this.patch = registerWithBody('patch', this);
this.put = registerWithBody('put', this);
this.router = router;

@@ -46,6 +60,2 @@ if (apiSchema) {

}
TypedRouter.prototype.get = function (route, handler) {
// TODO: fill in with a more streamlined implementation?
this.registerEndpoint('get', route, function (params, _, request, response) { return handler(params, request, response); });
};
/** Register a handler on the router for the given path and verb */

@@ -88,3 +98,3 @@ TypedRouter.prototype.registerEndpoint = function (method, route, handler) {

// With target below ES2015, instanceof doesn't work here.
if (error instanceof HTTPError || (error.code)) {
if (error instanceof HTTPError || error.code) {
response.status(error.code).json({ error: error.message });

@@ -91,0 +101,0 @@ }

@@ -0,3 +1,4 @@

import { HTTPVerb } from './api-spec';
/** Like T[K], but doesn't require K be assignable to keyof T */
export declare type SafeKey<T, K extends string> = T[K & keyof T];
export declare type SafeKey<T, K extends PropertyKey> = T[K & keyof T];
/** Extract params from an express path (e.g. '/students/:studentId'). */

@@ -9,3 +10,2 @@ export declare type ExtractRouteParams<T extends string> = string extends T ? Record<string, string> : T extends `${infer _Start}:${infer Param}/${infer Rest}` ? {

} : {};
export declare type HTTPVerb = 'get' | 'post' | 'put' | 'delete' | 'patch';
export declare type Unionize<T> = {

@@ -22,1 +22,4 @@ [k in keyof T]: {

} : Readonly<T>;
export declare type PathsForMethod<API, Method extends HTTPVerb> = Extract<Unionize<API>, {
v: Record<Method, any>;
}>['k'] & keyof API & string;
{
"name": "crosswalk",
"version": "1.1.0",
"version": "1.2.0",
"description": "Type-safe express routing with TypeScript",

@@ -11,3 +11,5 @@ "main": "dist/index.js",

"prepare": "install-peers",
"test": "jest"
"test": "jest",
"lint": "prettier --check src/**/*.ts",
"prettier": "prettier --write src/**/*.ts"
},

@@ -34,2 +36,3 @@ "repository": {

"jest": "^26.6.3",
"prettier": "^2.2.0",
"spec.ts": "^1.1.3",

@@ -36,0 +39,0 @@ "supertest": "^6.0.1",

# Crosswalk: safe routes for Express and TypeScript
[![codecov](https://codecov.io/gh/danvk/crosswalk/branch/master/graph/badge.svg?token=L4VL0FB46U)](https://codecov.io/gh/danvk/crosswalk)
This library helps you build type-safe REST APIs using Express using

@@ -249,2 +251,19 @@ TypeScript.

**How do I use middleware with this?**
crosswalk is a thin wrapper around calling `app.get`, `app.post`, etc. Your middleware should work exactly as it did without crosswalk.
**How do I register my API under a prefix?**
Make a new router, wrap it with `TypedRouter`, and mount it wherever you like:
```ts
const app = express();
const rawApiRouter = express.Router();
const apiRouter = new TypedRouter<API>(rawApiRouter, apiJsonSchema);
// ... register API endpoints ...
apiRouter.assertAllRoutesRegistered();
app.use('/api/v0', rawApiRouter);
```
**Why does this require TypeScript 4.1 or later?**

@@ -290,8 +309,11 @@

- [ ] Add helper methods for all HTTP verbs
- [ ] Look into cleaning up generics
- [ ] Options for request logging
- [ ] Set up prettier (doesn't support TS 4.1 yet), eslint, CI
- [ ] Add an option for more express-like callbacks (w/ only request, response)
- [ ] Support fancier paths
- [ ] Set up:
- [ ] eslint
- [x] prettier
- [x] CI
- [x] Add helper methods for all HTTP verbs
- [x] Look into cleaning up generics
- [x] Set up better type tests

@@ -298,0 +320,0 @@ - [x] Narrow types of request.params, request.body in handlers

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc