diff --git a/.github/pull.yml b/.github/pull.yml new file mode 100644 index 000000000..23bd9a6a5 --- /dev/null +++ b/.github/pull.yml @@ -0,0 +1,7 @@ +version: "1" +rules: # Array of rules + - base: upstream_master # Required. Target branch + upstream: atom:master # Required. Must be in the same fork network. + mergeMethod: hardreset # Optional, one of [none, merge, squash, rebase, hardreset], Default: none. + mergeUnstable: false # Optional, merge pull request even when the mergeable_state is not clean. Default: false +label: ":arrow_heading_down: pull upstream" # Optional diff --git a/package-lock.json b/package-lock.json index 898560cd3..b3c1b6d92 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,43 +53,20 @@ } }, "@atom/watcher": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@atom/watcher/-/watcher-1.3.1.tgz", - "integrity": "sha512-UjGisruWlcRLMzddE3pwvOx6wQCFN/+gg6Z4cJZvH1kjT5QT5eA04hUDs8QXF/QH8ZxMiOtP8x9SWTw0hCNelg==", + "version": "1.3.4-0", + "resolved": "https://registry.npmjs.org/@atom/watcher/-/watcher-1.3.4-0.tgz", + "integrity": "sha512-sbS+yVf3BrB4gM7uZd/QEM8HpqyJh2hsbWy0z8eym7xhc09a4/uTRoq6Tl9CxQfGGXxtkNFs7qfOPUGKfYLnUg==", "requires": { "event-kit": "2.5.3", "fs-extra": "7.0.1", - "nan": "2.12.1", - "prebuild-install": "5.2.4" + "nan": "2.14.1", + "prebuild-install": "5.3.3" }, "dependencies": { "nan": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", - "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==" - }, - "prebuild-install": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.2.4.tgz", - "integrity": "sha512-CG3JnpTZXdmr92GW4zbcba4jkDha6uHraJ7hW4Fn8j0mExxwOKK20hqho8ZuBDCKYCHYIkFM1P2jhtG+KpP4fg==", - "requires": { - "detect-libc": "^1.0.3", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "napi-build-utils": "^1.0.1", - "node-abi": "^2.7.0", - "noop-logger": "^0.1.1", - "npmlog": "^4.0.1", - "os-homedir": "^1.0.1", - "pump": "^2.0.1", - "rc": "^1.2.7", - "simple-get": "^2.7.0", - "tar-fs": "^1.13.0", - "tunnel-agent": "^0.6.0", - "which-pm-runs": "^1.0.0" - } + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==" } } }, @@ -1294,9 +1271,9 @@ "integrity": "sha512-7+Wlx3BImrK0HiG6y3lU4xX7SpBPSSu8T9iguPMlaueRFxjbYwAQrp9lqZUuFikqKbd/en8lVREILvP2J80uJA==" }, "ajv": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", - "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2723,9 +2700,9 @@ } }, "electron-notarize": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-0.2.1.tgz", - "integrity": "sha512-oZ6/NhKeXmEKNROiFmRNfytqu3cxqC95sjooG7kBXQVEUSQkZnbiAhxVh5jXngL881G197pbwpeVPJyM7Ikmxw==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-0.3.0.tgz", + "integrity": "sha512-tuDw8H0gcDOalNLv6RM2CwGvUXU60MPGZRDEmd0ppX+yP5XqL8Ec2DuXyz9J7WQSA3aRCfzIgH8C5CAivDYWMw==", "requires": { "debug": "^4.1.1", "fs-extra": "^8.1.0" @@ -2749,11 +2726,6 @@ "universalify": "^0.1.0" } }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -2762,9 +2734,9 @@ } }, "electron-osx-sign": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.15.tgz", - "integrity": "sha512-1QtPNpjIji9bGZ0VRFwtJUyU1uHi7q3XUAOG0qFsvAUfs5H0T8hbgUfyg3xvPzmF1ruV8T8pQmQ86vNfLrcRiA==", + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.16.tgz", + "integrity": "sha512-ziMWfc3NmQlwnWLW6EaZq8nH2BWVng/atX5GWsGwhexJYpdW6hsg//MkAfRTRx1kR3Veiqkeiog1ibkbA4x0rg==", "requires": { "bluebird": "^3.5.0", "compare-version": "^0.1.2", @@ -2786,11 +2758,6 @@ "requires": { "buffer-alloc": "^1.2.0" } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" } } }, @@ -3048,9 +3015,9 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-json-stable-stringify": { "version": "2.1.0", @@ -3133,8 +3100,8 @@ } }, "find-and-replace": { - "version": "https://www.atom.io/api/packages/find-and-replace/versions/0.219.3/tarball", - "integrity": "sha512-Ixc+4g6rAjO6L6QPdii8W0fTxGgjMO9AydodAEA6/o91bScGB4veKfn/yiZSMoXQwivw5fJpt8ZiMZ85lSijKw==", + "version": "https://www.atom.io/api/packages/find-and-replace/versions/0.219.5/tarball", + "integrity": "sha512-FVi54caB9IFGRBxye9nqnshryjCGhumlqioU/fwJTE+N8kUmJ/zjTUKiy9FhDK5782PUc4ig0cHimbH7o8vxmA==", "requires": { "binary-search": "^1.3.3", "etch": "0.9.3", @@ -6302,9 +6269,9 @@ } }, "scrollbar-style": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/scrollbar-style/-/scrollbar-style-3.2.0.tgz", - "integrity": "sha1-BmK2GJM2QWDLtbDEZxmAmwKHGKE=", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/scrollbar-style/-/scrollbar-style-3.2.1.tgz", + "integrity": "sha512-suqwmmczpwidfoq+csq/e9KGopUbnKMJj6Pj+F+IqGl5Olt/khOkj/MjPrB3t+8QtipJ+APg92C1XcjzrNFtfQ==", "requires": { "event-kit": "^1.1.0", "nan": "^2.0.0" @@ -6388,8 +6355,8 @@ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "settings-view": { - "version": "https://www.atom.io/api/packages/settings-view/versions/0.261.4/tarball", - "integrity": "sha512-UfFj+d3qa8sIbUc5H/VQKMi8FFuROI+Q2CZhLLWyg13IQzITwiu6kTMarYO932ma6jPOE6F8MjKusMsOP71xNQ==", + "version": "https://www.atom.io/api/packages/settings-view/versions/0.261.5/tarball", + "integrity": "sha512-ydVcLW71bjCX158QSt1R0AfHAaf4R39zqL6nxva3ut6DzpW94Hfd7O+/aHljHygnZILmjgXGIrSfINVVrEDXVQ==", "requires": { "async": "~0.2.9", "dompurify": "^1.0.2", diff --git a/package.json b/package.json index a0a7308cf..b83507218 100644 --- a/package.json +++ b/package.json @@ -12,11 +12,11 @@ "url": "https://github.com/atom/atom/issues" }, "license": "MIT", - "electronVersion": "5.0.13", + "electronVersion": "6.1.12", "dependencies": { "@atom/nsfw": "1.0.26", "@atom/source-map-support": "^0.3.4", - "@atom/watcher": "1.3.1", + "@atom/watcher": "1.3.4-0", "about": "file:packages/about", "archive-view": "https://www.atom.io/api/packages/archive-view/versions/0.65.2/tarball", "async": "0.2.6", @@ -50,13 +50,13 @@ "deprecation-cop": "file:packages/deprecation-cop", "dev-live-reload": "file:packages/dev-live-reload", "devtron": "1.3.0", - "electron-notarize": "0.2.1", - "electron-osx-sign": "0.4.15", + "electron-notarize": "0.3.0", + "electron-osx-sign": "0.4.16", "encoding-selector": "https://www.atom.io/api/packages/encoding-selector/versions/0.23.9/tarball", "etch": "^0.12.6", "event-kit": "^2.5.3", "exception-reporting": "file:packages/exception-reporting", - "find-and-replace": "https://www.atom.io/api/packages/find-and-replace/versions/0.219.3/tarball", + "find-and-replace": "https://www.atom.io/api/packages/find-and-replace/versions/0.219.5/tarball", "find-parent-dir": "^0.3.0", "first-mate": "7.4.1", "focus-trap": "2.4.5", @@ -143,11 +143,11 @@ "resolve": "1.17.0", "scandal": "^3.2.0", "scoped-property-store": "^0.17.0", - "scrollbar-style": "^3.2", + "scrollbar-style": "3.2.1", "season": "^6.0.2", "semver": "7.3.2", "service-hub": "^0.7.4", - "settings-view": "https://www.atom.io/api/packages/settings-view/versions/0.261.4/tarball", + "settings-view": "https://www.atom.io/api/packages/settings-view/versions/0.261.5/tarball", "sinon": "1.17.4", "snippets": "https://www.atom.io/api/packages/snippets/versions/1.5.1/tarball", "solarized-dark-syntax": "file:packages/solarized-dark-syntax", @@ -202,7 +202,7 @@ "dev-live-reload": "file:./packages/dev-live-reload", "encoding-selector": "0.23.9", "exception-reporting": "file:./packages/exception-reporting", - "find-and-replace": "0.219.3", + "find-and-replace": "0.219.5", "fuzzy-finder": "1.14.2", "github": "0.34.2", "git-diff": "file:./packages/git-diff", @@ -218,7 +218,7 @@ "notifications": "0.71.0", "open-on-github": "1.3.2", "package-generator": "1.3.0", - "settings-view": "0.261.4", + "settings-view": "0.261.5", "snippets": "1.5.1", "spell-check": "0.76.1", "status-bar": "1.8.17", diff --git a/script/lib/package-application.js b/script/lib/package-application.js index 2de2af165..84a853aaa 100644 --- a/script/lib/package-application.js +++ b/script/lib/package-application.js @@ -4,7 +4,7 @@ const assert = require('assert'); const childProcess = require('child_process'); const electronPackager = require('electron-packager'); const fs = require('fs-extra'); -const hostArch = require('electron-packager/targets').hostArch; +const hostArch = require('@electron/get').getHostArch; const includePathInPackagedApp = require('./include-path-in-packaged-app'); const getLicenseText = require('./get-license-text'); const path = require('path'); diff --git a/script/package-lock.json b/script/package-lock.json index fb1630f5b..fc1332a54 100644 --- a/script/package-lock.json +++ b/script/package-lock.json @@ -434,6 +434,22 @@ "defer-to-connect": "^1.0.1" } }, + "@types/glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-VgNIkxK+j7Nz5P7jvUZlRvhuPSmsEfS03b0alKcq5V/STUKAa3Plemsn5mrQUO7am6OErJ4rhGEGJbACclrtRA==", + "optional": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "optional": true + }, "@types/node": { "version": "11.9.4", "resolved": "https://registry.npmjs.org/@types/node/-/node-11.9.4.tgz", @@ -546,24 +562,16 @@ "@wdio/config": "^5.9.1" } }, - "abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - }, "abstract-leveldown": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz", - "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz", + "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==", "requires": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", "xtend": "~4.0.0" - }, - "dependencies": { - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - } } }, "acorn": { @@ -853,19 +861,19 @@ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=" }, - "ast-util": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/ast-util/-/ast-util-0.6.0.tgz", - "integrity": "sha1-DZE9BPDpgx5T+ZkdyZAJ4tp3SBA=", + "ast-util-plus": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/ast-util-plus/-/ast-util-plus-0.6.2.tgz", + "integrity": "sha512-k7sWJ1B1PT/Mm5xTszBK9kxQYD15H1iSMqIkM/88qeGjNLgCEiZT5Has7L+dNtcMi3ed2iYiKy05jzQ/ZkB9DQ==", "requires": { - "ast-types": "~0.6.7", - "private": "~0.1.6" + "ast-types": "0.13.3", + "private": "0.1.8" }, "dependencies": { "ast-types": { - "version": "0.6.16", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.6.16.tgz", - "integrity": "sha1-BCBbcu3dGVqP6qCB8R0ClKJN7ZM=" + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", + "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==" } } }, @@ -887,6 +895,11 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" + }, "atob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", @@ -1197,9 +1210,9 @@ } }, "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -1210,15 +1223,6 @@ "tweetnacl": "^0.14.3" } }, - "binary": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz", - "integrity": "sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk=", - "requires": { - "buffers": "~0.1.1", - "chainsaw": "~0.1.0" - } - }, "bl": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bl/-/bl-3.0.0.tgz", @@ -1379,6 +1383,15 @@ "electron-to-chromium": "^1.3.47" } }, + "buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, "buffer-alloc": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", @@ -1408,11 +1421,6 @@ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" }, - "buffers": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", - "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" - }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -1553,14 +1561,6 @@ "lazy-cache": "^1.0.3" } }, - "chainsaw": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/chainsaw/-/chainsaw-0.1.0.tgz", - "integrity": "sha1-XqtQsor+WAdNDVgpE4iCi15fvJg=", - "requires": { - "traverse": ">=0.3.0 <0.4" - } - }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", @@ -2134,20 +2134,6 @@ "mimic-response": "^2.0.0" } }, - "decompress-zip": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/decompress-zip/-/decompress-zip-0.3.0.tgz", - "integrity": "sha1-rjvLfjTGWHmt/nfhnDD4ZgK0vbA=", - "requires": { - "binary": "^0.3.0", - "graceful-fs": "^4.1.3", - "mkpath": "^0.1.0", - "nopt": "^3.0.1", - "q": "^1.1.2", - "readable-stream": "^1.1.8", - "touch": "0.0.3" - } - }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -2169,12 +2155,26 @@ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, "deferred-leveldown": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz", - "integrity": "sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", + "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", "requires": { - "abstract-leveldown": "~5.0.0", + "abstract-leveldown": "~6.2.1", "inherits": "^2.0.3" + }, + "dependencies": { + "abstract-leveldown": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", + "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", + "requires": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + } } }, "define-properties": { @@ -2692,42 +2692,42 @@ } }, "electron-link": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/electron-link/-/electron-link-0.4.1.tgz", - "integrity": "sha512-f0pcajkAedjwWmRxuXBn0nJvRO7jPX2qoxObvBl+OL0uK9O3lNr6LThRzJGhqnklJ1g3BuNonKTwQqGh9T0WTg==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/electron-link/-/electron-link-0.4.3.tgz", + "integrity": "sha512-rfJSTwJOZkU15mtNvAOaDNafS7I1Jse31rgbGQJ/mJ7ZGtxZJy7FdxiDkMfT/NmbS3qluK3tO5DIU6VrZnfQLw==", "requires": { - "acorn": "^6.1.1", - "ast-util": "^0.6.0", - "encoding-down": "~5.0.0", - "indent-string": "^3.2.0", - "leveldown": "^5.4.1", - "levelup": "~3.0.0", - "recast": "^0.17.5", - "resolve": "^1.5.0", - "source-map": "^0.5.6" + "acorn": "^7.3.1", + "ast-util-plus": "^0.6.2", + "encoding-down": "^6.3.0", + "indent-string": "^4.0.0", + "leveldown": "^5.6.0", + "levelup": "^4.4.0", + "recast": "^0.19.1", + "resolve": "^1.17.0", + "source-map": "^0.7.3" }, "dependencies": { "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==" + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==" }, "ast-types": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.12.4.tgz", - "integrity": "sha512-ky/YVYCbtVAS8TdMIaTiPFHwEpRB5z1hctepJplTr3UW5q8TDrpIMCILyk8pmLxGtn2KCtC/lSn7zOsaI7nzDw==" + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", + "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==" }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=" + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "recast": { - "version": "0.17.6", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.17.6.tgz", - "integrity": "sha512-yoQRMRrK1lszNtbkGyM4kN45AwylV5hMiuEveUBlxytUViWevjvX6w+tzJt1LH4cfUhWt4NZvy3ThIhu6+m5wQ==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.19.1.tgz", + "integrity": "sha512-8FCjrBxjeEU2O6I+2hyHyBFH1siJbMBLwIRvVr1T3FD2cL754sOaJDsJ/8h3xYltasbJ8jqWRIhMuDGBSiSbjw==", "requires": { - "ast-types": "0.12.4", + "ast-types": "0.13.3", "esprima": "~4.0.0", "private": "^0.1.8", "source-map": "~0.6.1" @@ -2739,6 +2739,19 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" } } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" } } }, @@ -2773,10 +2786,64 @@ } } }, + "electron-notarize": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-1.0.0.tgz", + "integrity": "sha512-dsib1IAquMn0onCrNMJ6gtEIZn/azG8hZMCYOuZIMVMUeRMgBYHK1s5TK9P8xAcrAjh/2aN5WYHzgVSWX314og==", + "requires": { + "debug": "^4.1.1", + "fs-extra": "^9.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" + } + } + }, "electron-osx-sign": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz", - "integrity": "sha512-VVd40nrnVqymvFrY9ZkOYgHJOvexHHYTR3di/SN+mjJ0OWhR1I8BRVj3U+Yamw6hnkZZNKZp52rqL5EFAAPFkQ==", + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.17.tgz", + "integrity": "sha512-wUJPmZJQCs1zgdlQgeIpRcvrf7M5/COQaOV68Va1J/SgmWx5KL2otgg+fAae7luw6qz9R8Gvu/Qpe9tAOu/3xQ==", "requires": { "bluebird": "^3.5.0", "compare-version": "^0.1.2", @@ -2787,207 +2854,104 @@ }, "dependencies": { "bluebird": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", - "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" - }, - "isbinaryfile": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", - "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", - "requires": { - "buffer-alloc": "^1.2.0" - } - }, - "plist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", - "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", - "requires": { - "base64-js": "^1.2.3", - "xmlbuilder": "^9.0.7", - "xmldom": "0.1.x" - } + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" } } }, "electron-packager": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-12.2.0.tgz", - "integrity": "sha512-T5W/FIK4VXhYIOWxkehmz6zXt2S/sA9JZ3AL+/jeKCicQY6QVQ0K8B7W801L+GPTwbgTPycHjO+iqEf1BhZ+Iw==", + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-15.0.0.tgz", + "integrity": "sha512-J0yQP7/fKPkjxo9Yz5+vsQVig0dBbSXW8LQYA1pvNMvi+bL00hfI2SAyORP6EU7XaeiXGUIBSG2Px01EkKfGCw==", "requires": { - "asar": "^0.14.0", - "debug": "^3.0.0", - "electron-download": "^4.1.1", - "electron-osx-sign": "^0.4.1", - "extract-zip": "^1.0.3", - "fs-extra": "^5.0.0", + "@electron/get": "^1.6.0", + "asar": "^3.0.0", + "debug": "^4.0.1", + "electron-notarize": "^1.0.0", + "electron-osx-sign": "^0.4.11", + "extract-zip": "^2.0.0", + "filenamify": "^4.1.0", + "fs-extra": "^9.0.0", "galactus": "^0.2.1", "get-package-info": "^1.0.0", - "nodeify": "^1.0.1", + "junk": "^3.1.0", "parse-author": "^2.0.0", - "pify": "^3.0.0", - "plist": "^2.0.0", - "rcedit": "^1.0.0", + "plist": "^3.0.0", + "rcedit": "^2.0.0", "resolve": "^1.1.6", - "sanitize-filename": "^1.6.0", - "semver": "^5.3.0", - "yargs-parser": "^10.0.0" + "semver": "^7.1.3", + "yargs-parser": "^18.0.0" }, "dependencies": { "asar": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/asar/-/asar-0.14.6.tgz", - "integrity": "sha512-ZqybKcdO5At6y3ge2RHxVImc6Eltb2t3sxT7lk4T4zjZBSFUuIGCIZY6f41dCjlvJSizN5QPRr8YTgMhpgBjLg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/asar/-/asar-3.0.3.tgz", + "integrity": "sha512-k7zd+KoR+n8pl71PvgElcoKHrVNiSXtw7odKbyNpmgKe7EGRF9Pnu3uLOukD37EvavKwVFxOUpqXTIZC5B5Pmw==", "requires": { + "@types/glob": "^7.1.1", "chromium-pickle-js": "^0.2.0", - "commander": "^2.9.0", - "cuint": "^0.2.1", - "glob": "^6.0.4", - "minimatch": "^3.0.3", - "mkdirp": "^0.5.0", - "mksnapshot": "^0.3.4", - "tmp": "0.0.28" + "commander": "^5.0.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4" } }, - "chromium-pickle-js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", - "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=" + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + }, + "commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" }, "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { "ms": "^2.1.1" } }, - "electron-download": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz", - "integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==", - "requires": { - "debug": "^3.0.0", - "env-paths": "^1.0.0", - "fs-extra": "^4.0.1", - "minimist": "^1.2.0", - "nugget": "^2.0.1", - "path-exists": "^3.0.0", - "rc": "^1.2.1", - "semver": "^5.4.1", - "sumchecker": "^2.0.2" - }, - "dependencies": { - "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - } - } - }, - "env-paths": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz", - "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=" - }, - "extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", - "requires": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", - "yauzl": "^2.10.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "requires": { - "pend": "~1.2.0" - } - }, "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "dependencies": { - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { - "graceful-fs": "^4.1.6" - } - } + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" } }, "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { + "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "2 || 3", + "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" + }, + "jsonfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", + "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^1.0.0" + } + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -2996,83 +2960,28 @@ "brace-expansion": "^1.1.7" } }, - "mksnapshot": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/mksnapshot/-/mksnapshot-0.3.5.tgz", - "integrity": "sha512-PSBoZaj9h9myC3uRRW62RxmX8mrN3XbOkMEyURUD7v5CeJgtYTar50XU738t7Q0LtG1pBPtp5n5QwDGggRnEvw==", - "requires": { - "decompress-zip": "0.3.x", - "fs-extra": "0.26.7", - "request": "2.x" - }, - "dependencies": { - "fs-extra": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.26.7.tgz", - "integrity": "sha1-muH92UiXeY7at20JGM9C0MMYT6k=", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - } - } - }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" }, - "sumchecker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", - "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "requires": { - "debug": "^2.2.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "tmp": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz", - "integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=", - "requires": { - "os-tmpdir": "~1.0.1" - } - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } @@ -3094,22 +3003,14 @@ "optional": true }, "encoding-down": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-5.0.4.tgz", - "integrity": "sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz", + "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", "requires": { - "abstract-leveldown": "^5.0.0", + "abstract-leveldown": "^6.2.1", "inherits": "^2.0.3", "level-codec": "^9.0.0", - "level-errors": "^2.0.0", - "xtend": "^4.0.1" - }, - "dependencies": { - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - } + "level-errors": "^2.0.0" } }, "end-of-stream": { @@ -4191,6 +4092,21 @@ "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha1-q/c9+rc10EVECr/qLZHzieu/oik=" + }, + "filenamify": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.1.0.tgz", + "integrity": "sha512-KQV/uJDI9VQgN7sHH1Zbk6+42cD6mnQ2HONzkXUfPJ+K2FC8GZ1dpewbbHw0Sz8Tf5k3EVdHVayM4DoAwWlmtg==", + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + } + }, "fill-range": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", @@ -4244,26 +4160,26 @@ "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==" }, "flora-colossus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-1.0.0.tgz", - "integrity": "sha1-VHKcNh7ezuAU3UQWeeGjfB13OkU=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-1.0.1.tgz", + "integrity": "sha512-d+9na7t9FyH8gBJoNDSi28mE4NgQVGGvxQ4aHtFRetjyh5SXjuus+V5EZaxFmFdXVemSOrx0lsgEl/ZMjnOWJA==", "requires": { - "debug": "^3.1.0", - "fs-extra": "^4.0.0" + "debug": "^4.1.1", + "fs-extra": "^7.0.0" }, "dependencies": { "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { "ms": "^2.1.1" } }, "fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -4279,9 +4195,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -4422,9 +4338,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" } } }, @@ -4460,9 +4376,9 @@ }, "dependencies": { "bluebird": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", - "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "find-up": { "version": "2.1.0", @@ -5028,11 +4944,21 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, "ignore": { "version": "3.3.10", "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" }, + "immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" + }, "import-fresh": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", @@ -5053,22 +4979,9 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "^2.0.0" - }, - "dependencies": { - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "requires": { - "is-finite": "^1.0.0" - } - } - } + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" }, "indexes-of": { "version": "1.0.1", @@ -5518,6 +5431,14 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "requires": { + "buffer-alloc": "^1.2.0" + } + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -5650,6 +5571,11 @@ "verror": "1.10.0" } }, + "junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==" + }, "keyv": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", @@ -5726,9 +5652,12 @@ } }, "level-codec": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.1.tgz", - "integrity": "sha512-ajFP0kJ+nyq4i6kptSM+mAvJKLOg1X5FiFPtLG9M5gCEZyBmgDi3FkDrvlMkEzrUn1cWxtvVmrvoS4ASyO/q+Q==" + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", + "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", + "requires": { + "buffer": "^5.6.0" + } }, "level-concat-iterator": { "version": "2.0.1", @@ -5744,41 +5673,19 @@ } }, "level-iterator-stream": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz", - "integrity": "sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", + "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.5", - "xtend": "^4.0.0" + "inherits": "^2.0.4", + "readable-stream": "^3.4.0", + "xtend": "^4.0.2" }, "dependencies": { - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" } } }, @@ -5788,19 +5695,12 @@ "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", "requires": { "xtend": "^4.0.2" - }, - "dependencies": { - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - } } }, "leveldown": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-5.4.1.tgz", - "integrity": "sha512-3lMPc7eU3yj5g+qF1qlALInzIYnkySIosR1AsUKFjL9D8fYbTLuENBAeDRZXIG4qeWOAyqRItOoLu2v2avWiMA==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-5.6.0.tgz", + "integrity": "sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ==", "requires": { "abstract-leveldown": "~6.2.1", "napi-macros": "~2.0.0", @@ -5808,38 +5708,29 @@ }, "dependencies": { "abstract-leveldown": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.2.tgz", - "integrity": "sha512-/a+Iwj0rn//CX0EJOasNyZJd2o8xur8Ce9C57Sznti/Ilt/cb6Qd8/k98A4ZOklXgTG+iAYYUs1OTG0s1eH+zQ==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", + "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", "requires": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", "level-concat-iterator": "~2.0.0", "level-supports": "~1.0.0", "xtend": "~4.0.0" } - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" } } }, "levelup": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-3.0.1.tgz", - "integrity": "sha512-TrrLDPC/BfP35ei2uK+L6Cc7kpI1NxIChwp+BUB6jrHG3A8gtrr9jx1UZ9bi2w1O6VN7jYO4LUoq1iKRP5AREg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", + "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", "requires": { - "deferred-leveldown": "~4.0.0", + "deferred-leveldown": "~5.3.0", "level-errors": "~2.0.0", - "level-iterator-stream": "~2.0.0", + "level-iterator-stream": "~4.0.0", + "level-supports": "~1.0.0", "xtend": "~4.0.0" - }, - "dependencies": { - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - } } }, "leven": { @@ -6273,11 +6164,6 @@ } } }, - "mkpath": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz", - "integrity": "sha1-dVSm+Nhxg0zJe1RisSLEwSTW3pE=" - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -6421,43 +6307,11 @@ "find-parent-dir": "^0.3.0" } }, - "nodeify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nodeify/-/nodeify-1.0.1.tgz", - "integrity": "sha1-ZKtpp7268DzhB7TwM1yHwLnpGx0=", - "requires": { - "is-promise": "~1.0.0", - "promise": "~1.3.0" - }, - "dependencies": { - "is-promise": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=" - }, - "promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-1.3.0.tgz", - "integrity": "sha1-5cyaTIJ45GZP/twBx9qEhCsEAXU=", - "requires": { - "is-promise": "~1" - } - } - } - }, "noop-logger": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "requires": { - "abbrev": "1" - } - }, "normalize-package-data": { "version": "2.3.5", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.5.tgz", @@ -9813,20 +9667,6 @@ "boolbase": "~1.0.0" } }, - "nugget": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz", - "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", - "requires": { - "debug": "^2.1.3", - "minimist": "^1.1.0", - "pretty-bytes": "^1.0.2", - "progress-stream": "^1.1.0", - "request": "^2.45.0", - "single-line-log": "^1.1.2", - "throttleit": "0.0.2" - } - }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", @@ -9867,11 +9707,6 @@ } } }, - "object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=" - }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -10285,25 +10120,13 @@ } }, "plist": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/plist/-/plist-2.1.0.tgz", - "integrity": "sha1-V8zbeggh3yGDEhejytVOPhRqECU=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", + "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", "requires": { - "base64-js": "1.2.0", - "xmlbuilder": "8.2.2", + "base64-js": "^1.2.3", + "xmlbuilder": "^9.0.7", "xmldom": "0.1.x" - }, - "dependencies": { - "base64-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", - "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=" - }, - "xmlbuilder": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-8.2.2.tgz", - "integrity": "sha1-aSSGc0ELS6QuGmE2VR0pIjNap3M=" - } } }, "posix-character-classes": { @@ -10618,15 +10441,6 @@ "fast-diff": "^1.1.2" } }, - "pretty-bytes": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", - "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", - "requires": { - "get-stdin": "^4.0.1", - "meow": "^3.1.0" - } - }, "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", @@ -10642,15 +10456,6 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, - "progress-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", - "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", - "requires": { - "speedometer": "~0.1.2", - "through2": "~0.2.3" - } - }, "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", @@ -10753,9 +10558,9 @@ } }, "rcedit": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-1.1.2.tgz", - "integrity": "sha512-z2ypB4gbINhI6wVe0JJMmdpmOpmNc4g90sE6/6JSuch5kYnjfz9CxvVPqqhShgR6GIkmtW3W2UlfiXhWljA0Fw==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-2.2.0.tgz", + "integrity": "sha512-dhFtYmQS+V8qQIANyX6zDK+sO50ayDePKApi46ZPK8I6QeyyTDD6LManMa7a3p3c9mLM4zi9QBP41pfhQ9p7Sg==" }, "read-installed": { "version": "3.1.3", @@ -10856,21 +10661,13 @@ } }, "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - } + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } }, "readdir-scoped-modules": { @@ -10926,6 +10723,24 @@ "requires": { "indent-string": "^2.1.0", "strip-indent": "^1.0.1" + }, + "dependencies": { + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "requires": { + "repeating": "^2.0.0" + } + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "requires": { + "is-finite": "^1.0.0" + } + } } }, "regenerate": { @@ -11328,14 +11143,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "sanitize-filename": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz", - "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", - "requires": { - "truncate-utf8-bytes": "^1.0.0" - } - }, "season": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/season/-/season-5.3.0.tgz", @@ -11473,14 +11280,6 @@ "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", "integrity": "sha1-Krt1qt453rXMgVzhDmGRFkhQuvA=" }, - "single-line-log": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", - "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", - "requires": { - "string-width": "^1.0.1" - } - }, "slash": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", @@ -11686,11 +11485,6 @@ "resolved": "https://registry.npmjs.org/specificity/-/specificity-0.3.2.tgz", "integrity": "sha512-Nc/QN/A425Qog7j9aHmwOrlwX2e7pNI47ciwxwy4jOlvbbMHkNNJchit+FX+UjF3IAdiaaV5BKeWuDUnws6G1A==" }, - "speedometer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", - "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=" - }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -11765,9 +11559,19 @@ } }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } }, "stringify-entities": { "version": "1.3.2", @@ -11824,6 +11628,14 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=" }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, "style-search": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", @@ -12481,25 +12293,11 @@ "resolved": "https://registry.npmjs.org/throat/-/throat-2.0.2.tgz", "integrity": "sha1-qfzoCLaeEzpjJZB4DzQsMKYkmwI=" }, - "throttleit": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", - "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=" - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, - "through2": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", - "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", - "requires": { - "readable-stream": "~1.1.9", - "xtend": "~2.1.1" - } - }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", @@ -12614,24 +12412,6 @@ } } }, - "touch": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/touch/-/touch-0.0.3.tgz", - "integrity": "sha1-Ua7z1ElXHU8oel2Hyci0kYGg2x0=", - "requires": { - "nopt": "~1.0.10" - }, - "dependencies": { - "nopt": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", - "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", - "requires": { - "abbrev": "1" - } - } - } - }, "tough-cookie": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", @@ -12647,11 +12427,6 @@ } } }, - "traverse": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", - "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" - }, "trim": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", @@ -12662,6 +12437,14 @@ "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=", + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", @@ -13319,17 +13102,14 @@ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" }, "xmldom": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", - "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", + "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==" }, "xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "requires": { - "object-keys": "~0.4.0" - } + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { "version": "3.2.1", diff --git a/script/package.json b/script/package.json index 337007f27..50762104a 100644 --- a/script/package.json +++ b/script/package.json @@ -13,9 +13,9 @@ "colors": "1.1.2", "donna": "1.0.16", "electron-chromedriver": "^9.0.0", - "electron-link": "0.4.1", + "electron-link": "^0.4.3", "electron-mksnapshot": "^9.0.2", - "electron-packager": "12.2.0", + "electron-packager": "^15.0.0", "eslint": "^5.16.0", "eslint-config-prettier": "^4.2.0", "eslint-config-standard": "^12.0.0", diff --git a/script/test b/script/test index 461d11a43..6da8d3d5b 100755 --- a/script/test +++ b/script/test @@ -65,7 +65,7 @@ if (process.platform === 'darwin') { assertExecutablePaths(executablePaths) executablePath = executablePaths[0] } else { - throw new Error('Running tests on this platform is not supported.') + throw new Error('##[error] Running tests on this platform is not supported.') } function prepareEnv (suiteName) { @@ -96,24 +96,41 @@ function runCoreMainProcessTests (callback) { const testEnv = Object.assign({}, prepareEnv('core-main-process'), {ATOM_GITHUB_INLINE_GIT_EXEC: 'true'}) - console.log('Executing core main process tests'.bold.green) + console.log('##[command] Executing core main process tests'.bold.green) const cp = childProcess.spawn(executablePath, testArguments, {stdio: 'inherit', env: testEnv}) cp.on('error', error => { callback(error) }) - cp.on('close', exitCode => { callback(null, {exitCode, step: 'core-main-process'}) }) + cp.on('close', exitCode => { callback(null, {exitCode, step: 'core-main-process', testCommand: `You can run the test again using: \n\t ${executablePath} ${testArguments.join(' ')}`}) }) } -function runCoreRenderProcessTests (callback) { - const testPath = path.join(CONFIG.repositoryRootPath, 'spec') - const testArguments = [ - '--resource-path', resourcePath, - '--test', testPath - ] - const testEnv = prepareEnv('core-render-process') +// Build an array of functions, each running tests for a different rendering test +const coreRenderProcessTestSuites = [] +const testPath = path.join(CONFIG.repositoryRootPath, 'spec') +let testFiles = glob.sync(path.join(testPath, '*-spec.+(js|coffee|ts|jsx|tsx|mjs)')) +for (let testFile of testFiles) { + coreRenderProcessTestSuites.push( function (callback) { - console.log('Executing core render process tests'.bold.green) - const cp = childProcess.spawn(executablePath, testArguments, {stdio: 'inherit', env: testEnv}) - cp.on('error', error => { callback(error) }) - cp.on('close', exitCode => { callback(null, {exitCode, step: 'core-render-process'}) }) + const testEnv = prepareEnv('core-render-process') + console.log(`##[command] Executing core render process tests for ${testFile}`.bold.green) + const testArguments = [ + '--resource-path', resourcePath, + '--test', testFile + ] + const cp = childProcess.spawn(executablePath, testArguments, { env: testEnv}) + let stderrOutput = '' + cp.stderr.on('data', data => { stderrOutput += data }) + cp.stdout.on('data', data => { stderrOutput += data }) + cp.on('error', error => { + console.log(error, "error") + callback(error) + }) + cp.on('close', exitCode => { + if (exitCode !== 0) { + console.log(`##[error] Renderer tests failed for ${testFile}:`.red) + console.log(stderrOutput) + } + callback(null, {exitCode, step: `core-render-process for ${testFile}.`, testCommand: `You can run the test again using: \n\t ${executablePath} ${testArguments.join(' ')}`}) + }) + }) } // Build an array of functions, each running tests for a different bundled package @@ -145,7 +162,7 @@ for (let packageName in CONFIG.appMetadata.packageDependencies) { const nodeModulesPath = path.join(repositoryPackagePath, 'node_modules') let finalize = () => null if (require(pkgJsonPath).atomTestRunner) { - console.log(`Installing test runner dependencies for ${packageName}`.bold.green) + console.log(`##[command] Installing test runner dependencies for ${packageName}`.bold.green) if (fs.existsSync(nodeModulesPath)) { const backup = backupNodeModules(repositoryPackagePath) finalize = backup.restore @@ -153,9 +170,9 @@ for (let packageName in CONFIG.appMetadata.packageDependencies) { finalize = () => fs.removeSync(nodeModulesPath) } runApmInstall(repositoryPackagePath) - console.log(`Executing ${packageName} tests`.green) + console.log(`##[command] Executing ${packageName} tests`.green) } else { - console.log(`Executing ${packageName} tests`.bold.green) + console.log(`##[command] Executing ${packageName} tests`.bold.green) } const cp = childProcess.spawn(executablePath, testArguments, {env: testEnv}) @@ -169,11 +186,11 @@ for (let packageName in CONFIG.appMetadata.packageDependencies) { }) cp.on('close', exitCode => { if (exitCode !== 0) { - console.log(`Package tests failed for ${packageName}:`.red) + console.log(`##[error] Package tests failed for ${packageName}:`.red) console.log(stderrOutput) } finalize() - callback(null, {exitCode, step: `package-${packageName}`}) + callback(null, {exitCode, step: `package-${packageName}.`, testCommand: `You can run the test again using: \n\t ${executablePath} ${testArguments.join(' ')}`}) }) }) } @@ -183,61 +200,89 @@ function runBenchmarkTests (callback) { const testArguments = ['--benchmark-test', benchmarksPath] const testEnv = prepareEnv('benchmark') - console.log('Executing benchmark tests'.bold.green) + console.log('##[command] Executing benchmark tests'.bold.green) const cp = childProcess.spawn(executablePath, testArguments, {stdio: 'inherit', env: testEnv}) cp.on('error', error => { callback(error) }) - cp.on('close', exitCode => { callback(null, {exitCode, step: 'core-benchmarks'}) }) + cp.on('close', exitCode => { callback(null, {exitCode, step: 'core-benchmarks', testCommand: `You can run the test again using: \n\t ${executablePath} ${testArguments.join(' ')}`}) }) } -let testSuitesToRun = requestedTestSuites() || testSuitesForPlatform(process.platform) +let testSuitesToRun = requestedTestSuites(process.platform) -function requestedTestSuites () { - const suites = [] - if (argv.coreMain) { - suites.push(runCoreMainProcessTests) - } - if (argv.coreRenderer) { - suites.push(runCoreRenderProcessTests) - } - if (argv.coreBenchmark) { - suites.push(runBenchmarkTests) - } - if (argv.package) { - suites.push(...packageTestSuites) - } - return suites.length > 0 ? suites : null -} +function requestedTestSuites (platform) { + // env variable or argv options + let coreAll = process.env.ATOM_RUN_CORE_TESTS === 'true' + let coreMain = process.env.ATOM_RUN_CORE_MAIN_TESTS === 'true' || argv.coreMain + let coreRenderer = argv.coreRenderer || process.env.ATOM_RUN_CORE_RENDER_TESTS == 'true' + let coreRenderer1 = process.env.ATOM_RUN_CORE_RENDER_TESTS === '1' + let coreRenderer2 = process.env.ATOM_RUN_CORE_RENDER_TESTS === '2' + let packageAll = argv.package || process.env.ATOM_RUN_PACKAGE_TESTS == 'true' + let packages1 = process.env.ATOM_RUN_PACKAGE_TESTS === '1' + let packages2 = process.env.ATOM_RUN_PACKAGE_TESTS === '2' + let benchmark = argv.coreBenchmark + + // Operating system overrides: + coreMain = coreMain || (platform === 'linux') || (platform === 'win32' && process.arch === 'x86') + + // split package tests (used for macos in CI) + const PACKAGES_TO_TEST_IN_PARALLEL = 23 + // split core render test (used for windows x64 in CI) + const CORE_RENDER_TO_TEST_IN_PARALLEL = 45 -function testSuitesForPlatform (platform) { let suites = [] - switch (platform) { - case 'darwin': - const PACKAGES_TO_TEST_IN_PARALLEL = 23 + // Core tess + if (coreAll) { + suites.push(...[runCoreMainProcessTests, ...coreRenderProcessTestSuites]) + } else { - if (process.env.ATOM_RUN_CORE_TESTS === 'true') { - suites = [runCoreMainProcessTests, runCoreRenderProcessTests] - } else if (process.env.ATOM_RUN_PACKAGE_TESTS === '1') { - suites = packageTestSuites.slice(0, PACKAGES_TO_TEST_IN_PARALLEL) - } else if (process.env.ATOM_RUN_PACKAGE_TESTS === '2') { - suites = packageTestSuites.slice(PACKAGES_TO_TEST_IN_PARALLEL) - } else { - suites = [runCoreMainProcessTests, runCoreRenderProcessTests].concat(packageTestSuites) + // Core main tests + if (coreMain) { + suites.push(runCoreMainProcessTests) + } + + // Core renderer tests + if (coreRenderer) { + suites.push(...coreRenderProcessTestSuites) + } else { + // split + if (coreRenderer1) { + suites.push(...coreRenderProcessTestSuites.slice(0, CORE_RENDER_TO_TEST_IN_PARALLEL)) } - break - case 'win32': - suites = (process.arch === 'x64') ? [runCoreMainProcessTests, runCoreRenderProcessTests] : [runCoreMainProcessTests] - break - case 'linux': - suites = [runCoreMainProcessTests] - break - default: - console.log(`Unrecognized platform: ${platform}`) + if (coreRenderer2) { + suites.push(...coreRenderProcessTestSuites.slice(CORE_RENDER_TO_TEST_IN_PARALLEL)) + } + } + + } + + // Package tests + if (packageAll) { + suites.push(...packageTestSuites) + } else { + // split + if (packages1) { + suites.push(...packageTestSuites.slice(0, PACKAGES_TO_TEST_IN_PARALLEL)) + } + if (packages2) { + suites.push(...packageTestSuites.slice(PACKAGES_TO_TEST_IN_PARALLEL)) + } + } + + // Benchmark tests + if (benchmark) { + suites.push(runBenchmarkTests) } if (argv.skipMainProcessTests) { suites = suites.filter(suite => suite !== runCoreMainProcessTests) } + // Remove duplicates + suites = Array.from(new Set(suites)) + + if (suites.length == 0) { + throw new Error("No tests was requested") + } + return suites } @@ -248,10 +293,14 @@ async.series(testSuitesToRun, function (err, results) { } else { const failedSteps = results.filter(({exitCode}) => exitCode !== 0) - for (const {step} of failedSteps) { - console.error(`Error! The '${step}' test step finished with a non-zero exit code`) + if (failedSteps.length > 0) { + console.warn("##[error] \n \n *** Reporting the errors that happened in all of the tests: *** \n \n") + for (const {step, testCommand} of failedSteps) { + console.error(`##[error] The '${step}' test step finished with a non-zero exit code \n ${testCommand}`) + } + process.exit(1) } - process.exit(failedSteps.length === 0 ? 0 : 1) + process.exit(0) } }) diff --git a/script/vsts/get-release-version.js b/script/vsts/get-release-version.js index 159128eed..5ddf3659b 100644 --- a/script/vsts/get-release-version.js +++ b/script/vsts/get-release-version.js @@ -4,6 +4,10 @@ const request = require('request-promise-native'); const repositoryRootPath = path.resolve(__dirname, '..', '..'); const appMetadata = require(path.join(repositoryRootPath, 'package.json')); +const REPO_OWNER = process.env.REPO_OWNER || 'atom'; +const NIGHTLY_RELEASE_REPO = + process.env.NIGHTLY_RELEASE_REPO || 'atom-nightly-releases'; + const yargs = require('yargs'); const argv = yargs .usage('Usage: $0 [options]') @@ -26,7 +30,7 @@ async function getReleaseVersion() { let releaseVersion = process.env.ATOM_RELEASE_VERSION || appMetadata.version; if (argv.nightly) { const releases = await request({ - url: 'https://api.github.com/repos/atom/atom-nightly-releases/releases', + url: `https://api.github.com/repos/${REPO_OWNER}/${NIGHTLY_RELEASE_REPO}/releases`, headers: { Accept: 'application/vnd.github.v3+json', 'User-Agent': 'Atom Release Build' @@ -78,6 +82,7 @@ async function getReleaseVersion() { buildBranch.startsWith('electron-') || (buildBranch === 'master' && !process.env.SYSTEM_PULLREQUEST_PULLREQUESTNUMBER)); + const SHOULD_SIGN = process.env.SHOULD_SIGN; console.log( `##vso[task.setvariable variable=AppName;isOutput=true]${getAppName( @@ -90,6 +95,9 @@ async function getReleaseVersion() { console.log( `##vso[task.setvariable variable=IsSignedZipBranch;isOutput=true]${isSignedZipBranch}` ); + console.log( + `##vso[task.setvariable variable=SHOULD_SIGN;isOutput=true]${SHOULD_SIGN}` + ); } getReleaseVersion(); diff --git a/script/vsts/lib/release-notes.js b/script/vsts/lib/release-notes.js index 144518d17..1901e9a16 100644 --- a/script/vsts/lib/release-notes.js +++ b/script/vsts/lib/release-notes.js @@ -3,6 +3,11 @@ const octokit = require('@octokit/rest')(); const changelog = require('pr-changelog'); const childProcess = require('child_process'); +const REPO_OWNER = process.env.REPO_OWNER || 'atom'; +const MAIN_REPO = process.env.MAIN_REPO || 'atom'; +const NIGHTLY_RELEASE_REPO = + process.env.NIGHTLY_RELEASE_REPO || 'atom-nightly-releases'; + module.exports.getRelease = async function(releaseVersion, githubToken) { if (githubToken) { octokit.authenticate({ @@ -12,8 +17,8 @@ module.exports.getRelease = async function(releaseVersion, githubToken) { } const releases = await octokit.repos.getReleases({ - owner: 'atom', - repo: 'atom' + owner: REPO_OWNER, + repo: MAIN_REPO }); const release = releases.data.find(r => semver.eq(r.name, releaseVersion)); @@ -49,16 +54,16 @@ module.exports.generateForVersion = async function( oldVersionName = `v${parsedVersion.major}.${parsedVersion.minor - 1}.0`; } else { let releases = await octokit.repos.getReleases({ - owner: 'atom', - repo: 'atom' + owner: REPO_OWNER, + repo: MAIN_REPO }); oldVersion = 'v' + getPreviousRelease(releaseVersion, releases.data).name; oldVersionName = oldVersion; } const allChangesText = await changelog.getChangelog({ - owner: 'atom', - repo: 'atom', + owner: REPO_OWNER, + repo: MAIN_REPO, fromTag: oldVersion, toTag: newVersionBranch, dependencyKey: 'packageDependencies', @@ -71,7 +76,7 @@ module.exports.generateForVersion = async function( }) { let prString = changelog.pullRequestsToString(pullRequests); let title = repo; - if (repo === 'atom') { + if (repo === MAIN_REPO) { title = 'Atom Core'; fromTag = oldVersionName; toTag = releaseVersion; @@ -110,13 +115,13 @@ module.exports.generateForNightly = async function( const latestCommit = latestCommitResult.stdout.toString().trim(); const output = [ - `### This nightly release is based on https://github.com/atom/atom/commit/${latestCommit} :atom: :night_with_stars:` + `### This nightly release is based on https://github.com/${REPO_OWNER}/${MAIN_REPO}/commit/${latestCommit} :atom: :night_with_stars:` ]; try { const releases = await octokit.repos.getReleases({ - owner: 'atom', - repo: 'atom-nightly-releases' + owner: REPO_OWNER, + repo: NIGHTLY_RELEASE_REPO }); const previousRelease = getPreviousRelease(releaseVersion, releases.data); @@ -139,7 +144,7 @@ module.exports.generateForNightly = async function( output.push('No changes have been included in this release'); } else { output.push( - `Click [here](https://github.com/atom/atom/compare/${previousCommit}...${latestCommit}) to see the changes included with this release!` + `Click [here](https://github.com/${REPO_OWNER}/${MAIN_REPO}/compare/${previousCommit}...${latestCommit}) to see the changes included with this release!` ); } } diff --git a/script/vsts/nightly-release.yml b/script/vsts/nightly-release.yml index 9e26a05ae..8d56e64e5 100644 --- a/script/vsts/nightly-release.yml +++ b/script/vsts/nightly-release.yml @@ -1,14 +1,8 @@ jobs: - - job: GetReleaseVersion - steps: - # This has to be done separately because VSTS inexplicably - # exits the script block after `npm install` completes. - - script: | - cd script\vsts - npm install - displayName: npm install - - script: node script\vsts\get-release-version.js --nightly - name: Version + # GetReleaseVersion for nightly release + - template: platforms/templates/get-release-version.yml + parameters: + NightlyFlag: --nightly # Import OS-specific build definitions - template: platforms/windows.yml @@ -18,11 +12,11 @@ jobs: - job: Release pool: - vmImage: vs2017-win2016 + vmImage: 'ubuntu-latest' dependsOn: - GetReleaseVersion - - Windows + - Windows_RendererTests - Linux - macOS_tests @@ -30,17 +24,12 @@ jobs: ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ] steps: - - task: NodeTool@0 - inputs: - versionSpec: 12.13.1 - displayName: Install Node.js 12.13.1 + - template: platforms/templates/preparation.yml - #This has to be done separately because VSTS inexplicably - #exits the script block after `npm install` completes. - script: | - cd script\vsts - npm install - displayName: npm install + cd script/vsts + npm ci + displayName: npm ci - task: DownloadBuildArtifacts@0 inputs: @@ -49,7 +38,7 @@ jobs: displayName: Download Release Artifacts - script: | - node $(Build.SourcesDirectory)\script\vsts\upload-artifacts.js --create-github-release --assets-path "$(System.ArtifactsDirectory)" --linux-repo-name "atom" + node $(Build.SourcesDirectory)/script/vsts/upload-artifacts.js --create-github-release --assets-path "$(System.ArtifactsDirectory)" --linux-repo-name "atom" env: GITHUB_TOKEN: $(GITHUB_TOKEN) ATOM_RELEASE_VERSION: $(ReleaseVersion) @@ -66,23 +55,15 @@ jobs: vmImage: macos-10.14 steps: - - task: NodeTool@0 - inputs: - versionSpec: 12.13.1 - displayName: Install Node.js 12.13.1 + - template: platforms/templates/preparation.yml - - script: npm install --global npm@6.12.1 - displayName: Update npm + - template: platforms/templates/bootstrap.yml - - script: | - script/bootstrap - displayName: Bootstrap - - - script: | + - script: | cd script/lib - npm install - displayName: npm install - - script: | + npm ci + displayName: npm ci + - script: | cd script/lib/update-dependency node index.js displayName: Bump depedencies diff --git a/script/vsts/platforms/linux.yml b/script/vsts/platforms/linux.yml index 7342e3eee..c6995819a 100644 --- a/script/vsts/platforms/linux.yml +++ b/script/vsts/platforms/linux.yml @@ -5,117 +5,33 @@ jobs: variables: ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ] pool: - # This image is used to host the Docker container that runs the build vmImage: ubuntu-16.04 - container: ubuntu:trusty steps: - - script: | - sudo apt-get update - sudo apt-get install -y wget software-properties-common - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - sudo apt-add-repository "deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-5.0 main" - sudo apt-get update - sudo apt-get install -y build-essential ca-certificates clang-5.0 xvfb fakeroot git libsecret-1-dev rpm libx11-dev libxkbfile-dev xz-utils xorriso zsync libxss1 libgconf2-4 libgtk-3-0 libasound2 libicu-dev - displayName: Install apt dependencies + - template: templates/preparation.yml - - script: sudo /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16 - displayName: Start Xvfb + - template: templates/cache.yml + parameters: + OS: linux - - task: NodeTool@0 - inputs: - versionSpec: 12.13.1 - displayName: Install Node.js 12.13.1 - - - script: npm install --global npm@6.12.1 - displayName: Update npm - - - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 - displayName: Restore node_modules cache - inputs: - keyfile: 'package.json, script/vsts/platforms/linux.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - - - script: script/bootstrap - displayName: Bootstrap build environment - env: - CI: true - CI_PROVIDER: VSTS - CC: clang-5.0 - CXX: clang++-5.0 - npm_config_clang: 1 - condition: ne(variables['CacheRestored'], 'true') - - - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 - displayName: Save node_modules cache - inputs: - keyfile: 'package.json, script/vsts/platforms/linux.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + - template: templates/bootstrap.yml - script: script/lint displayName: Run linter - - - script: script/build --no-bootstrap --create-debian-package --create-rpm-package --compress-artifacts - env: - GITHUB_TOKEN: $(GITHUB_TOKEN) - ATOM_RELEASE_VERSION: $(ReleaseVersion) - CC: clang-5.0 - CXX: clang++-5.0 - npm_config_clang: 1 - displayName: Build Atom - - script: | - sudo chown root ./out/atom*-amd64/chrome-sandbox - sudo chmod 4755 ./out/atom*-amd64/chrome-sandbox - displayName: Tweaking chrome-sandbox binary + - template: templates/build.yml - - script: script/test - env: - CI: true - CI_PROVIDER: VSTS - ATOM_JASMINE_REPORTER: list - TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit - DISPLAY: :99.0 - displayName: Run tests - condition: and(succeeded(), ne(variables['Atom.SkipTests'], 'true')) + - template: templates/test.yml - - script: script/postprocess-junit-results --search-folder "${TEST_JUNIT_XML_ROOT}" --test-results-files "**/*.xml" - env: - TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit - displayName: Post-process test results - condition: ne(variables['Atom.SkipTests'], 'true') - - - task: PublishTestResults@2 - inputs: - testResultsFormat: JUnit - searchFolder: $(Common.TestResultsDirectory)/junit - testResultsFiles: '**/*.xml' - mergeTestResults: true - testRunTitle: Linux - condition: ne(variables['Atom.SkipTests'], 'true') - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/atom.x86_64.rpm - ArtifactName: atom.x86_64.rpm - ArtifactType: Container - displayName: Upload atom.x84_64.rpm - condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/atom-amd64.deb - ArtifactName: atom-amd64.deb - ArtifactType: Container - displayName: Upload atom-amd64.deb - condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/atom-amd64.tar.gz - ArtifactName: atom-amd64.tar.gz - ArtifactType: Container - displayName: Upload atom-amd64.tar.gz - condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) + - template: templates/publish.yml + parameters: + artifacts: + - filename: atom.x86_64.rpm + dir: $(Build.SourcesDirectory)/out + condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) + - filename: atom-amd64.deb + dir: $(Build.SourcesDirectory)/out + condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) + - filename: atom-amd64.tar.gz + dir: $(Build.SourcesDirectory)/out + condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) diff --git a/script/vsts/platforms/macos.yml b/script/vsts/platforms/macos.yml index a63faa770..cd9b08fe8 100644 --- a/script/vsts/platforms/macos.yml +++ b/script/vsts/platforms/macos.yml @@ -8,90 +8,43 @@ jobs: ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ] IsReleaseBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsReleaseBranch'] ] IsSignedZipBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsSignedZipBranch'] ] + RunCoreMainTests: true pool: vmImage: macos-10.14 steps: - - task: NodeTool@0 - inputs: - versionSpec: 12.13.1 - displayName: Install Node.js 12.13.1 + - template: templates/preparation.yml - - script: npm install --global npm@6.12.1 - displayName: Update npm + - template: templates/cache.yml + parameters: + OS: macos - - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 - displayName: Restore node_modules cache - inputs: - keyfile: 'package.json, script/vsts/platforms/macos.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - - - script: script/bootstrap - displayName: Bootstrap build environment - env: - CI: true - CI_PROVIDER: VSTS - NPM_BIN_PATH: /usr/local/bin/npm - npm_config_build_from_source: true - condition: ne(variables['CacheRestored'], 'true') - - - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 - displayName: Save node_modules cache - inputs: - keyfile: 'package.json, script/vsts/platforms/macos.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + - template: templates/bootstrap.yml - script: script/lint displayName: Run linter - - script: | - if [ $IS_RELEASE_BRANCH == "true" ] || [ $IS_SIGNED_ZIP_BRANCH == "true" ]; then - script/build --no-bootstrap --code-sign --compress-artifacts - else - script/build --no-bootstrap --compress-artifacts - fi - displayName: Build Atom - env: - GITHUB_TOKEN: $(GITHUB_TOKEN) - IS_RELEASE_BRANCH: $(IsReleaseBranch) - IS_SIGNED_ZIP_BRANCH: $(IsSignedZipBranch) - ATOM_RELEASE_VERSION: $(ReleaseVersion) - ATOM_MAC_CODE_SIGNING_CERT_DOWNLOAD_URL: $(ATOM_MAC_CODE_SIGNING_CERT_DOWNLOAD_URL) - ATOM_MAC_CODE_SIGNING_CERT_PASSWORD: $(ATOM_MAC_CODE_SIGNING_CERT_PASSWORD) - ATOM_MAC_CODE_SIGNING_KEYCHAIN: $(ATOM_MAC_CODE_SIGNING_KEYCHAIN) - ATOM_MAC_CODE_SIGNING_KEYCHAIN_PASSWORD: $(ATOM_MAC_CODE_SIGNING_KEYCHAIN_PASSWORD) - AC_USER: $(AC_USER) - AC_PASSWORD: $(AC_PASSWORD) + - template: templates/build.yml + + # core main tests + - template: templates/test.yml - script: | cp $(Build.SourcesDirectory)/out/*.zip $(Build.ArtifactStagingDirectory) displayName: Stage Artifacts - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.ArtifactStagingDirectory)/atom-mac.zip - ArtifactName: atom-mac.zip - ArtifactType: Container - displayName: Upload atom-mac.zip - condition: succeeded() - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.ArtifactStagingDirectory)/atom-mac-symbols.zip - ArtifactName: atom-mac-symbols.zip - ArtifactType: Container - displayName: Upload atom-mac-symbols.zip - condition: succeeded() - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/docs/output/atom-api.json - ArtifactName: atom-api.json - ArtifactType: Container - displayName: Upload atom-api.json - condition: succeeded() + - template: templates/publish.yml + parameters: + artifacts: + - filename: atom-mac.zip + dir: $(Build.ArtifactStagingDirectory) + condition: succeeded() + - filename: atom-mac-symbols.zip + dir: $(Build.ArtifactStagingDirectory) + condition: succeeded() + - filename: atom-api.json + dir: $(Build.SourcesDirectory)/docs/output + condition: succeeded() - job: macOS_tests displayName: macOS test @@ -102,8 +55,8 @@ jobs: strategy: maxParallel: 3 matrix: - core: - RunCoreTests: true + renderer: + RunCoreRendererTests: true RunPackageTests: false packages-1: RunCoreTests: false @@ -113,88 +66,20 @@ jobs: RunPackageTests: 2 steps: - - task: NodeTool@0 - inputs: - versionSpec: 12.13.1 - displayName: Install Node.js 12.13.1 + - template: templates/preparation.yml - - script: npm install --global npm@6.12.1 - displayName: Update npm - - - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 - displayName: Restore node_modules cache - inputs: - keyfile: 'package.json, script/vsts/platforms/macos.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' + - template: templates/cache.yml + parameters: + OS: macos # The artifact caching task does not work on forks, so we need to # bootstrap again for pull requests coming from forked repositories. - - script: script/bootstrap - displayName: Bootstrap build environment - env: - CI: true - CI_PROVIDER: VSTS - NPM_BIN_PATH: /usr/local/bin/npm - npm_config_build_from_source: true + - template: templates/bootstrap.yml - condition: ne(variables['CacheRestored'], 'true') + - template: templates/download-unzip.yml + parameters: + artifacts: + - atom-mac.zip + - atom-mac-symbols.zip - - task: DownloadBuildArtifacts@0 - displayName: Download atom-mac.zip - inputs: - artifactName: 'atom-mac.zip' - downloadPath: $(Build.SourcesDirectory) - - - script: unzip atom-mac.zip/atom-mac.zip -d out - displayName: Unzip atom-mac.zip - - - task: DownloadBuildArtifacts@0 - displayName: Download atom-mac-symbols.zip - inputs: - artifactName: 'atom-mac-symbols.zip' - downloadPath: $(Build.SourcesDirectory) - - - script: unzip atom-mac-symbols.zip/atom-mac-symbols.zip -d out - displayName: Unzip atom-mac-symbols.zip - - - script: | - osascript -e 'tell application "System Events" to keystroke "x"' # clear screen saver - caffeinate -s script/test # Run with caffeinate to prevent screen saver - env: - CI: true - CI_PROVIDER: VSTS - ATOM_JASMINE_REPORTER: list - TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit - ATOM_RUN_CORE_TESTS: $(RunCoreTests) - ATOM_RUN_PACKAGE_TESTS: $(RunPackageTests) - displayName: Run tests - condition: and(succeeded(), ne(variables['Atom.SkipTests'], 'true')) - - - script: script/postprocess-junit-results --search-folder "${TEST_JUNIT_XML_ROOT}" --test-results-files "**/*.xml" - env: - TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit - displayName: Post-process test results - condition: ne(variables['Atom.SkipTests'], 'true') - - - task: PublishTestResults@2 - inputs: - testResultsFormat: JUnit - searchFolder: $(Common.TestResultsDirectory)/junit - testResultsFiles: '**/*.xml' - mergeTestResults: true - testRunTitle: MacOS - condition: ne(variables['Atom.SkipTests'], 'true') - - - script: | - mkdir -p $(Build.ArtifactStagingDirectory)/crash-reports - cp ${HOME}/Library/Logs/DiagnosticReports/*.crash $(Build.ArtifactStagingDirectory)/crash-reports - displayName: Stage Crash Reports - condition: failed() - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.ArtifactStagingDirectory)/crash-reports - ArtifactName: crash-reports.zip - displayName: Upload Crash Reports - condition: failed() + - template: templates/test.yml diff --git a/script/vsts/platforms/templates/bootstrap.yml b/script/vsts/platforms/templates/bootstrap.yml new file mode 100644 index 000000000..433936711 --- /dev/null +++ b/script/vsts/platforms/templates/bootstrap.yml @@ -0,0 +1,31 @@ +steps: + - pwsh: | + # OS specific env variables + if ($env:AGENT_OS -eq "Windows_NT") { + $env:NPM_BIN_PATH="C:/hostedtoolcache/windows/node/12.4.0/x64/npm.cmd" + $env:npm_config_build_from_source=true + } + if ($env:AGENT_OS -eq "Darwin") { + $env:NPM_BIN_PATH="/Users/runner/hostedtoolcache/node/12.4.0/x64/bin/npm" + $env:npm_config_build_from_source=true + } + if ($env:AGENT_OS -eq "Linux") { + $env:NPM_BIN_PATH="/usr/local/bin/npm" + $env:CC=clang + $env:CXX=clang++ + $env:npm_config_clang=1 + } + + # Bootstrap + if (($env:AGENT_OS -eq "Windows_NT") -and ($env:BUILD_ARCH -eq "x86")) { + node 'script\vsts\windows-run.js' 'script\bootstrap.cmd' + } + else { + script/bootstrap + } + displayName: Bootstrap build environment + env: + GITHUB_TOKEN: $(GITHUB_TOKEN) + CI: true + CI_PROVIDER: VSTS + condition: or(ne(variables['MainNodeModulesRestored'], 'true'), ne(variables['ScriptNodeModulesRestored'], 'true'), ne(variables['ApmNodeModulesRestored'], 'true')) diff --git a/script/vsts/platforms/templates/build.yml b/script/vsts/platforms/templates/build.yml new file mode 100644 index 000000000..e4eac6e64 --- /dev/null +++ b/script/vsts/platforms/templates/build.yml @@ -0,0 +1,58 @@ +steps: + - pwsh: | + # OS specific env variables + if ($env:AGENT_OS -eq "Windows_NT") { + $env:SQUIRREL_TEMP="C:/tmp" + $env:npm_config_build_from_source=true + $ATOM_WIN_CODE_SIGNING_CERT_DOWNLOAD_URL=$env:ATOM_WIN_CODE_SIGNING_CERT_DOWNLOAD_URL + $ATOM_WIN_CODE_SIGNING_CERT_PASSWORD=$env:ATOM_WIN_CODE_SIGNING_CERT_PASSWORD + } + if ($env:AGENT_OS -eq "Darwin") { + $ATOM_MAC_CODE_SIGNING_CERT_DOWNLOAD_URL=$env:ATOM_MAC_CODE_SIGNING_CERT_DOWNLOAD_URL + $ATOM_MAC_CODE_SIGNING_CERT_PASSWORD=$env:ATOM_MAC_CODE_SIGNING_CERT_PASSWORD + $ATOM_MAC_CODE_SIGNING_KEYCHAIN=$env:ATOM_MAC_CODE_SIGNING_KEYCHAIN + $ATOM_MAC_CODE_SIGNING_KEYCHAIN_PASSWORD=$env:ATOM_MAC_CODE_SIGNING_KEYCHAIN_PASSWORD + $AC_USER=$env:AC_USER + $AC_PASSWORD=$env:AC_PASSWORD + } + if ($env:AGENT_OS -eq "Linux") { + $env:CC=clang + $env:CXX=clang++ + $env:npm_config_clang=1 + $env:LinuxArgs="--create-debian-package --create-rpm-package" + $env:SHOULD_SIGN="false" + } + + # Build Arguments + ## Creation of Windows Installaer + if ($env:AGENT_OS -eq "Windows_NT") { + mkdir -f -p $env:SQUIRREL_TEMP + if ($env:IS_RELEASE_BRANCH -eq "true") { + $CreateWindowsInstallaer="--create-windows-installer" + } + } + + ## Code Sign + if ( ($env:SHOULD_SIGN -eq "true") -and (($env:IS_RELEASE_BRANCH -eq "true") -or ($env:IS_SIGNED_ZIP_BRANCH -eq "true")) ) { + $CodeSign="--code-sign" + } + + # Build + $esc = '--%' + if (($env:AGENT_OS -eq "Windows_NT") -and ($env:BUILD_ARCH -eq "x86")) { + node 'script\vsts\windows-run.js' 'script\build.cmd' --no-bootstrap --compress-artifacts $esc $CodeSign $CreateWindowsInstallaer + } else { + script/build --no-bootstrap --compress-artifacts $esc $env:LinuxArgs $CodeSign $CreateWindowsInstallaer + } + displayName: Build Atom + env: + GITHUB_TOKEN: $(GITHUB_TOKEN) + IS_RELEASE_BRANCH: $(IsReleaseBranch) + IS_SIGNED_ZIP_BRANCH: $(IsSignedZipBranch) + ATOM_RELEASE_VERSION: $(ReleaseVersion) + + - script: | + sudo chown root ./out/atom*-amd64/chrome-sandbox + sudo chmod 4755 ./out/atom*-amd64/chrome-sandbox + displayName: Tweaking chrome-sandbox binary + condition: eq(variables['Agent.OS'], 'Linux') diff --git a/script/vsts/platforms/templates/cache.yml b/script/vsts/platforms/templates/cache.yml new file mode 100644 index 000000000..37683f403 --- /dev/null +++ b/script/vsts/platforms/templates/cache.yml @@ -0,0 +1,30 @@ +parameters: + - name: OS + displayName: Operating System + type: string + values: + - windows + - linux + - macos + +steps: + - task: Cache@2 + displayName: Cache node_modules + inputs: + key: 'npm | "$(Agent.OS)" | "$(BUILD_ARCH)" | package.json, package-lock.json, script/vsts/platforms/${{ parameters.OS }}.yml' + path: 'node_modules' + cacheHitVar: MainNodeModulesRestored + + - task: Cache@2 + displayName: Cache script/node_modules + inputs: + key: 'npm | "$(Agent.OS)" | "$(BUILD_ARCH)" | script/package.json, script/package-lock.json, script/vsts/platforms/${{ parameters.OS }}.yml' + path: 'script/node_modules' + cacheHitVar: ScriptNodeModulesRestored + + - task: Cache@2 + displayName: Cache apm/node_modules + inputs: + key: 'npm | "$(Agent.OS)" | "$(BUILD_ARCH)" | apm/package.json, apm/package-lock.json, script/vsts/platforms/${{ parameters.OS }}.yml' + path: 'apm/node_modules' + cacheHitVar: ApmNodeModulesRestored diff --git a/script/vsts/platforms/templates/download-unzip.yml b/script/vsts/platforms/templates/download-unzip.yml new file mode 100644 index 000000000..3076374b9 --- /dev/null +++ b/script/vsts/platforms/templates/download-unzip.yml @@ -0,0 +1,18 @@ +parameters: + - name: artifacts + type: object + default: {} + - name: downloadPath + type: string + default: $(Build.SourcesDirectory) + +steps: + - ${{ each artifact in parameters.artifacts }}: + - task: DownloadBuildArtifacts@0 + displayName: Download ${{artifact}} + inputs: + artifactName: ${{artifact}} + downloadPath: ${{parameters.downloadPath}} + + - script: unzip ${{artifact}}/${{artifact}} -d out + displayName: Unzip ${{artifact}} diff --git a/script/vsts/platforms/templates/get-release-version.yml b/script/vsts/platforms/templates/get-release-version.yml new file mode 100644 index 000000000..5f2176450 --- /dev/null +++ b/script/vsts/platforms/templates/get-release-version.yml @@ -0,0 +1,19 @@ +parameters: + - name: NightlyFlag + type: string + values: + - ' ' + - --nightly + default: ' ' + +jobs: + +- job: GetReleaseVersion + pool: + vmImage: 'ubuntu-latest' + steps: + - script: | + cd script/vsts + npm ci + node get-release-version.js ${{ parameters.NightlyFlag }} + name: Version diff --git a/script/vsts/platforms/templates/preparation.yml b/script/vsts/platforms/templates/preparation.yml new file mode 100644 index 000000000..1915b11ff --- /dev/null +++ b/script/vsts/platforms/templates/preparation.yml @@ -0,0 +1,67 @@ +steps: + + # Linux Specific + - script: | + sudo apt-get update + sudo apt-get install -y wget software-properties-common + sudo apt-get install -y build-essential ca-certificates xvfb fakeroot git libsecret-1-dev rpm libx11-dev libxkbfile-dev xz-utils xorriso zsync libxss1 libgconf2-4 libgtk-3-0 libasound2 libicu-dev + # clang 9 is included in the image + sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-9 10 + sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-9 10 + sudo update-alternatives --config clang + sudo update-alternatives --config clang++ + clang -v + displayName: Install apt dependencies + condition: eq(variables['Agent.OS'], 'Linux') + + + - script: sudo /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16 + displayName: Start Xvfb + condition: eq(variables['Agent.OS'], 'Linux') + + # Common + - task: NodeTool@0 + inputs: + versionSpec: 12.4.0 + displayName: Install Node.js 12.4.0 + + - script: npm install --global npm@6.9.0 + displayName: Update npm + condition: ne(variables['Agent.OS'], 'Darwin') + + - pwsh: | + if ($env:AGENT_OS -eq "Windows_NT") { + $env:BUILD_ARCH=$env:buildArch + echo "##vso[task.setvariable variable=BUILD_ARCH]$env:BUILD_ARCH" # Azure syntax + } + echo BUILD_ARCH: $env:BUILD_ARCH + displayName: Setting globally used env variables + + # Windows Specific + - task: UsePythonVersion@0 + inputs: + versionSpec: '3.8' + condition: eq(variables['Agent.OS'], 'Windows_NT') + + - script: | + ECHO Installing npm-windows-upgrade + npm install --global --production npm-windows-upgrade + displayName: Install npm-windows-upgrade + condition: eq(variables['Agent.OS'], 'Windows_NT') + + - script: | + ECHO Upgrading npm + npm-windows-upgrade --no-spinner --no-prompt --npm-version 6.9.0 + displayName: Install npm 6.9.0 + condition: eq(variables['Agent.OS'], 'Windows_NT') + + - script: | + npm install --global --production windows-build-tools@4.0 + displayName: Install windows build tools + condition: eq(variables['Agent.OS'], 'Windows_NT') + + - script: | + cd script\vsts + npm install + displayName: Install Windows build dependencies + condition: eq(variables['Agent.OS'], 'Windows_NT') diff --git a/script/vsts/platforms/templates/publish.yml b/script/vsts/platforms/templates/publish.yml new file mode 100644 index 000000000..b7c294a34 --- /dev/null +++ b/script/vsts/platforms/templates/publish.yml @@ -0,0 +1,16 @@ +parameters: + - name: artifacts + type: object + +steps: + - ${{ each artifact in parameters.artifacts }}: + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: ${{artifact.dir}}/${{artifact.filename}} + ArtifactName: ${{artifact.filename}} + ArtifactType: Container + displayName: Upload ${{artifact.filename}} + ${{ if artifact.condition }}: + condition: ${{artifact.condition}} + ${{ if artifact.continueOnError }}: + continueOnError: ${{artifact.continueOnError}} diff --git a/script/vsts/platforms/templates/test.yml b/script/vsts/platforms/templates/test.yml new file mode 100644 index 000000000..5e85643b7 --- /dev/null +++ b/script/vsts/platforms/templates/test.yml @@ -0,0 +1,85 @@ +steps: + - pwsh: | + # OS specific env variables + if ($env:AGENT_OS -eq "Linux") { + $env:DISPLAY=":99.0" + $env:npm_config_build_from_source=true + } + + # Test + if ($env:AGENT_OS -eq "Darwin") { + osascript -e 'tell application "System Events" to keystroke "x"' # clear screen saver + caffeinate -s script/test # Run with caffeinate to prevent screen saver + } elseif (($env:AGENT_OS -eq "Windows_NT") -and ($env:BUILD_ARCH -eq "x86")) { + node 'script\vsts\windows-run.js' 'script\test.cmd' + } else { + script/test + } + env: + CI: true + CI_PROVIDER: VSTS + ATOM_JASMINE_REPORTER: list + TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit + ATOM_RUN_CORE_TESTS: $(RunCoreTests) + ATOM_RUN_CORE_MAIN_TESTS: $(RunCoreMainTests) + ATOM_RUN_CORE_RENDER_TESTS: $(RunCoreRendererTests) + ATOM_RUN_PACKAGE_TESTS: $(RunPackageTests) + displayName: Run tests + condition: and(succeeded(), ne(variables['Atom.SkipTests'], 'true')) + + # Test results + - pwsh: | + if (($env:AGENT_OS -eq "Windows_NT") -and ($env:BUILD_ARCH -eq "x86")) { + node 'script\vsts\windows-run.js' 'script\postprocess-junit-results.cmd' --search-folder "$env:TEST_JUNIT_XML_ROOT" --test-results-files "**/*.xml" + } else { + script/postprocess-junit-results --search-folder "$env:TEST_JUNIT_XML_ROOT" --test-results-files "**/*.xml" + } + env: + TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)/junit + displayName: Post-process test results + condition: ne(variables['Atom.SkipTests'], 'true') + + + - task: PublishTestResults@2 + inputs: + testResultsFormat: JUnit + searchFolder: $(Common.TestResultsDirectory)/junit + testResultsFiles: '**/*.xml' + mergeTestResults: true + testRunTitle: $(Agent.OS) $(BUILD_ARCH) + condition: ne(variables['Atom.SkipTests'], 'true') + + # Crash Reports + - pwsh: | + New-Item -Path $env:ARTIFACT_STAGING_DIR/crash-reports -Type Directory -Force + if (($env:AGENT_OS -eq "Windows_NT") -and (Test-Path "$env:TEMP/Atom Crashes")) { + cp "$env:TEMP/Atom Crashes/*.dmp" $env:ARTIFACT_STAGING_DIR/crash-reports + } else { + cp $env:HOME/Library/Logs/DiagnosticReports/*.crash $env:ARTIFACT_STAGING_DIR/crash-reports + } + env: + ARTIFACT_STAGING_DIR: $(Build.ArtifactStagingDirectory) + displayName: Stage Crash Reports + condition: failed() + + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: $(Build.ArtifactStagingDirectory)/crash-reports + ArtifactName: crash-reports.zip + ${{ if eq(variables['Agent.OS'], 'Windows_NT') }}: + condition: and(failed(), eq(variables['ATOM_RELEASES_S3_KEY'], '')) + displayName: Publish crash reports on non-release branch + ${{ if ne(variables['Agent.OS'], 'Windows_NT') }}: + condition: failed() + displayName: Upload Crash Reports + + - script: > + node $(Build.SourcesDirectory)\script\vsts\upload-crash-reports.js --crash-report-path "%ARTIFACT_STAGING_DIR%\crash-reports" --s3-path "vsts-artifacts/%BUILD_ID%/" + env: + ATOM_RELEASES_S3_KEY: $(ATOM_RELEASES_S3_KEY) + ATOM_RELEASES_S3_SECRET: $(ATOM_RELEASES_S3_SECRET) + ATOM_RELEASES_S3_BUCKET: $(ATOM_RELEASES_S3_BUCKET) + ARTIFACT_STAGING_DIR: $(Build.ArtifactStagingDirectory) + BUILD_ID: $(Build.BuildId) + displayName: Upload crash reports to S3 on release branch + condition: and(failed(), ne(variables['ATOM_RELEASES_S3_KEY'], ''), eq(variables['Agent.OS'], 'Windows_NT')) diff --git a/script/vsts/platforms/windows.yml b/script/vsts/platforms/windows.yml index d1035135d..4613b934d 100644 --- a/script/vsts/platforms/windows.yml +++ b/script/vsts/platforms/windows.yml @@ -1,5 +1,6 @@ jobs: - - job: Windows + - job: Windows_build + displayName: Windows build dependsOn: GetReleaseVersion timeoutInMinutes: 180 strategy: @@ -7,8 +8,10 @@ jobs: matrix: x64: buildArch: x64 + RunCoreMainTests: true x86: buildArch: x86 + RunCoreMainTests: true pool: vmImage: vs2017-win2016 @@ -20,241 +23,102 @@ jobs: IsSignedZipBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsSignedZipBranch'] ] steps: - - task: UsePythonVersion@0 - inputs: - versionSpec: '3.8' + - template: templates/preparation.yml - - task: NodeTool@0 - inputs: - versionSpec: 12.13.1 - displayName: Install Node.js 12.13.1 + - template: templates/cache.yml + parameters: + OS: windows - - script: | - ECHO Installing npm-windows-upgrade - npm install --global --production npm-windows-upgrade - displayName: Install npm-windows-upgrade - - - script: | - ECHO Upgrading npm - npm-windows-upgrade --no-spinner --no-prompt --npm-version 6.12.1 - displayName: Install npm 6.12.1 - - - script: | - npm install --global --production windows-build-tools@4.0 - displayName: Install windows build tools - - - script: | - cd script\vsts - npm install - displayName: Install Windows build dependencies - - - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 - displayName: Restore node_modules cache (x64) - inputs: - keyfile: 'package.json, script/vsts/platforms/windows.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - condition: eq(variables['buildArch'], 'x64') - - - task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1 - displayName: Restore node_modules cache (x86) - inputs: - keyfile: 'package.json, script/vsts/platforms/windows.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - condition: eq(variables['buildArch'], 'x86') - - - script: | - node script\vsts\windows-run.js script\bootstrap.cmd - env: - BUILD_ARCH: $(buildArch) - CI: true - CI_PROVIDER: VSTS - NPM_BIN_PATH: "C:\\hostedtoolcache\\windows\\node\\12.13.1\\x64\\npm.cmd" - npm_config_build_from_source: true - displayName: Bootstrap build environment - condition: ne(variables['CacheRestored'], 'true') - - - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 - displayName: Save node_modules cache (x64) - inputs: - keyfile: 'package.json, script/vsts/platforms/windows.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x64-cache-key' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - condition: eq(variables['buildArch'], 'x64') - - - task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1 - displayName: Save node_modules cache (x86) - inputs: - keyfile: 'package.json, script/vsts/platforms/windows.yml, **/package-lock.json, !**/node_modules/**/package-lock.json, !**/.*/**/package-lock.json, script/vsts/x86-cache-key' - targetfolder: '**/node_modules, !**/node_modules/**/node_modules' - vstsFeed: 'bae1bc26-220d-43c7-a955-4de039370de2' - condition: eq(variables['buildArch'], 'x86') + - template: templates/bootstrap.yml - script: node script\vsts\windows-run.js script\lint.cmd env: BUILD_ARCH: $(buildArch) displayName: Run linter - - script: | - IF NOT EXIST C:\tmp MKDIR C:\tmp - SET SQUIRREL_TEMP=C:\tmp - IF [%IS_RELEASE_BRANCH%]==[true] ( - ECHO Creating production artifacts for release branch %BUILD_SOURCEBRANCHNAME% - node script\vsts\windows-run.js script\build.cmd --no-bootstrap --code-sign --compress-artifacts --create-windows-installer - ) ELSE ( - IF [%IS_SIGNED_ZIP_BRANCH%]==[true] ( - ECHO Creating signed CI artifacts for branch %BUILD_SOURCEBRANCHNAME% - node script\vsts\windows-run.js script\build.cmd --no-bootstrap --code-sign --compress-artifacts - ) ELSE ( - ECHO Pull request build, no code signing will be performed - node script\vsts\windows-run.js script\build.cmd --no-bootstrap --compress-artifacts - ) - ) + - template: templates/build.yml + + - template: templates/test.yml + + - pwsh: | + if ($env:BUILD_ARCH -eq "x64") { + $env:FileID="-x64" + } else { + $env:FileID="" + } + echo "##vso[task.setvariable variable=FileID]$env:FileID" # Azure syntax env: - GITHUB_TOKEN: $(GITHUB_TOKEN) BUILD_ARCH: $(buildArch) - ATOM_RELEASE_VERSION: $(ReleaseVersion) - ATOM_WIN_CODE_SIGNING_CERT_DOWNLOAD_URL: $(ATOM_WIN_CODE_SIGNING_CERT_DOWNLOAD_URL) - ATOM_WIN_CODE_SIGNING_CERT_PASSWORD: $(ATOM_WIN_CODE_SIGNING_CERT_PASSWORD) - IS_RELEASE_BRANCH: $(IsReleaseBranch) - IS_SIGNED_ZIP_BRANCH: $(IsSignedZipBranch) - npm_config_build_from_source: true - displayName: Build Atom + displayName: Set FileID based on the arch - - script: node script\vsts\windows-run.js script\test.cmd + - template: templates/publish.yml + parameters: + artifacts: + - filename: atom$(FileID)-windows.zip + dir: $(Build.SourcesDirectory)/out + condition: and( succeeded(), or( eq(variables['BUILD_ARCH'], 'x64'), ne(variables['Build.Reason'], 'PullRequest') ) ) + - filename: AtomSetup$(FileID).exe + dir: $(Build.SourcesDirectory)/out + condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true')) + - filename: $(AppName)$(FileID)-$(ReleaseVersion)-full.nupkg + dir: $(Build.SourcesDirectory)/out + condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true')) + - filename: $(AppName)$(FileID)-$(ReleaseVersion)-delta.nupkg + dir: $(Build.SourcesDirectory)/out + condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true')) + continueOnError: true # Nightly builds don't produce delta packages yet, so don't fail the build + - filename: RELEASES$(FileID) + dir: $(Build.SourcesDirectory)/out + condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true')) + + - job: Windows_RendererTests + displayName: Windows + dependsOn: Windows_build + timeoutInMinutes: 180 + strategy: + maxParallel: 2 + matrix: + x64_Renderer_Test1: + RunCoreMainTests: false + RunCoreRendererTests: 1 + buildArch: x64 + x64_Renderer_Test2: + RunCoreMainTests: false + RunCoreRendererTests: 2 + buildArch: x64 + + pool: + vmImage: vs2017-win2016 + + variables: + AppName: $[ dependencies.GetReleaseVersion.outputs['Version.AppName'] ] + ReleaseVersion: $[ dependencies.GetReleaseVersion.outputs['Version.ReleaseVersion'] ] + IsReleaseBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsReleaseBranch'] ] + IsSignedZipBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsSignedZipBranch'] ] + + steps: + - template: templates/preparation.yml + + - template: templates/cache.yml + parameters: + OS: windows + + - template: templates/bootstrap.yml + + # Downloading the build artifacts + - pwsh: | + if ($env:BUILD_ARCH -eq "x64") { + $env:FileID="-x64" + echo "##vso[task.setvariable variable=FileID]$env:FileID" # Azure syntax + } env: - CI: true - CI_PROVIDER: VSTS - ATOM_JASMINE_REPORTER: list - TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)\junit BUILD_ARCH: $(buildArch) - displayName: Run tests - condition: and(succeeded(), ne(variables['Atom.SkipTests'], 'true')) + displayName: Set FileID based on the arch - - script: > - node script\vsts\windows-run.js script\postprocess-junit-results.cmd - --search-folder %TEST_JUNIT_XML_ROOT% --test-results-files "**/*.xml" - env: - TEST_JUNIT_XML_ROOT: $(Common.TestResultsDirectory)\junit - displayName: Post-process test results - condition: ne(variables['Atom.SkipTests'], 'true') + - template: templates/download-unzip.yml + parameters: + artifacts: + - atom$(FileID)-windows.zip - - task: PublishTestResults@2 - inputs: - testResultsFormat: JUnit - searchFolder: $(Common.TestResultsDirectory)\junit - testResultsFiles: '**/*.xml' - mergeTestResults: true - testRunTitle: Windows $(buildArch) - condition: ne(variables['Atom.SkipTests'], 'true') - - - script: | - IF NOT EXIST "%ARTIFACT_STAGING_DIR%\crash-reports" MKDIR "%ARTIFACT_STAGING_DIR%\crash-reports" - IF EXIST "%Temp%\Atom Crashes" ( - FOR %%a in ("%Temp%\Atom Crashes\*.dmp") DO XCOPY "%%a" "%ARTIFACT_STAGING_DIR%\crash-reports" /I - ) - displayName: Stage crash reports - condition: failed() - env: - ARTIFACT_STAGING_DIR: $(Build.ArtifactStagingDirectory) - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.ArtifactStagingDirectory)/crash-reports - ArtifactName: crash-reports - displayName: Publish crash reports on non-release branch - condition: and(failed(), eq(variables['ATOM_RELEASES_S3_KEY'], '')) - - - script: > - node $(Build.SourcesDirectory)\script\vsts\upload-crash-reports.js --crash-report-path "%ARTIFACT_STAGING_DIR%\crash-reports" --s3-path "vsts-artifacts/%BUILD_ID%/" - env: - ATOM_RELEASES_S3_KEY: $(ATOM_RELEASES_S3_KEY) - ATOM_RELEASES_S3_SECRET: $(ATOM_RELEASES_S3_SECRET) - ATOM_RELEASES_S3_BUCKET: $(ATOM_RELEASES_S3_BUCKET) - ARTIFACT_STAGING_DIR: $(Build.ArtifactStagingDirectory) - BUILD_ID: $(Build.BuildId) - displayName: Upload crash reports to S3 on release branch - condition: and(failed(), ne(variables['ATOM_RELEASES_S3_KEY'], '')) - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/atom-x64-windows.zip - ArtifactName: atom-x64-windows.zip - ArtifactType: Container - displayName: Upload atom-x64-windows.zip - condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'), eq(variables['buildArch'], 'x64')) - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/AtomSetup-x64.exe - ArtifactName: AtomSetup-x64.exe - ArtifactType: Container - displayName: Upload AtomSetup-x64.exe - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x64')) - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/$(AppName)-x64-$(ReleaseVersion)-full.nupkg - ArtifactName: $(AppName)-x64-$(ReleaseVersion)-full.nupkg - ArtifactType: Container - displayName: Upload $(AppName)-x64-$(ReleaseVersion)-full.nupkg - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x64')) - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/$(AppName)-x64-$(ReleaseVersion)-delta.nupkg - ArtifactName: $(AppName)-x64-$(ReleaseVersion)-delta.nupkg - ArtifactType: Container - displayName: Upload $(AppName)-x64-$(ReleaseVersion)-delta.nupkg - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x64')) - continueOnError: true # Nightly builds don't produce delta packages yet, so don't fail the build - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/RELEASES-x64 - ArtifactName: RELEASES-x64 - ArtifactType: Container - displayName: Upload RELEASES-x64 - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x64')) - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/atom-windows.zip - ArtifactName: atom-windows.zip - ArtifactType: Container - displayName: Upload atom-windows.zip - condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'), eq(variables['buildArch'], 'x86')) - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/AtomSetup.exe - ArtifactName: AtomSetup.exe - ArtifactType: Container - displayName: Upload AtomSetup.exe - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x86')) - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/$(AppName)-$(ReleaseVersion)-full.nupkg - ArtifactName: $(AppName)-$(ReleaseVersion)-full.nupkg - ArtifactType: Container - displayName: Upload $(AppName)-$(ReleaseVersion)-full.nupkg - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x86')) - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/$(AppName)-$(ReleaseVersion)-delta.nupkg - ArtifactName: $(AppName)-$(ReleaseVersion)-delta.nupkg - ArtifactType: Container - displayName: Upload $(AppName)-$(ReleaseVersion)-delta.nupkg - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x86')) - continueOnError: true # Nightly builds don't produce delta packages yet, so don't fail the build - - - task: PublishBuildArtifacts@1 - inputs: - PathtoPublish: $(Build.SourcesDirectory)/out/RELEASES - ArtifactName: RELEASES - ArtifactType: Container - displayName: Upload RELEASES - condition: and(succeeded(), eq(variables['IsReleaseBranch'], 'true'), eq(variables['buildArch'], 'x86')) + # Core renderer tests + - template: templates/test.yml diff --git a/script/vsts/pull-requests.yml b/script/vsts/pull-requests.yml index a21f7d75a..80805bb4a 100644 --- a/script/vsts/pull-requests.yml +++ b/script/vsts/pull-requests.yml @@ -1,16 +1,8 @@ trigger: none # No CI builds, only PR builds jobs: - - job: GetReleaseVersion - steps: - # This has to be done separately because VSTS inexplicably - # exits the script block after `npm install` completes. - - script: | - cd script\vsts - npm install - displayName: npm install - - script: node script\vsts\get-release-version.js - name: Version + # GetReleaseVersion + - template: platforms/templates/get-release-version.yml # Import OS-specific build definitions - template: platforms/windows.yml diff --git a/script/vsts/release-branch-build.yml b/script/vsts/release-branch-build.yml index 24635821d..64e92b91e 100644 --- a/script/vsts/release-branch-build.yml +++ b/script/vsts/release-branch-build.yml @@ -5,16 +5,8 @@ trigger: pr: none # no PR triggers jobs: - - job: GetReleaseVersion - steps: - # This has to be done separately because VSTS inexplicably - # exits the script block after `npm install` completes. - - script: | - cd script\vsts - npm install - displayName: npm install - - script: node script\vsts\get-release-version.js - name: Version + # GetReleaseVersion + - template: platforms/templates/get-release-version.yml # Import OS-specific build definitions. - template: platforms/windows.yml @@ -23,11 +15,11 @@ jobs: - job: UploadArtifacts pool: - vmImage: vs2017-win2016 + vmImage: 'ubuntu-latest' dependsOn: - GetReleaseVersion - - Windows + - Windows_RendererTests - Linux - macOS_tests @@ -37,19 +29,12 @@ jobs: IsSignedZipBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsSignedZipBranch'] ] steps: - - task: NodeTool@0 - inputs: - versionSpec: 12.13.1 - displayName: Install Node.js 12.13.1 - - # This has to be done separately because VSTS inexplicably - # exits the script block after `npm install` completes. - script: | - cd script\vsts - npm install + cd script/vsts + npm ci env: GITHUB_TOKEN: $(GITHUB_TOKEN) - displayName: npm install + displayName: npm ci - task: DownloadBuildArtifacts@0 inputs: @@ -58,7 +43,7 @@ jobs: displayName: Download Release Artifacts - script: | - node $(Build.SourcesDirectory)\script\vsts\upload-artifacts.js --create-github-release --assets-path "$(System.ArtifactsDirectory)" --linux-repo-name "atom-staging" + node $(Build.SourcesDirectory)/script/vsts/upload-artifacts.js --create-github-release --assets-path "$(System.ArtifactsDirectory)" --linux-repo-name "atom-staging" env: GITHUB_TOKEN: $(GITHUB_TOKEN) ATOM_RELEASE_VERSION: $(ReleaseVersion) @@ -70,7 +55,7 @@ jobs: condition: and(succeeded(), eq(variables['Atom.AutoDraftRelease'], 'true'), eq(variables['IsReleaseBranch'], 'true')) - script: | - node $(Build.SourcesDirectory)\script\vsts\upload-artifacts.js --assets-path "$(System.ArtifactsDirectory)" --s3-path "vsts-artifacts/$(Build.BuildId)/" + node $(Build.SourcesDirectory)/script/vsts/upload-artifacts.js --assets-path "$(System.ArtifactsDirectory)" --s3-path "vsts-artifacts/$(Build.BuildId)/" env: ATOM_RELEASE_VERSION: $(ReleaseVersion) ATOM_RELEASES_S3_KEY: $(ATOM_RELEASES_S3_KEY) diff --git a/script/vsts/upload-artifacts.js b/script/vsts/upload-artifacts.js index 20175e30c..ed7530921 100644 --- a/script/vsts/upload-artifacts.js +++ b/script/vsts/upload-artifacts.js @@ -12,6 +12,11 @@ const uploadLinuxPackages = require('./lib/upload-linux-packages'); const CONFIG = require('../config'); +const REPO_OWNER = process.env.REPO_OWNER || 'atom'; +const MAIN_REPO = process.env.MAIN_REPO || 'atom'; +const NIGHTLY_RELEASE_REPO = + process.env.NIGHTLY_RELEASE_REPO || 'atom-nightly-releases'; + const yargs = require('yargs'); const argv = yargs .usage('Usage: $0 [options]') @@ -127,13 +132,13 @@ async function uploadArtifacts() { ? spawnSync('git', ['rev-parse', 'HEAD']) .stdout.toString() .trimEnd() - : 'master'; // Nightly tags are created in atom/atom-nightly-releases so the SHA is irrelevant + : 'master'; // Nightly tags are created in REPO_OWNER/NIGHTLY_RELEASE_REPO so the SHA is irrelevant console.log(`Creating GitHub release v${releaseVersion}`); const release = await publishReleaseAsync({ token: process.env.GITHUB_TOKEN, - owner: 'atom', - repo: !isNightlyRelease ? 'atom' : 'atom-nightly-releases', + owner: REPO_OWNER, + repo: !isNightlyRelease ? MAIN_REPO : NIGHTLY_RELEASE_REPO, name: CONFIG.computedAppVersion, notes: newReleaseNotes, target_commitish: releaseSha, diff --git a/script/vsts/windows-run.js b/script/vsts/windows-run.js index 6a226dbaa..ef63cc6f1 100644 --- a/script/vsts/windows-run.js +++ b/script/vsts/windows-run.js @@ -5,7 +5,7 @@ const path = require('path'); const download = require('download'); const childProcess = require('child_process'); -const nodeVersion = '12.13.1'; +const nodeVersion = '12.4.0'; const nodeFileName = `node-v${nodeVersion}-win-x86`; const extractedNodePath = `c:\\tmp\\${nodeFileName}`; diff --git a/spec/integration/helpers/start-atom.js b/spec/integration/helpers/start-atom.js index 1fd72d22f..f8ae6dff1 100644 --- a/spec/integration/helpers/start-atom.js +++ b/spec/integration/helpers/start-atom.js @@ -24,7 +24,7 @@ const ChromedriverPath = path.resolve( 'bin', 'chromedriver' ); -const ChromedriverPort = 9515; +const ChromedriverPort = 8082; const ChromedriverURLBase = '/wd/hub'; const ChromedriverStatusURL = `http://localhost:${ChromedriverPort}${ChromedriverURLBase}/status`; @@ -68,8 +68,8 @@ const buildAtomClient = async (args, env) => { host: 'localhost', port: ChromedriverPort, capabilities: { - browserName: 'atom', - chromeOptions: { + browserName: 'chrome', // Webdriverio will figure it out on it's own, but I will leave it in case it's helpful in the future https://webdriver.io/docs/configurationfile.html + 'goog:chromeOptions': { binary: AtomLauncherPath, args: [ `atom-path=${AtomPath}`, diff --git a/src/crash-reporter-start.js b/src/crash-reporter-start.js index 5c44a34b5..d34fc664a 100644 --- a/src/crash-reporter-start.js +++ b/src/crash-reporter-start.js @@ -5,11 +5,13 @@ module.exports = function(params) { const arch = os.arch(); const { uploadToServer, releaseChannel } = params; + const parsedUploadToServer = uploadToServer !== null ? uploadToServer : false; + crashReporter.start({ productName: 'Atom', companyName: 'GitHub', submitURL: 'https://atom.io/crash_reports', - uploadToServer, + parsedUploadToServer, extra: { platformRelease, arch, releaseChannel } }); }; diff --git a/src/main-process/atom-window.js b/src/main-process/atom-window.js index e10d2d11d..2680d2401 100644 --- a/src/main-process/atom-window.js +++ b/src/main-process/atom-window.js @@ -49,7 +49,9 @@ module.exports = class AtomWindow extends EventEmitter { // (Ref: https://github.com/atom/atom/pull/12696#issuecomment-290496960) disableBlinkFeatures: 'Auxclick', nodeIntegration: true, - webviewTag: true + webviewTag: true, + // multi-threading + nodeIntegrationInWorker: true } }; diff --git a/src/main-process/start.js b/src/main-process/start.js index 82c0591a5..9f0d58161 100644 --- a/src/main-process/start.js +++ b/src/main-process/start.js @@ -1,7 +1,7 @@ const { app } = require('electron'); const nslog = require('nslog'); const path = require('path'); -const temp = require('temp').track(); +const temp = require('temp'); const parseCommandLine = require('./parse-command-line'); const startCrashReporter = require('../crash-reporter-start'); const getReleaseChannel = require('../get-release-channel'); diff --git a/src/module-cache.js b/src/module-cache.js index f0a460dad..a63b3bbb3 100644 --- a/src/module-cache.js +++ b/src/module-cache.js @@ -294,8 +294,8 @@ function registerBuiltins(devMode) { const rendererBuiltins = [ 'crash-reporter', 'ipc-renderer', - 'remote', - 'screen' + 'remote' + // 'screen' Deprecated https://www.electronjs.org/docs/breaking-changes#api-changed-electronscreen-in-the-renderer-process-should-be-accessed-via-remote ]; for (const builtin of rendererBuiltins) { cache.builtins[builtin] = path.join(rendererRoot, `${builtin}.js`); diff --git a/src/package-manager.js b/src/package-manager.js index 14f1c9377..4e1bd5a29 100644 --- a/src/package-manager.js +++ b/src/package-manager.js @@ -419,9 +419,16 @@ module.exports = class PackageManager { for (const packageDirPath of this.packageDirPaths) { if (fs.isDirectorySync(packageDirPath)) { + // checks for directories. + // dirent is faster, but for checking symbolic link we need stat. const packageNames = fs .readdirSync(packageDirPath, { withFileTypes: true }) - .filter(dirent => dirent.isDirectory()) + .filter( + dirent => + dirent.isDirectory() || + (dirent.isSymbolicLink() && + fs.isDirectorySync(path.join(packageDirPath, dirent.name))) + ) .map(dirent => dirent.name); for (const packageName of packageNames) { diff --git a/src/package.js b/src/package.js index dd5105708..55785a4b7 100644 --- a/src/package.js +++ b/src/package.js @@ -881,8 +881,9 @@ module.exports = class Package { requireMainModule() { if (this.bundledPackage && this.packageManager.packagesCache[this.name]) { if (this.packageManager.packagesCache[this.name].main) { - this.mainModule = require(this.packageManager.packagesCache[this.name] - .main); + this.mainModule = this._require( + this.packageManager.packagesCache[this.name].main + ); return this.mainModule; } } else if (this.mainModuleRequired) { @@ -904,7 +905,7 @@ module.exports = class Package { const previousViewProviderCount = this.viewRegistry.getViewProviderCount(); const previousDeserializerCount = this.deserializerManager.getDeserializerCount(); - this.mainModule = require(mainModulePath); + this.mainModule = this._require(mainModulePath); if ( this.viewRegistry.getViewProviderCount() === previousViewProviderCount && @@ -921,6 +922,27 @@ module.exports = class Package { } } + // a require function with both ES5 and ES6 default export support + _require(path) { + const modul = require(path); + if (modul === null || modul === undefined) { + // if null do not bother + return modul; + } else { + if ( + modul.__esModule === true && + typeof modul.default === 'object' && + typeof modul.default.activate === 'function' + ) { + // __esModule flag is true and the activate function exists inside it, which means + // an object containing the main functions (e.g. activate, etc) is default exported + return modul.default; + } else { + return modul; + } + } + } + getMainModulePath() { if (this.resolvedMainModulePath) return this.mainModulePath; this.resolvedMainModulePath = true;