diff --git a/package.json b/package.json index 1a5edc8..278d184 100644 --- a/package.json +++ b/package.json @@ -25,11 +25,11 @@ }, "scripts": { "copy-vsce": "mkdir -p out && cp src/vsce out/vsce", - "compile": "tsc && yarn copy-vsce", - "watch": "yarn copy-vsce && tsc --watch", - "watch-test": "yarn copy-vsce && concurrently \"tsc --watch\" \"mocha --watch\"", + "compile": "tsc && npm run copy-vsce", + "watch": "npm run copy-vsce && tsc --watch", + "watch-test": "npm run copy-vsce && concurrently \"tsc --watch\" \"mocha --watch\"", "test": "mocha", - "prepublishOnly": "tsc && yarn copy-vsce && mocha", + "prepublishOnly": "tsc && npm run copy-vsce && mocha", "vsce": "out/vsce" }, "engines": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..01e59fa --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,1301 @@ +dependencies: + azure-devops-node-api: 7.2.0 + chalk: 2.4.2 + cheerio: 1.0.0-rc.3 + commander: 2.20.3 + denodeify: 1.2.1 + glob: 7.1.6 + leven: 3.1.0 + lodash: 4.17.20 + markdown-it: 10.0.0 + mime: 1.6.0 + minimatch: 3.0.4 + osenv: 0.1.5 + parse-semver: 1.1.1 + read: 1.0.7 + semver: 5.7.1 + tmp: 0.0.29 + typed-rest-client: 1.2.0 + url-join: 1.1.0 + yauzl: 2.10.0 + yazl: 2.5.1 +devDependencies: + '@types/cheerio': 0.22.21 + '@types/denodeify': 1.2.31 + '@types/glob': 7.1.3 + '@types/lodash': 4.14.161 + '@types/markdown-it': 0.0.2 + '@types/mime': 1.3.1 + '@types/minimatch': 3.0.3 + '@types/mocha': 7.0.2 + '@types/node': 8.10.63 + '@types/read': 0.0.28 + '@types/semver': 6.2.1 + '@types/tmp': 0.1.0 + '@types/xml2js': 0.4.5 + concurrently: 5.3.0 + mocha: 7.2.0 + source-map-support: 0.4.18 + typescript: 3.9.7 + xml2js: 0.4.23 +lockfileVersion: 5.1 +packages: + /@types/cheerio/0.22.21: + dependencies: + '@types/node': 8.10.63 + dev: true + resolution: + integrity: sha512-aGI3DfswwqgKPiEOTaiHV2ZPC9KEhprpgEbJnv0fZl3SGX0cGgEva1126dGrMC6AJM6v/aihlUgJn9M5DbDZ/Q== + /@types/denodeify/1.2.31: + dev: true + resolution: + integrity: sha512-Jgy3dvCyIxhNb5RstVJkubeHZifw8KJXca13ov8OO4IqhDLPRHiJJ6VArJbZZ4HuEMJEB83yCuABodNMlYylzQ== + /@types/glob/7.1.3: + dependencies: + '@types/minimatch': 3.0.3 + '@types/node': 8.10.63 + dev: true + resolution: + integrity: sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + /@types/lodash/4.14.161: + dev: true + resolution: + integrity: sha512-EP6O3Jkr7bXvZZSZYlsgt5DIjiGr0dXP1/jVEwVLTFgg0d+3lWVQkRavYVQszV7dYUwvg0B8R0MBDpcmXg7XIA== + /@types/markdown-it/0.0.2: + dev: true + resolution: + integrity: sha1-XZrRnm5lCM3S8llt+G/Qqt5ZhmA= + /@types/mime/1.3.1: + dev: true + resolution: + integrity: sha512-rek8twk9C58gHYqIrUlJsx8NQMhlxqHzln9Z9ODqiNgv3/s+ZwIrfr+djqzsnVM12xe9hL98iJ20lj2RvCBv6A== + /@types/minimatch/3.0.3: + dev: true + resolution: + integrity: sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + /@types/mocha/7.0.2: + dev: true + resolution: + integrity: sha512-ZvO2tAcjmMi8V/5Z3JsyofMe3hasRcaw88cto5etSVMwVQfeivGAlEYmaQgceUSVYFofVjT+ioHsATjdWcFt1w== + /@types/node/8.10.63: + resolution: + integrity: sha512-g+nSkeHFDd2WOQChfmy9SAXLywT47WZBrGS/NC5ym5PJ8c8RC6l4pbGaUW/X0+eZJnXw6/AVNEouXWhV4iz72Q== + /@types/read/0.0.28: + dev: true + resolution: + integrity: sha1-zQvkCbGSxhGfF+Z9Q09MbpQY8bU= + /@types/semver/6.2.1: + dev: true + resolution: + integrity: sha512-+beqKQOh9PYxuHvijhVl+tIHvT6tuwOrE9m14zd+MT2A38KoKZhh7pYJ0SNleLtwDsiIxHDsIk9bv01oOxvSvA== + /@types/tmp/0.1.0: + dev: true + resolution: + integrity: sha512-6IwZ9HzWbCq6XoQWhxLpDjuADodH/MKXRUIDFudvgjcVdjFknvmR+DNsoUeer4XPrEnrZs04Jj+kfV9pFsrhmA== + /@types/xml2js/0.4.5: + dependencies: + '@types/node': 8.10.63 + dev: true + resolution: + integrity: sha512-yohU3zMn0fkhlape1nxXG2bLEGZRc1FeqF80RoHaYXJN7uibaauXfhzhOJr1Xh36sn+/tx21QAOf07b/xYVk1w== + /ansi-colors/3.2.3: + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== + /ansi-regex/3.0.0: + dev: true + engines: + node: '>=4' + resolution: + integrity: sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + /ansi-regex/4.1.0: + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + /ansi-styles/3.2.1: + dependencies: + color-convert: 1.9.3 + engines: + node: '>=4' + resolution: + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + /anymatch/3.1.1: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.2.2 + dev: true + engines: + node: '>= 8' + resolution: + integrity: sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + /argparse/1.0.10: + dependencies: + sprintf-js: 1.0.3 + resolution: + integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + /azure-devops-node-api/7.2.0: + dependencies: + os: 0.1.1 + tunnel: 0.0.4 + typed-rest-client: 1.2.0 + underscore: 1.8.3 + dev: false + resolution: + integrity: sha512-pMfGJ6gAQ7LRKTHgiRF+8iaUUeGAI0c8puLaqHLc7B8AR7W6GJLozK9RFeUHFjEGybC9/EB3r67WPd7e46zQ8w== + /balanced-match/1.0.0: + resolution: + integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + /binary-extensions/2.1.0: + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + /boolbase/1.0.0: + dev: false + resolution: + integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24= + /brace-expansion/1.1.11: + dependencies: + balanced-match: 1.0.0 + concat-map: 0.0.1 + resolution: + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + /braces/3.0.2: + dependencies: + fill-range: 7.0.1 + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + /browser-stdout/1.3.1: + dev: true + resolution: + integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + /buffer-crc32/0.2.13: + dev: false + resolution: + integrity: sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + /camelcase/5.3.1: + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + /chalk/2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + engines: + node: '>=4' + resolution: + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + /cheerio/1.0.0-rc.3: + dependencies: + css-select: 1.2.0 + dom-serializer: 0.1.1 + entities: 1.1.2 + htmlparser2: 3.10.1 + lodash: 4.17.20 + parse5: 3.0.3 + dev: false + engines: + node: '>= 0.6' + resolution: + integrity: sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== + /chokidar/3.3.0: + dependencies: + anymatch: 3.1.1 + braces: 3.0.2 + glob-parent: 5.1.1 + is-binary-path: 2.1.0 + is-glob: 4.0.1 + normalize-path: 3.0.0 + readdirp: 3.2.0 + dev: true + engines: + node: '>= 8.10.0' + optionalDependencies: + fsevents: 2.1.3 + resolution: + integrity: sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== + /cliui/5.0.0: + dependencies: + string-width: 3.1.0 + strip-ansi: 5.2.0 + wrap-ansi: 5.1.0 + dev: true + resolution: + integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + /color-convert/1.9.3: + dependencies: + color-name: 1.1.3 + resolution: + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + /color-name/1.1.3: + resolution: + integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + /commander/2.20.3: + dev: false + resolution: + integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + /concat-map/0.0.1: + resolution: + integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + /concurrently/5.3.0: + dependencies: + chalk: 2.4.2 + date-fns: 2.16.1 + lodash: 4.17.20 + read-pkg: 4.0.1 + rxjs: 6.6.2 + spawn-command: 0.0.2-1 + supports-color: 6.1.0 + tree-kill: 1.2.2 + yargs: 13.3.2 + dev: true + engines: + node: '>=6.0.0' + hasBin: true + resolution: + integrity: sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ== + /css-select/1.2.0: + dependencies: + boolbase: 1.0.0 + css-what: 2.1.3 + domutils: 1.5.1 + nth-check: 1.0.2 + dev: false + resolution: + integrity: sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + /css-what/2.1.3: + dev: false + resolution: + integrity: sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + /date-fns/2.16.1: + dev: true + engines: + node: '>=0.11' + resolution: + integrity: sha512-sAJVKx/FqrLYHAQeN7VpJrPhagZc9R4ImZIWYRFZaaohR3KzmuK88touwsSwSVT8Qcbd4zoDsnGfX4GFB4imyQ== + /debug/3.2.6: + dependencies: + ms: 2.1.1 + dev: true + resolution: + integrity: sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + /decamelize/1.2.0: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + /define-properties/1.1.3: + dependencies: + object-keys: 1.1.1 + dev: true + engines: + node: '>= 0.4' + resolution: + integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + /denodeify/1.2.1: + dev: false + resolution: + integrity: sha1-OjYof1A05pnnV3kBBSwubJQlFjE= + /diff/3.5.0: + dev: true + engines: + node: '>=0.3.1' + resolution: + integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + /dom-serializer/0.1.1: + dependencies: + domelementtype: 1.3.1 + entities: 1.1.2 + dev: false + resolution: + integrity: sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== + /domelementtype/1.3.1: + dev: false + resolution: + integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + /domhandler/2.4.2: + dependencies: + domelementtype: 1.3.1 + dev: false + resolution: + integrity: sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + /domutils/1.5.1: + dependencies: + dom-serializer: 0.1.1 + domelementtype: 1.3.1 + dev: false + resolution: + integrity: sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + /domutils/1.7.0: + dependencies: + dom-serializer: 0.1.1 + domelementtype: 1.3.1 + dev: false + resolution: + integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + /emoji-regex/7.0.3: + dev: true + resolution: + integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + /entities/1.1.2: + dev: false + resolution: + integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + /entities/2.0.3: + dev: false + resolution: + integrity: sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== + /error-ex/1.3.2: + dependencies: + is-arrayish: 0.2.1 + dev: true + resolution: + integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + /es-abstract/1.17.6: + dependencies: + es-to-primitive: 1.2.1 + function-bind: 1.1.1 + has: 1.0.3 + has-symbols: 1.0.1 + is-callable: 1.2.0 + is-regex: 1.1.1 + object-inspect: 1.8.0 + object-keys: 1.1.1 + object.assign: 4.1.0 + string.prototype.trimend: 1.0.1 + string.prototype.trimstart: 1.0.1 + dev: true + engines: + node: '>= 0.4' + resolution: + integrity: sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== + /es-to-primitive/1.2.1: + dependencies: + is-callable: 1.2.0 + is-date-object: 1.0.2 + is-symbol: 1.0.3 + dev: true + engines: + node: '>= 0.4' + resolution: + integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + /escape-string-regexp/1.0.5: + engines: + node: '>=0.8.0' + resolution: + integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + /esprima/4.0.1: + dev: true + engines: + node: '>=4' + hasBin: true + resolution: + integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + /fd-slicer/1.1.0: + dependencies: + pend: 1.2.0 + dev: false + resolution: + integrity: sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + /fill-range/7.0.1: + dependencies: + to-regex-range: 5.0.1 + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + /find-up/3.0.0: + dependencies: + locate-path: 3.0.0 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + /flat/4.1.0: + dependencies: + is-buffer: 2.0.4 + deprecated: 'Fixed a prototype pollution security issue in 4.1.0, please upgrade to ^4.1.1 or ^5.0.1.' + dev: true + hasBin: true + resolution: + integrity: sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== + /fs.realpath/1.0.0: + resolution: + integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + /fsevents/2.1.3: + dev: true + engines: + node: ^8.16.0 || ^10.6.0 || >=11.0.0 + optional: true + os: + - darwin + resolution: + integrity: sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + /function-bind/1.1.1: + dev: true + resolution: + integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + /get-caller-file/2.0.5: + dev: true + engines: + node: 6.* || 8.* || >= 10.* + resolution: + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + /glob-parent/5.1.1: + dependencies: + is-glob: 4.0.1 + dev: true + engines: + node: '>= 6' + resolution: + integrity: sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + /glob/7.1.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.4 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + resolution: + integrity: sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + /glob/7.1.6: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.0.4 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + resolution: + integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + /growl/1.10.5: + dev: true + engines: + node: '>=4.x' + resolution: + integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + /has-flag/3.0.0: + engines: + node: '>=4' + resolution: + integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + /has-symbols/1.0.1: + dev: true + engines: + node: '>= 0.4' + resolution: + integrity: sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + /has/1.0.3: + dependencies: + function-bind: 1.1.1 + dev: true + engines: + node: '>= 0.4.0' + resolution: + integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + /he/1.2.0: + dev: true + hasBin: true + resolution: + integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + /hosted-git-info/2.8.8: + dev: true + resolution: + integrity: sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + /htmlparser2/3.10.1: + dependencies: + domelementtype: 1.3.1 + domhandler: 2.4.2 + domutils: 1.7.0 + entities: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.0 + dev: false + resolution: + integrity: sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + /inflight/1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + resolution: + integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + /inherits/2.0.4: + resolution: + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + /is-arrayish/0.2.1: + dev: true + resolution: + integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + /is-binary-path/2.1.0: + dependencies: + binary-extensions: 2.1.0 + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + /is-buffer/2.0.4: + dev: true + engines: + node: '>=4' + resolution: + integrity: sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + /is-callable/1.2.0: + dev: true + engines: + node: '>= 0.4' + resolution: + integrity: sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== + /is-date-object/1.0.2: + dev: true + engines: + node: '>= 0.4' + resolution: + integrity: sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + /is-extglob/2.1.1: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + /is-fullwidth-code-point/2.0.0: + dev: true + engines: + node: '>=4' + resolution: + integrity: sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + /is-glob/4.0.1: + dependencies: + is-extglob: 2.1.1 + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + /is-number/7.0.0: + dev: true + engines: + node: '>=0.12.0' + resolution: + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + /is-regex/1.1.1: + dependencies: + has-symbols: 1.0.1 + dev: true + engines: + node: '>= 0.4' + resolution: + integrity: sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== + /is-symbol/1.0.3: + dependencies: + has-symbols: 1.0.1 + dev: true + engines: + node: '>= 0.4' + resolution: + integrity: sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + /isexe/2.0.0: + dev: true + resolution: + integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + /js-yaml/3.13.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: true + hasBin: true + resolution: + integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + /json-parse-better-errors/1.0.2: + dev: true + resolution: + integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + /leven/3.1.0: + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + /linkify-it/2.2.0: + dependencies: + uc.micro: 1.0.6 + dev: false + resolution: + integrity: sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== + /locate-path/3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + /lodash/4.17.20: + resolution: + integrity: sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + /log-symbols/3.0.0: + dependencies: + chalk: 2.4.2 + dev: true + engines: + node: '>=8' + resolution: + integrity: sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + /markdown-it/10.0.0: + dependencies: + argparse: 1.0.10 + entities: 2.0.3 + linkify-it: 2.2.0 + mdurl: 1.0.1 + uc.micro: 1.0.6 + dev: false + hasBin: true + resolution: + integrity: sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg== + /mdurl/1.0.1: + dev: false + resolution: + integrity: sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + /mime/1.6.0: + dev: false + engines: + node: '>=4' + hasBin: true + resolution: + integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + /minimatch/3.0.4: + dependencies: + brace-expansion: 1.1.11 + resolution: + integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + /minimist/1.2.5: + dev: true + resolution: + integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + /mkdirp/0.5.5: + dependencies: + minimist: 1.2.5 + dev: true + hasBin: true + resolution: + integrity: sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + /mocha/7.2.0: + dependencies: + ansi-colors: 3.2.3 + browser-stdout: 1.3.1 + chokidar: 3.3.0 + debug: 3.2.6 + diff: 3.5.0 + escape-string-regexp: 1.0.5 + find-up: 3.0.0 + glob: 7.1.3 + growl: 1.10.5 + he: 1.2.0 + js-yaml: 3.13.1 + log-symbols: 3.0.0 + minimatch: 3.0.4 + mkdirp: 0.5.5 + ms: 2.1.1 + node-environment-flags: 1.0.6 + object.assign: 4.1.0 + strip-json-comments: 2.0.1 + supports-color: 6.0.0 + which: 1.3.1 + wide-align: 1.1.3 + yargs: 13.3.2 + yargs-parser: 13.1.2 + yargs-unparser: 1.6.0 + dev: true + engines: + node: '>= 8.10.0' + hasBin: true + resolution: + integrity: sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== + /ms/2.1.1: + dev: true + resolution: + integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + /mute-stream/0.0.8: + dev: false + resolution: + integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + /node-environment-flags/1.0.6: + dependencies: + object.getownpropertydescriptors: 2.1.0 + semver: 5.7.1 + dev: true + resolution: + integrity: sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== + /normalize-package-data/2.5.0: + dependencies: + hosted-git-info: 2.8.8 + resolve: 1.17.0 + semver: 5.7.1 + validate-npm-package-license: 3.0.4 + dev: true + resolution: + integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + /normalize-path/3.0.0: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + /nth-check/1.0.2: + dependencies: + boolbase: 1.0.0 + dev: false + resolution: + integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + /object-inspect/1.8.0: + dev: true + resolution: + integrity: sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + /object-keys/1.1.1: + dev: true + engines: + node: '>= 0.4' + resolution: + integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + /object.assign/4.1.0: + dependencies: + define-properties: 1.1.3 + function-bind: 1.1.1 + has-symbols: 1.0.1 + object-keys: 1.1.1 + dev: true + engines: + node: '>= 0.4' + resolution: + integrity: sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + /object.getownpropertydescriptors/2.1.0: + dependencies: + define-properties: 1.1.3 + es-abstract: 1.17.6 + dev: true + engines: + node: '>= 0.8' + resolution: + integrity: sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + /once/1.4.0: + dependencies: + wrappy: 1.0.2 + resolution: + integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + /os-homedir/1.0.2: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + /os-tmpdir/1.0.2: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + /os/0.1.1: + dev: false + resolution: + integrity: sha1-IIhF6J4ZOtTZcUdLk5R3NqVtE/M= + /osenv/0.1.5: + dependencies: + os-homedir: 1.0.2 + os-tmpdir: 1.0.2 + dev: false + resolution: + integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + /p-limit/2.3.0: + dependencies: + p-try: 2.2.0 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + /p-locate/3.0.0: + dependencies: + p-limit: 2.3.0 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + /p-try/2.2.0: + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + /parse-json/4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + dev: true + engines: + node: '>=4' + resolution: + integrity: sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + /parse-semver/1.1.1: + dependencies: + semver: 5.7.1 + dev: false + resolution: + integrity: sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg= + /parse5/3.0.3: + dependencies: + '@types/node': 8.10.63 + dev: false + resolution: + integrity: sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== + /path-exists/3.0.0: + dev: true + engines: + node: '>=4' + resolution: + integrity: sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + /path-is-absolute/1.0.1: + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + /path-parse/1.0.6: + dev: true + resolution: + integrity: sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + /pend/1.2.0: + dev: false + resolution: + integrity: sha1-elfrVQpng/kRUzH89GY9XI4AelA= + /picomatch/2.2.2: + dev: true + engines: + node: '>=8.6' + resolution: + integrity: sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + /pify/3.0.0: + dev: true + engines: + node: '>=4' + resolution: + integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + /read-pkg/4.0.1: + dependencies: + normalize-package-data: 2.5.0 + parse-json: 4.0.0 + pify: 3.0.0 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha1-ljYlN48+HE1IyFhytabsfV0JMjc= + /read/1.0.7: + dependencies: + mute-stream: 0.0.8 + dev: false + engines: + node: '>=0.8' + resolution: + integrity: sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= + /readable-stream/3.6.0: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: false + engines: + node: '>= 6' + resolution: + integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + /readdirp/3.2.0: + dependencies: + picomatch: 2.2.2 + dev: true + engines: + node: '>= 8' + resolution: + integrity: sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== + /require-directory/2.1.1: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + /require-main-filename/2.0.0: + dev: true + resolution: + integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + /resolve/1.17.0: + dependencies: + path-parse: 1.0.6 + dev: true + resolution: + integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + /rxjs/6.6.2: + dependencies: + tslib: 1.13.0 + dev: true + engines: + npm: '>=2.0.0' + resolution: + integrity: sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg== + /safe-buffer/5.2.1: + dev: false + resolution: + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + /sax/1.2.4: + dev: true + resolution: + integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + /semver/5.7.1: + hasBin: true + resolution: + integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + /set-blocking/2.0.0: + dev: true + resolution: + integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + /source-map-support/0.4.18: + dependencies: + source-map: 0.5.7 + dev: true + resolution: + integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + /source-map/0.5.7: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + /spawn-command/0.0.2-1: + dev: true + resolution: + integrity: sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= + /spdx-correct/3.1.1: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.5 + dev: true + resolution: + integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + /spdx-exceptions/2.3.0: + dev: true + resolution: + integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + /spdx-expression-parse/3.0.1: + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.5 + dev: true + resolution: + integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + /spdx-license-ids/3.0.5: + dev: true + resolution: + integrity: sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + /sprintf-js/1.0.3: + resolution: + integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + /string-width/2.1.1: + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + dev: true + engines: + node: '>=4' + resolution: + integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + /string-width/3.1.0: + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + /string.prototype.trimend/1.0.1: + dependencies: + define-properties: 1.1.3 + es-abstract: 1.17.6 + dev: true + resolution: + integrity: sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + /string.prototype.trimstart/1.0.1: + dependencies: + define-properties: 1.1.3 + es-abstract: 1.17.6 + dev: true + resolution: + integrity: sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + /string_decoder/1.3.0: + dependencies: + safe-buffer: 5.2.1 + dev: false + resolution: + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + /strip-ansi/4.0.0: + dependencies: + ansi-regex: 3.0.0 + dev: true + engines: + node: '>=4' + resolution: + integrity: sha1-qEeQIusaw2iocTibY1JixQXuNo8= + /strip-ansi/5.2.0: + dependencies: + ansi-regex: 4.1.0 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + /strip-json-comments/2.0.1: + dev: true + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo= + /supports-color/5.5.0: + dependencies: + has-flag: 3.0.0 + engines: + node: '>=4' + resolution: + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + /supports-color/6.0.0: + dependencies: + has-flag: 3.0.0 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== + /supports-color/6.1.0: + dependencies: + has-flag: 3.0.0 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + /tmp/0.0.29: + dependencies: + os-tmpdir: 1.0.2 + dev: false + engines: + node: '>=0.4.0' + resolution: + integrity: sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA= + /to-regex-range/5.0.1: + dependencies: + is-number: 7.0.0 + dev: true + engines: + node: '>=8.0' + resolution: + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + /tree-kill/1.2.2: + dev: true + hasBin: true + resolution: + integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + /tslib/1.13.0: + dev: true + resolution: + integrity: sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + /tunnel/0.0.4: + dev: false + engines: + node: '>=0.6.11 <=0.7.0 || >=0.7.3' + resolution: + integrity: sha1-LTeFoVjBdMmhbcLARuxfxfF0IhM= + /typed-rest-client/1.2.0: + dependencies: + tunnel: 0.0.4 + underscore: 1.8.3 + dev: false + resolution: + integrity: sha512-FrUshzZ1yxH8YwGR29PWWnfksLEILbWJydU7zfIRkyH7kAEzB62uMAl2WY6EyolWpLpVHeJGgQm45/MaruaHpw== + /typescript/3.9.7: + dev: true + engines: + node: '>=4.2.0' + hasBin: true + resolution: + integrity: sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== + /uc.micro/1.0.6: + dev: false + resolution: + integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + /underscore/1.8.3: + dev: false + resolution: + integrity: sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI= + /url-join/1.1.0: + dev: false + resolution: + integrity: sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg= + /util-deprecate/1.0.2: + dev: false + resolution: + integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + /validate-npm-package-license/3.0.4: + dependencies: + spdx-correct: 3.1.1 + spdx-expression-parse: 3.0.1 + dev: true + resolution: + integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + /which-module/2.0.0: + dev: true + resolution: + integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + /which/1.3.1: + dependencies: + isexe: 2.0.0 + dev: true + hasBin: true + resolution: + integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + /wide-align/1.1.3: + dependencies: + string-width: 2.1.1 + dev: true + resolution: + integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + /wrap-ansi/5.1.0: + dependencies: + ansi-styles: 3.2.1 + string-width: 3.1.0 + strip-ansi: 5.2.0 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + /wrappy/1.0.2: + resolution: + integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + /xml2js/0.4.23: + dependencies: + sax: 1.2.4 + xmlbuilder: 11.0.1 + dev: true + engines: + node: '>=4.0.0' + resolution: + integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + /xmlbuilder/11.0.1: + dev: true + engines: + node: '>=4.0' + resolution: + integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + /y18n/4.0.0: + dev: true + resolution: + integrity: sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + /yargs-parser/13.1.2: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: true + resolution: + integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + /yargs-unparser/1.6.0: + dependencies: + flat: 4.1.0 + lodash: 4.17.20 + yargs: 13.3.2 + dev: true + engines: + node: '>=6' + resolution: + integrity: sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== + /yargs/13.3.2: + dependencies: + cliui: 5.0.0 + find-up: 3.0.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 3.1.0 + which-module: 2.0.0 + y18n: 4.0.0 + yargs-parser: 13.1.2 + dev: true + resolution: + integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + /yauzl/2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + dev: false + resolution: + integrity: sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + /yazl/2.5.1: + dependencies: + buffer-crc32: 0.2.13 + dev: false + resolution: + integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw== +specifiers: + '@types/cheerio': ^0.22.1 + '@types/denodeify': ^1.2.31 + '@types/glob': ^7.1.1 + '@types/lodash': ^4.14.123 + '@types/markdown-it': 0.0.2 + '@types/mime': ^1 + '@types/minimatch': ^3.0.3 + '@types/mocha': ^7.0.2 + '@types/node': ^8 + '@types/read': ^0.0.28 + '@types/semver': ^6.0.0 + '@types/tmp': ^0.1.0 + '@types/xml2js': ^0.4.4 + azure-devops-node-api: ^7.2.0 + chalk: ^2.4.2 + cheerio: ^1.0.0-rc.1 + commander: ^2.8.1 + concurrently: ^5.1.0 + denodeify: ^1.2.1 + glob: ^7.0.6 + leven: ^3.1.0 + lodash: ^4.17.15 + markdown-it: ^10.0.0 + mime: ^1.3.4 + minimatch: ^3.0.3 + mocha: ^7.1.1 + osenv: ^0.1.3 + parse-semver: ^1.1.1 + read: ^1.0.7 + semver: ^5.1.0 + source-map-support: ^0.4.2 + tmp: 0.0.29 + typed-rest-client: 1.2.0 + typescript: ^3.4.3 + url-join: ^1.1.0 + xml2js: ^0.4.12 + yauzl: ^2.3.1 + yazl: ^2.2.2 diff --git a/src/api.ts b/src/api.ts index aa3f3c5..c6239ab 100644 --- a/src/api.ts +++ b/src/api.ts @@ -30,6 +30,11 @@ export interface ICreateVSIXOptions { * Should use Yarn instead of NPM. */ useYarn?: boolean; + + /** + * Select the package manager to use + */ + usePackageManager?: "yarn" | "pnpm" | "npm"; } export interface IPublishOptions { @@ -62,6 +67,11 @@ export interface IPublishOptions { * Should use Yarn instead of NPM. */ useYarn?: boolean; + + /** + * Select the package manager to use + */ + usePackageManager?: "yarn" | "pnpm" | "npm"; } /** @@ -69,7 +79,8 @@ export interface IPublishOptions { */ export enum PackageManager { Npm, - Yarn + Yarn, + Pnpm, } export interface IListFilesOptions { @@ -122,6 +133,11 @@ export interface IPublishVSIXOptions { * Should use Yarn instead of NPM. */ useYarn?: boolean; + + /** + * Select the package manager to use + */ + usePackageManager?: "yarn" | "pnpm" | "npm"; } /** @@ -142,7 +158,7 @@ export function publish(options: IPublishOptions = {}): Promise { * Lists the files included in the extension's package. */ export function listFiles(options: IListFilesOptions = {}): Promise { - return _listFiles(options.cwd, options.packageManager === PackageManager.Yarn, options.packagedDependencies, options.ignoreFile); + return _listFiles(options.cwd, options.packageManager === PackageManager.Yarn, ({ [PackageManager.Yarn]: "yarn", [PackageManager.Npm]: "npm", [PackageManager.Pnpm]: "pnpm" }[options.packageManager]), options.packagedDependencies, options.ignoreFile); } /** diff --git a/src/main.ts b/src/main.ts index fef158e..5c0c7ad 100644 --- a/src/main.ts +++ b/src/main.ts @@ -62,9 +62,10 @@ module.exports = function (argv: string[]): void { .command('ls') .description('Lists all the files that will be published') .option('--yarn', 'Use yarn instead of npm') + .option('--packageManager [yarn|npm|pnpm]', 'Use yarn, npm, or pnpm package manager') .option('--packagedDependencies ', 'Select packages that should be published only (includes dependencies)', (val, all) => all ? all.concat(val) : [val], undefined) .option('--ignoreFile [path]', 'Indicate alternative .vscodeignore') - .action(({ yarn, packagedDependencies, ignoreFile }) => main(ls(undefined, yarn, packagedDependencies, ignoreFile))); + .action(({ yarn, packagedDependencies, ignoreFile, packageManager }) => main(ls(undefined, yarn, packagedDependencies, ignoreFile, packageManager))); program .command('package') @@ -74,9 +75,10 @@ module.exports = function (argv: string[]): void { .option('--baseContentUrl [url]', 'Prepend all relative links in README.md with this url.') .option('--baseImagesUrl [url]', 'Prepend all relative image links in README.md with this url.') .option('--yarn', 'Use yarn instead of npm') + .option('--packageManager [yarn|npm|pnpm]', 'Use yarn, npm, or pnpm package manager') .option('--ignoreFile [path]', 'Indicate alternative .vscodeignore') .option('--noGitHubIssueLinking', 'Prevent automatic expansion of GitHub-style issue syntax into links') - .action(({ out, githubBranch, baseContentUrl, baseImagesUrl, yarn, ignoreFile, noGitHubIssueLinking }) => main(packageCommand({ packagePath: out, githubBranch, baseContentUrl, baseImagesUrl, useYarn: yarn, ignoreFile, expandGitHubIssueLinks: noGitHubIssueLinking }))); + .action(({ out, githubBranch, baseContentUrl, baseImagesUrl, yarn, ignoreFile, noGitHubIssueLinking, packageManager }) => main(packageCommand({ packagePath: out, githubBranch, baseContentUrl, baseImagesUrl, useYarn: yarn, ignoreFile, expandGitHubIssueLinks: noGitHubIssueLinking, usePackageManager: packageManager }))); program .command('publish []') @@ -88,10 +90,11 @@ module.exports = function (argv: string[]): void { .option('--baseContentUrl [url]', 'Prepend all relative links in README.md with this url.') .option('--baseImagesUrl [url]', 'Prepend all relative image links in README.md with this url.') .option('--yarn', 'Use yarn instead of npm while packing extension files') + .option('--packageManager [yarn|npm|pnpm]', 'Use yarn, npm, or pnpm package manager') .option('--noVerify') .option('--ignoreFile [path]', 'Indicate alternative .vscodeignore') .option('--web', 'Experimental flag to enable publishing web extensions. Note: This is supported only for selected extensions.') - .action((version, { pat, message, packagePath, githubBranch, baseContentUrl, baseImagesUrl, yarn, noVerify, ignoreFile, web }) => main(publish({ pat, commitMessage: message, version, packagePath, githubBranch, baseContentUrl, baseImagesUrl, useYarn: yarn, noVerify, ignoreFile, web }))); + .action((version, { pat, message, packagePath, githubBranch, baseContentUrl, baseImagesUrl, yarn, noVerify, ignoreFile, web, packageManager }) => main(publish({ pat, commitMessage: message, version, packagePath, githubBranch, baseContentUrl, baseImagesUrl, useYarn: yarn, noVerify, ignoreFile, web, usePackageManager: packageManager }))); program .command('unpublish []') diff --git a/src/npm.ts b/src/npm.ts index 71649a4..c8b0a40 100644 --- a/src/npm.ts +++ b/src/npm.ts @@ -1,6 +1,7 @@ import * as path from 'path'; import * as fs from 'fs'; import * as cp from 'child_process'; +import * as denodeify from 'denodeify'; import * as parseSemver from 'parse-semver'; import * as _ from 'lodash'; import { CancellationToken } from './util'; @@ -71,6 +72,13 @@ export interface YarnDependency { children: YarnDependency[]; } +interface PnpmTreeNode { + name: string; + from: string; + version: string; + dependencies: { [key:string]:PnpmTreeNode }; +} + function asYarnDependency(prefix: string, tree: YarnTreeNode, prune: boolean): YarnDependency | null { if (prune && /@[\^~]/.test(tree.name)) { return null; @@ -99,6 +107,32 @@ function asYarnDependency(prefix: string, tree: YarnTreeNode, prune: boolean): Y return { name, path: dependencyPath, children }; } +async function asPnpmDependency(prefix: string, tree: PnpmTreeNode, prune: boolean): Promise { + if (prune && /^[\^~]/.test(tree.version)) { + return null; + } + + let name = tree.name || tree.from; + let s = path.sep; + + const dependencyPath = await denodeify(fs.realpath)(`${prefix}${s}${name}`); + const children: YarnDependency[] = []; + + console.log(dependencyPath); + + const deps = await Promise.all( + _.values(tree.dependencies || {}) + .map(child => asPnpmDependency(`${dependencyPath}${s}..`, child, prune)) + ); + for(const dep of deps) { + if (dep) { + children.push(dep); + } + } + + return { name, path: dependencyPath, children }; +} + function selectYarnDependencies(deps: YarnDependency[], packagedDependencies: string[]): YarnDependency[] { const index = new class { @@ -145,6 +179,30 @@ function selectYarnDependencies(deps: YarnDependency[], packagedDependencies: st return reached.values; } +async function getPnpmProductionDependencies(cwd: string, packagedDependencies?: string[]): Promise { + const raw = await new Promise((c, e) => cp.exec('pnpm list --depth 1000000 --prod --json --silent', { cwd, encoding: 'utf8', env: { ...process.env }, maxBuffer: 5000 * 1024 }, (err, stdout) => err ? e(err) : c(stdout))); + const match = /^\s*\[[\s\S]*\]\s*$/m.exec(raw); + + if (!match || match.length !== 1) { + throw new Error('Could not parse result of `pnpm list --json`' + raw); + } + + const usingPackagedDependencies = Array.isArray(packagedDependencies); + const trees = _.values(JSON.parse(match[0])[0].dependencies) as PnpmTreeNode[]; + + let result = ( + await Promise.all( + trees.map(tree => asPnpmDependency(path.join(cwd, 'node_modules'), tree, !usingPackagedDependencies)) + ) + ).filter(dep => !!dep); + + if (usingPackagedDependencies) { + result = selectYarnDependencies(result, packagedDependencies); + } + + return result; +} + async function getYarnProductionDependencies(cwd: string, packagedDependencies?: string[]): Promise { const raw = await new Promise((c, e) => cp.exec('yarn list --prod --json', { cwd, encoding: 'utf8', env: { ...process.env }, maxBuffer: 5000 * 1024 }, (err, stdout) => err ? e(err) : c(stdout))); const match = /^{"type":"tree".*$/m.exec(raw); @@ -179,8 +237,34 @@ async function getYarnDependencies(cwd: string, packagedDependencies?: string[]) return _.uniq(result); } -export function getDependencies(cwd: string, useYarn = false, packagedDependencies?: string[]): Promise { - return useYarn ? getYarnDependencies(cwd, packagedDependencies) : getNpmDependencies(cwd); +async function getPnpmDependencies(cwd: string, packagedDependencies?: string[]): Promise { + const result: string[] = [cwd]; + + if (await new Promise(c => fs.exists(path.join(cwd, 'pnpm-lock.yaml'), c))) { + const deps = await getPnpmProductionDependencies(cwd, packagedDependencies); + const flatten = (dep: YarnDependency) => { result.push(dep.path); dep.children.forEach(flatten); }; + deps.forEach(flatten); + } + + return _.uniq(result); +} + +export function getDependencies(cwd: string, useYarn = false, usePackageManager: "yarn" | "npm" | "pnpm", packagedDependencies?: string[]): Promise { + if(useYarn) { + return getYarnDependencies(cwd, packagedDependencies); + } + else if(usePackageManager == "npm") { + return getNpmDependencies(cwd); + } + else if(usePackageManager == "pnpm") { + return getPnpmDependencies(cwd, packagedDependencies); + } + else if(usePackageManager == "yarn") { + return getYarnDependencies(cwd, packagedDependencies); + } + else { + return getNpmDependencies(cwd); + } } export function getLatestVersion(name: string, cancellationToken?: CancellationToken): Promise { diff --git a/src/package.ts b/src/package.ts index 15b89de..394ddf3 100644 --- a/src/package.ts +++ b/src/package.ts @@ -64,6 +64,7 @@ export interface IPackageOptions { baseContentUrl?: string; baseImagesUrl?: string; useYarn?: boolean; + usePackageManager?: "yarn" | "npm" | "pnpm"; dependencyEntryPoints?: string[]; ignoreFile?: string; expandGitHubIssueLinks?: boolean; @@ -919,8 +920,8 @@ const defaultIgnore = [ '**/.vscode-test/**' ]; -function collectAllFiles(cwd: string, useYarn = false, dependencyEntryPoints?: string[]): Promise { - return getDependencies(cwd, useYarn, dependencyEntryPoints).then(deps => { +function collectAllFiles(cwd: string, useYarn = false, usePackageManager: "yarn" | "npm" | "pnpm" = "npm", dependencyEntryPoints?: string[]): Promise { + return getDependencies(cwd, useYarn, usePackageManager, dependencyEntryPoints).then(deps => { const promises: Promise[] = deps.map(dep => { return glob('**', { cwd: dep, nodir: true, dot: true, ignore: 'node_modules/**' }) .then(files => files @@ -932,8 +933,8 @@ function collectAllFiles(cwd: string, useYarn = false, dependencyEntryPoints?: s }); } -function collectFiles(cwd: string, useYarn = false, dependencyEntryPoints?: string[], ignoreFile?: string): Promise { - return collectAllFiles(cwd, useYarn, dependencyEntryPoints).then(files => { +function collectFiles(cwd: string, useYarn = false, usePackageManager: "yarn" | "npm" | "pnpm" = "npm", dependencyEntryPoints?: string[], ignoreFile?: string): Promise { + return collectAllFiles(cwd, useYarn, usePackageManager, dependencyEntryPoints).then(files => { files = files.filter(f => !/\r$/m.test(f)); return readFile(ignoreFile ? ignoreFile : path.join(cwd, '.vscodeignore'), 'utf8') @@ -997,11 +998,12 @@ export function createDefaultProcessors(manifest: Manifest, options: IPackageOpt export function collect(manifest: Manifest, options: IPackageOptions = {}): Promise { const cwd = options.cwd || process.cwd(); const useYarn = options.useYarn || false; + const usePackageManager = options.usePackageManager || "npm"; const packagedDependencies = options.dependencyEntryPoints || undefined; const ignoreFile = options.ignoreFile || undefined; const processors = createDefaultProcessors(manifest, options); - return collectFiles(cwd, useYarn, packagedDependencies, ignoreFile).then(fileNames => { + return collectFiles(cwd, useYarn, usePackageManager, packagedDependencies, ignoreFile).then(fileNames => { const files = fileNames.map(f => ({ path: `extension/${f}`, localPath: path.join(cwd, f) })); return processFiles(processors, files); @@ -1029,15 +1031,28 @@ function getDefaultPackageName(manifest: Manifest): string { return `${manifest.name}-${manifest.version}.vsix`; } -async function prepublish(cwd: string, manifest: Manifest, useYarn: boolean = false): Promise { +async function prepublish(cwd: string, manifest: Manifest, useYarn: boolean = false, usePackageManager: "yarn" | "npm" | "pnpm" = "npm"): Promise { if (!manifest.scripts || !manifest.scripts['vscode:prepublish']) { return; } - console.log(`Executing prepublish script '${useYarn ? 'yarn' : 'npm'} run vscode:prepublish'...`); + let tool = 'npm'; + if(useYarn) { + tool = 'yarn' + } + else if(usePackageManager == "npm") { + tool = 'npm'; + } + else if(usePackageManager == "pnpm") { + tool = 'pnpm'; + } + else if(usePackageManager == "yarn") { + tool = 'yarn' + } + + console.log(`Executing prepublish script '${tool} run vscode:prepublish'...`); await new Promise((c, e) => { - const tool = useYarn ? 'yarn' : 'npm'; const child = cp.spawn(tool, ['run', 'vscode:prepublish'], { cwd, shell: true, stdio: 'inherit' }); child.on('exit', code => code === 0 ? c() : e(`${tool} failed with exit code ${code}`)); child.on('error', e); @@ -1067,7 +1082,7 @@ export async function pack(options: IPackageOptions = {}): Promise /\.js$/i.test(f.path)); @@ -1103,17 +1118,17 @@ export async function packageCommand(options: IPackageOptions = {}): Promise { +export function listFiles(cwd = process.cwd(), useYarn = false, usePackageManager: "yarn" | "npm" | "pnpm" = "npm", packagedDependencies?: string[], ignoreFile?: string): Promise { return readManifest(cwd) - .then(() => collectFiles(cwd, useYarn, packagedDependencies, ignoreFile)); + .then(() => collectFiles(cwd, useYarn, usePackageManager, packagedDependencies, ignoreFile)); } /** * Lists the files included in the extension's package. Runs prepublish. */ -export function ls(cwd = process.cwd(), useYarn = false, packagedDependencies?: string[], ignoreFile?: string): Promise { +export function ls(cwd = process.cwd(), useYarn = false, usePackageManager?: "yarn" | "npm" | "pnpm", packagedDependencies?: string[], ignoreFile?: string): Promise { return readManifest(cwd) - .then(manifest => prepublish(cwd, manifest, useYarn)) - .then(() => collectFiles(cwd, useYarn, packagedDependencies, ignoreFile)) + .then(manifest => prepublish(cwd, manifest, useYarn, usePackageManager)) + .then(() => collectFiles(cwd, useYarn, usePackageManager, packagedDependencies, ignoreFile)) .then(files => files.forEach(f => console.log(`${f}`))); } diff --git a/src/publish.ts b/src/publish.ts index 11ffc03..13ce8dc 100644 --- a/src/publish.ts +++ b/src/publish.ts @@ -96,6 +96,7 @@ export interface IPublishOptions { baseContentUrl?: string; baseImagesUrl?: string; useYarn?: boolean; + usePackageManager?: "yarn" | "npm" | "pnpm"; noVerify?: boolean; ignoreFile?: string; web?: boolean;