diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..b58b603
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/bot.iml b/.idea/bot.iml
new file mode 100644
index 0000000..24643cc
--- /dev/null
+++ b/.idea/bot.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..aac5413
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..79ee123
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..b00b843
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/coverage/clover.xml b/coverage/clover.xml
new file mode 100644
index 0000000..546d1f6
--- /dev/null
+++ b/coverage/clover.xml
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/coverage/coverage-final.json b/coverage/coverage-final.json
new file mode 100644
index 0000000..f9cf62e
--- /dev/null
+++ b/coverage/coverage-final.json
@@ -0,0 +1,3 @@
+{"/Users/Mike.DiDomizio/projects/test/bot/get-changed-packages.ts": {"path":"/Users/Mike.DiDomizio/projects/test/bot/get-changed-packages.ts","statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":28}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":36}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":31}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":35}},"4":{"start":{"line":7,"column":0},"end":{"line":7,"column":68}},"5":{"start":{"line":8,"column":0},"end":{"line":8,"column":58}},"6":{"start":{"line":10,"column":0},"end":{"line":10,"column":47}},"7":{"start":{"line":12,"column":32},"end":{"line":198,"column":1}},"8":{"start":{"line":27,"column":19},"end":{"line":27,"column":24}},"9":{"start":{"line":28,"column":27},"end":{"line":30,"column":22}},"10":{"start":{"line":33,"column":4},"end":{"line":40,"column":6}},"11":{"start":{"line":44,"column":4},"end":{"line":50,"column":9}},"12":{"start":{"line":45,"column":19},"end":{"line":45,"column":27}},"13":{"start":{"line":47,"column":8},"end":{"line":47,"column":26}},"14":{"start":{"line":48,"column":8},"end":{"line":48,"column":27}},"15":{"start":{"line":49,"column":8},"end":{"line":49,"column":18}},"16":{"start":{"line":54,"column":4},"end":{"line":60,"column":9}},"17":{"start":{"line":55,"column":19},"end":{"line":55,"column":27}},"18":{"start":{"line":57,"column":8},"end":{"line":57,"column":26}},"19":{"start":{"line":58,"column":8},"end":{"line":58,"column":27}},"20":{"start":{"line":59,"column":8},"end":{"line":59,"column":18}},"21":{"start":{"line":64,"column":22},"end":{"line":64,"column":68}},"22":{"start":{"line":65,"column":4},"end":{"line":68,"column":6}},"23":{"start":{"line":71,"column":39},"end":{"line":71,"column":68}},"24":{"start":{"line":72,"column":36},"end":{"line":72,"column":75}},"25":{"start":{"line":74,"column":13},"end":{"line":79,"column":4}},"26":{"start":{"line":82,"column":51},"end":{"line":82,"column":53}},"27":{"start":{"line":83,"column":48},"end":{"line":83,"column":50}},"28":{"start":{"line":84,"column":15},"end":{"line":84,"column":20}},"29":{"start":{"line":85,"column":21},"end":{"line":85,"column":46}},"30":{"start":{"line":87,"column":2},"end":{"line":113,"column":null}},"31":{"start":{"line":88,"column":4},"end":{"line":88,"column":29}},"32":{"start":{"line":88,"column":20},"end":{"line":88,"column":29}},"33":{"start":{"line":89,"column":4},"end":{"line":112,"column":null}},"34":{"start":{"line":90,"column":20},"end":{"line":90,"column":47}},"35":{"start":{"line":91,"column":6},"end":{"line":91,"column":50}},"36":{"start":{"line":92,"column":11},"end":{"line":112,"column":null}},"37":{"start":{"line":93,"column":6},"end":{"line":93,"column":20}},"38":{"start":{"line":94,"column":11},"end":{"line":112,"column":null}},"39":{"start":{"line":95,"column":6},"end":{"line":95,"column":61}},"40":{"start":{"line":96,"column":11},"end":{"line":112,"column":null}},"41":{"start":{"line":102,"column":16},"end":{"line":102,"column":59}},"42":{"start":{"line":103,"column":6},"end":{"line":105,"column":null}},"43":{"start":{"line":104,"column":8},"end":{"line":104,"column":70}},"44":{"start":{"line":106,"column":15},"end":{"line":106,"column":21}},"45":{"start":{"line":107,"column":6},"end":{"line":111,"column":8}},"46":{"start":{"line":109,"column":10},"end":{"line":109,"column":49}},"47":{"start":{"line":121,"column":2},"end":{"line":150,"column":null}},"48":{"start":{"line":122,"column":4},"end":{"line":125,"column":6}},"49":{"start":{"line":127,"column":33},"end":{"line":127,"column":69}},"50":{"start":{"line":129,"column":4},"end":{"line":149,"column":null}},"51":{"start":{"line":130,"column":6},"end":{"line":140,"column":null}},"52":{"start":{"line":131,"column":8},"end":{"line":134,"column":10}},"53":{"start":{"line":136,"column":8},"end":{"line":139,"column":10}},"54":{"start":{"line":141,"column":11},"end":{"line":149,"column":null}},"55":{"start":{"line":145,"column":6},"end":{"line":148,"column":8}},"56":{"start":{"line":152,"column":31},"end":{"line":152,"column":67}},"57":{"start":{"line":154,"column":27},"end":{"line":161,"column":4}},"58":{"start":{"line":163,"column":2},"end":{"line":177,"column":null}},"59":{"start":{"line":164,"column":4},"end":{"line":169,"column":null}},"60":{"start":{"line":166,"column":31},"end":{"line":166,"column":52}},"61":{"start":{"line":168,"column":6},"end":{"line":168,"column":76}},"62":{"start":{"line":170,"column":18},"end":{"line":170,"column":71}},"63":{"start":{"line":172,"column":4},"end":{"line":174,"column":6}},"64":{"start":{"line":173,"column":27},"end":{"line":173,"column":42}},"65":{"start":{"line":176,"column":4},"end":{"line":176,"column":42}},"66":{"start":{"line":178,"column":2},"end":{"line":180,"column":null}},"67":{"start":{"line":179,"column":4},"end":{"line":179,"column":61}},"68":{"start":{"line":182,"column":22},"end":{"line":186,"column":null}},"69":{"start":{"line":185,"column":44},"end":{"line":185,"column":76}},"70":{"start":{"line":189,"column":2},"end":{"line":197,"column":4}},"71":{"start":{"line":193,"column":10},"end":{"line":193,"column":75}},"72":{"start":{"line":193,"column":45},"end":{"line":193,"column":74}},"73":{"start":{"line":195,"column":17},"end":{"line":195,"column":35}},"74":{"start":{"line":12,"column":11},"end":{"line":12,"column":32}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":32},"end":{"line":12,"column":37}},"loc":{"start":{"line":26,"column":5},"end":{"line":198,"column":1}}},"1":{"name":"fetchFile","decl":{"start":{"line":32,"column":11},"end":{"line":32,"column":20}},"loc":{"start":{"line":32,"column":33},"end":{"line":41,"column":3}}},"2":{"name":"fetchJsonFile","decl":{"start":{"line":43,"column":11},"end":{"line":43,"column":24}},"loc":{"start":{"line":43,"column":37},"end":{"line":51,"column":3}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":45,"column":12},"end":{"line":45,"column":13}},"loc":{"start":{"line":45,"column":19},"end":{"line":45,"column":27}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":46,"column":13},"end":{"line":46,"column":14}},"loc":{"start":{"line":46,"column":21},"end":{"line":50,"column":7}}},"5":{"name":"fetchTextFile","decl":{"start":{"line":53,"column":11},"end":{"line":53,"column":24}},"loc":{"start":{"line":53,"column":37},"end":{"line":61,"column":3}}},"6":{"name":"(anonymous_7)","decl":{"start":{"line":55,"column":12},"end":{"line":55,"column":13}},"loc":{"start":{"line":55,"column":19},"end":{"line":55,"column":27}}},"7":{"name":"(anonymous_8)","decl":{"start":{"line":56,"column":13},"end":{"line":56,"column":14}},"loc":{"start":{"line":56,"column":21},"end":{"line":60,"column":7}}},"8":{"name":"getPackage","decl":{"start":{"line":63,"column":17},"end":{"line":63,"column":27}},"loc":{"start":{"line":63,"column":43},"end":{"line":69,"column":3}}},"9":{"name":"(anonymous_10)","decl":{"start":{"line":108,"column":38},"end":{"line":108,"column":39}},"loc":{"start":{"line":108,"column":47},"end":{"line":110,"column":9}}},"10":{"name":"(anonymous_11)","decl":{"start":{"line":166,"column":24},"end":{"line":166,"column":25}},"loc":{"start":{"line":166,"column":31},"end":{"line":166,"column":52}}},"11":{"name":"(anonymous_12)","decl":{"start":{"line":173,"column":18},"end":{"line":173,"column":19}},"loc":{"start":{"line":173,"column":27},"end":{"line":173,"column":42}}},"12":{"name":"(anonymous_13)","decl":{"start":{"line":185,"column":29},"end":{"line":185,"column":30}},"loc":{"start":{"line":185,"column":44},"end":{"line":185,"column":76}}},"13":{"name":"(anonymous_14)","decl":{"start":{"line":192,"column":33},"end":{"line":192,"column":34}},"loc":{"start":{"line":193,"column":10},"end":{"line":193,"column":75}}},"14":{"name":"(anonymous_15)","decl":{"start":{"line":193,"column":28},"end":{"line":193,"column":29}},"loc":{"start":{"line":193,"column":45},"end":{"line":193,"column":74}}},"15":{"name":"(anonymous_16)","decl":{"start":{"line":195,"column":10},"end":{"line":195,"column":11}},"loc":{"start":{"line":195,"column":17},"end":{"line":195,"column":35}}}},"branchMap":{"0":{"loc":{"start":{"line":88,"column":4},"end":{"line":88,"column":29}},"type":"if","locations":[{"start":{"line":88,"column":4},"end":{"line":88,"column":29}}]},"1":{"loc":{"start":{"line":89,"column":4},"end":{"line":112,"column":null}},"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":112,"column":null}},{"start":{"line":92,"column":11},"end":{"line":112,"column":null}}]},"2":{"loc":{"start":{"line":92,"column":11},"end":{"line":112,"column":null}},"type":"if","locations":[{"start":{"line":92,"column":11},"end":{"line":112,"column":null}},{"start":{"line":94,"column":11},"end":{"line":112,"column":null}}]},"3":{"loc":{"start":{"line":94,"column":11},"end":{"line":112,"column":null}},"type":"if","locations":[{"start":{"line":94,"column":11},"end":{"line":112,"column":null}},{"start":{"line":96,"column":11},"end":{"line":112,"column":null}}]},"4":{"loc":{"start":{"line":96,"column":11},"end":{"line":112,"column":null}},"type":"if","locations":[{"start":{"line":96,"column":11},"end":{"line":112,"column":null}}]},"5":{"loc":{"start":{"line":97,"column":6},"end":{"line":100,"column":38}},"type":"binary-expr","locations":[{"start":{"line":97,"column":6},"end":{"line":97,"column":42}},{"start":{"line":98,"column":6},"end":{"line":98,"column":40}},{"start":{"line":99,"column":6},"end":{"line":99,"column":31}},{"start":{"line":100,"column":6},"end":{"line":100,"column":38}}]},"6":{"loc":{"start":{"line":103,"column":6},"end":{"line":105,"column":null}},"type":"if","locations":[{"start":{"line":103,"column":6},"end":{"line":105,"column":null}}]},"7":{"loc":{"start":{"line":121,"column":2},"end":{"line":150,"column":null}},"type":"if","locations":[{"start":{"line":121,"column":2},"end":{"line":150,"column":null}},{"start":{"line":126,"column":9},"end":{"line":150,"column":null}}]},"8":{"loc":{"start":{"line":129,"column":4},"end":{"line":149,"column":null}},"type":"if","locations":[{"start":{"line":129,"column":4},"end":{"line":149,"column":null}},{"start":{"line":141,"column":11},"end":{"line":149,"column":null}}]},"9":{"loc":{"start":{"line":130,"column":6},"end":{"line":140,"column":null}},"type":"if","locations":[{"start":{"line":130,"column":6},"end":{"line":140,"column":null}},{"start":{"line":135,"column":13},"end":{"line":140,"column":null}}]},"10":{"loc":{"start":{"line":141,"column":11},"end":{"line":149,"column":null}},"type":"if","locations":[{"start":{"line":141,"column":11},"end":{"line":149,"column":null}}]},"11":{"loc":{"start":{"line":142,"column":6},"end":{"line":143,"column":44}},"type":"binary-expr","locations":[{"start":{"line":142,"column":6},"end":{"line":142,"column":33}},{"start":{"line":143,"column":6},"end":{"line":143,"column":44}}]},"12":{"loc":{"start":{"line":159,"column":10},"end":{"line":159,"column":35}},"type":"cond-expr","locations":[{"start":{"line":159,"column":17},"end":{"line":159,"column":26}},{"start":{"line":159,"column":29},"end":{"line":159,"column":35}}]},"13":{"loc":{"start":{"line":163,"column":2},"end":{"line":177,"column":null}},"type":"if","locations":[{"start":{"line":163,"column":2},"end":{"line":177,"column":null}},{"start":{"line":175,"column":9},"end":{"line":177,"column":null}}]},"14":{"loc":{"start":{"line":164,"column":4},"end":{"line":169,"column":null}},"type":"if","locations":[{"start":{"line":164,"column":4},"end":{"line":169,"column":null}}]},"15":{"loc":{"start":{"line":165,"column":6},"end":{"line":166,"column":53}},"type":"binary-expr","locations":[{"start":{"line":165,"column":6},"end":{"line":165,"column":32}},{"start":{"line":166,"column":6},"end":{"line":166,"column":53}}]},"16":{"loc":{"start":{"line":178,"column":2},"end":{"line":180,"column":null}},"type":"if","locations":[{"start":{"line":178,"column":2},"end":{"line":180,"column":null}}]},"17":{"loc":{"start":{"line":190,"column":22},"end":{"line":193,"column":null}},"type":"cond-expr","locations":[{"start":{"line":191,"column":8},"end":{"line":191,"column":25}},{"start":{"line":192,"column":8},"end":{"line":193,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":3,"9":3,"10":6,"11":6,"12":6,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":3,"24":3,"25":3,"26":3,"27":3,"28":3,"29":3,"30":3,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":3,"48":0,"49":3,"50":3,"51":0,"52":0,"53":0,"54":3,"55":0,"56":3,"57":3,"58":3,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":3,"66":3,"67":0,"68":3,"69":3,"70":3,"71":0,"72":0,"73":3,"74":1},"f":{"0":3,"1":6,"2":6,"3":6,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":3,"13":0,"14":0,"15":3},"b":{"0":[0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0],"5":[0,0,0,0],"6":[0],"7":[0,3],"8":[0,3],"9":[0,0],"10":[0],"11":[3,0],"12":[0,3],"13":[0,3],"14":[0],"15":[0,0],"16":[0],"17":[3,0]}}
+,"/Users/Mike.DiDomizio/projects/test/bot/index.ts": {"path":"/Users/Mike.DiDomizio/projects/test/bot/index.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":31}},"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":60}},"2":{"start":{"line":11,"column":0},"end":{"line":11,"column":43}},"3":{"start":{"line":12,"column":0},"end":{"line":12,"column":48}},"4":{"start":{"line":13,"column":0},"end":{"line":13,"column":53}},"5":{"start":{"line":15,"column":30},"end":{"line":54,"column":1}},"6":{"start":{"line":16,"column":2},"end":{"line":16,"column":30}},"7":{"start":{"line":16,"column":20},"end":{"line":16,"column":30}},"8":{"start":{"line":18,"column":30},"end":{"line":20,"column":null}},"9":{"start":{"line":20,"column":6},"end":{"line":20,"column":23}},"10":{"start":{"line":23,"column":14},"end":{"line":35,"column":4}},"11":{"start":{"line":26,"column":6},"end":{"line":33,"column":8}},"12":{"start":{"line":37,"column":2},"end":{"line":53,"column":12}},"13":{"start":{"line":56,"column":25},"end":{"line":72,"column":2}},"14":{"start":{"line":60,"column":5},"end":{"line":72,"column":2}},"15":{"start":{"line":74,"column":26},"end":{"line":90,"column":2}},"16":{"start":{"line":78,"column":5},"end":{"line":90,"column":2}},"17":{"start":{"line":92,"column":32},"end":{"line":98,"column":2}},"18":{"start":{"line":93,"column":2},"end":{"line":98,"column":2}},"19":{"start":{"line":94,"column":29},"end":{"line":94,"column":44}},"20":{"start":{"line":105,"column":21},"end":{"line":117,"column":4}},"21":{"start":{"line":109,"column":2},"end":{"line":117,"column":4}},"22":{"start":{"line":110,"column":32},"end":{"line":114,"column":null}},"23":{"start":{"line":113,"column":8},"end":{"line":114,"column":58}},"24":{"start":{"line":116,"column":4},"end":{"line":116,"column":63}},"25":{"start":{"line":119,"column":30},"end":{"line":128,"column":null}},"26":{"start":{"line":122,"column":2},"end":{"line":128,"column":null}},"27":{"start":{"line":123,"column":4},"end":{"line":127,"column":null}},"28":{"start":{"line":125,"column":8},"end":{"line":127,"column":48}},"29":{"start":{"line":131,"column":0},"end":{"line":241,"column":2}},"30":{"start":{"line":132,"column":2},"end":{"line":132,"column":13}},"31":{"start":{"line":133,"column":2},"end":{"line":133,"column":38}},"32":{"start":{"line":135,"column":2},"end":{"line":238,"column":4}},"33":{"start":{"line":138,"column":6},"end":{"line":142,"column":null}},"34":{"start":{"line":141,"column":8},"end":{"line":141,"column":15}},"35":{"start":{"line":144,"column":40},"end":{"line":144,"column":42}},"36":{"start":{"line":146,"column":6},"end":{"line":236,"column":null}},"37":{"start":{"line":147,"column":21},"end":{"line":147,"column":43}},"38":{"start":{"line":149,"column":19},"end":{"line":152,"column":10}},"39":{"start":{"line":154,"column":32},"end":{"line":154,"column":69}},"40":{"start":{"line":155,"column":34},"end":{"line":158,"column":10}},"41":{"start":{"line":161,"column":10},"end":{"line":197,"column":21}},"42":{"start":{"line":175,"column":16},"end":{"line":175,"column":45}},"43":{"start":{"line":175,"column":34},"end":{"line":175,"column":44}},"44":{"start":{"line":186,"column":14},"end":{"line":191,"column":null}},"45":{"start":{"line":187,"column":16},"end":{"line":187,"column":208}},"46":{"start":{"line":189,"column":16},"end":{"line":189,"column":35}},"47":{"start":{"line":190,"column":16},"end":{"line":190,"column":38}},"48":{"start":{"line":192,"column":14},"end":{"line":195,"column":16}},"49":{"start":{"line":199,"column":30},"end":{"line":209,"column":11}},"50":{"start":{"line":211,"column":24},"end":{"line":221,"column":10}},"51":{"start":{"line":223,"column":8},"end":{"line":228,"column":null}},"52":{"start":{"line":224,"column":10},"end":{"line":227,"column":13}},"53":{"start":{"line":229,"column":8},"end":{"line":232,"column":11}},"54":{"start":{"line":234,"column":8},"end":{"line":234,"column":27}},"55":{"start":{"line":235,"column":8},"end":{"line":235,"column":18}},"56":{"start":{"line":240,"column":2},"end":{"line":240,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":15,"column":30},"end":{"line":15,"column":31}},"loc":{"start":{"line":15,"column":66},"end":{"line":54,"column":1}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":19,"column":4},"end":{"line":19,"column":5}},"loc":{"start":{"line":20,"column":6},"end":{"line":20,"column":23}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":25,"column":31},"end":{"line":25,"column":32}},"loc":{"start":{"line":25,"column":37},"end":{"line":34,"column":5}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":56,"column":25},"end":{"line":56,"column":null}},"loc":{"start":{"line":60,"column":5},"end":{"line":72,"column":2}}},"4":{"name":"(anonymous_5)","decl":{"start":{"line":74,"column":26},"end":{"line":74,"column":null}},"loc":{"start":{"line":78,"column":5},"end":{"line":90,"column":2}}},"5":{"name":"(anonymous_6)","decl":{"start":{"line":92,"column":32},"end":{"line":92,"column":33}},"loc":{"start":{"line":93,"column":2},"end":{"line":98,"column":2}}},"6":{"name":"(anonymous_7)","decl":{"start":{"line":94,"column":22},"end":{"line":94,"column":23}},"loc":{"start":{"line":94,"column":29},"end":{"line":94,"column":44}}},"7":{"name":"(anonymous_8)","decl":{"start":{"line":105,"column":21},"end":{"line":105,"column":null}},"loc":{"start":{"line":109,"column":2},"end":{"line":117,"column":4}}},"8":{"name":"(anonymous_9)","decl":{"start":{"line":109,"column":51},"end":{"line":109,"column":52}},"loc":{"start":{"line":109,"column":64},"end":{"line":117,"column":3}}},"9":{"name":"(anonymous_10)","decl":{"start":{"line":112,"column":6},"end":{"line":112,"column":7}},"loc":{"start":{"line":113,"column":8},"end":{"line":114,"column":58}}},"10":{"name":"(anonymous_11)","decl":{"start":{"line":119,"column":30},"end":{"line":119,"column":null}},"loc":{"start":{"line":122,"column":2},"end":{"line":128,"column":null}}},"11":{"name":"(anonymous_12)","decl":{"start":{"line":122,"column":27},"end":{"line":122,"column":28}},"loc":{"start":{"line":123,"column":4},"end":{"line":127,"column":null}}},"12":{"name":"(anonymous_13)","decl":{"start":{"line":124,"column":6},"end":{"line":124,"column":7}},"loc":{"start":{"line":125,"column":8},"end":{"line":127,"column":48}}},"13":{"name":"(anonymous_14)","decl":{"start":{"line":131,"column":15},"end":{"line":131,"column":16}},"loc":{"start":{"line":131,"column":31},"end":{"line":241,"column":1}}},"14":{"name":"(anonymous_15)","decl":{"start":{"line":137,"column":4},"end":{"line":137,"column":9}},"loc":{"start":{"line":137,"column":22},"end":{"line":237,"column":5}}},"15":{"name":"(anonymous_16)","decl":{"start":{"line":174,"column":53},"end":{"line":174,"column":54}},"loc":{"start":{"line":175,"column":16},"end":{"line":175,"column":45}}},"16":{"name":"(anonymous_17)","decl":{"start":{"line":175,"column":27},"end":{"line":175,"column":28}},"loc":{"start":{"line":175,"column":34},"end":{"line":175,"column":44}}},"17":{"name":"(anonymous_18)","decl":{"start":{"line":185,"column":21},"end":{"line":185,"column":22}},"loc":{"start":{"line":185,"column":29},"end":{"line":196,"column":13}}}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":2},"end":{"line":16,"column":30}},"type":"if","locations":[{"start":{"line":16,"column":2},"end":{"line":16,"column":30}}]},"1":{"loc":{"start":{"line":38,"column":4},"end":{"line":44,"column":null}},"type":"cond-expr","locations":[{"start":{"line":39,"column":8},"end":{"line":43,"column":10}},{"start":{"line":44,"column":8},"end":{"line":44,"column":null}}]},"2":{"loc":{"start":{"line":40,"column":10},"end":{"line":42,"column":null}},"type":"cond-expr","locations":[{"start":{"line":41,"column":14},"end":{"line":41,"column":25}},{"start":{"line":42,"column":14},"end":{"line":42,"column":null}}]},"3":{"loc":{"start":{"line":48,"column":4},"end":{"line":50,"column":null}},"type":"cond-expr","locations":[{"start":{"line":49,"column":8},"end":{"line":49,"column":13}},{"start":{"line":50,"column":8},"end":{"line":50,"column":null}}]},"4":{"loc":{"start":{"line":113,"column":8},"end":{"line":114,"column":58}},"type":"binary-expr","locations":[{"start":{"line":113,"column":8},"end":{"line":113,"column":52}},{"start":{"line":114,"column":8},"end":{"line":114,"column":58}}]},"5":{"loc":{"start":{"line":116,"column":11},"end":{"line":116,"column":62}},"type":"cond-expr","locations":[{"start":{"line":116,"column":33},"end":{"line":116,"column":55}},{"start":{"line":116,"column":58},"end":{"line":116,"column":62}}]},"6":{"loc":{"start":{"line":125,"column":8},"end":{"line":127,"column":48}},"type":"binary-expr","locations":[{"start":{"line":125,"column":8},"end":{"line":125,"column":31}},{"start":{"line":126,"column":8},"end":{"line":126,"column":51}},{"start":{"line":127,"column":8},"end":{"line":127,"column":48}}]},"7":{"loc":{"start":{"line":138,"column":6},"end":{"line":142,"column":null}},"type":"if","locations":[{"start":{"line":138,"column":6},"end":{"line":142,"column":null}}]},"8":{"loc":{"start":{"line":166,"column":12},"end":{"line":168,"column":25}},"type":"cond-expr","locations":[{"start":{"line":167,"column":16},"end":{"line":167,"column":72}},{"start":{"line":168,"column":16},"end":{"line":168,"column":25}}]},"9":{"loc":{"start":{"line":186,"column":14},"end":{"line":191,"column":null}},"type":"if","locations":[{"start":{"line":186,"column":14},"end":{"line":191,"column":null}},{"start":{"line":188,"column":21},"end":{"line":191,"column":null}}]},"10":{"loc":{"start":{"line":214,"column":13},"end":{"line":219,"column":null}},"type":"cond-expr","locations":[{"start":{"line":215,"column":16},"end":{"line":215,"column":80}},{"start":{"line":216,"column":16},"end":{"line":219,"column":null}}]},"11":{"loc":{"start":{"line":223,"column":8},"end":{"line":228,"column":null}},"type":"if","locations":[{"start":{"line":223,"column":8},"end":{"line":228,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":3,"7":0,"8":3,"9":0,"10":3,"11":0,"12":3,"13":1,"14":1,"15":1,"16":2,"17":1,"18":3,"19":3,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":3,"27":3,"28":3,"29":1,"30":4,"31":4,"32":4,"33":4,"34":1,"35":3,"36":3,"37":3,"38":3,"39":3,"40":3,"41":3,"42":3,"43":3,"44":0,"45":0,"46":0,"47":0,"48":0,"49":3,"50":3,"51":3,"52":1,"53":2,"54":0,"55":0,"56":4},"f":{"0":3,"1":0,"2":0,"3":1,"4":2,"5":3,"6":3,"7":1,"8":1,"9":1,"10":3,"11":3,"12":3,"13":4,"14":4,"15":3,"16":3,"17":0},"b":{"0":[0],"1":[0,3],"2":[0,0],"3":[0,3],"4":[1,0],"5":[1,0],"6":[3,3,2],"7":[1],"8":[1,2],"9":[0,0],"10":[2,1],"11":[1]}}
+}
diff --git a/coverage/lcov-report/base.css b/coverage/lcov-report/base.css
new file mode 100644
index 0000000..f418035
--- /dev/null
+++ b/coverage/lcov-report/base.css
@@ -0,0 +1,224 @@
+body, html {
+ margin:0; padding: 0;
+ height: 100%;
+}
+body {
+ font-family: Helvetica Neue, Helvetica, Arial;
+ font-size: 14px;
+ color:#333;
+}
+.small { font-size: 12px; }
+*, *:after, *:before {
+ -webkit-box-sizing:border-box;
+ -moz-box-sizing:border-box;
+ box-sizing:border-box;
+ }
+h1 { font-size: 20px; margin: 0;}
+h2 { font-size: 14px; }
+pre {
+ font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
+ margin: 0;
+ padding: 0;
+ -moz-tab-size: 2;
+ -o-tab-size: 2;
+ tab-size: 2;
+}
+a { color:#0074D9; text-decoration:none; }
+a:hover { text-decoration:underline; }
+.strong { font-weight: bold; }
+.space-top1 { padding: 10px 0 0 0; }
+.pad2y { padding: 20px 0; }
+.pad1y { padding: 10px 0; }
+.pad2x { padding: 0 20px; }
+.pad2 { padding: 20px; }
+.pad1 { padding: 10px; }
+.space-left2 { padding-left:55px; }
+.space-right2 { padding-right:20px; }
+.center { text-align:center; }
+.clearfix { display:block; }
+.clearfix:after {
+ content:'';
+ display:block;
+ height:0;
+ clear:both;
+ visibility:hidden;
+ }
+.fl { float: left; }
+@media only screen and (max-width:640px) {
+ .col3 { width:100%; max-width:100%; }
+ .hide-mobile { display:none!important; }
+}
+
+.quiet {
+ color: #7f7f7f;
+ color: rgba(0,0,0,0.5);
+}
+.quiet a { opacity: 0.7; }
+
+.fraction {
+ font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
+ font-size: 10px;
+ color: #555;
+ background: #E8E8E8;
+ padding: 4px 5px;
+ border-radius: 3px;
+ vertical-align: middle;
+}
+
+div.path a:link, div.path a:visited { color: #333; }
+table.coverage {
+ border-collapse: collapse;
+ margin: 10px 0 0 0;
+ padding: 0;
+}
+
+table.coverage td {
+ margin: 0;
+ padding: 0;
+ vertical-align: top;
+}
+table.coverage td.line-count {
+ text-align: right;
+ padding: 0 5px 0 20px;
+}
+table.coverage td.line-coverage {
+ text-align: right;
+ padding-right: 10px;
+ min-width:20px;
+}
+
+table.coverage td span.cline-any {
+ display: inline-block;
+ padding: 0 5px;
+ width: 100%;
+}
+.missing-if-branch {
+ display: inline-block;
+ margin-right: 5px;
+ border-radius: 3px;
+ position: relative;
+ padding: 0 4px;
+ background: #333;
+ color: yellow;
+}
+
+.skip-if-branch {
+ display: none;
+ margin-right: 10px;
+ position: relative;
+ padding: 0 4px;
+ background: #ccc;
+ color: white;
+}
+.missing-if-branch .typ, .skip-if-branch .typ {
+ color: inherit !important;
+}
+.coverage-summary {
+ border-collapse: collapse;
+ width: 100%;
+}
+.coverage-summary tr { border-bottom: 1px solid #bbb; }
+.keyline-all { border: 1px solid #ddd; }
+.coverage-summary td, .coverage-summary th { padding: 10px; }
+.coverage-summary tbody { border: 1px solid #bbb; }
+.coverage-summary td { border-right: 1px solid #bbb; }
+.coverage-summary td:last-child { border-right: none; }
+.coverage-summary th {
+ text-align: left;
+ font-weight: normal;
+ white-space: nowrap;
+}
+.coverage-summary th.file { border-right: none !important; }
+.coverage-summary th.pct { }
+.coverage-summary th.pic,
+.coverage-summary th.abs,
+.coverage-summary td.pct,
+.coverage-summary td.abs { text-align: right; }
+.coverage-summary td.file { white-space: nowrap; }
+.coverage-summary td.pic { min-width: 120px !important; }
+.coverage-summary tfoot td { }
+
+.coverage-summary .sorter {
+ height: 10px;
+ width: 7px;
+ display: inline-block;
+ margin-left: 0.5em;
+ background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
+}
+.coverage-summary .sorted .sorter {
+ background-position: 0 -20px;
+}
+.coverage-summary .sorted-desc .sorter {
+ background-position: 0 -10px;
+}
+.status-line { height: 10px; }
+/* yellow */
+.cbranch-no { background: yellow !important; color: #111; }
+/* dark red */
+.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
+.low .chart { border:1px solid #C21F39 }
+.highlighted,
+.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
+ background: #C21F39 !important;
+}
+/* medium red */
+.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
+/* light red */
+.low, .cline-no { background:#FCE1E5 }
+/* light green */
+.high, .cline-yes { background:rgb(230,245,208) }
+/* medium green */
+.cstat-yes { background:rgb(161,215,106) }
+/* dark green */
+.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
+.high .chart { border:1px solid rgb(77,146,33) }
+/* dark yellow (gold) */
+.status-line.medium, .medium .cover-fill { background: #f9cd0b; }
+.medium .chart { border:1px solid #f9cd0b; }
+/* light yellow */
+.medium { background: #fff4c2; }
+
+.cstat-skip { background: #ddd; color: #111; }
+.fstat-skip { background: #ddd; color: #111 !important; }
+.cbranch-skip { background: #ddd !important; color: #111; }
+
+span.cline-neutral { background: #eaeaea; }
+
+.coverage-summary td.empty {
+ opacity: .5;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ line-height: 1;
+ color: #888;
+}
+
+.cover-fill, .cover-empty {
+ display:inline-block;
+ height: 12px;
+}
+.chart {
+ line-height: 0;
+}
+.cover-empty {
+ background: white;
+}
+.cover-full {
+ border-right: none !important;
+}
+pre.prettyprint {
+ border: none !important;
+ padding: 0 !important;
+ margin: 0 !important;
+}
+.com { color: #999 !important; }
+.ignore-none { color: #999; font-weight: normal; }
+
+.wrapper {
+ min-height: 100%;
+ height: auto !important;
+ height: 100%;
+ margin: 0 auto -48px;
+}
+.footer, .push {
+ height: 48px;
+}
diff --git a/coverage/lcov-report/block-navigation.js b/coverage/lcov-report/block-navigation.js
new file mode 100644
index 0000000..cc12130
--- /dev/null
+++ b/coverage/lcov-report/block-navigation.js
@@ -0,0 +1,87 @@
+/* eslint-disable */
+var jumpToCode = (function init() {
+ // Classes of code we would like to highlight in the file view
+ var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no'];
+
+ // Elements to highlight in the file listing view
+ var fileListingElements = ['td.pct.low'];
+
+ // We don't want to select elements that are direct descendants of another match
+ var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `
+
+ // Selecter that finds elements on the page to which we can jump
+ var selector =
+ fileListingElements.join(', ') +
+ ', ' +
+ notSelector +
+ missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
+
+ // The NodeList of matching elements
+ var missingCoverageElements = document.querySelectorAll(selector);
+
+ var currentIndex;
+
+ function toggleClass(index) {
+ missingCoverageElements
+ .item(currentIndex)
+ .classList.remove('highlighted');
+ missingCoverageElements.item(index).classList.add('highlighted');
+ }
+
+ function makeCurrent(index) {
+ toggleClass(index);
+ currentIndex = index;
+ missingCoverageElements.item(index).scrollIntoView({
+ behavior: 'smooth',
+ block: 'center',
+ inline: 'center'
+ });
+ }
+
+ function goToPrevious() {
+ var nextIndex = 0;
+ if (typeof currentIndex !== 'number' || currentIndex === 0) {
+ nextIndex = missingCoverageElements.length - 1;
+ } else if (missingCoverageElements.length > 1) {
+ nextIndex = currentIndex - 1;
+ }
+
+ makeCurrent(nextIndex);
+ }
+
+ function goToNext() {
+ var nextIndex = 0;
+
+ if (
+ typeof currentIndex === 'number' &&
+ currentIndex < missingCoverageElements.length - 1
+ ) {
+ nextIndex = currentIndex + 1;
+ }
+
+ makeCurrent(nextIndex);
+ }
+
+ return function jump(event) {
+ if (
+ document.getElementById('fileSearch') === document.activeElement &&
+ document.activeElement != null
+ ) {
+ // if we're currently focused on the search input, we don't want to navigate
+ return;
+ }
+
+ switch (event.which) {
+ case 78: // n
+ case 74: // j
+ goToNext();
+ break;
+ case 66: // b
+ case 75: // k
+ case 80: // p
+ goToPrevious();
+ break;
+ }
+ };
+})();
+window.addEventListener('keydown', jumpToCode);
diff --git a/coverage/lcov-report/favicon.png b/coverage/lcov-report/favicon.png
new file mode 100644
index 0000000..c1525b8
Binary files /dev/null and b/coverage/lcov-report/favicon.png differ
diff --git a/coverage/lcov-report/get-changed-packages.ts.html b/coverage/lcov-report/get-changed-packages.ts.html
new file mode 100644
index 0000000..9ef834e
--- /dev/null
+++ b/coverage/lcov-report/get-changed-packages.ts.html
@@ -0,0 +1,679 @@
+
+
+
+
+
+ Code coverage report for get-changed-packages.ts
+
+
+
+
+
+
+
+
+
+
+
+
All files get-changed-packages.ts
+
+
+
+ 46.66%
+ Statements
+ 35/75
+
+
+
+
+ 18.75%
+ Branches
+ 6/32
+
+
+
+
+ 37.5%
+ Functions
+ 6/16
+
+
+
+
+ 47.22%
+ Lines
+ 34/72
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b, p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199 | 1x
+1x
+
+1x
+1x
+
+1x
+1x
+
+1x
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3x
+3x
+
+
+
+
+6x
+
+
+
+
+
+
+
+
+
+
+6x
+6x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3x
+3x
+
+3x
+
+
+
+
+
+
+
+3x
+3x
+3x
+3x
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3x
+
+
+
+
+
+3x
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+3x
+
+3x
+
+
+
+
+
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+3x
+
+3x
+
+
+
+3x
+
+
+3x
+
+
+
+3x
+
+
+
+
+
+3x
+
+
+
+ | import nodePath from "path";
+import micromatch from "micromatch";
+import { ProbotOctokit } from "probot";
+import fetch from "node-fetch";
+import { safeLoad } from "js-yaml";
+import { Packages, Tool } from "@manypkg/get-packages";
+import assembleReleasePlan from "@changesets/assemble-release-plan";
+import { parse as parseConfig } from "@changesets/config";
+import { PreState, NewChangeset } from "@changesets/types";
+import parseChangeset from "@changesets/parse";
+
+export let getChangedPackages = async ({
+ owner,
+ repo,
+ ref,
+ changedFiles: changedFilesPromise,
+ octokit,
+ installationToken,
+}: {
+ owner: string;
+ repo: string;
+ ref: string;
+ changedFiles: string[] | Promise<string[]>;
+ octokit: InstanceType<typeof ProbotOctokit>;
+ installationToken: string;
+}) => {
+ let hasErrored = false;
+ let encodedCredentials = Buffer.from(
+ `x-access-token:${installationToken}`
+ ).toString("base64");
+
+ function fetchFile(path: string) {
+ return fetch(
+ `https://raw.githubusercontent.com/${owner}/${repo}/${ref}/${path}`,
+ {
+ headers: {
+ Authorization: `Basic ${encodedCredentials}`,
+ },
+ }
+ );
+ }
+
+ function fetchJsonFile(path: string) {
+ return fetchFile(path)
+ .then((x) => x.json())
+ .catch((err) => {
+ hasErrored = true;
+ console.error(err);
+ return {};
+ });
+ }
+
+ function fetchTextFile(path: string) {
+ return fetchFile(path)
+ .then((x) => x.text())
+ .catch((err) => {
+ hasErrored = true;
+ console.error(err);
+ return "";
+ });
+ }
+
+ async function getPackage(pkgPath: string) {
+ let jsonContent = await fetchJsonFile(pkgPath + "/package.json");
+ return {
+ packageJson: jsonContent,
+ dir: pkgPath,
+ };
+ }
+
+ let rootPackageJsonContentsPromise = fetchJsonFile("package.json");
+ let configPromise: Promise<any> = fetchJsonFile(".changeset/config.json");
+
+ let tree = await octokit.git.getTree({
+ owner,
+ repo,
+ recursive: "1",
+ tree_sha: ref,
+ });
+
+ let preStatePromise: Promise<PreState> | undefined;
+ let changesetPromises: Promise<NewChangeset>[] = [];
+ let potentialWorkspaceDirectories: string[] = [];
+ let isPnpm = false;
+ let changedFiles = await changedFilesPromise;
+
+ for (let item of tree.data.tree) {
+ Iif (!item.path) continue;
+ if (item.path.endsWith("/package.json")) {
+ let dirPath = nodePath.dirname(item.path);
+ potentialWorkspaceDirectories.push(dirPath);
+ } else if (item.path === "pnpm-workspace.yaml") {
+ isPnpm = true;
+ } else if (item.path === ".changeset/pre.json") {
+ preStatePromise = fetchJsonFile(".changeset/pre.json");
+ } else Iif (
+ item.path !== ".changeset/README.md" &&
+ item.path.startsWith(".changeset") &&
+ item.path.endsWith(".md") &&
+ changedFiles.includes(item.path)
+ ) {
+ let res = /\.changeset\/([^\.]+)\.md/.exec(item.path);
+ Iif (!res) {
+ throw new Error("could not get name from changeset filename");
+ }
+ let id = res[1];
+ changesetPromises.push(
+ fetchTextFile(item.path).then((text) => {
+ return { ...parseChangeset(text), id };
+ })
+ );
+ }
+ }
+ let tool:
+ | {
+ tool: Tool;
+ globs: string[];
+ }
+ | undefined;
+
+ Iif (isPnpm) {
+ tool = {
+ tool: "pnpm",
+ globs: safeLoad(await fetchTextFile("pnpm-workspace.yaml")).packages,
+ };
+ } else {
+ let rootPackageJsonContent = await rootPackageJsonContentsPromise;
+
+ Iif (rootPackageJsonContent.workspaces) {
+ if (!Array.isArray(rootPackageJsonContent.workspaces)) {
+ tool = {
+ tool: "yarn",
+ globs: rootPackageJsonContent.workspaces.packages,
+ };
+ } else {
+ tool = {
+ tool: "yarn",
+ globs: rootPackageJsonContent.workspaces,
+ };
+ }
+ } else Iif (
+ rootPackageJsonContent.bolt &&
+ rootPackageJsonContent.bolt.workspaces
+ ) {
+ tool = {
+ tool: "bolt",
+ globs: rootPackageJsonContent.bolt.workspaces,
+ };
+ }
+ }
+
+ let rootPackageJsonContent = await rootPackageJsonContentsPromise;
+
+ let packages: Packages = {
+ root: {
+ dir: "/",
+ packageJson: rootPackageJsonContent,
+ },
+ tool: tool ? tool.tool : "root",
+ packages: [],
+ };
+
+ Iif (tool) {
+ Iif (
+ !Array.isArray(tool.globs) ||
+ !tool.globs.every((x) => typeof x === "string")
+ ) {
+ throw new Error("globs are not valid: " + JSON.stringify(tool.globs));
+ }
+ let matches = micromatch(potentialWorkspaceDirectories, tool.globs);
+
+ packages.packages = await Promise.all(
+ matches.map((dir) => getPackage(dir))
+ );
+ } else {
+ packages.packages.push(packages.root);
+ }
+ Iif (hasErrored) {
+ throw new Error("an error occurred when fetching files");
+ }
+
+ const releasePlan = assembleReleasePlan(
+ await Promise.all(changesetPromises),
+ packages,
+ await configPromise.then((rawConfig) => parseConfig(rawConfig, packages)),
+ await preStatePromise
+ );
+
+ return {
+ changedPackages: (packages.tool === "root"
+ ? packages.packages
+ : packages.packages.filter((pkg) =>
+ changedFiles.some((changedFile) => changedFile.includes(pkg.dir))
+ )
+ ).map((x) => x.packageJson.name),
+ releasePlan,
+ };
+};
+ |
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/coverage/lcov-report/index.html b/coverage/lcov-report/index.html
new file mode 100644
index 0000000..a35b84d
--- /dev/null
+++ b/coverage/lcov-report/index.html
@@ -0,0 +1,131 @@
+
+
+
+
+
+ Code coverage report for All files
+
+
+
+
+
+
+
+
+
+
+
+
All files
+
+
+
+ 62.12%
+ Statements
+ 82/132
+
+
+
+
+ 35.18%
+ Branches
+ 19/54
+
+
+
+
+ 61.76%
+ Functions
+ 21/34
+
+
+
+
+ 62.99%
+ Lines
+ 80/127
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b, p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+
+
+
+ File |
+ |
+ Statements |
+ |
+ Branches |
+ |
+ Functions |
+ |
+ Lines |
+ |
+
+
+
+ get-changed-packages.ts |
+
+
+ |
+ 46.66% |
+ 35/75 |
+ 18.75% |
+ 6/32 |
+ 37.5% |
+ 6/16 |
+ 47.22% |
+ 34/72 |
+
+
+
+ index.ts |
+
+
+ |
+ 82.45% |
+ 47/57 |
+ 59.09% |
+ 13/22 |
+ 83.33% |
+ 15/18 |
+ 83.63% |
+ 46/55 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/coverage/lcov-report/index.ts.html b/coverage/lcov-report/index.ts.html
new file mode 100644
index 0000000..0e1fbce
--- /dev/null
+++ b/coverage/lcov-report/index.ts.html
@@ -0,0 +1,808 @@
+
+
+
+
+
+ Code coverage report for index.ts
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 82.45%
+ Statements
+ 47/57
+
+
+
+
+ 59.09%
+ Branches
+ 13/22
+
+
+
+
+ 83.33%
+ Functions
+ 15/18
+
+
+
+
+ 83.63%
+ Lines
+ 46/55
+
+
+
+
+
+ Press n or j to go to the next uncovered block, b, p or k for the previous block.
+
+
+
+ Filter:
+
+
+
+
+
+
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
+41
+42
+43
+44
+45
+46
+47
+48
+49
+50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+70
+71
+72
+73
+74
+75
+76
+77
+78
+79
+80
+81
+82
+83
+84
+85
+86
+87
+88
+89
+90
+91
+92
+93
+94
+95
+96
+97
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+123
+124
+125
+126
+127
+128
+129
+130
+131
+132
+133
+134
+135
+136
+137
+138
+139
+140
+141
+142
+143
+144
+145
+146
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+176
+177
+178
+179
+180
+181
+182
+183
+184
+185
+186
+187
+188
+189
+190
+191
+192
+193
+194
+195
+196
+197
+198
+199
+200
+201
+202
+203
+204
+205
+206
+207
+208
+209
+210
+211
+212
+213
+214
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+232
+233
+234
+235
+236
+237
+238
+239
+240
+241
+242 |
+1x
+
+
+1x
+
+
+
+
+
+1x
+1x
+1x
+
+1x
+3x
+
+3x
+
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+1x
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+2x
+
+
+
+
+
+
+
+
+
+
+
+
+
+1x
+3x
+3x
+
+
+
+
+
+
+
+
+
+
+1x
+
+
+
+1x
+1x
+
+
+1x
+
+
+1x
+
+
+1x
+
+
+3x
+3x
+
+3x
+
+
+
+
+
+1x
+4x
+4x
+
+4x
+
+
+4x
+
+
+1x
+
+
+3x
+
+3x
+3x
+
+3x
+
+
+
+
+3x
+3x
+
+
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+3x
+
+
+
+
+
+
+
+
+
+
+
+3x
+1x
+
+
+
+
+2x
+
+
+
+
+
+
+
+
+
+
+4x
+
+ | // @ts-ignore
+import humanId from "human-id";
+import { Probot, Context } from "probot";
+import { EmitterWebhookEvent } from "@octokit/webhooks";
+import { getChangedPackages } from "./get-changed-packages";
+import {
+ ReleasePlan,
+ ComprehensiveRelease,
+ VersionType,
+} from "@changesets/types";
+import markdownTable from "markdown-table";
+import { captureException } from "@sentry/node";
+import { ValidationError } from "@changesets/errors";
+
+const getReleasePlanMessage = (releasePlan: ReleasePlan | null) => {
+ Iif (!releasePlan) return "";
+
+ const publishableReleases = releasePlan.releases.filter(
+ (x): x is ComprehensiveRelease & { type: Exclude<VersionType, "none"> } =>
+ x.type !== "none"
+ );
+
+ let table = markdownTable([
+ ["Name", "Type"],
+ ...publishableReleases.map((x) => {
+ return [
+ x.name,
+ {
+ major: "Major",
+ minor: "Minor",
+ patch: "Patch",
+ }[x.type],
+ ];
+ }),
+ ]);
+
+ return `<details><summary>This PR includes ${
+ releasePlan.changesets.length
+ ? `changesets to release ${
+ publishableReleases.length === 1
+ ? "1 package"
+ : `${publishableReleases.length} packages`
+ }`
+ : "no changesets"
+ }</summary>
+
+ ${
+ publishableReleases.length
+ ? table
+ : "When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types"
+ }
+
+</details>`;
+};
+
+const getAbsentMessage = (
+ commitSha: string,
+ addChangesetUrl: string,
+ releasePlan: ReleasePlan | null
+) => `### ⚠️ No Changeset found
+
+Latest commit: ${commitSha}
+
+Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. **If these changes should result in a version bump, you need to add a changeset.**
+
+${getReleasePlanMessage(releasePlan)}
+
+[Click here to learn what changesets are, and how to add one](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md).
+
+[Click here if you're a maintainer who wants to add a changeset to this PR](${addChangesetUrl})
+
+`;
+
+const getApproveMessage = (
+ commitSha: string,
+ addChangesetUrl: string,
+ releasePlan: ReleasePlan | null
+) => `### 🦋 Changeset detected
+
+Latest commit: ${commitSha}
+
+**The changes in this PR will be included in the next version bump.**
+
+${getReleasePlanMessage(releasePlan)}
+
+Not sure what this means? [Click here to learn what changesets are](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md).
+
+[Click here if you're a maintainer who wants to add another changeset to this PR](${addChangesetUrl})
+
+`;
+
+const getNewChangesetTemplate = (changedPackages: string[], title: string) =>
+ encodeURIComponent(`---
+${changedPackages.map((x) => `"${x}": patch`).join("\n")}
+---
+
+${title}
+`);
+
+type PRContext = EmitterWebhookEvent<
+ "pull_request.opened" | "pull_request.synchronize"
+> &
+ Omit<Context, keyof EmitterWebhookEvent>;
+
+const getCommentId = (
+ context: PRContext,
+ params: { repo: string; owner: string; issue_number: number }
+) =>
+ context.octokit.issues.listComments(params).then((comments) => {
+ const changesetBotComment = comments.data.find(
+ // TODO: find what the current user is in some way or something
+ (comment) =>
+ comment.user?.login === "changeset-bot[bot]" ||
+ comment.user?.login === "changesets-test-bot[bot]"
+ );
+ return changesetBotComment ? changesetBotComment.id : null;
+ });
+
+const hasChangesetBeenAdded = (
+ changedFilesPromise: ReturnType<PRContext["octokit"]["pulls"]["listFiles"]>
+) =>
+ changedFilesPromise.then((files) =>
+ files.data.some(
+ (file) =>
+ file.status === "added" &&
+ /^\.changeset\/.+\.md$/.test(file.filename) &&
+ file.filename !== ".changeset/README.md"
+ )
+ );
+
+export default (app: Probot) => {
+ app.auth();
+ app.log("Yay, the app was loaded!");
+
+ app.on(
+ ["pull_request.opened", "pull_request.synchronize"],
+ async (context) => {
+ if (
+ context.payload.pull_request.head.ref.startsWith("changeset-release")
+ ) {
+ return;
+ }
+
+ let errFromFetchingChangedFiles = "";
+
+ try {
+ let number = context.payload.number;
+
+ let repo = {
+ repo: context.payload.repository.name,
+ owner: context.payload.repository.owner.login,
+ };
+
+ const latestCommitSha = context.payload.pull_request.head.sha;
+ let changedFilesPromise = context.octokit.pulls.listFiles({
+ ...repo,
+ pull_number: number,
+ });
+
+ const [commentId, hasChangeset, { changedPackages, releasePlan }] =
+ await Promise.all([
+ // we know the comment won't exist on opened events
+ // ok, well like technically that's wrong
+ // but reducing time is nice here so that
+ // deploying this doesn't cost money
+ context.payload.action === "synchronize"
+ ? getCommentId(context, { ...repo, issue_number: number })
+ : undefined,
+ hasChangesetBeenAdded(changedFilesPromise),
+ getChangedPackages({
+ repo: context.payload.pull_request.head.repo.name,
+ owner: context.payload.pull_request.head.repo.owner.login,
+ ref: context.payload.pull_request.head.ref,
+ changedFiles: changedFilesPromise.then((x) =>
+ x.data.map((x) => x.filename)
+ ),
+ octokit: context.octokit,
+ installationToken: (
+ await (
+ await app.auth()
+ ).apps.createInstallationAccessToken({
+ installation_id: context.payload.installation!.id,
+ })
+ ).data.token,
+ }).catch((err) => {
+ if (err instanceof ValidationError) {
+ errFromFetchingChangedFiles = `<details><summary>💥 An error occurred when fetching the changed packages and changesets in this PR</summary>\n\n\`\`\`\n${err.message}\n\`\`\`\n\n</details>\n`;
+ } else {
+ console.error(err);
+ captureException(err);
+ }
+ return {
+ changedPackages: ["@fake-scope/fake-pkg"],
+ releasePlan: null,
+ };
+ }),
+ ] as const);
+
+ let addChangesetUrl = `${
+ context.payload.pull_request.head.repo.html_url
+ }/new/${
+ context.payload.pull_request.head.ref
+ }?filename=.changeset/${humanId({
+ separator: "-",
+ capitalize: false,
+ })}.md&value=${getNewChangesetTemplate(
+ changedPackages,
+ context.payload.pull_request.title
+ )}`;
+
+ let prComment = {
+ ...repo,
+ body:
+ (hasChangeset
+ ? getApproveMessage(latestCommitSha, addChangesetUrl, releasePlan)
+ : getAbsentMessage(
+ latestCommitSha,
+ addChangesetUrl,
+ releasePlan
+ )) + errFromFetchingChangedFiles,
+ };
+
+ if (commentId != null) {
+ return context.octokit.issues.updateComment({
+ ...prComment,
+ comment_id: commentId,
+ });
+ }
+ return context.octokit.issues.createComment({
+ ...prComment,
+ issue_number: number,
+ });
+ } catch (err) {
+ console.error(err);
+ throw err;
+ }
+ }
+ );
+
+ return app
+};
+ |
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/coverage/lcov-report/prettify.css b/coverage/lcov-report/prettify.css
new file mode 100644
index 0000000..b317a7c
--- /dev/null
+++ b/coverage/lcov-report/prettify.css
@@ -0,0 +1 @@
+.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee}
diff --git a/coverage/lcov-report/prettify.js b/coverage/lcov-report/prettify.js
new file mode 100644
index 0000000..b322523
--- /dev/null
+++ b/coverage/lcov-report/prettify.js
@@ -0,0 +1,2 @@
+/* eslint-disable */
+window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^