From d393979a22c5c27230870a2b30b75bcc5ca52116 Mon Sep 17 00:00:00 2001 From: Brian Carlson Date: Tue, 29 Apr 2025 12:18:26 -0500 Subject: [PATCH] Absorb pg-pass library --- .../4a578060-c3d8-43f8-83f9-3a80ee8b79c2.json | 1 + .../5139fd5f-dbfc-44bb-ae8a-17e6962e23cd.json | 1 + .../4a578060-c3d8-43f8-83f9-3a80ee8b79c2.json | 1 + .../5139fd5f-dbfc-44bb-ae8a-17e6962e23cd.json | 1 + .../.nyc_output/processinfo/index.json | 1 + packages/pg-pass/README.md | 74 ++ packages/pg-pass/coverage/base.css | 224 ++++ packages/pg-pass/coverage/block-navigation.js | 87 ++ packages/pg-pass/coverage/favicon.png | Bin 0 -> 445 bytes packages/pg-pass/coverage/helper.js.html | 697 +++++++++++ packages/pg-pass/coverage/index.html | 131 +++ packages/pg-pass/coverage/index.js.html | 142 +++ packages/pg-pass/coverage/prettify.css | 1 + packages/pg-pass/coverage/prettify.js | 2 + .../pg-pass/coverage/sort-arrow-sprite.png | Bin 0 -> 138 bytes packages/pg-pass/coverage/sorter.js | 196 ++++ packages/pg-pass/lib/helper.js | 204 ++++ packages/pg-pass/lib/index.js | 19 + packages/pg-pass/package.json | 38 + packages/pg-pass/test/#1 de-escaping.js | 28 + packages/pg-pass/test/#1 escaping.js | 19 + packages/pg-pass/test/#17 unset env.js | 34 + .../pg-pass/test/#6 too many open files.js | 55 + packages/pg-pass/test/_pgpass | 10 + packages/pg-pass/test/helper.js | 256 +++++ packages/pg-pass/test/index.js | 37 + .../pg-pass/test/integration/#1 escaping.js | 170 +++ packages/pg/package.json | 2 +- yarn.lock | 1014 ++++++++++++++++- 29 files changed, 3387 insertions(+), 58 deletions(-) create mode 100644 packages/pg-pass/.nyc_output/4a578060-c3d8-43f8-83f9-3a80ee8b79c2.json create mode 100644 packages/pg-pass/.nyc_output/5139fd5f-dbfc-44bb-ae8a-17e6962e23cd.json create mode 100644 packages/pg-pass/.nyc_output/processinfo/4a578060-c3d8-43f8-83f9-3a80ee8b79c2.json create mode 100644 packages/pg-pass/.nyc_output/processinfo/5139fd5f-dbfc-44bb-ae8a-17e6962e23cd.json create mode 100644 packages/pg-pass/.nyc_output/processinfo/index.json create mode 100644 packages/pg-pass/README.md create mode 100644 packages/pg-pass/coverage/base.css create mode 100644 packages/pg-pass/coverage/block-navigation.js create mode 100644 packages/pg-pass/coverage/favicon.png create mode 100644 packages/pg-pass/coverage/helper.js.html create mode 100644 packages/pg-pass/coverage/index.html create mode 100644 packages/pg-pass/coverage/index.js.html create mode 100644 packages/pg-pass/coverage/prettify.css create mode 100644 packages/pg-pass/coverage/prettify.js create mode 100644 packages/pg-pass/coverage/sort-arrow-sprite.png create mode 100644 packages/pg-pass/coverage/sorter.js create mode 100644 packages/pg-pass/lib/helper.js create mode 100644 packages/pg-pass/lib/index.js create mode 100644 packages/pg-pass/package.json create mode 100644 packages/pg-pass/test/#1 de-escaping.js create mode 100644 packages/pg-pass/test/#1 escaping.js create mode 100644 packages/pg-pass/test/#17 unset env.js create mode 100644 packages/pg-pass/test/#6 too many open files.js create mode 100644 packages/pg-pass/test/_pgpass create mode 100644 packages/pg-pass/test/helper.js create mode 100644 packages/pg-pass/test/index.js create mode 100644 packages/pg-pass/test/integration/#1 escaping.js diff --git a/packages/pg-pass/.nyc_output/4a578060-c3d8-43f8-83f9-3a80ee8b79c2.json b/packages/pg-pass/.nyc_output/4a578060-c3d8-43f8-83f9-3a80ee8b79c2.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/packages/pg-pass/.nyc_output/4a578060-c3d8-43f8-83f9-3a80ee8b79c2.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/packages/pg-pass/.nyc_output/5139fd5f-dbfc-44bb-ae8a-17e6962e23cd.json b/packages/pg-pass/.nyc_output/5139fd5f-dbfc-44bb-ae8a-17e6962e23cd.json new file mode 100644 index 00000000..137670fb --- /dev/null +++ b/packages/pg-pass/.nyc_output/5139fd5f-dbfc-44bb-ae8a-17e6962e23cd.json @@ -0,0 +1 @@ +{"/Users/brian.carlson/src/node-postgres/packages/pg-pass/lib/index.js":{"path":"/Users/brian.carlson/src/node-postgres/packages/pg-pass/lib/index.js","statementMap":{"0":{"start":{"line":3,"column":11},"end":{"line":3,"column":24}},"1":{"start":{"line":4,"column":11},"end":{"line":4,"column":33}},"2":{"start":{"line":5,"column":0},"end":{"line":17,"column":1}},"3":{"start":{"line":6,"column":15},"end":{"line":6,"column":35}},"4":{"start":{"line":8,"column":2},"end":{"line":16,"column":4}},"5":{"start":{"line":9,"column":4},"end":{"line":11,"column":5}},"6":{"start":{"line":10,"column":6},"end":{"line":10,"column":26}},"7":{"start":{"line":13,"column":15},"end":{"line":13,"column":40}},"8":{"start":{"line":15,"column":4},"end":{"line":15,"column":40}},"9":{"start":{"line":19,"column":0},"end":{"line":19,"column":37}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":18}},"loc":{"start":{"line":5,"column":41},"end":{"line":17,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":8,"column":16},"end":{"line":8,"column":17}},"loc":{"start":{"line":8,"column":37},"end":{"line":16,"column":3}},"line":8}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":4},"end":{"line":11,"column":5}},"type":"if","locations":[{"start":{"line":9,"column":4},"end":{"line":11,"column":5}},{"start":{"line":9,"column":4},"end":{"line":11,"column":5}}],"line":9},"1":{"loc":{"start":{"line":9,"column":8},"end":{"line":9,"column":44}},"type":"binary-expr","locations":[{"start":{"line":9,"column":8},"end":{"line":9,"column":11}},{"start":{"line":9,"column":15},"end":{"line":9,"column":44}}],"line":9}},"s":{"0":1,"1":1,"2":1,"3":6,"4":6,"5":6,"6":2,"7":4,"8":4,"9":1},"f":{"0":6,"1":6},"b":{"0":[2,4],"1":[6,5]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1da065a89cca52d8d9f95a2359f156bc3d2b07db","contentHash":"1c00d1ca3ca15ee631180ce49f757d296cd40c233e6864053b79c2ef2019cd99"},"/Users/brian.carlson/src/node-postgres/packages/pg-pass/lib/helper.js":{"path":"/Users/brian.carlson/src/node-postgres/packages/pg-pass/lib/helper.js","statementMap":{"0":{"start":{"line":3,"column":13},"end":{"line":3,"column":28}},"1":{"start":{"line":4,"column":11},"end":{"line":4,"column":35}},"2":{"start":{"line":5,"column":10},"end":{"line":5,"column":27}},"3":{"start":{"line":6,"column":9},"end":{"line":6,"column":24}},"4":{"start":{"line":7,"column":16},"end":{"line":7,"column":20}},"5":{"start":{"line":9,"column":17},"end":{"line":9,"column":31}},"6":{"start":{"line":11,"column":12},"end":{"line":11,"column":40}},"7":{"start":{"line":12,"column":16},"end":{"line":12,"column":18}},"8":{"start":{"line":13,"column":12},"end":{"line":13,"column":13}},"9":{"start":{"line":14,"column":11},"end":{"line":14,"column":16}},"10":{"start":{"line":15,"column":12},"end":{"line":15,"column":17}},"11":{"start":{"line":17,"column":2},"end":{"line":17,"column":35}},"12":{"start":{"line":20,"column":19},"end":{"line":20,"column":67}},"13":{"start":{"line":21,"column":19},"end":{"line":21,"column":36}},"14":{"start":{"line":22,"column":16},"end":{"line":22,"column":42}},"15":{"start":{"line":25,"column":21},"end":{"line":25,"column":81}},"16":{"start":{"line":27,"column":2},"end":{"line":30,"column":3}},"17":{"start":{"line":28,"column":17},"end":{"line":28,"column":67}},"18":{"start":{"line":29,"column":4},"end":{"line":29,"column":51}},"19":{"start":{"line":33,"column":0},"end":{"line":40,"column":2}},"20":{"start":{"line":35,"column":4},"end":{"line":35,"column":16}},"21":{"start":{"line":38,"column":4},"end":{"line":38,"column":15}},"22":{"start":{"line":42,"column":0},"end":{"line":46,"column":1}},"23":{"start":{"line":43,"column":14},"end":{"line":43,"column":24}},"24":{"start":{"line":44,"column":2},"end":{"line":44,"column":21}},"25":{"start":{"line":45,"column":2},"end":{"line":45,"column":12}},"26":{"start":{"line":48,"column":0},"end":{"line":54,"column":1}},"27":{"start":{"line":49,"column":14},"end":{"line":49,"column":35}},"28":{"start":{"line":51,"column":4},"end":{"line":52,"column":114}},"29":{"start":{"line":53,"column":2},"end":{"line":53,"column":13}},"30":{"start":{"line":56,"column":0},"end":{"line":79,"column":1}},"31":{"start":{"line":57,"column":2},"end":{"line":59,"column":3}},"32":{"start":{"line":58,"column":4},"end":{"line":58,"column":16}},"33":{"start":{"line":61,"column":2},"end":{"line":63,"column":3}},"34":{"start":{"line":62,"column":4},"end":{"line":62,"column":15}},"35":{"start":{"line":65,"column":2},"end":{"line":65,"column":27}},"36":{"start":{"line":67,"column":2},"end":{"line":70,"column":3}},"37":{"start":{"line":68,"column":4},"end":{"line":68,"column":66}},"38":{"start":{"line":69,"column":4},"end":{"line":69,"column":16}},"39":{"start":{"line":72,"column":2},"end":{"line":76,"column":3}},"40":{"start":{"line":74,"column":4},"end":{"line":74,"column":115}},"41":{"start":{"line":75,"column":4},"end":{"line":75,"column":16}},"42":{"start":{"line":78,"column":2},"end":{"line":78,"column":13}},"43":{"start":{"line":81,"column":17},"end":{"line":91,"column":1}},"44":{"start":{"line":82,"column":2},"end":{"line":90,"column":10}},"45":{"start":{"line":83,"column":4},"end":{"line":88,"column":5}},"46":{"start":{"line":85,"column":6},"end":{"line":87,"column":7}},"47":{"start":{"line":86,"column":8},"end":{"line":86,"column":27}},"48":{"start":{"line":89,"column":4},"end":{"line":89,"column":77}},"49":{"start":{"line":93,"column":0},"end":{"line":118,"column":1}},"50":{"start":{"line":95,"column":21},"end":{"line":95,"column":41}},"51":{"start":{"line":98,"column":18},"end":{"line":98,"column":33}},"52":{"start":{"line":99,"column":4},"end":{"line":102,"column":5}},"53":{"start":{"line":100,"column":6},"end":{"line":100,"column":27}},"54":{"start":{"line":101,"column":6},"end":{"line":101,"column":22}},"55":{"start":{"line":105,"column":16},"end":{"line":108,"column":3}},"56":{"start":{"line":106,"column":4},"end":{"line":106,"column":20}},"57":{"start":{"line":107,"column":4},"end":{"line":107,"column":12}},"58":{"start":{"line":110,"column":16},"end":{"line":114,"column":3}},"59":{"start":{"line":111,"column":4},"end":{"line":111,"column":20}},"60":{"start":{"line":112,"column":4},"end":{"line":112,"column":51}},"61":{"start":{"line":113,"column":4},"end":{"line":113,"column":17}},"62":{"start":{"line":116,"column":2},"end":{"line":116,"column":27}},"63":{"start":{"line":117,"column":2},"end":{"line":117,"column":67}},"64":{"start":{"line":120,"column":19},"end":{"line":163,"column":1}},"65":{"start":{"line":121,"column":2},"end":{"line":123,"column":3}},"66":{"start":{"line":122,"column":4},"end":{"line":122,"column":15}},"67":{"start":{"line":125,"column":16},"end":{"line":125,"column":18}},"68":{"start":{"line":126,"column":17},"end":{"line":126,"column":19}},"69":{"start":{"line":127,"column":17},"end":{"line":127,"column":18}},"70":{"start":{"line":128,"column":17},"end":{"line":128,"column":18}},"71":{"start":{"line":129,"column":12},"end":{"line":129,"column":14}},"72":{"start":{"line":130,"column":20},"end":{"line":130,"column":25}},"73":{"start":{"line":131,"column":19},"end":{"line":139,"column":3}},"74":{"start":{"line":132,"column":16},"end":{"line":132,"column":38}},"75":{"start":{"line":134,"column":4},"end":{"line":136,"column":5}},"76":{"start":{"line":135,"column":6},"end":{"line":135,"column":47}},"77":{"start":{"line":138,"column":4},"end":{"line":138,"column":32}},"78":{"start":{"line":141,"column":2},"end":{"line":158,"column":3}},"79":{"start":{"line":141,"column":15},"end":{"line":141,"column":16}},"80":{"start":{"line":142,"column":4},"end":{"line":142,"column":32}},"81":{"start":{"line":143,"column":4},"end":{"line":143,"column":29}},"82":{"start":{"line":145,"column":4},"end":{"line":145,"column":44}},"83":{"start":{"line":147,"column":4},"end":{"line":150,"column":5}},"84":{"start":{"line":148,"column":6},"end":{"line":148,"column":34}},"85":{"start":{"line":149,"column":6},"end":{"line":149,"column":11}},"86":{"start":{"line":152,"column":4},"end":{"line":157,"column":5}},"87":{"start":{"line":153,"column":6},"end":{"line":153,"column":41}},"88":{"start":{"line":155,"column":6},"end":{"line":155,"column":22}},"89":{"start":{"line":156,"column":6},"end":{"line":156,"column":19}},"90":{"start":{"line":160,"column":2},"end":{"line":160,"column":59}},"91":{"start":{"line":162,"column":2},"end":{"line":162,"column":12}},"92":{"start":{"line":165,"column":22},"end":{"line":204,"column":1}},"93":{"start":{"line":166,"column":16},"end":{"line":191,"column":3}},"94":{"start":{"line":169,"column":6},"end":{"line":169,"column":25}},"95":{"start":{"line":173,"column":6},"end":{"line":175,"column":7}},"96":{"start":{"line":174,"column":8},"end":{"line":174,"column":19}},"97":{"start":{"line":176,"column":6},"end":{"line":176,"column":19}},"98":{"start":{"line":177,"column":6},"end":{"line":177,"column":80}},"99":{"start":{"line":181,"column":6},"end":{"line":181,"column":25}},"100":{"start":{"line":185,"column":6},"end":{"line":185,"column":25}},"101":{"start":{"line":189,"column":6},"end":{"line":189,"column":25}},"102":{"start":{"line":193,"column":2},"end":{"line":201,"column":3}},"103":{"start":{"line":193,"column":17},"end":{"line":193,"column":18}},"104":{"start":{"line":194,"column":17},"end":{"line":194,"column":27}},"105":{"start":{"line":195,"column":18},"end":{"line":195,"column":46}},"106":{"start":{"line":197,"column":16},"end":{"line":197,"column":27}},"107":{"start":{"line":198,"column":4},"end":{"line":200,"column":5}},"108":{"start":{"line":199,"column":6},"end":{"line":199,"column":18}},"109":{"start":{"line":203,"column":2},"end":{"line":203,"column":13}}},"fnMap":{"0":{"name":"isRegFile","decl":{"start":{"line":16,"column":9},"end":{"line":16,"column":18}},"loc":{"start":{"line":16,"column":25},"end":{"line":18,"column":1}},"line":16},"1":{"name":"warn","decl":{"start":{"line":24,"column":9},"end":{"line":24,"column":13}},"loc":{"start":{"line":24,"column":16},"end":{"line":31,"column":1}},"line":24},"2":{"name":"(anonymous_2)","decl":{"start":{"line":34,"column":7},"end":{"line":34,"column":8}},"loc":{"start":{"line":34,"column":19},"end":{"line":36,"column":3}},"line":34},"3":{"name":"(anonymous_3)","decl":{"start":{"line":37,"column":7},"end":{"line":37,"column":8}},"loc":{"start":{"line":37,"column":22},"end":{"line":39,"column":3}},"line":37},"4":{"name":"(anonymous_4)","decl":{"start":{"line":42,"column":24},"end":{"line":42,"column":25}},"loc":{"start":{"line":42,"column":42},"end":{"line":46,"column":1}},"line":42},"5":{"name":"(anonymous_5)","decl":{"start":{"line":48,"column":29},"end":{"line":48,"column":30}},"loc":{"start":{"line":48,"column":47},"end":{"line":54,"column":1}},"line":48},"6":{"name":"(anonymous_6)","decl":{"start":{"line":56,"column":27},"end":{"line":56,"column":28}},"loc":{"start":{"line":56,"column":51},"end":{"line":79,"column":1}},"line":56},"7":{"name":"(anonymous_7)","decl":{"start":{"line":81,"column":40},"end":{"line":81,"column":41}},"loc":{"start":{"line":81,"column":67},"end":{"line":91,"column":1}},"line":81},"8":{"name":"(anonymous_8)","decl":{"start":{"line":82,"column":40},"end":{"line":82,"column":41}},"loc":{"start":{"line":82,"column":68},"end":{"line":90,"column":3}},"line":82},"9":{"name":"(anonymous_9)","decl":{"start":{"line":93,"column":29},"end":{"line":93,"column":30}},"loc":{"start":{"line":93,"column":61},"end":{"line":118,"column":1}},"line":93},"10":{"name":"onLine","decl":{"start":{"line":97,"column":11},"end":{"line":97,"column":17}},"loc":{"start":{"line":97,"column":24},"end":{"line":103,"column":3}},"line":97},"11":{"name":"(anonymous_11)","decl":{"start":{"line":105,"column":16},"end":{"line":105,"column":17}},"loc":{"start":{"line":105,"column":28},"end":{"line":108,"column":3}},"line":105},"12":{"name":"(anonymous_12)","decl":{"start":{"line":110,"column":16},"end":{"line":110,"column":17}},"loc":{"start":{"line":110,"column":31},"end":{"line":114,"column":3}},"line":110},"13":{"name":"(anonymous_13)","decl":{"start":{"line":120,"column":46},"end":{"line":120,"column":47}},"loc":{"start":{"line":120,"column":62},"end":{"line":163,"column":1}},"line":120},"14":{"name":"(anonymous_14)","decl":{"start":{"line":131,"column":19},"end":{"line":131,"column":20}},"loc":{"start":{"line":131,"column":42},"end":{"line":139,"column":3}},"line":131},"15":{"name":"(anonymous_15)","decl":{"start":{"line":165,"column":52},"end":{"line":165,"column":53}},"loc":{"start":{"line":165,"column":69},"end":{"line":204,"column":1}},"line":165},"16":{"name":"(anonymous_16)","decl":{"start":{"line":168,"column":7},"end":{"line":168,"column":8}},"loc":{"start":{"line":168,"column":20},"end":{"line":170,"column":5}},"line":168},"17":{"name":"(anonymous_17)","decl":{"start":{"line":172,"column":7},"end":{"line":172,"column":8}},"loc":{"start":{"line":172,"column":20},"end":{"line":178,"column":5}},"line":172},"18":{"name":"(anonymous_18)","decl":{"start":{"line":180,"column":7},"end":{"line":180,"column":8}},"loc":{"start":{"line":180,"column":20},"end":{"line":182,"column":5}},"line":180},"19":{"name":"(anonymous_19)","decl":{"start":{"line":184,"column":7},"end":{"line":184,"column":8}},"loc":{"start":{"line":184,"column":20},"end":{"line":186,"column":5}},"line":184},"20":{"name":"(anonymous_20)","decl":{"start":{"line":188,"column":7},"end":{"line":188,"column":8}},"loc":{"start":{"line":188,"column":20},"end":{"line":190,"column":5}},"line":188}},"branchMap":{"0":{"loc":{"start":{"line":25,"column":21},"end":{"line":25,"column":81}},"type":"binary-expr","locations":[{"start":{"line":25,"column":21},"end":{"line":25,"column":49}},{"start":{"line":25,"column":53},"end":{"line":25,"column":81}}],"line":25},"1":{"loc":{"start":{"line":27,"column":2},"end":{"line":30,"column":3}},"type":"if","locations":[{"start":{"line":27,"column":2},"end":{"line":30,"column":3}},{"start":{"line":27,"column":2},"end":{"line":30,"column":3}}],"line":27},"2":{"loc":{"start":{"line":49,"column":14},"end":{"line":49,"column":35}},"type":"binary-expr","locations":[{"start":{"line":49,"column":14},"end":{"line":49,"column":20}},{"start":{"line":49,"column":24},"end":{"line":49,"column":35}}],"line":49},"3":{"loc":{"start":{"line":51,"column":4},"end":{"line":52,"column":114}},"type":"binary-expr","locations":[{"start":{"line":51,"column":4},"end":{"line":51,"column":18}},{"start":{"line":52,"column":5},"end":{"line":52,"column":113}}],"line":51},"4":{"loc":{"start":{"line":52,"column":5},"end":{"line":52,"column":113}},"type":"cond-expr","locations":[{"start":{"line":52,"column":13},"end":{"line":52,"column":72}},{"start":{"line":52,"column":75},"end":{"line":52,"column":113}}],"line":52},"5":{"loc":{"start":{"line":52,"column":23},"end":{"line":52,"column":42}},"type":"binary-expr","locations":[{"start":{"line":52,"column":23},"end":{"line":52,"column":34}},{"start":{"line":52,"column":38},"end":{"line":52,"column":42}}],"line":52},"6":{"loc":{"start":{"line":52,"column":85},"end":{"line":52,"column":101}},"type":"binary-expr","locations":[{"start":{"line":52,"column":85},"end":{"line":52,"column":93}},{"start":{"line":52,"column":97},"end":{"line":52,"column":101}}],"line":52},"7":{"loc":{"start":{"line":57,"column":2},"end":{"line":59,"column":3}},"type":"if","locations":[{"start":{"line":57,"column":2},"end":{"line":59,"column":3}},{"start":{"line":57,"column":2},"end":{"line":59,"column":3}}],"line":57},"8":{"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":3}},"type":"if","locations":[{"start":{"line":61,"column":2},"end":{"line":63,"column":3}},{"start":{"line":61,"column":2},"end":{"line":63,"column":3}}],"line":61},"9":{"loc":{"start":{"line":65,"column":10},"end":{"line":65,"column":27}},"type":"binary-expr","locations":[{"start":{"line":65,"column":10},"end":{"line":65,"column":15}},{"start":{"line":65,"column":19},"end":{"line":65,"column":27}}],"line":65},"10":{"loc":{"start":{"line":67,"column":2},"end":{"line":70,"column":3}},"type":"if","locations":[{"start":{"line":67,"column":2},"end":{"line":70,"column":3}},{"start":{"line":67,"column":2},"end":{"line":70,"column":3}}],"line":67},"11":{"loc":{"start":{"line":72,"column":2},"end":{"line":76,"column":3}},"type":"if","locations":[{"start":{"line":72,"column":2},"end":{"line":76,"column":3}},{"start":{"line":72,"column":2},"end":{"line":76,"column":3}}],"line":72},"12":{"loc":{"start":{"line":83,"column":4},"end":{"line":88,"column":5}},"type":"if","locations":[{"start":{"line":83,"column":4},"end":{"line":88,"column":5}},{"start":{"line":83,"column":4},"end":{"line":88,"column":5}}],"line":83},"13":{"loc":{"start":{"line":85,"column":6},"end":{"line":87,"column":7}},"type":"if","locations":[{"start":{"line":85,"column":6},"end":{"line":87,"column":7}},{"start":{"line":85,"column":6},"end":{"line":87,"column":7}}],"line":85},"14":{"loc":{"start":{"line":85,"column":17},"end":{"line":85,"column":47}},"type":"binary-expr","locations":[{"start":{"line":85,"column":17},"end":{"line":85,"column":32}},{"start":{"line":85,"column":36},"end":{"line":85,"column":47}}],"line":85},"15":{"loc":{"start":{"line":86,"column":15},"end":{"line":86,"column":27}},"type":"binary-expr","locations":[{"start":{"line":86,"column":15},"end":{"line":86,"column":19}},{"start":{"line":86,"column":23},"end":{"line":86,"column":27}}],"line":86},"16":{"loc":{"start":{"line":89,"column":11},"end":{"line":89,"column":77}},"type":"binary-expr","locations":[{"start":{"line":89,"column":11},"end":{"line":89,"column":15}},{"start":{"line":89,"column":20},"end":{"line":89,"column":40}},{"start":{"line":89,"column":44},"end":{"line":89,"column":76}}],"line":89},"17":{"loc":{"start":{"line":99,"column":4},"end":{"line":102,"column":5}},"type":"if","locations":[{"start":{"line":99,"column":4},"end":{"line":102,"column":5}},{"start":{"line":99,"column":4},"end":{"line":102,"column":5}}],"line":99},"18":{"loc":{"start":{"line":99,"column":8},"end":{"line":99,"column":64}},"type":"binary-expr","locations":[{"start":{"line":99,"column":8},"end":{"line":99,"column":13}},{"start":{"line":99,"column":17},"end":{"line":99,"column":36}},{"start":{"line":99,"column":40},"end":{"line":99,"column":64}}],"line":99},"19":{"loc":{"start":{"line":121,"column":2},"end":{"line":123,"column":3}},"type":"if","locations":[{"start":{"line":121,"column":2},"end":{"line":123,"column":3}},{"start":{"line":121,"column":2},"end":{"line":123,"column":3}}],"line":121},"20":{"loc":{"start":{"line":121,"column":6},"end":{"line":121,"column":45}},"type":"binary-expr","locations":[{"start":{"line":121,"column":6},"end":{"line":121,"column":22}},{"start":{"line":121,"column":26},"end":{"line":121,"column":45}}],"line":121},"21":{"loc":{"start":{"line":134,"column":4},"end":{"line":136,"column":5}},"type":"if","locations":[{"start":{"line":134,"column":4},"end":{"line":136,"column":5}},{"start":{"line":134,"column":4},"end":{"line":136,"column":5}}],"line":134},"22":{"loc":{"start":{"line":147,"column":4},"end":{"line":150,"column":5}},"type":"if","locations":[{"start":{"line":147,"column":4},"end":{"line":150,"column":5}},{"start":{"line":147,"column":4},"end":{"line":150,"column":5}}],"line":147},"23":{"loc":{"start":{"line":152,"column":4},"end":{"line":157,"column":5}},"type":"if","locations":[{"start":{"line":152,"column":4},"end":{"line":157,"column":5}},{"start":{"line":152,"column":4},"end":{"line":157,"column":5}}],"line":152},"24":{"loc":{"start":{"line":152,"column":8},"end":{"line":152,"column":53}},"type":"binary-expr","locations":[{"start":{"line":152,"column":8},"end":{"line":152,"column":14}},{"start":{"line":152,"column":18},"end":{"line":152,"column":32}},{"start":{"line":152,"column":36},"end":{"line":152,"column":53}}],"line":152},"25":{"loc":{"start":{"line":160,"column":8},"end":{"line":160,"column":59}},"type":"cond-expr","locations":[{"start":{"line":160,"column":49},"end":{"line":160,"column":52}},{"start":{"line":160,"column":55},"end":{"line":160,"column":59}}],"line":160},"26":{"loc":{"start":{"line":173,"column":6},"end":{"line":175,"column":7}},"type":"if","locations":[{"start":{"line":173,"column":6},"end":{"line":175,"column":7}},{"start":{"line":173,"column":6},"end":{"line":175,"column":7}}],"line":173},"27":{"loc":{"start":{"line":177,"column":13},"end":{"line":177,"column":80}},"type":"binary-expr","locations":[{"start":{"line":177,"column":13},"end":{"line":177,"column":24}},{"start":{"line":177,"column":28},"end":{"line":177,"column":33}},{"start":{"line":177,"column":37},"end":{"line":177,"column":57}},{"start":{"line":177,"column":61},"end":{"line":177,"column":80}}],"line":177},"28":{"loc":{"start":{"line":195,"column":18},"end":{"line":195,"column":46}},"type":"binary-expr","locations":[{"start":{"line":195,"column":18},"end":{"line":195,"column":40}},{"start":{"line":195,"column":44},"end":{"line":195,"column":46}}],"line":195},"29":{"loc":{"start":{"line":198,"column":4},"end":{"line":200,"column":5}},"type":"if","locations":[{"start":{"line":198,"column":4},"end":{"line":200,"column":5}},{"start":{"line":198,"column":4},"end":{"line":200,"column":5}}],"line":198}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":12,"12":1,"13":1,"14":1,"15":7,"16":7,"17":6,"18":6,"19":1,"20":7,"21":9,"22":1,"23":5,"24":5,"25":5,"26":1,"27":10,"28":10,"29":10,"30":1,"31":15,"32":2,"33":13,"34":1,"35":12,"36":12,"37":4,"38":4,"39":8,"40":2,"41":2,"42":6,"43":1,"44":24,"45":96,"46":24,"47":1,"48":95,"49":1,"50":7,"51":44,"52":44,"53":5,"54":5,"55":7,"56":6,"57":6,"58":7,"59":1,"60":1,"61":1,"62":7,"63":7,"64":1,"65":51,"66":19,"67":32,"68":32,"69":32,"70":32,"71":32,"72":32,"73":32,"74":135,"75":135,"76":110,"77":135,"78":32,"79":32,"80":681,"81":681,"82":681,"83":681,"84":26,"85":26,"86":655,"87":109,"88":109,"89":109,"90":32,"91":32,"92":1,"93":29,"94":29,"95":28,"96":15,"97":13,"98":13,"99":27,"100":27,"101":27,"102":29,"103":29,"104":138,"105":138,"106":138,"107":138,"108":3,"109":26},"f":{"0":12,"1":7,"2":7,"3":9,"4":5,"5":10,"6":15,"7":24,"8":96,"9":7,"10":44,"11":6,"12":1,"13":51,"14":135,"15":29,"16":29,"17":28,"18":27,"19":27,"20":27},"b":{"0":[7,6],"1":[6,1],"2":[10,6],"3":[10,3],"4":[1,2],"5":[1,1],"6":[2,1],"7":[2,13],"8":[1,12],"9":[12,8],"10":[4,8],"11":[2,6],"12":[24,72],"13":[1,23],"14":[24,7],"15":[1,1],"16":[95,52,33],"17":[5,39],"18":[44,24,24],"19":[19,32],"20":[51,33],"21":[110,25],"22":[26,655],"23":[109,546],"24":[655,655,114],"25":[26,6],"26":[15,13],"27":[13,13,12,12],"28":[138,2],"29":[3,135]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d22d23691c237e2921cf2f9844f0277cf353f6b1","contentHash":"c5e8195a8f8de33244fded791ad90f6d396f7476d989591cf77c8bc32be4ddcd"}} \ No newline at end of file diff --git a/packages/pg-pass/.nyc_output/processinfo/4a578060-c3d8-43f8-83f9-3a80ee8b79c2.json b/packages/pg-pass/.nyc_output/processinfo/4a578060-c3d8-43f8-83f9-3a80ee8b79c2.json new file mode 100644 index 00000000..12334eba --- /dev/null +++ b/packages/pg-pass/.nyc_output/processinfo/4a578060-c3d8-43f8-83f9-3a80ee8b79c2.json @@ -0,0 +1 @@ +{"parent":null,"pid":54647,"argv":["/Users/brian.carlson/.volta/tools/image/node/22.14.0/bin/node","/Users/brian.carlson/.volta/tools/image/yarn/1.22.22/bin/yarn.js","run","_test"],"execArgv":[],"cwd":"/Users/brian.carlson/src/node-postgres/packages/pg-pass","time":1745947035694,"ppid":54646,"coverageFilename":"/Users/brian.carlson/src/node-postgres/packages/pg-pass/.nyc_output/4a578060-c3d8-43f8-83f9-3a80ee8b79c2.json","externalId":"","uuid":"4a578060-c3d8-43f8-83f9-3a80ee8b79c2","files":[]} \ No newline at end of file diff --git a/packages/pg-pass/.nyc_output/processinfo/5139fd5f-dbfc-44bb-ae8a-17e6962e23cd.json b/packages/pg-pass/.nyc_output/processinfo/5139fd5f-dbfc-44bb-ae8a-17e6962e23cd.json new file mode 100644 index 00000000..c728b9a6 --- /dev/null +++ b/packages/pg-pass/.nyc_output/processinfo/5139fd5f-dbfc-44bb-ae8a-17e6962e23cd.json @@ -0,0 +1 @@ +{"parent":"4a578060-c3d8-43f8-83f9-3a80ee8b79c2","pid":54648,"argv":["/Users/brian.carlson/.volta/tools/image/node/22.14.0/bin/node","/Users/brian.carlson/src/node-postgres/packages/pg-pass/node_modules/.bin/mocha","--recursive","-R","list"],"execArgv":[],"cwd":"/Users/brian.carlson/src/node-postgres/packages/pg-pass","time":1745947036080,"ppid":54647,"coverageFilename":"/Users/brian.carlson/src/node-postgres/packages/pg-pass/.nyc_output/5139fd5f-dbfc-44bb-ae8a-17e6962e23cd.json","externalId":"","uuid":"5139fd5f-dbfc-44bb-ae8a-17e6962e23cd","files":["/Users/brian.carlson/src/node-postgres/packages/pg-pass/lib/index.js","/Users/brian.carlson/src/node-postgres/packages/pg-pass/lib/helper.js"]} \ No newline at end of file diff --git a/packages/pg-pass/.nyc_output/processinfo/index.json b/packages/pg-pass/.nyc_output/processinfo/index.json new file mode 100644 index 00000000..7335c484 --- /dev/null +++ b/packages/pg-pass/.nyc_output/processinfo/index.json @@ -0,0 +1 @@ +{"processes":{"4a578060-c3d8-43f8-83f9-3a80ee8b79c2":{"parent":null,"children":["5139fd5f-dbfc-44bb-ae8a-17e6962e23cd"]},"5139fd5f-dbfc-44bb-ae8a-17e6962e23cd":{"parent":"4a578060-c3d8-43f8-83f9-3a80ee8b79c2","children":[]}},"files":{"/Users/brian.carlson/src/node-postgres/packages/pg-pass/lib/index.js":["5139fd5f-dbfc-44bb-ae8a-17e6962e23cd"],"/Users/brian.carlson/src/node-postgres/packages/pg-pass/lib/helper.js":["5139fd5f-dbfc-44bb-ae8a-17e6962e23cd"]},"externalIds":{}} \ No newline at end of file diff --git a/packages/pg-pass/README.md b/packages/pg-pass/README.md new file mode 100644 index 00000000..bbc51939 --- /dev/null +++ b/packages/pg-pass/README.md @@ -0,0 +1,74 @@ +# pgpass + +[![Build Status](https://github.com/hoegaarden/pgpass/workflows/CI/badge.svg?branch=master)](https://github.com/hoegaarden/pgpass/actions?query=workflow%3ACI+branch%3Amaster) + +## Install + +```sh +npm install pgpass +``` + +## Usage +```js +var pgPass = require('pgpass'); + +var connInfo = { + 'host' : 'pgserver' , + 'user' : 'the_user_name' , +}; + +pgPass(connInfo, function(pass){ + conn_info.password = pass; + // connect to postgresql server +}); +``` + +## Description + +This module tries to read the `~/.pgpass` file (or the equivalent for windows systems). If the environment variable `PGPASSFILE` is set, this file is used instead. If everything goes right, the password from said file is passed to the callback; if the password cannot be read `undefined` is passed to the callback. + +Cases where `undefined` is returned: + +- the environment variable `PGPASSWORD` is set +- the file cannot be read (wrong permissions, no such file, ...) +- for non windows systems: the file is write-/readable by the group or by other users +- there is no matching line for the given connection info + +There should be no need to use this module directly; it is already included in `node-postgres`. + +## Configuration + +The module reads the environment variable `PGPASS_NO_DEESCAPE` to decide if the the read tokens from the password file should be de-escaped or not. Default is to do de-escaping. For further information on this see [this commit](https://github.com/postgres/postgres/commit/8d15e3ec4fcb735875a8a70a09ec0c62153c3329). + + +## Tests + +There are tests in `./test/`; including linting and coverage testing. Running `npm test` runs: + +- `jshint` +- `mocha` tests +- `jscoverage` and `mocha -R html-cov` + +You can see the coverage report in `coverage.html`. + + +## Development, Patches, Bugs, ... + +If you find Bugs or have improvements, please feel free to open a issue on GitHub. If you provide a pull request, I'm more than happy to merge them, just make sure to add tests for your changes. + +## Links + +- https://github.com/hoegaarden/node-pgpass +- http://www.postgresql.org/docs/current/static/libpq-pgpass.html +- https://wiki.postgresql.org/wiki/Pgpass +- https://github.com/postgres/postgres/blob/master/src/interfaces/libpq/fe-connect.c + +## License + +Copyright (c) 2013-2016 Hannes Hörl + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/packages/pg-pass/coverage/base.css b/packages/pg-pass/coverage/base.css new file mode 100644 index 00000000..f418035b --- /dev/null +++ b/packages/pg-pass/coverage/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/packages/pg-pass/coverage/block-navigation.js b/packages/pg-pass/coverage/block-navigation.js new file mode 100644 index 00000000..cc121302 --- /dev/null +++ b/packages/pg-pass/coverage/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/packages/pg-pass/coverage/favicon.png b/packages/pg-pass/coverage/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..c1525b811a167671e9de1fa78aab9f5c0b61cef7 GIT binary patch literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> + + + + Code coverage report for helper.js + + + + + + + + + +
+
+

All files helper.js

+
+ +
+ 100% + Statements + 110/110 +
+ + +
+ 100% + Branches + 65/65 +
+ + +
+ 100% + Functions + 21/21 +
+ + +
+ 100% + Lines + 108/108 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +1x +1x +1x +1x +1x +  +1x +  +1x +1x +1x +1x +1x +  +12x +  +  +1x +1x +1x +  +  +7x +  +7x +6x +6x +  +  +  +1x +  +7x +  +  +9x +  +  +  +1x +5x +5x +5x +  +  +1x +10x +  +10x +  +10x +  +  +1x +15x +2x +  +  +13x +1x +  +  +12x +  +12x +4x +4x +  +  +8x +  +2x +2x +  +  +6x +  +  +1x +24x +96x +  +24x +1x +  +  +95x +  +  +  +1x +  +7x +  +  +44x +44x +5x +5x +  +  +  +7x +6x +6x +  +  +7x +1x +1x +1x +  +  +7x +7x +  +  +1x +51x +19x +  +  +32x +32x +32x +32x +32x +32x +32x +135x +  +135x +110x +  +  +135x +  +  +32x +681x +681x +  +681x +  +681x +26x +26x +  +  +655x +109x +  +109x +109x +  +  +  +32x +  +32x +  +  +1x +29x +  +  +29x +  +  +  +28x +15x +  +13x +13x +  +  +  +27x +  +  +  +27x +  +  +  +27x +  +  +  +29x +138x +138x +  +138x +138x +3x +  +  +  +26x +  + 
'use strict'
+ 
+const path = require('path'),
+  Stream = require('stream').Stream,
+  split = require('split2'),
+  util = require('util'),
+  defaultPort = 5432
+ 
+let warnStream = process.stderr
+ 
+let isWin = process.platform === 'win32'
+const S_IRWXG = 56, //    00070(8)
+  S_IRWXO = 7, //    00007(8)
+  S_IFMT = 61440, // 00170000(8)
+  S_IFREG = 32768 //  0100000(8)
+function isRegFile(mode) {
+  return (mode & S_IFMT) == S_IFREG
+}
+ 
+const fieldNames = ['host', 'port', 'database', 'user', 'password']
+const nrOfFields = fieldNames.length
+const passKey = fieldNames[nrOfFields - 1]
+ 
+function warn() {
+  const isWritable = warnStream instanceof Stream && true === warnStream.writable
+ 
+  if (isWritable) {
+    const args = Array.prototype.slice.call(arguments).concat('\n')
+    warnStream.write(util.format.apply(util, args))
+  }
+}
+ 
+Object.defineProperty(module.exports, 'isWin', {
+  get: function () {
+    return isWin
+  },
+  set: function (val) {
+    isWin = val
+  },
+})
+ 
+module.exports.warnTo = function (stream) {
+  const old = warnStream
+  warnStream = stream
+  return old
+}
+ 
+module.exports.getFileName = function (rawEnv) {
+  const env = rawEnv || process.env
+  const file =
+    env.PGPASSFILE ||
+    (isWin ? path.join(env.APPDATA || './', 'postgresql', 'pgpass.conf') : path.join(env.HOME || './', '.pgpass'))
+  return file
+}
+ 
+module.exports.usePgPass = function (stats, fname) {
+  if (Object.prototype.hasOwnProperty.call(process.env, 'PGPASSWORD')) {
+    return false
+  }
+ 
+  if (isWin) {
+    return true
+  }
+ 
+  fname = fname || '<unkn>'
+ 
+  if (!isRegFile(stats.mode)) {
+    warn('WARNING: password file "%s" is not a plain file', fname)
+    return false
+  }
+ 
+  if (stats.mode & (S_IRWXG | S_IRWXO)) {
+    /* If password file is insecure, alert the user and ignore it. */
+    warn('WARNING: password file "%s" has group or world access; permissions should be u=rw (0600) or less', fname)
+    return false
+  }
+ 
+  return true
+}
+ 
+const matcher = (module.exports.match = function (connInfo, entry) {
+  return fieldNames.slice(0, -1).reduce(function (prev, field, idx) {
+    if (idx == 1) {
+      // the port
+      if (Number(connInfo[field] || defaultPort) === Number(entry[field])) {
+        return prev && true
+      }
+    }
+    return prev && (entry[field] === '*' || entry[field] === connInfo[field])
+  }, true)
+})
+ 
+module.exports.getPassword = function (connInfo, stream, cb) {
+  let pass
+  const lineStream = stream.pipe(split())
+ 
+  function onLine(line) {
+    const entry = parseLine(line)
+    if (entry && isValidEntry(entry) && matcher(connInfo, entry)) {
+      pass = entry[passKey]
+      lineStream.end() // -> calls onEnd(), but pass is set now
+    }
+  }
+ 
+  const onEnd = function () {
+    stream.destroy()
+    cb(pass)
+  }
+ 
+  const onErr = function (err) {
+    stream.destroy()
+    warn('WARNING: error on reading file: %s', err)
+    cb(undefined)
+  }
+ 
+  stream.on('error', onErr)
+  lineStream.on('data', onLine).on('end', onEnd).on('error', onErr)
+}
+ 
+const parseLine = (module.exports.parseLine = function (line) {
+  if (line.length < 11 || line.match(/^\s+#/)) {
+    return null
+  }
+ 
+  let curChar = ''
+  let prevChar = ''
+  let fieldIdx = 0
+  let startIdx = 0
+  let obj = {}
+  let isLastField = false
+  const addToObj = function (idx, i0, i1) {
+    let field = line.substring(i0, i1)
+ 
+    if (!Object.hasOwnProperty.call(process.env, 'PGPASS_NO_DEESCAPE')) {
+      field = field.replace(/\\([:\\])/g, '$1')
+    }
+ 
+    obj[fieldNames[idx]] = field
+  }
+ 
+  for (let i = 0; i < line.length - 1; i += 1) {
+    curChar = line.charAt(i + 1)
+    prevChar = line.charAt(i)
+ 
+    isLastField = fieldIdx == nrOfFields - 1
+ 
+    if (isLastField) {
+      addToObj(fieldIdx, startIdx)
+      break
+    }
+ 
+    if (i >= 0 && curChar == ':' && prevChar !== '\\') {
+      addToObj(fieldIdx, startIdx, i + 1)
+ 
+      startIdx = i + 2
+      fieldIdx += 1
+    }
+  }
+ 
+  obj = Object.keys(obj).length === nrOfFields ? obj : null
+ 
+  return obj
+})
+ 
+const isValidEntry = (module.exports.isValidEntry = function (entry) {
+  const rules = {
+    // host
+    0: function (x) {
+      return x.length > 0
+    },
+    // port
+    1: function (x) {
+      if (x === '*') {
+        return true
+      }
+      x = Number(x)
+      return isFinite(x) && x > 0 && x < 9007199254740992 && Math.floor(x) === x
+    },
+    // database
+    2: function (x) {
+      return x.length > 0
+    },
+    // username
+    3: function (x) {
+      return x.length > 0
+    },
+    // password
+    4: function (x) {
+      return x.length > 0
+    },
+  }
+ 
+  for (let idx = 0; idx < fieldNames.length; idx += 1) {
+    const rule = rules[idx]
+    const value = entry[fieldNames[idx]] || ''
+ 
+    const res = rule(value)
+    if (!res) {
+      return false
+    }
+  }
+ 
+  return true
+})
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/pg-pass/coverage/index.html b/packages/pg-pass/coverage/index.html new file mode 100644 index 00000000..c37ab889 --- /dev/null +++ b/packages/pg-pass/coverage/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 100% + Statements + 120/120 +
+ + +
+ 100% + Branches + 69/69 +
+ + +
+ 100% + Functions + 23/23 +
+ + +
+ 100% + Lines + 118/118 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
helper.js +
+
100%110/110100%65/65100%21/21100%108/108
index.js +
+
100%10/10100%4/4100%2/2100%10/10
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/pg-pass/coverage/index.js.html b/packages/pg-pass/coverage/index.js.html new file mode 100644 index 00000000..a5951a94 --- /dev/null +++ b/packages/pg-pass/coverage/index.js.html @@ -0,0 +1,142 @@ + + + + + + Code coverage report for index.js + + + + + + + + + +
+
+

All files index.js

+
+ +
+ 100% + Statements + 10/10 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 10/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20  +  +1x +1x +1x +6x +  +6x +6x +2x +  +  +4x +  +4x +  +  +  +1x + 
'use strict'
+ 
+const fs = require('fs'),
+  helper = require('./helper.js')
+module.exports = function (connInfo, cb) {
+  const file = helper.getFileName()
+ 
+  fs.stat(file, function (err, stat) {
+    if (err || !helper.usePgPass(stat, file)) {
+      return cb(undefined)
+    }
+ 
+    const st = fs.createReadStream(file)
+ 
+    helper.getPassword(connInfo, st, cb)
+  })
+}
+ 
+module.exports.warnTo = helper.warnTo
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/packages/pg-pass/coverage/prettify.css b/packages/pg-pass/coverage/prettify.css new file mode 100644 index 00000000..b317a7cd --- /dev/null +++ b/packages/pg-pass/coverage/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/packages/pg-pass/coverage/prettify.js b/packages/pg-pass/coverage/prettify.js new file mode 100644 index 00000000..b3225238 --- /dev/null +++ b/packages/pg-pass/coverage/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",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/packages/pg-pass/coverage/sort-arrow-sprite.png b/packages/pg-pass/coverage/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed68316eb3f65dec9063332d2f69bf3093bbfab GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc literal 0 HcmV?d00001 diff --git a/packages/pg-pass/coverage/sorter.js b/packages/pg-pass/coverage/sorter.js new file mode 100644 index 00000000..2bb296a8 --- /dev/null +++ b/packages/pg-pass/coverage/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/packages/pg-pass/lib/helper.js b/packages/pg-pass/lib/helper.js new file mode 100644 index 00000000..fd6d3fde --- /dev/null +++ b/packages/pg-pass/lib/helper.js @@ -0,0 +1,204 @@ +'use strict' + +const path = require('path'), + Stream = require('stream').Stream, + split = require('split2'), + util = require('util'), + defaultPort = 5432 + +let warnStream = process.stderr + +let isWin = process.platform === 'win32' +const S_IRWXG = 56, // 00070(8) + S_IRWXO = 7, // 00007(8) + S_IFMT = 61440, // 00170000(8) + S_IFREG = 32768 // 0100000(8) +function isRegFile(mode) { + return (mode & S_IFMT) == S_IFREG +} + +const fieldNames = ['host', 'port', 'database', 'user', 'password'] +const nrOfFields = fieldNames.length +const passKey = fieldNames[nrOfFields - 1] + +function warn() { + const isWritable = warnStream instanceof Stream && true === warnStream.writable + + if (isWritable) { + const args = Array.prototype.slice.call(arguments).concat('\n') + warnStream.write(util.format.apply(util, args)) + } +} + +Object.defineProperty(module.exports, 'isWin', { + get: function () { + return isWin + }, + set: function (val) { + isWin = val + }, +}) + +module.exports.warnTo = function (stream) { + const old = warnStream + warnStream = stream + return old +} + +module.exports.getFileName = function (rawEnv) { + const env = rawEnv || process.env + const file = + env.PGPASSFILE || + (isWin ? path.join(env.APPDATA || './', 'postgresql', 'pgpass.conf') : path.join(env.HOME || './', '.pgpass')) + return file +} + +module.exports.usePgPass = function (stats, fname) { + if (Object.prototype.hasOwnProperty.call(process.env, 'PGPASSWORD')) { + return false + } + + if (isWin) { + return true + } + + fname = fname || '' + + if (!isRegFile(stats.mode)) { + warn('WARNING: password file "%s" is not a plain file', fname) + return false + } + + if (stats.mode & (S_IRWXG | S_IRWXO)) { + /* If password file is insecure, alert the user and ignore it. */ + warn('WARNING: password file "%s" has group or world access; permissions should be u=rw (0600) or less', fname) + return false + } + + return true +} + +const matcher = (module.exports.match = function (connInfo, entry) { + return fieldNames.slice(0, -1).reduce(function (prev, field, idx) { + if (idx == 1) { + // the port + if (Number(connInfo[field] || defaultPort) === Number(entry[field])) { + return prev && true + } + } + return prev && (entry[field] === '*' || entry[field] === connInfo[field]) + }, true) +}) + +module.exports.getPassword = function (connInfo, stream, cb) { + let pass + const lineStream = stream.pipe(split()) + + function onLine(line) { + const entry = parseLine(line) + if (entry && isValidEntry(entry) && matcher(connInfo, entry)) { + pass = entry[passKey] + lineStream.end() // -> calls onEnd(), but pass is set now + } + } + + const onEnd = function () { + stream.destroy() + cb(pass) + } + + const onErr = function (err) { + stream.destroy() + warn('WARNING: error on reading file: %s', err) + cb(undefined) + } + + stream.on('error', onErr) + lineStream.on('data', onLine).on('end', onEnd).on('error', onErr) +} + +const parseLine = (module.exports.parseLine = function (line) { + if (line.length < 11 || line.match(/^\s+#/)) { + return null + } + + let curChar = '' + let prevChar = '' + let fieldIdx = 0 + let startIdx = 0 + let obj = {} + let isLastField = false + const addToObj = function (idx, i0, i1) { + let field = line.substring(i0, i1) + + if (!Object.hasOwnProperty.call(process.env, 'PGPASS_NO_DEESCAPE')) { + field = field.replace(/\\([:\\])/g, '$1') + } + + obj[fieldNames[idx]] = field + } + + for (let i = 0; i < line.length - 1; i += 1) { + curChar = line.charAt(i + 1) + prevChar = line.charAt(i) + + isLastField = fieldIdx == nrOfFields - 1 + + if (isLastField) { + addToObj(fieldIdx, startIdx) + break + } + + if (i >= 0 && curChar == ':' && prevChar !== '\\') { + addToObj(fieldIdx, startIdx, i + 1) + + startIdx = i + 2 + fieldIdx += 1 + } + } + + obj = Object.keys(obj).length === nrOfFields ? obj : null + + return obj +}) + +const isValidEntry = (module.exports.isValidEntry = function (entry) { + const rules = { + // host + 0: function (x) { + return x.length > 0 + }, + // port + 1: function (x) { + if (x === '*') { + return true + } + x = Number(x) + return isFinite(x) && x > 0 && x < 9007199254740992 && Math.floor(x) === x + }, + // database + 2: function (x) { + return x.length > 0 + }, + // username + 3: function (x) { + return x.length > 0 + }, + // password + 4: function (x) { + return x.length > 0 + }, + } + + for (let idx = 0; idx < fieldNames.length; idx += 1) { + const rule = rules[idx] + const value = entry[fieldNames[idx]] || '' + + const res = rule(value) + if (!res) { + return false + } + } + + return true +}) diff --git a/packages/pg-pass/lib/index.js b/packages/pg-pass/lib/index.js new file mode 100644 index 00000000..576156ef --- /dev/null +++ b/packages/pg-pass/lib/index.js @@ -0,0 +1,19 @@ +'use strict' + +const fs = require('fs'), + helper = require('./helper.js') +module.exports = function (connInfo, cb) { + const file = helper.getFileName() + + fs.stat(file, function (err, stat) { + if (err || !helper.usePgPass(stat, file)) { + return cb(undefined) + } + + const st = fs.createReadStream(file) + + helper.getPassword(connInfo, st, cb) + }) +} + +module.exports.warnTo = helper.warnTo diff --git a/packages/pg-pass/package.json b/packages/pg-pass/package.json new file mode 100644 index 00000000..a74e5151 --- /dev/null +++ b/packages/pg-pass/package.json @@ -0,0 +1,38 @@ +{ + "name": "pg-pass", + "version": "1.0.5", + "description": "Module for reading .pgpass", + "main": "lib/index", + "scripts": { + "pretest": "chmod 600 ./test/_pgpass", + "_test": "mocha --recursive -R list", + "_covered_test": "nyc --reporter html --reporter text \"$npm_execpath\" run _test", + "test": "\"$npm_execpath\" run _covered_test" + }, + "author": "Hannes Hörl ", + "license": "MIT", + "dependencies": { + "split2": "4.1.0" + }, + "devDependencies": { + "jshint": "2.12.0", + "mocha": "8.2.0", + "nyc": "15.1.0", + "pg-escape": "0.2.0", + "resumer": "0.0.0", + "tmp": "0.2.1", + "which": "2.0.2" + }, + "keywords": [ + "postgres", + "pg", + "pgpass", + "password", + "postgresql" + ], + "bugs": "https://github.com/hoegaarden/pgpass/issues", + "repository": { + "type": "git", + "url": "https://github.com/hoegaarden/pgpass.git" + } +} diff --git a/packages/pg-pass/test/#1 de-escaping.js b/packages/pg-pass/test/#1 de-escaping.js new file mode 100644 index 00000000..c85e30a4 --- /dev/null +++ b/packages/pg-pass/test/#1 de-escaping.js @@ -0,0 +1,28 @@ +const assert = require('assert'), + path = require('path'), + pgPass = require(path.join('..', 'lib', 'index')) +const conn = { + host: 'host5', + database: 'database5', + user: 'dummy\\:user', +} + +describe('#1', function () { + before(function () { + process.env.PGPASS_NO_DEESCAPE = true + process.env.PGPASSFILE = path.join(__dirname, '_pgpass') + }) + after(function () { + delete process.env.PGPASS_NO_DEESCAPE + delete process.env.PGPASSFILE + }) + + it('should not de-escape NODE_PG_NO_DESCAPE is set', function (done) { + process.env.PGPASSFILE = path.join(__dirname, '_pgpass') + + pgPass(conn, function (res) { + assert.strictEqual('some:password', res) + done() + }) + }) +}) diff --git a/packages/pg-pass/test/#1 escaping.js b/packages/pg-pass/test/#1 escaping.js new file mode 100644 index 00000000..00d5bcbd --- /dev/null +++ b/packages/pg-pass/test/#1 escaping.js @@ -0,0 +1,19 @@ +const assert = require('assert'), + path = require('path'), + pgPass = require(path.join('..', 'lib', 'index')) +const conn = { + host: 'host4', + port: 100, + database: 'database4', + user: 'user4', +} + +describe('#1', function () { + it('should handle escaping right', function (done) { + process.env.PGPASSFILE = path.join(__dirname, '_pgpass') + pgPass(conn, function (res) { + assert.strictEqual('some:wired:password', res) + done() + }) + }) +}) diff --git a/packages/pg-pass/test/#17 unset env.js b/packages/pg-pass/test/#17 unset env.js new file mode 100644 index 00000000..f7e998e2 --- /dev/null +++ b/packages/pg-pass/test/#17 unset env.js @@ -0,0 +1,34 @@ +const assert = require('assert'), + path = require('path'), + helper = require(path.join('..', 'lib', 'helper')) +describe('#17 when env is empty', function () { + const fakeEnv = {} + + describe('getting the pgpass filename', function () { + const checkFileName = function (expected) { + assert.doesNotThrow(function () { + const actual = helper.getFileName(fakeEnv) + assert.equal(actual, expected) + }) + } + + describe('on unix-ish envs', function () { + it('should not fail', function () { + checkFileName('.pgpass') + }) + }) + + describe('on windows', function () { + before(function () { + helper.isWin = true + }) + after(function () { + helper.isWin = process.platform === 'win32' + }) + + it('should not fail', function () { + checkFileName(path.join('postgresql', 'pgpass.conf')) + }) + }) + }) +}) diff --git a/packages/pg-pass/test/#6 too many open files.js b/packages/pg-pass/test/#6 too many open files.js new file mode 100644 index 00000000..8660d54e --- /dev/null +++ b/packages/pg-pass/test/#6 too many open files.js @@ -0,0 +1,55 @@ +const assert = require('assert'), + path = require('path'), + pgPass = require(path.join('..', 'lib', 'index')), + spawn = require('child_process').spawn, + os = require('os') +const conn = { + host: 'host4', + port: 100, + database: 'database4', + user: 'user4', +} + +let lsofBin +try { + lsofBin = require('which').sync('lsof') +} catch (e) { + if (process.env.SKIP_LSOF) { + console.warn('WARNING: lsof not found, skipping test', __filename) + } else { + console.error('ERROR: lsof not found') + process.exit(1) + } +} + +if (lsofBin) { + describe('#6', function () { + it('should close stream', function (done) { + const passFile = path.join(__dirname, '_pgpass') + process.env.PGPASSFILE = passFile + + pgPass(conn, function (pass) { + let out = '' + let err = '' + const lsofArgs = ['-w', '-Fn', '-p', process.pid] + const lsof = spawn(lsofBin, lsofArgs) + + lsof.stdout.on('data', function (d) { + out = out.concat(d.toString()) + }) + lsof.stderr.on('data', function (d) { + err = err.concat(d.toString()) + }) + lsof.on('exit', function (code) { + const res = out.split(os.EOL).filter(function (el) { + return el == 'n'.concat(passFile) + }) + assert.equal(res.length, 0, 'open files found') + assert.equal(err, '', 'printed errors') + assert.equal(code, 0, 'exited with errors') + done() + }) + }) + }) + }) +} // if lsofBin diff --git a/packages/pg-pass/test/_pgpass b/packages/pg-pass/test/_pgpass new file mode 100644 index 00000000..07176056 --- /dev/null +++ b/packages/pg-pass/test/_pgpass @@ -0,0 +1,10 @@ +# comments?? +host1:1:database1:user1:pass1 +*:*:*:user2:pass2 +host3:3:database3:user3:pass3 + +host4:*:database4:user4:some\:wired\:password + +host5:*:database5:dummy\:user:some:password + + diff --git a/packages/pg-pass/test/helper.js b/packages/pg-pass/test/helper.js new file mode 100644 index 00000000..abe8486b --- /dev/null +++ b/packages/pg-pass/test/helper.js @@ -0,0 +1,256 @@ +const assert = require('assert'), + path = require('path'), + helper = require(path.join('..', 'lib', 'helper')), + util = require('util'), + Stream = require('resumer') +describe('#warnTo()', function () { + it('should be process.stderr by default', function () { + const stdErr = process.stderr + const org = helper.warnTo(stdErr) + assert(org === stdErr) + }) + + it('should not cause problems to give a non-stream', function () { + const orgStream = helper.warnTo(null) + assert(false === helper.usePgPass({ mode: 6 })) + helper.warnTo(orgStream) + }) + + it('should write warnings to our writable stream', function (done) { + const stream = new Stream() + + const orgStream = helper.warnTo(stream) + const orgIsWin = helper.isWin + helper.isWin = false + + assert(process.stderr === orgStream) + assert(false === helper.usePgPass({ mode: 6 })) + + stream.on('data', function (d) { + assert(0 === d.indexOf('WARNING: password file "" is not a plain file')) + + helper.orgisWin = orgIsWin + helper.warnTo(orgStream) + stream.end() + + done() + }) + }) +}) + +describe('#getFileName()', function () { + it('should return the default pgpass file', function () { + const env = { + HOME: '/tmp', + APPDATA: 'C:\\tmp', + } + assert.equal( + helper.getFileName(env), + process.platform === 'win32' ? 'C:\\tmp\\postgresql\\pgpass.conf' : '/tmp/.pgpass' + ) + }) + + it('should return the the path to PGPASSFILE if set', function () { + const env = {} + const something = (env.PGPASSFILE = 'xxx') + assert.equal(helper.getFileName(env), something) + }) +}) + +describe('#isWin', function () { + it('should represent the platform and can be changed', function () { + const orgIsWin = helper.isWin + const test = 'something' + const isWin = process.platform === 'win32' + + assert.equal(isWin, helper.isWin) + + helper.isWin = test + assert.equal(test, helper.isWin) + + helper.isWin = orgIsWin + assert.equal(isWin, helper.isWin) + }) +}) + +describe('#usePgPass()', function () { + // http://lxr.free-electrons.com/source/include/uapi/linux/stat.h + const testResults = { + '0100660': false, + '0100606': false, + '0100100': true, + '0100600': true, + '0040600': false, // is a directory + '0060600': false, // is a blockdevice + } + + const org = helper.isWin // pretend we are UNIXish for permission tests + helper.isWin = true + Object.keys(testResults).forEach(function (octPerm) { + const decPerm = Number(parseInt(octPerm, 8)) + const res = testResults[octPerm] + const msg = util.format('should consider permission %s %s', octPerm, res ? 'secure' : 'not secure') + + it(msg, function () { + assert.equal(helper.usePgPass({ mode: decPerm }) === res, true) + }) + }) + helper.isWin = org + + it('should always return false if PGPASSWORD is set', function () { + process.env.PGPASSWORD = 'some' + assert(false === helper.usePgPass()) + delete process.env.PGPASSWORD + }) + + it('should always return true on windows', function () { + const org = helper.isWin + helper.isWin = true + assert(helper.usePgPass()) + helper.isWin = org + }) +}) + +describe('#parseLine()', function () { + it('should parse a simple line', function () { + const res = helper.parseLine('host:port:dbase:user:pass') + + assert.deepEqual(res, { + host: 'host', + port: 'port', + database: 'dbase', + user: 'user', + password: 'pass', + }) + }) + + it('should handle comments', function () { + const res = helper.parseLine(' # some random comment') + assert.equal(res, null) + }) + + it("should handle escaped ':' and '\\' right", function () { + /* jshint -W044 */ + const res = helper.parseLine('some\\:host:port:some\\\\database:some;user:somepass') + /* jshint +W044 */ + assert.deepEqual(res, { + host: 'some:host', + port: 'port', + database: 'some\\database', + /* jshint -W044 */ + user: 'some;user', + /* jshint +W044 */ + password: 'somepass', + }) + }) + + it('should ignore too short lines', function () { + const tests = ['::::', 'host:port', 'host:port:database', 'host:port:database:'] + + tests.forEach(function (line) { + const res = helper.parseLine(line) + assert.equal(null, res) + }) + }) +}) + +describe('#isValidEntry()', function () { + it("shouldn't report valid entries", function () { + assert( + helper.isValidEntry({ + host: 'some:host', + port: 100, + database: 'some\\database', + /* jshint -W044 */ + user: 'some;user', + /* jshint +W044 */ + password: 'somepass', + }) + ) + assert( + helper.isValidEntry({ + host: '*', + port: '*', + database: '*', + user: '*', + password: 'somepass', + }) + ) + }) + + it('should find invalid entries', function () { + assert( + !helper.isValidEntry({ + host: '', + }) + ) + assert( + !helper.isValidEntry({ + host: 'host', + port: '100', + database: 'database', + user: 'user', + }) + ) + assert( + !helper.isValidEntry({ + host: 'host', + port: -100, + database: 'database', + user: 'user', + password: '232323', + }) + ) + }) +}) + +describe('#getPassword()', function () { + const creds = 'host1:100:database1:user1:thepassword1' + '\n' + '*:*:database2:*:thepassword2' + '\n' + const conn1 = { + host: 'host1', + port: 100, + database: 'database1', + user: 'user1', + } + const conn3 = { + host: 'host3', + database: 'database3', + user: 'user3', + } + + it('should not get password for non-matching conn_info', function (done) { + const st = new Stream() + + helper.getPassword(conn3, st, function (pass) { + assert.deepEqual(pass, undefined) + done() + }) + + st.write(creds) + st.end() + }) + + it('should get password for matching conn_info', function (done) { + const st = new Stream() + + helper.getPassword(conn1, st, function (pass) { + assert.notDeepEqual(pass, undefined) + done() + }) + + st.write(creds) + st.end() + }) + + it('should ignore no password on any error', function (done) { + const st = new Stream() + + helper.getPassword({}, st, function (pass) { + assert.deepEqual(pass, undefined) + done() + }) + + st.emit('error', new Error('just some error')) + st.end() + }) +}) diff --git a/packages/pg-pass/test/index.js b/packages/pg-pass/test/index.js new file mode 100644 index 00000000..4cdf341a --- /dev/null +++ b/packages/pg-pass/test/index.js @@ -0,0 +1,37 @@ +const assert = require('assert'), + path = require('path'), + pgPass = require(path.join('..', 'lib', 'index')) +const conn = { + host: 'host1', + port: 100, + database: 'somedb', + user: 'user2', +} + +describe('MAIN', function () { + it('should ignore non existent file', function (done) { + process.env.PGPASSFILE = path.join(__dirname, '_no_such_file_') + pgPass(conn, function (res) { + assert(undefined === res) + done() + }) + }) + + it('should read .pgpass', function (done) { + process.env.PGPASSFILE = path.join(__dirname, '_pgpass') + pgPass(conn, function (res) { + assert.strictEqual('pass2', res) + done() + }) + }) + + it('should not read .pgpass because of PGPASSWORD', function (done) { + process.env.PGPASSFILE = path.join(__dirname, '_pgpass') + process.env.PGPASSWORD = 'something' + pgPass(conn, function (res) { + assert(undefined === res) + delete process.env.PGPASSWORD + done() + }) + }) +}) diff --git a/packages/pg-pass/test/integration/#1 escaping.js b/packages/pg-pass/test/integration/#1 escaping.js new file mode 100644 index 00000000..8d41a71f --- /dev/null +++ b/packages/pg-pass/test/integration/#1 escaping.js @@ -0,0 +1,170 @@ +const RND = Math.random() +const USER = 'pgpass-test-some:user:'.concat(RND) +const PASS = 'pgpass-test-some:pass:'.concat(RND) +const POSTGRES_USER = process.env.POSTGRES_USER || 'postgres' +const POSTGRES_PASSWORD = process.env.POSTGRES_PASSWORD || 'postgres' +const TEST_QUERY = 'SELECT CURRENT_USER AS me' + +const assert = require('assert') +const spawn = require('child_process').spawn +const fs = require('fs') +const esc = require('pg-escape') +const tmp = require('tmp') + +// cleanup temp file +tmp.setGracefulCleanup() + +/** + * Run connection test with + * - natvie clien + * - JS client + * - psql + */ +if (process.env.RUN_INTEGRATION_TESTS) { + describe('using same password file', function () { + before(pre) + after(delUser) + + const config = { + user: USER, + database: 'postgres', + } + + // load the module after setting up PGPASSFILE + const pg = require('pg') + const pgClient = new pg.Pool(config) + const pgNativeClient = new pg.native.Pool(config) + + it('the JS client can connect', function (done) { + pgClient.connect(checkConnection.bind(null, done)) + }) + + it('the native client can connect', function (done) { + pgNativeClient.connect(checkConnection.bind(null, done)) + }) + + it('the psql client can connect', function (done) { + runPsqlCmd( + TEST_QUERY, + function (err, res) { + checkQueryRes(err, res.replace(/\n$/, '')) + done() + }, + USER + ) + }) + }) +} + +/** + * Did running the query return an error and is the result as expected? + */ +function checkQueryRes(err, res) { + assert.ifError(err) + assert.strictEqual(USER, res) +} + +/** + * Check the connection with node-postgres + */ +function checkConnection(testDone, err, client, pgDone) { + assert.ifError(err) + + client.query(TEST_QUERY, function (err, res) { + checkQueryRes(err, res.rows[0].me) + pgDone() + testDone() + }) +} + +/** + * Run test setup tasks + */ +function pre(cb) { + genUser(function (err) { + if (err) { + delUser(function () { + throw err + }) + } else { + setupPassFile(cb) + } + }) +} + +/** + * Escape ':' and '\' before writing the password file + */ +function pgEsc(str) { + return str.replace(/([:\\])/g, '\\$1') +} + +/** + * Write the temp. password file and setup the env var + */ +function setupPassFile(cb) { + // 384 == 0600 + tmp.file({ mode: 384 }, function (err, path, fd) { + if (err) { + return cb(err) + } + + const str = '*:*:*:__USER__:__PASS__'.replace('__USER__', pgEsc(USER)).replace('__PASS__', pgEsc(PASS)) + const buf = Buffer.from(str) + + fs.write(fd, buf, 0, buf.length, 0, function (err) { + if (err) { + return cb(err) + } + + process.env.PGPASSFILE = path + cb() + }) + }) +} + +/** + * generate a new user with password using psql + */ +function genUser(cb) { + const cmd = esc('CREATE USER %I WITH PASSWORD %L', USER, PASS) + runPsqlCmd(cmd, cb, POSTGRES_USER, POSTGRES_PASSWORD) +} + +/** + * delete the user using psql + */ +function delUser(cb) { + const cmd = esc('DROP USER %I', USER) + runPsqlCmd(cmd, cb, POSTGRES_USER, POSTGRES_PASSWORD) +} + +/** + * run a SQL command with psql + */ +function runPsqlCmd(cmd, cb, user, pass) { + const env = Object.assign({}, process.env) + if (pass) { + env.PGPASSWORD = pass + } + + // the user running the tests needs to be able to connect to + // postgres as user 'postgres' without a password + const psql = spawn('psql', ['-A', '-t', '-h', '127.0.0.1', '-d', 'postgres', '-U', user || 'postgres', '-c', cmd], { + env: env, + }) + + let out = '' + + psql.stdout.on('data', function (data) { + out += data.toString() + }) + + psql.on('exit', function (code) { + cb(code === 0 ? null : code, out) + }) + + psql.stderr.on('data', function (err) { + console.log('ERR:', err.toString()) + }) +} diff --git a/packages/pg/package.json b/packages/pg/package.json index bc3c31ef..d2bb0376 100644 --- a/packages/pg/package.json +++ b/packages/pg/package.json @@ -36,7 +36,7 @@ "pg-pool": "^3.9.6", "pg-protocol": "^1.9.5", "pg-types": "^2.1.0", - "pgpass": "1.x" + "pg-pass": "1.0.5" }, "devDependencies": { "@cloudflare/vitest-pool-workers": "0.8.12", diff --git a/yarn.lock b/yarn.lock index d585bdd8..75e04903 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,14 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== +"@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + "@babel/code-frame@^7.0.0": version "7.10.4" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz" @@ -14,11 +22,108 @@ dependencies: "@babel/highlight" "^7.10.4" +"@babel/code-frame@^7.26.2": + version "7.26.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" + integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/compat-data@^7.26.8": + version "7.26.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" + integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== + +"@babel/core@^7.7.5": + version "7.26.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.10.tgz#5c876f83c8c4dcb233ee4b670c0606f2ac3000f9" + integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.10" + "@babel/helper-compilation-targets" "^7.26.5" + "@babel/helper-module-transforms" "^7.26.0" + "@babel/helpers" "^7.26.10" + "@babel/parser" "^7.26.10" + "@babel/template" "^7.26.9" + "@babel/traverse" "^7.26.10" + "@babel/types" "^7.26.10" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.26.10", "@babel/generator@^7.27.0": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.0.tgz#764382b5392e5b9aff93cadb190d0745866cbc2c" + integrity sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw== + dependencies: + "@babel/parser" "^7.27.0" + "@babel/types" "^7.27.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + +"@babel/helper-compilation-targets@^7.26.5": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz#de0c753b1cd1d9ab55d473c5a5cf7170f0a81880" + integrity sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA== + dependencies: + "@babel/compat-data" "^7.26.8" + "@babel/helper-validator-option" "^7.25.9" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-transforms@^7.26.0": + version "7.26.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" + integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + "@babel/helper-validator-identifier@^7.10.4": version "7.10.4" resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz" integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== + +"@babel/helpers@^7.26.10": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.0.tgz#53d156098defa8243eab0f32fa17589075a1b808" + integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg== + dependencies: + "@babel/template" "^7.27.0" + "@babel/types" "^7.27.0" + "@babel/highlight@^7.10.4": version "7.10.4" resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz" @@ -28,6 +133,43 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/parser@^7.26.10", "@babel/parser@^7.27.0": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.0.tgz#3d7d6ee268e41d2600091cbd4e145ffee85a44ec" + integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg== + dependencies: + "@babel/types" "^7.27.0" + +"@babel/template@^7.26.9", "@babel/template@^7.27.0": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.0.tgz#b253e5406cc1df1c57dcd18f11760c2dbf40c0b4" + integrity sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA== + dependencies: + "@babel/code-frame" "^7.26.2" + "@babel/parser" "^7.27.0" + "@babel/types" "^7.27.0" + +"@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.0.tgz#11d7e644779e166c0442f9a07274d02cd91d4a70" + integrity sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA== + dependencies: + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.27.0" + "@babel/parser" "^7.27.0" + "@babel/template" "^7.27.0" + "@babel/types" "^7.27.0" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.27.0": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.0.tgz#ef9acb6b06c3173f6632d993ecb6d4ae470b4559" + integrity sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@cloudflare/kv-asset-handler@0.3.4": version "0.3.4" resolved "https://registry.yarnpkg.com/@cloudflare/kv-asset-handler/-/kv-asset-handler-0.3.4.tgz#5cc152847c8ae4d280ec5d7f4f6ba8c976b585c3" @@ -788,17 +930,47 @@ wrap-ansi "^8.1.0" wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" -"@jridgewell/resolve-uri@^3.0.3": +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jridgewell/gen-mapping@^0.3.5": + version "0.3.8" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz#4f0e06362e01362f823d348f1872b08f666d8142" + integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA== + dependencies: + "@jridgewell/set-array" "^1.2.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": version "3.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/sourcemap-codec@^1.5.0": +"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== @@ -811,6 +983,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@lerna/add@3.21.0": version "3.21.0" resolved "https://registry.npmjs.org/@lerna/add/-/add-3.21.0.tgz" @@ -1969,6 +2149,11 @@ "@typescript-eslint/types" "7.0.0" eslint-visitor-keys "^3.4.1" +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" @@ -2202,7 +2387,7 @@ any-promise@^1.0.0: resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= -anymatch@~3.1.2: +anymatch@~3.1.1, anymatch@~3.1.2: version "3.1.3" resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== @@ -2210,6 +2395,13 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +append-transform@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" + integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== + dependencies: + default-require-extensions "^3.0.0" + aproba@^1.0.3, aproba@^1.1.1: version "1.2.0" resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" @@ -2220,6 +2412,11 @@ aproba@^2.0.0: resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== + are-we-there-yet@~1.1.2: version "1.1.5" resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz" @@ -2496,6 +2693,16 @@ browser-stdout@1.3.1: resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== +browserslist@^4.24.0: + version "4.24.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" + integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== + dependencies: + caniuse-lite "^1.0.30001688" + electron-to-chromium "^1.5.73" + node-releases "^2.0.19" + update-browserslist-db "^1.1.1" + btoa-lite@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz" @@ -2580,6 +2787,16 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +caching-transform@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" + integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== + dependencies: + hasha "^5.0.0" + make-dir "^3.0.0" + package-hash "^4.0.0" + write-file-atomic "^3.0.0" + call-me-maybe@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz" @@ -2655,6 +2872,11 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== +caniuse-lite@^1.0.30001688: + version "1.0.30001715" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz#bd325a37ad366e3fe90827d74062807a34fbaeb2" + integrity sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw== + caseless@~0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" @@ -2724,6 +2946,21 @@ check-error@^2.1.1: resolved "https://registry.yarnpkg.com/check-error/-/check-error-2.1.1.tgz#87eb876ae71ee388fa0471fe423f494be1d96ccc" integrity sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw== +chokidar@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" + integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.1.2" + chokidar@^3.5.3: version "3.5.3" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" @@ -2791,6 +3028,14 @@ cli-width@^2.0.0: resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz" integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== +cli@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cli/-/cli-1.0.1.tgz#22817534f24bfa4950c34d532d48ecbc621b8c14" + integrity sha512-41U72MB56TfUMGndAKK8vJ78eooOD4Z5NOL4xEfjc0c23s+6EYKXlXsmACBVclLP1yOfWCgEganVzddVrSNoTg== + dependencies: + exit "0.1.2" + glob "^7.1.1" + cliui@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz" @@ -2800,6 +3045,15 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -2896,6 +3150,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + compare-func@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz" @@ -2949,6 +3208,13 @@ config-chain@^1.1.11: ini "^1.3.4" proto-list "~1.2.1" +console-browserify@1.1.x: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" + integrity sha512-duS7VP5pvfsNLDvL1O4VOEbw37AI3A4ZUQYemvDlnpGrNu9tprR7BYWpDYwC0Xia0Zxz5ZupdiIrUp0GH1aXfg== + dependencies: + date-now "^0.1.4" + console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" @@ -3037,6 +3303,16 @@ conventional-recommended-bump@^5.0.0: meow "^4.0.0" q "^1.5.1" +convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + cookie@^0.7.1: version "0.7.2" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" @@ -3105,6 +3381,15 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.2: shebang-command "^2.0.0" which "^2.0.1" +cross-spawn@^7.0.3: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + currently-unhandled@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz" @@ -3136,6 +3421,11 @@ data-uri-to-buffer@^2.0.0: resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-2.0.2.tgz#d296973d5a4897a5dbe31716d118211921f04770" integrity sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA== +date-now@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" + integrity sha512-AsElvov3LoNB7tf5k37H2jYSB+ZZPMT5sG2QjJCcdlV5chIv6htBUBUui2IKRjgtKAKtCBN7Zbwa+MtwLjSeNw== + dateformat@^3.0.0: version "3.0.3" resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz" @@ -3155,6 +3445,13 @@ debug@4, debug@4.3.4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" +debug@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" + integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== + dependencies: + ms "2.1.2" + debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" @@ -3169,7 +3466,7 @@ debug@^3.1.0: dependencies: ms "^2.1.1" -debug@^4.4.0: +debug@^4.1.0, debug@^4.1.1, debug@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== @@ -3226,6 +3523,13 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +default-require-extensions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.1.tgz#bfae00feeaeada68c2ae256c62540f60b80625bd" + integrity sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw== + dependencies: + strip-bom "^4.0.0" + defaults@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz" @@ -3305,16 +3609,16 @@ dezalgo@^1.0.0: asap "^2.0.0" wrappy "1" +diff@4.0.2, diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + diff@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - dir-glob@^2.2.2: version "2.2.2" resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz" @@ -3336,6 +3640,39 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domelementtype@1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" + integrity sha512-q9bUwjfp7Eif8jWxxxPSykdRZAb6GkguBGSgvvCrhI9wB71W2K/Kvv4E61CF/mcCfnVJDeDWx/Vb/uAqbDj6UQ== + dependencies: + domelementtype "1" + +domutils@1.5: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha512-gSu5Oi/I+3wDENBsOWBiRK1eoGxcywYSqg3rR960/+EfY0CF4EX1VPkgHOZ3WiS/Jg2DtliF6BhWcHlfpYUcGw== + dependencies: + dom-serializer "0" + domelementtype "1" + dot-prop@^4.2.0: version "4.2.1" resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz" @@ -3378,6 +3715,11 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +electron-to-chromium@^1.5.73: + version "1.5.144" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.144.tgz#9804fd6c342802e1d4b4fe57babbe8b64ca0b46c" + integrity sha512-eJIaMRKeAzxfBSxtjYnoIAw/tdD6VIH6tHBZepZnAbE3Gyqqs5mGN87DvcldPUbVkIljTK8pY0CMcUljP64lfQ== + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz" @@ -3407,6 +3749,16 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0: dependencies: once "^1.4.0" +entities@1.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" + integrity sha512-LbLqfXgJMmy81t+7c14mnulFHJ170cM6E+0vMXR9k/ZiZwgX8i5pNgjTCX3SO4VeUsFLV+8InixoretwU+MjBQ== + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + env-paths@^2.2.0: version "2.2.0" resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz" @@ -3483,6 +3835,11 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +es6-error@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== + es6-promise@^4.0.3: version "4.2.8" resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" @@ -3590,6 +3947,11 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" @@ -3802,6 +4164,11 @@ exit-hook@2.2.1: resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-2.2.1.tgz#007b2d92c6428eda2b76e7016a34351586934593" integrity sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw== +exit@0.1.2, exit@0.1.x: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" @@ -3984,6 +4351,15 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-cache-dir@^3.2.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + find-up@5.0.0, find-up@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -4014,7 +4390,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.1.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -4054,6 +4430,14 @@ for-in@^1.0.2: resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^3.0.2" + foreground-child@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" @@ -4091,6 +4475,11 @@ from2@^2.1.0: inherits "^2.0.1" readable-stream "^2.0.0" +fromentries@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" + integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== + fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz" @@ -4136,6 +4525,11 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + fsevents@~2.3.2: version "2.3.2" resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" @@ -4175,6 +4569,11 @@ genfun@^5.0.0: resolved "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz" integrity sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA== +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" @@ -4185,6 +4584,11 @@ get-func-name@^2.0.0: resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz" integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-pkg-repo@^1.0.0: version "1.4.0" resolved "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz" @@ -4290,7 +4694,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -4314,6 +4718,18 @@ glob-to-regexp@^0.3.0: resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz" integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= +glob@7.1.6, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: + version "7.1.6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" @@ -4347,18 +4763,23 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: - version "7.1.6" - resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^7.1.6: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.4" + minimatch "^3.1.1" once "^1.3.0" path-is-absolute "^1.0.0" +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + globals@^13.19.0: version "13.24.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" @@ -4402,6 +4823,11 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + handlebars@^4.0.1, handlebars@^4.7.6: version "4.7.7" resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz" @@ -4495,6 +4921,14 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hasha@^5.0.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" + integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== + dependencies: + is-stream "^2.0.0" + type-fest "^0.8.0" + he@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" @@ -4505,6 +4939,22 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz" integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +htmlparser2@3.8.x: + version "3.8.3" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" + integrity sha512-hBxEg3CYXe+rPIua8ETe7tmG3XDn9B0edOE/e9wH2nLczxzgdu0m0aNHY+5wFZiviLWLdANPJTssa92dMcXQ5Q== + dependencies: + domelementtype "1" + domhandler "2.3" + domutils "1.5" + entities "1.0" + readable-stream "1.1" + http-cache-semantics@^3.8.1: version "3.8.1" resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz" @@ -4658,7 +5108,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -4935,6 +5385,11 @@ is-stream@^1.1.0: resolved "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz" @@ -4949,7 +5404,7 @@ is-text-path@^1.0.1: dependencies: text-extensions "^1.0.0" -is-typedarray@~1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -4969,6 +5424,11 @@ is-windows@^1.0.0, is-windows@^1.0.2: resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" @@ -5001,6 +5461,66 @@ isstream@~0.1.2: resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-hook@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" + integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== + dependencies: + append-transform "^2.0.0" + +istanbul-lib-instrument@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-processinfo@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz#366d454cd0dcb7eb6e0e419378e60072c8626169" + integrity sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg== + dependencies: + archy "^1.0.0" + cross-spawn "^7.0.3" + istanbul-lib-coverage "^3.2.0" + p-map "^3.0.0" + rimraf "^3.0.0" + uuid "^8.3.2" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.2: + version "3.1.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + istanbul@^0.4.5: version "0.4.5" resolved "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz" @@ -5035,7 +5555,7 @@ js-tokens@^4.0.0: resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@3.x, js-yaml@^3.13.1: +js-yaml@3.14.0, js-yaml@3.x, js-yaml@^3.13.1: version "3.14.0" resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== @@ -5060,6 +5580,25 @@ jsbn@~0.1.0: resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +jshint@2.12.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/jshint/-/jshint-2.12.0.tgz#52e75bd058d587ef81a0e2f95e5cf18eb5dc5c37" + integrity sha512-TwuuaUDmra0JMkuqvqy+WGo2xGHSNjv1BA1nTIgtH2K5z1jHuAEeAgp7laaR+hLRmajRjcrM71+vByBDanCyYA== + dependencies: + cli "~1.0.0" + console-browserify "1.1.x" + exit "0.1.x" + htmlparser2 "3.8.x" + lodash "~4.17.19" + minimatch "~3.0.2" + shelljs "0.3.x" + strip-json-comments "1.0.x" + json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -5095,6 +5634,11 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" @@ -5278,6 +5822,11 @@ lodash.clonedeep@^4.5.0: resolved "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz" integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= +lodash.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ== + lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz" @@ -5323,7 +5872,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.2.1: +lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.2.1, lodash@~4.17.19: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -5333,6 +5882,13 @@ log-driver@^1.2.7: resolved "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz" integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== +log-symbols@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== + dependencies: + chalk "^4.0.0" + log-symbols@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" @@ -5412,6 +5968,20 @@ make-dir@^2.1.0: pify "^4.0.1" semver "^5.6.0" +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + make-error@^1.1.1: version "1.3.6" resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" @@ -5620,13 +6190,20 @@ miniflare@4.20250405.0: youch "3.3.4" zod "3.22.3" -"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2: +"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" +minimatch@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + minimatch@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" @@ -5655,6 +6232,13 @@ minimatch@^9.0.4: dependencies: brace-expansion "^2.0.1" +minimatch@~3.0.2: + version "3.0.8" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.8.tgz#5e6a59bd11e2ab0de1cfb843eb2d82e546c321c1" + integrity sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q== + dependencies: + brace-expansion "^1.1.7" + minimist-options@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" @@ -5825,6 +6409,37 @@ mocha@10.5.2, mocha@^10.5.2: yargs-parser "20.2.4" yargs-unparser "2.0.0" +mocha@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.2.0.tgz#f8aa79110b4b5a6580c65d4dd8083c425282624e" + integrity sha512-lEWEMq2LMfNJMKeuEwb5UELi+OgFDollXaytR5ggQcHpzG3NP/R7rvixAvF+9/lLsTWhWG+4yD2M70GsM06nxw== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.4.3" + debug "4.2.0" + diff "4.0.2" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.6" + growl "1.10.5" + he "1.2.0" + js-yaml "3.14.0" + log-symbols "4.0.0" + minimatch "3.0.4" + ms "2.1.2" + nanoid "3.1.12" + serialize-javascript "5.0.1" + strip-json-comments "3.1.1" + supports-color "7.2.0" + which "2.0.2" + wide-align "1.1.3" + workerpool "6.0.2" + yargs "13.3.2" + yargs-parser "13.1.2" + yargs-unparser "2.0.0" + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz" @@ -5896,6 +6511,11 @@ nan@2.22.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.22.0.tgz#31bc433fc33213c97bad36404bb68063de604de3" integrity sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw== +nanoid@3.1.12: + version "3.1.12" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654" + integrity sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A== + nanoid@^3.3.8: version "3.3.11" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" @@ -5987,6 +6607,18 @@ node-gyp@^5.0.2: tar "^4.4.12" which "^1.3.1" +node-preload@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" + integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== + dependencies: + process-on-spawn "^1.0.0" + +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== + nopt@3.x: version "3.0.6" resolved "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" @@ -6105,6 +6737,39 @@ number-is-nan@^1.0.0: resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= +nyc@15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" + integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== + dependencies: + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + caching-transform "^4.0.0" + convert-source-map "^1.7.0" + decamelize "^1.2.0" + find-cache-dir "^3.2.0" + find-up "^4.1.0" + foreground-child "^2.0.0" + get-package-type "^0.1.0" + glob "^7.1.6" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-hook "^3.0.0" + istanbul-lib-instrument "^4.0.0" + istanbul-lib-processinfo "^2.0.2" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + make-dir "^3.0.0" + node-preload "^0.2.1" + p-map "^3.0.0" + process-on-spawn "^1.0.0" + resolve-from "^5.0.0" + rimraf "^3.0.0" + signal-exit "^3.0.2" + spawn-wrap "^2.0.0" + test-exclude "^6.0.0" + yargs "^15.0.2" + oauth-sign@~0.9.0: version "0.9.0" resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" @@ -6313,6 +6978,13 @@ p-map@^2.1.0: resolved "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" @@ -6354,6 +7026,16 @@ p-waterfall@^1.0.0: dependencies: p-reduce "^1.0.0" +package-hash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" + integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== + dependencies: + graceful-fs "^4.1.15" + hasha "^5.0.0" + lodash.flattendeep "^4.4.0" + release-zalgo "^1.0.0" + parallel-transform@^1.1.0: version "1.2.0" resolved "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz" @@ -6524,6 +7206,11 @@ pg-copy-streams@0.3.0: resolved "https://registry.npmjs.org/pg-copy-streams/-/pg-copy-streams-0.3.0.tgz" integrity sha1-pPvCo7eI1Onab3fOs1Qi2NcEO38= +pg-escape@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/pg-escape/-/pg-escape-0.2.0.tgz#65594c1691659b4ab6e0cbbf9d50744be474998e" + integrity sha512-QfXcpxyN9vT+kvexQpTeNyiwCxs4LPXLAV/C0EeLTJPCF61swhGdDlnHcuDgxJudgKGfQYiCkegg0GsSKSvvEg== + pg-int8@1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz" @@ -6540,14 +7227,7 @@ pg-types@^2.1.0: postgres-date "~1.0.4" postgres-interval "^1.1.0" -pgpass@1.x: - version "1.0.5" - resolved "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz" - integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug== - dependencies: - split2 "^4.1.0" - -picocolors@^1.1.1: +picocolors@^1.0.0, picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== @@ -6601,6 +7281,13 @@ pkg-dir@^3.0.0: dependencies: find-up "^3.0.0" +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" @@ -6674,6 +7361,13 @@ process-nextick-args@~2.0.0: resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== +process-on-spawn@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.1.0.tgz#9d5999ba87b3bf0a8acb05322d69f2f5aa4fb763" + integrity sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q== + dependencies: + fromentries "^1.2.0" + promise-inflight@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz" @@ -6880,6 +7574,16 @@ read@1, read@~1.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@1.1: + version "1.1.13" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" + integrity sha512-E98tWzqShvKDGpR2MbjsDkDQWLW2TfWUC15H4tNQhIJ5Lsta84l8nUGL9/ybltGwe+wZzWPpc1Kmd2wQP4bdCA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + "readable-stream@2 || 3", readable-stream@^3.0.2: version "3.6.0" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" @@ -6899,6 +7603,13 @@ readdir-scoped-modules@^1.0.0: graceful-fs "^4.1.2" once "^1.3.0" +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" @@ -6943,6 +7654,13 @@ regexpp@^3.0.0: resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz" integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== +release-zalgo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" + integrity sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA== + dependencies: + es6-error "^4.0.1" + repeat-element@^1.1.2: version "1.1.3" resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz" @@ -7013,6 +7731,11 @@ resolve-from@^4.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" @@ -7038,6 +7761,13 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" +resumer@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" + integrity sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w== + dependencies: + through "~2.3.4" + ret@~0.1.10: version "0.1.15" resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" @@ -7065,7 +7795,7 @@ rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: dependencies: glob "^7.1.3" -rimraf@^3.0.2: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -7185,16 +7915,28 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.2.0: resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + semver@^7.3.5, semver@^7.5.4: version "7.6.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13" integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w== -semver@^7.6.3, semver@^7.7.1: +semver@^7.5.3, semver@^7.6.3, semver@^7.7.1: version "7.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== +serialize-javascript@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + dependencies: + randombytes "^2.1.0" + serialize-javascript@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" @@ -7277,6 +8019,11 @@ shebang-regex@^3.0.0: resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +shelljs@0.3.x: + version "0.3.0" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.3.0.tgz#3596e6307a781544f591f37da618360f31db57b1" + integrity sha512-Ny0KN4dyT8ZSCE0frtcbAJGoM/HTArpyPkeli1/00aYfm0sbD/Gk/4x7N2DP9QKGpBsiQH7n6rpm1L79RtviEQ== + siginfo@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" @@ -7450,6 +8197,18 @@ sourcemap-codec@^1.4.8: resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== +spawn-wrap@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" + integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== + dependencies: + foreground-child "^2.0.0" + is-windows "^1.0.2" + make-dir "^3.0.0" + rimraf "^3.0.0" + signal-exit "^3.0.2" + which "^2.0.1" + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" @@ -7483,6 +8242,11 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +split2@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" + integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== + split2@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz" @@ -7490,11 +8254,6 @@ split2@^2.0.0: dependencies: through2 "^2.0.2" -split2@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz" - integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== - split@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/split/-/split-1.0.1.tgz" @@ -7592,7 +8351,7 @@ stream-spec@~0.3.5: dependencies: macgyver "~1.10" -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0: +"string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -7627,6 +8386,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" @@ -7659,6 +8427,11 @@ string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" @@ -7666,7 +8439,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -7694,6 +8467,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" @@ -7713,6 +8493,11 @@ strip-bom@^3.0.0: resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" @@ -7737,6 +8522,11 @@ strip-indent@^3.0.0: dependencies: min-indent "^1.0.0" +strip-json-comments@1.0.x: + version "1.0.4" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" + integrity sha512-AOPG8EBc5wAikaG1/7uFCNFJwnKOuQwFTpYBdTW6OvWHeZBQBrAA/amefHGrEiOnCPcLFZK6FUPtWVKpQVIRgg== + strip-json-comments@3.1.1, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" @@ -7751,6 +8541,13 @@ strong-log-transformer@^2.0.0: minimist "^1.2.0" through "^2.3.4" +supports-color@7.2.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + supports-color@8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" @@ -7772,13 +8569,6 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - synckit@^0.10.2: version "0.10.3" resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.10.3.tgz#940aea2c7b6d141a4f74dbdebc81e0958c331a4b" @@ -7829,6 +8619,15 @@ temp-write@^3.4.0: temp-dir "^1.0.0" uuid "^3.0.1" +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + text-extensions@^1.0.0: version "1.9.0" resolved "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz" @@ -7869,7 +8668,7 @@ through2@^3.0.0: inherits "^2.0.4" readable-stream "2 || 3" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@~2.3.4: version "2.3.8" resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -7907,6 +8706,13 @@ tinyspy@^3.0.2: resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a" integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== +tmp@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + tmp@^0.0.33: version "0.0.33" resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" @@ -8068,11 +8874,18 @@ type-fest@^0.6.0: resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== -type-fest@^0.8.1: +type-fest@^0.8.0, type-fest@^0.8.1: version "0.8.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" @@ -8200,6 +9013,14 @@ upath@^1.2.0: resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +update-browserslist-db@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + uri-js@^4.2.2: version "4.4.0" resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz" @@ -8234,6 +9055,11 @@ uuid@^3.0.1, uuid@^3.3.2: resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" @@ -8348,6 +9174,13 @@ which-module@^2.0.0: resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which@2.0.2, which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + which@^1.1.1, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" @@ -8355,13 +9188,6 @@ which@^1.1.1, which@^1.2.9, which@^1.3.1: dependencies: isexe "^2.0.0" -which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - which@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/which/-/which-4.0.0.tgz#cd60b5e74503a3fbcfbf6cd6b4138a8bae644c1a" @@ -8377,7 +9203,7 @@ why-is-node-running@^2.3.0: siginfo "^2.0.0" stackback "0.0.2" -wide-align@^1.1.0: +wide-align@1.1.3, wide-align@^1.1.0: version "1.1.3" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz" integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== @@ -8434,6 +9260,11 @@ workerd@^1.20230419.0: "@cloudflare/workerd-linux-arm64" "1.20250129.0" "@cloudflare/workerd-windows-64" "1.20250129.0" +workerpool@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.2.tgz#e241b43d8d033f1beb52c7851069456039d1d438" + integrity sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q== + workerpool@6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" @@ -8475,7 +9306,7 @@ wrangler@^3.x: fsevents "~2.3.2" sharp "^0.33.5" -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -8493,6 +9324,24 @@ wrap-ansi@^5.1.0: string-width "^3.0.0" strip-ansi "^5.0.0" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -8516,6 +9365,16 @@ write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: imurmurhash "^0.1.4" signal-exit "^3.0.2" +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + write-json-file@^2.2.0: version "2.3.0" resolved "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz" @@ -8578,6 +9437,14 @@ yallist@^4.0.0: resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yargs-parser@13.1.2, yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" @@ -8591,7 +9458,7 @@ yargs-parser@^15.0.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^18.1.3: +yargs-parser@^18.1.2, yargs-parser@^18.1.3: version "18.1.3" resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== @@ -8614,6 +9481,22 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" +yargs@13.3.2: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + yargs@16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" @@ -8644,6 +9527,23 @@ yargs@^14.2.2: y18n "^4.0.0" yargs-parser "^15.0.1" +yargs@^15.0.2: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + yn@3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz"