diff --git a/index.html b/index.html
new file mode 100644
index 0000000..6067932
--- /dev/null
+++ b/index.html
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+ Hello World!
+
+
+ Hello World!
+ We are using Node.js ,
+ Chromium ,
+ and Electron .
+
+
\ No newline at end of file
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..be8f1da
--- /dev/null
+++ b/main.js
@@ -0,0 +1,22 @@
+const { app, BrowserWindow } = require('electron')
+const createWindow = () => {
+ const win = new BrowserWindow({
+ width: 800,
+ height: 600
+ })
+
+ win.loadFile('index.html')
+ }
+ app.whenReady().then(() => {
+ createWindow()
+ })
+ app.on('window-all-closed', () => {
+ if (process.platform !== 'darwin') app.quit()
+ })
+ app.whenReady().then(() => {
+ createWindow()
+
+ app.on('activate', () => {
+ if (BrowserWindow.getAllWindows().length === 0) createWindow()
+ })
+ })
\ No newline at end of file
diff --git a/node_modules/.bin/electron b/node_modules/.bin/electron
new file mode 120000
index 0000000..946101e
--- /dev/null
+++ b/node_modules/.bin/electron
@@ -0,0 +1 @@
+../electron/cli.js
\ No newline at end of file
diff --git a/node_modules/.bin/extract-zip b/node_modules/.bin/extract-zip
new file mode 120000
index 0000000..af9b561
--- /dev/null
+++ b/node_modules/.bin/extract-zip
@@ -0,0 +1 @@
+../extract-zip/cli.js
\ No newline at end of file
diff --git a/node_modules/.bin/mkdirp b/node_modules/.bin/mkdirp
new file mode 120000
index 0000000..017896c
--- /dev/null
+++ b/node_modules/.bin/mkdirp
@@ -0,0 +1 @@
+../mkdirp/bin/cmd.js
\ No newline at end of file
diff --git a/node_modules/.bin/semver b/node_modules/.bin/semver
new file mode 120000
index 0000000..5aaadf4
--- /dev/null
+++ b/node_modules/.bin/semver
@@ -0,0 +1 @@
+../semver/bin/semver.js
\ No newline at end of file
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
new file mode 100644
index 0000000..ce1cdae
--- /dev/null
+++ b/node_modules/.package-lock.json
@@ -0,0 +1,883 @@
+{
+ "name": "notertron",
+ "version": "0.0.1",
+ "lockfileVersion": 2,
+ "requires": true,
+ "packages": {
+ "node_modules/@electron/get": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz",
+ "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.1",
+ "env-paths": "^2.2.0",
+ "fs-extra": "^8.1.0",
+ "got": "^9.6.0",
+ "progress": "^2.0.3",
+ "semver": "^6.2.0",
+ "sumchecker": "^3.0.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ },
+ "optionalDependencies": {
+ "global-agent": "^3.0.0",
+ "global-tunnel-ng": "^2.7.1"
+ }
+ },
+ "node_modules/@sindresorhus/is": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
+ "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@szmarczak/http-timer": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
+ "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
+ "dev": true,
+ "dependencies": {
+ "defer-to-connect": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/@types/node": {
+ "version": "14.18.12",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.12.tgz",
+ "integrity": "sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A==",
+ "dev": true
+ },
+ "node_modules/boolean": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz",
+ "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
+ "dev": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true
+ },
+ "node_modules/cacheable-request": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
+ "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
+ "dev": true,
+ "dependencies": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^3.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^4.1.0",
+ "responselike": "^1.0.2"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cacheable-request/node_modules/lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/clone-response": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
+ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
+ "dev": true,
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ }
+ },
+ "node_modules/concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "dev": true,
+ "engines": [
+ "node >= 0.8"
+ ],
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/config-chain": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
+ "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "ini": "^1.3.4",
+ "proto-list": "~1.2.1"
+ }
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
+ "dev": true
+ },
+ "node_modules/debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.1.2"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decompress-response": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+ "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
+ "dev": true,
+ "dependencies": {
+ "mimic-response": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/defer-to-connect": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
+ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
+ "dev": true
+ },
+ "node_modules/define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "object-keys": "^1.0.12"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/duplexer3": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
+ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
+ "dev": true
+ },
+ "node_modules/electron": {
+ "version": "17.1.2",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-17.1.2.tgz",
+ "integrity": "sha512-hqKQaUIRWX5Y2eAD8FZINWD/e5TKdpkbBYbkcZmJS4Bd1PKQsaDVc9h5xoA8zZQkPymE9rss+swjRpAFurOPGQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "@electron/get": "^1.13.0",
+ "@types/node": "^14.6.2",
+ "extract-zip": "^1.0.3"
+ },
+ "bin": {
+ "electron": "cli.js"
+ },
+ "engines": {
+ "node": ">= 8.6"
+ }
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "dev": true,
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
+ "node_modules/env-paths": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
+ "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/es6-error": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
+ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "concat-stream": "^1.6.2",
+ "debug": "^2.6.9",
+ "mkdirp": "^0.5.4",
+ "yauzl": "^2.10.0"
+ },
+ "bin": {
+ "extract-zip": "cli.js"
+ }
+ },
+ "node_modules/extract-zip/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/extract-zip/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+ "dev": true
+ },
+ "node_modules/fd-slicer": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+ "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=",
+ "dev": true,
+ "dependencies": {
+ "pend": "~1.2.0"
+ }
+ },
+ "node_modules/fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "dev": true,
+ "dependencies": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=6 <7 || >=8"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "dependencies": {
+ "pump": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/global-agent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
+ "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "es6-error": "^4.1.1",
+ "matcher": "^3.0.0",
+ "roarr": "^2.15.3",
+ "semver": "^7.3.2",
+ "serialize-error": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=10.0"
+ }
+ },
+ "node_modules/global-agent/node_modules/semver": {
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+ "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/global-tunnel-ng": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz",
+ "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "encodeurl": "^1.0.2",
+ "lodash": "^4.17.10",
+ "npm-conf": "^1.1.3",
+ "tunnel": "^0.0.6"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz",
+ "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "define-properties": "^1.1.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/got": {
+ "version": "9.6.0",
+ "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
+ "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+ "dev": true,
+ "dependencies": {
+ "@sindresorhus/is": "^0.14.0",
+ "@szmarczak/http-timer": "^1.1.2",
+ "cacheable-request": "^6.0.0",
+ "decompress-response": "^3.3.0",
+ "duplexer3": "^0.1.4",
+ "get-stream": "^4.1.0",
+ "lowercase-keys": "^1.0.1",
+ "mimic-response": "^1.0.1",
+ "p-cancelable": "^1.0.0",
+ "to-readable-stream": "^1.0.0",
+ "url-parse-lax": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.9",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz",
+ "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==",
+ "dev": true
+ },
+ "node_modules/http-cache-semantics": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
+ "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
+ "dev": true
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "node_modules/ini": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+ "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
+ "dev": true
+ },
+ "node_modules/json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
+ "optionalDependencies": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
+ "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
+ "dev": true,
+ "dependencies": {
+ "json-buffer": "3.0.0"
+ }
+ },
+ "node_modules/lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/lowercase-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/matcher": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz",
+ "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "escape-string-regexp": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/mimic-response": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
+ "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
+ "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
+ "dev": true
+ },
+ "node_modules/mkdirp": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+ "dev": true,
+ "dependencies": {
+ "minimist": "^1.2.5"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "node_modules/normalize-url": {
+ "version": "4.5.1",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
+ "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/npm-conf": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
+ "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "config-chain": "^1.1.11",
+ "pify": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+ "dev": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/p-cancelable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
+ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pend": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+ "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
+ "dev": true
+ },
+ "node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/prepend-http": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
+ "dev": true,
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "dev": true
+ },
+ "node_modules/progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/proto-list": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+ "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "dependencies": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "dependencies": {
+ "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"
+ }
+ },
+ "node_modules/responselike": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+ "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
+ "dev": true,
+ "dependencies": {
+ "lowercase-keys": "^1.0.0"
+ }
+ },
+ "node_modules/roarr": {
+ "version": "2.15.4",
+ "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz",
+ "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "detect-node": "^2.0.4",
+ "globalthis": "^1.0.1",
+ "json-stringify-safe": "^5.0.1",
+ "semver-compare": "^1.0.0",
+ "sprintf-js": "^1.1.2"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "node_modules/semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/semver-compare": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/serialize-error": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz",
+ "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==",
+ "dev": true,
+ "optional": true,
+ "dependencies": {
+ "type-fest": "^0.13.1"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
+ "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/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==",
+ "dev": true,
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/sumchecker": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz",
+ "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==",
+ "dev": true,
+ "dependencies": {
+ "debug": "^4.1.0"
+ },
+ "engines": {
+ "node": ">= 8.0"
+ }
+ },
+ "node_modules/to-readable-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
+ "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tunnel": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
+ }
+ },
+ "node_modules/type-fest": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz",
+ "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==",
+ "dev": true,
+ "optional": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+ "dev": true
+ },
+ "node_modules/universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
+ "node_modules/url-parse-lax": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+ "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
+ "dev": true,
+ "dependencies": {
+ "prepend-http": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+ "dev": true
+ },
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+ "dev": true
+ },
+ "node_modules/yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true,
+ "optional": true
+ },
+ "node_modules/yauzl": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+ "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=",
+ "dev": true,
+ "dependencies": {
+ "buffer-crc32": "~0.2.3",
+ "fd-slicer": "~1.1.0"
+ }
+ }
+ }
+}
diff --git a/node_modules/@electron/get/LICENSE b/node_modules/@electron/get/LICENSE
new file mode 100644
index 0000000..dc1402e
--- /dev/null
+++ b/node_modules/@electron/get/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) Contributors to the Electron project
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@electron/get/README.md b/node_modules/@electron/get/README.md
new file mode 100644
index 0000000..b029b24
--- /dev/null
+++ b/node_modules/@electron/get/README.md
@@ -0,0 +1,142 @@
+# @electron/get
+
+> Download Electron release artifacts
+
+[![CircleCI](https://circleci.com/gh/electron/get.svg?style=svg)](https://circleci.com/gh/electron/get)
+
+## Usage
+
+### Simple: Downloading an Electron Binary ZIP
+
+```typescript
+import { download } from '@electron/get';
+
+// NB: Use this syntax within an async function, Node does not have support for
+// top-level await as of Node 12.
+const zipFilePath = await download('4.0.4');
+```
+
+### Advanced: Downloading a macOS Electron Symbol File
+
+
+```typescript
+import { downloadArtifact } from '@electron/get';
+
+// NB: Use this syntax within an async function, Node does not have support for
+// top-level await as of Node 12.
+const zipFilePath = await downloadArtifact({
+ version: '4.0.4',
+ platform: 'darwin',
+ artifactName: 'electron',
+ artifactSuffix: 'symbols',
+ arch: 'x64',
+});
+```
+
+### Specifying a mirror
+
+To specify another location to download Electron assets from, the following options are
+available:
+
+* `mirrorOptions` Object
+ * `mirror` String (optional) - The base URL of the mirror to download from.
+ * `nightlyMirror` String (optional) - The Electron nightly-specific mirror URL.
+ * `customDir` String (optional) - The name of the directory to download from, often scoped by version number.
+ * `customFilename` String (optional) - The name of the asset to download.
+ * `resolveAssetURL` Function (optional) - A function allowing customization of the url used to download the asset.
+
+Anatomy of a download URL, in terms of `mirrorOptions`:
+
+```
+https://github.com/electron/electron/releases/download/v4.0.4/electron-v4.0.4-linux-x64.zip
+| | | |
+------------------------------------------------------- -----------------------------
+ | |
+ mirror / nightlyMirror | | customFilename
+ ------
+ ||
+ customDir
+```
+
+Example:
+
+```typescript
+import { download } from '@electron/get';
+
+const zipFilePath = await download('4.0.4', {
+ mirrorOptions: {
+ mirror: 'https://mirror.example.com/electron/',
+ customDir: 'custom',
+ customFilename: 'unofficial-electron-linux.zip'
+ }
+});
+// Will download from https://mirror.example.com/electron/custom/unofficial-electron-linux.zip
+
+const nightlyZipFilePath = await download('8.0.0-nightly.20190901', {
+ mirrorOptions: {
+ nightlyMirror: 'https://nightly.example.com/',
+ customDir: 'nightlies',
+ customFilename: 'nightly-linux.zip'
+ }
+});
+// Will download from https://nightly.example.com/nightlies/nightly-linux.zip
+```
+
+`customDir` can have the placeholder `{{ version }}`, which will be replaced by the version
+specified (without the leading `v`). For example:
+
+```javascript
+const zipFilePath = await download('4.0.4', {
+ mirrorOptions: {
+ mirror: 'https://mirror.example.com/electron/',
+ customDir: 'version-{{ version }}',
+ platform: 'linux',
+ arch: 'x64'
+ }
+});
+// Will download from https://mirror.example.com/electron/version-4.0.4/electron-v4.0.4-linux-x64.zip
+```
+
+#### Using environment variables for mirror options
+Mirror options can also be specified via the following environment variables:
+* `ELECTRON_CUSTOM_DIR` - Specifies the custom directory to download from.
+* `ELECTRON_CUSTOM_FILENAME` - Specifies the custom file name to download.
+* `ELECTRON_MIRROR` - Specifies the URL of the server to download from if the version is not a nightly version.
+* `ELECTRON_NIGHTLY_MIRROR` - Specifies the URL of the server to download from if the version is a nightly version.
+
+### Overriding the version downloaded
+
+The version downloaded can be overriden by setting the `ELECTRON_CUSTOM_VERSION` environment variable.
+Setting this environment variable will override the version passed in to `download` or `downloadArtifact`.
+
+## How It Works
+
+This module downloads Electron to a known place on your system and caches it
+so that future requests for that asset can be returned instantly. The cache
+locations are:
+
+* Linux: `$XDG_CACHE_HOME` or `~/.cache/electron/`
+* MacOS: `~/Library/Caches/electron/`
+* Windows: `%LOCALAPPDATA%/electron/Cache` or `~/AppData/Local/electron/Cache/`
+
+By default, the module uses [`got`](https://github.com/sindresorhus/got) as the
+downloader. As a result, you can use the same [options](https://github.com/sindresorhus/got#options)
+via `downloadOptions`.
+
+### Progress Bar
+
+By default, a progress bar is shown when downloading an artifact for more than 30 seconds. To
+disable, set the `ELECTRON_GET_NO_PROGRESS` environment variable to any non-empty value, or set
+`quiet` to `true` in `downloadOptions`. If you need to monitor progress yourself via the API, set
+`getProgressCallback` in `downloadOptions`, which has the same function signature as `got`'s
+[`downloadProgress` event callback](https://github.com/sindresorhus/got#ondownloadprogress-progress).
+
+### Proxies
+
+Downstream packages should utilize the `initializeProxy` function to add HTTP(S) proxy support. If
+the environment variable `ELECTRON_GET_USE_PROXY` is set, it is called automatically. A different
+proxy module is used, depending on the version of Node in use, and as such, there are slightly
+different ways to set the proxy environment variables. For Node 10 and above,
+[`global-agent`](https://github.com/gajus/global-agent#environment-variables) is used. Otherwise,
+[`global-tunnel-ng`](https://github.com/np-maintain/global-tunnel#auto-config) is used. Refer to the
+appropriate linked module to determine how to configure proxy support.
diff --git a/node_modules/@electron/get/dist/cjs/Cache.d.ts b/node_modules/@electron/get/dist/cjs/Cache.d.ts
new file mode 100644
index 0000000..626001a
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/Cache.d.ts
@@ -0,0 +1,8 @@
+export declare class Cache {
+ private cacheRoot;
+ constructor(cacheRoot?: string);
+ static getCacheDirectory(downloadUrl: string): string;
+ getCachePath(downloadUrl: string, fileName: string): string;
+ getPathForFileInCache(url: string, fileName: string): Promise;
+ putFileInCache(url: string, currentPath: string, fileName: string): Promise;
+}
diff --git a/node_modules/@electron/get/dist/cjs/Cache.js b/node_modules/@electron/get/dist/cjs/Cache.js
new file mode 100644
index 0000000..b8cd197
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/Cache.js
@@ -0,0 +1,60 @@
+"use strict";
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const debug_1 = require("debug");
+const env_paths_1 = require("env-paths");
+const fs = require("fs-extra");
+const path = require("path");
+const url = require("url");
+const crypto = require("crypto");
+const d = debug_1.default('@electron/get:cache');
+const defaultCacheRoot = env_paths_1.default('electron', {
+ suffix: '',
+}).cache;
+class Cache {
+ constructor(cacheRoot = defaultCacheRoot) {
+ this.cacheRoot = cacheRoot;
+ }
+ static getCacheDirectory(downloadUrl) {
+ const parsedDownloadUrl = url.parse(downloadUrl);
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const { search, hash, pathname } = parsedDownloadUrl, rest = __rest(parsedDownloadUrl, ["search", "hash", "pathname"]);
+ const strippedUrl = url.format(Object.assign(Object.assign({}, rest), { pathname: path.dirname(pathname || 'electron') }));
+ return crypto
+ .createHash('sha256')
+ .update(strippedUrl)
+ .digest('hex');
+ }
+ getCachePath(downloadUrl, fileName) {
+ return path.resolve(this.cacheRoot, Cache.getCacheDirectory(downloadUrl), fileName);
+ }
+ async getPathForFileInCache(url, fileName) {
+ const cachePath = this.getCachePath(url, fileName);
+ if (await fs.pathExists(cachePath)) {
+ return cachePath;
+ }
+ return null;
+ }
+ async putFileInCache(url, currentPath, fileName) {
+ const cachePath = this.getCachePath(url, fileName);
+ d(`Moving ${currentPath} to ${cachePath}`);
+ if (await fs.pathExists(cachePath)) {
+ d('* Replacing existing file');
+ await fs.remove(cachePath);
+ }
+ await fs.move(currentPath, cachePath);
+ return cachePath;
+ }
+}
+exports.Cache = Cache;
+//# sourceMappingURL=Cache.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/Cache.js.map b/node_modules/@electron/get/dist/cjs/Cache.js.map
new file mode 100644
index 0000000..ec54c24
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/Cache.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/Cache.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,iCAA0B;AAC1B,yCAAiC;AACjC,+BAA+B;AAC/B,6BAA6B;AAC7B,2BAA2B;AAC3B,iCAAiC;AAEjC,MAAM,CAAC,GAAG,eAAK,CAAC,qBAAqB,CAAC,CAAC;AAEvC,MAAM,gBAAgB,GAAG,mBAAQ,CAAC,UAAU,EAAE;IAC5C,MAAM,EAAE,EAAE;CACX,CAAC,CAAC,KAAK,CAAC;AAET,MAAa,KAAK;IAChB,YAAoB,YAAY,gBAAgB;QAA5B,cAAS,GAAT,SAAS,CAAmB;IAAG,CAAC;IAE7C,MAAM,CAAC,iBAAiB,CAAC,WAAmB;QACjD,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjD,6DAA6D;QAC7D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAc,iBAAiB,EAA7B,gEAA6B,CAAC;QAC9D,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,iCAAM,IAAI,KAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAG,CAAC;QAE5F,OAAO,MAAM;aACV,UAAU,CAAC,QAAQ,CAAC;aACpB,MAAM,CAAC,WAAW,CAAC;aACnB,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAEM,YAAY,CAAC,WAAmB,EAAE,QAAgB;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtF,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAAC,GAAW,EAAE,QAAgB;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAClC,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,WAAmB,EAAE,QAAgB;QAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC,CAAC,UAAU,WAAW,OAAO,SAAS,EAAE,CAAC,CAAC;QAC3C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAClC,CAAC,CAAC,2BAA2B,CAAC,CAAC;YAC/B,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAC5B;QAED,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEtC,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAxCD,sBAwCC"}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/Downloader.d.ts b/node_modules/@electron/get/dist/cjs/Downloader.d.ts
new file mode 100644
index 0000000..8e5e40e
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/Downloader.d.ts
@@ -0,0 +1,3 @@
+export interface Downloader {
+ download(url: string, targetFilePath: string, options: T): Promise;
+}
diff --git a/node_modules/@electron/get/dist/cjs/Downloader.js b/node_modules/@electron/get/dist/cjs/Downloader.js
new file mode 100644
index 0000000..5940840
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/Downloader.js
@@ -0,0 +1,3 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=Downloader.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/Downloader.js.map b/node_modules/@electron/get/dist/cjs/Downloader.js.map
new file mode 100644
index 0000000..c6199d5
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/Downloader.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Downloader.js","sourceRoot":"","sources":["../../src/Downloader.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/GotDownloader.d.ts b/node_modules/@electron/get/dist/cjs/GotDownloader.d.ts
new file mode 100644
index 0000000..88686fd
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/GotDownloader.d.ts
@@ -0,0 +1,19 @@
+import * as got from 'got';
+import { Downloader } from './Downloader';
+/**
+ * See [`got#options`](https://github.com/sindresorhus/got#options) for possible keys/values.
+ */
+export declare type GotDownloaderOptions = got.GotOptions & {
+ /**
+ * if defined, triggers every time `got`'s `downloadProgress` event callback is triggered.
+ */
+ getProgressCallback?: (progress: got.Progress) => Promise;
+ /**
+ * if `true`, disables the console progress bar (setting the `ELECTRON_GET_NO_PROGRESS`
+ * environment variable to a non-empty value also does this).
+ */
+ quiet?: boolean;
+};
+export declare class GotDownloader implements Downloader {
+ download(url: string, targetFilePath: string, options?: GotDownloaderOptions): Promise;
+}
diff --git a/node_modules/@electron/get/dist/cjs/GotDownloader.js b/node_modules/@electron/get/dist/cjs/GotDownloader.js
new file mode 100644
index 0000000..5ec9bc3
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/GotDownloader.js
@@ -0,0 +1,76 @@
+"use strict";
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const fs = require("fs-extra");
+const got = require("got");
+const path = require("path");
+const ProgressBar = require("progress");
+const PROGRESS_BAR_DELAY_IN_SECONDS = 30;
+class GotDownloader {
+ async download(url, targetFilePath, options) {
+ if (!options) {
+ options = {};
+ }
+ const { quiet, getProgressCallback } = options, gotOptions = __rest(options, ["quiet", "getProgressCallback"]);
+ let downloadCompleted = false;
+ let bar;
+ let progressPercent;
+ let timeout = undefined;
+ await fs.mkdirp(path.dirname(targetFilePath));
+ const writeStream = fs.createWriteStream(targetFilePath);
+ if (!quiet || !process.env.ELECTRON_GET_NO_PROGRESS) {
+ const start = new Date();
+ timeout = setTimeout(() => {
+ if (!downloadCompleted) {
+ bar = new ProgressBar(`Downloading ${path.basename(url)}: [:bar] :percent ETA: :eta seconds `, {
+ curr: progressPercent,
+ total: 100,
+ });
+ // https://github.com/visionmedia/node-progress/issues/159
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ bar.start = start;
+ }
+ }, PROGRESS_BAR_DELAY_IN_SECONDS * 1000);
+ }
+ await new Promise((resolve, reject) => {
+ const downloadStream = got.stream(url, gotOptions);
+ downloadStream.on('downloadProgress', async (progress) => {
+ progressPercent = progress.percent;
+ if (bar) {
+ bar.update(progress.percent);
+ }
+ if (getProgressCallback) {
+ await getProgressCallback(progress);
+ }
+ });
+ downloadStream.on('error', error => {
+ if (error.name === 'HTTPError' && error.statusCode === 404) {
+ error.message += ` for ${error.url}`;
+ }
+ if (writeStream.destroy) {
+ writeStream.destroy(error);
+ }
+ reject(error);
+ });
+ writeStream.on('error', error => reject(error));
+ writeStream.on('close', () => resolve());
+ downloadStream.pipe(writeStream);
+ });
+ downloadCompleted = true;
+ if (timeout) {
+ clearTimeout(timeout);
+ }
+ }
+}
+exports.GotDownloader = GotDownloader;
+//# sourceMappingURL=GotDownloader.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/GotDownloader.js.map b/node_modules/@electron/get/dist/cjs/GotDownloader.js.map
new file mode 100644
index 0000000..668e2cd
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/GotDownloader.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"GotDownloader.js","sourceRoot":"","sources":["../../src/GotDownloader.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,+BAA+B;AAC/B,2BAA2B;AAC3B,6BAA6B;AAC7B,wCAAwC;AAIxC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAiBzC,MAAa,aAAa;IACxB,KAAK,CAAC,QAAQ,CACZ,GAAW,EACX,cAAsB,EACtB,OAA8B;QAE9B,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,EAAE,CAAC;SACd;QACD,MAAM,EAAE,KAAK,EAAE,mBAAmB,KAAoB,OAAO,EAAzB,8DAAyB,CAAC;QAC9D,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,IAAI,GAA4B,CAAC;QACjC,IAAI,eAAuB,CAAC;QAC5B,IAAI,OAAO,GAA+B,SAAS,CAAC;QACpD,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAEzD,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE;YACnD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;YACzB,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACxB,IAAI,CAAC,iBAAiB,EAAE;oBACtB,GAAG,GAAG,IAAI,WAAW,CACnB,eAAe,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sCAAsC,EACvE;wBACE,IAAI,EAAE,eAAe;wBACrB,KAAK,EAAE,GAAG;qBACX,CACF,CAAC;oBACF,0DAA0D;oBAC1D,8DAA8D;oBAC7D,GAAW,CAAC,KAAK,GAAG,KAAK,CAAC;iBAC5B;YACH,CAAC,EAAE,6BAA6B,GAAG,IAAI,CAAC,CAAC;SAC1C;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpC,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YACnD,cAAc,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,EAAC,QAAQ,EAAC,EAAE;gBACrD,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC;gBACnC,IAAI,GAAG,EAAE;oBACP,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBAC9B;gBACD,IAAI,mBAAmB,EAAE;oBACvB,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;iBACrC;YACH,CAAC,CAAC,CAAC;YACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjC,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,UAAU,KAAK,GAAG,EAAE;oBAC1D,KAAK,CAAC,OAAO,IAAI,QAAQ,KAAK,CAAC,GAAG,EAAE,CAAC;iBACtC;gBACD,IAAI,WAAW,CAAC,OAAO,EAAE;oBACvB,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;iBAC5B;gBAED,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAChD,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAEzC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,iBAAiB,GAAG,IAAI,CAAC;QACzB,IAAI,OAAO,EAAE;YACX,YAAY,CAAC,OAAO,CAAC,CAAC;SACvB;IACH,CAAC;CACF;AAlED,sCAkEC"}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/artifact-utils.d.ts b/node_modules/@electron/get/dist/cjs/artifact-utils.d.ts
new file mode 100644
index 0000000..3426f60
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/artifact-utils.d.ts
@@ -0,0 +1,3 @@
+import { ElectronArtifactDetails } from './types';
+export declare function getArtifactFileName(details: ElectronArtifactDetails): string;
+export declare function getArtifactRemoteURL(details: ElectronArtifactDetails): Promise;
diff --git a/node_modules/@electron/get/dist/cjs/artifact-utils.js b/node_modules/@electron/get/dist/cjs/artifact-utils.js
new file mode 100644
index 0000000..5387b18
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/artifact-utils.js
@@ -0,0 +1,56 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const utils_1 = require("./utils");
+const BASE_URL = 'https://github.com/electron/electron/releases/download/';
+const NIGHTLY_BASE_URL = 'https://github.com/electron/nightlies/releases/download/';
+function getArtifactFileName(details) {
+ utils_1.ensureIsTruthyString(details, 'artifactName');
+ if (details.isGeneric) {
+ return details.artifactName;
+ }
+ utils_1.ensureIsTruthyString(details, 'arch');
+ utils_1.ensureIsTruthyString(details, 'platform');
+ utils_1.ensureIsTruthyString(details, 'version');
+ return `${[
+ details.artifactName,
+ details.version,
+ details.platform,
+ details.arch,
+ ...(details.artifactSuffix ? [details.artifactSuffix] : []),
+ ].join('-')}.zip`;
+}
+exports.getArtifactFileName = getArtifactFileName;
+function mirrorVar(name, options, defaultValue) {
+ // Convert camelCase to camel_case for env var reading
+ const lowerName = name.replace(/([a-z])([A-Z])/g, (_, a, b) => `${a}_${b}`).toLowerCase();
+ return (process.env[`NPM_CONFIG_ELECTRON_${lowerName.toUpperCase()}`] ||
+ process.env[`npm_config_electron_${lowerName}`] ||
+ process.env[`npm_package_config_electron_${lowerName}`] ||
+ process.env[`ELECTRON_${lowerName.toUpperCase()}`] ||
+ options[name] ||
+ defaultValue);
+}
+async function getArtifactRemoteURL(details) {
+ const opts = details.mirrorOptions || {};
+ let base = mirrorVar('mirror', opts, BASE_URL);
+ if (details.version.includes('nightly')) {
+ const nightlyDeprecated = mirrorVar('nightly_mirror', opts, '');
+ if (nightlyDeprecated) {
+ base = nightlyDeprecated;
+ console.warn(`nightly_mirror is deprecated, please use nightlyMirror`);
+ }
+ else {
+ base = mirrorVar('nightlyMirror', opts, NIGHTLY_BASE_URL);
+ }
+ }
+ const path = mirrorVar('customDir', opts, details.version).replace('{{ version }}', details.version.replace(/^v/, ''));
+ const file = mirrorVar('customFilename', opts, getArtifactFileName(details));
+ // Allow customized download URL resolution.
+ if (opts.resolveAssetURL) {
+ const url = await opts.resolveAssetURL(details);
+ return url;
+ }
+ return `${base}${path}/${file}`;
+}
+exports.getArtifactRemoteURL = getArtifactRemoteURL;
+//# sourceMappingURL=artifact-utils.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/artifact-utils.js.map b/node_modules/@electron/get/dist/cjs/artifact-utils.js.map
new file mode 100644
index 0000000..d398002
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/artifact-utils.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"artifact-utils.js","sourceRoot":"","sources":["../../src/artifact-utils.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/downloader-resolver.d.ts b/node_modules/@electron/get/dist/cjs/downloader-resolver.d.ts
new file mode 100644
index 0000000..f7f09b2
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/downloader-resolver.d.ts
@@ -0,0 +1,3 @@
+import { DownloadOptions } from './types';
+import { Downloader } from './Downloader';
+export declare function getDownloaderForSystem(): Promise>;
diff --git a/node_modules/@electron/get/dist/cjs/downloader-resolver.js b/node_modules/@electron/get/dist/cjs/downloader-resolver.js
new file mode 100644
index 0000000..52a51d3
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/downloader-resolver.js
@@ -0,0 +1,12 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+async function getDownloaderForSystem() {
+ // TODO: Resolve the downloader or default to GotDownloader
+ // Current thoughts are a dot-file traversal for something like
+ // ".electron.downloader" which would be a text file with the name of the
+ // npm module to import() and use as the downloader
+ const { GotDownloader } = await Promise.resolve().then(() => require('./GotDownloader'));
+ return new GotDownloader();
+}
+exports.getDownloaderForSystem = getDownloaderForSystem;
+//# sourceMappingURL=downloader-resolver.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/downloader-resolver.js.map b/node_modules/@electron/get/dist/cjs/downloader-resolver.js.map
new file mode 100644
index 0000000..586f565
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/downloader-resolver.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"downloader-resolver.js","sourceRoot":"","sources":["../../src/downloader-resolver.ts"],"names":[],"mappings":";;AAGO,KAAK,UAAU,sBAAsB;IAC1C,2DAA2D;IAC3D,+DAA+D;IAC/D,yEAAyE;IACzE,mDAAmD;IACnD,MAAM,EAAE,aAAa,EAAE,GAAG,2CAAa,iBAAiB,EAAC,CAAC;IAC1D,OAAO,IAAI,aAAa,EAAE,CAAC;AAC7B,CAAC;AAPD,wDAOC"}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/index.d.ts b/node_modules/@electron/get/dist/cjs/index.d.ts
new file mode 100644
index 0000000..93e709e
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/index.d.ts
@@ -0,0 +1,18 @@
+import { ElectronDownloadRequestOptions, ElectronPlatformArtifactDetailsWithDefaults } from './types';
+export { getHostArch } from './utils';
+export { initializeProxy } from './proxy';
+export * from './types';
+/**
+ * Downloads an artifact from an Electron release and returns an absolute path
+ * to the downloaded file.
+ *
+ * @param artifactDetails - The information required to download the artifact
+ */
+export declare function downloadArtifact(_artifactDetails: ElectronPlatformArtifactDetailsWithDefaults): Promise;
+/**
+ * Downloads a specific version of Electron and returns an absolute path to a
+ * ZIP file.
+ *
+ * @param version - The version of Electron you want to download
+ */
+export declare function download(version: string, options?: ElectronDownloadRequestOptions): Promise;
diff --git a/node_modules/@electron/get/dist/cjs/index.js b/node_modules/@electron/get/dist/cjs/index.js
new file mode 100644
index 0000000..e53ab57
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/index.js
@@ -0,0 +1,130 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const debug_1 = require("debug");
+const fs = require("fs-extra");
+const path = require("path");
+const semver = require("semver");
+const sumchecker = require("sumchecker");
+const artifact_utils_1 = require("./artifact-utils");
+const Cache_1 = require("./Cache");
+const downloader_resolver_1 = require("./downloader-resolver");
+const proxy_1 = require("./proxy");
+const utils_1 = require("./utils");
+var utils_2 = require("./utils");
+exports.getHostArch = utils_2.getHostArch;
+var proxy_2 = require("./proxy");
+exports.initializeProxy = proxy_2.initializeProxy;
+const d = debug_1.default('@electron/get:index');
+if (process.env.ELECTRON_GET_USE_PROXY) {
+ proxy_1.initializeProxy();
+}
+/**
+ * Downloads an artifact from an Electron release and returns an absolute path
+ * to the downloaded file.
+ *
+ * @param artifactDetails - The information required to download the artifact
+ */
+async function downloadArtifact(_artifactDetails) {
+ const artifactDetails = Object.assign({}, _artifactDetails);
+ if (!_artifactDetails.isGeneric) {
+ const platformArtifactDetails = artifactDetails;
+ if (!platformArtifactDetails.platform) {
+ d('No platform found, defaulting to the host platform');
+ platformArtifactDetails.platform = process.platform;
+ }
+ if (platformArtifactDetails.arch) {
+ platformArtifactDetails.arch = utils_1.getNodeArch(platformArtifactDetails.arch);
+ }
+ else {
+ d('No arch found, defaulting to the host arch');
+ platformArtifactDetails.arch = utils_1.getHostArch();
+ }
+ }
+ utils_1.ensureIsTruthyString(artifactDetails, 'version');
+ artifactDetails.version = utils_1.normalizeVersion(process.env.ELECTRON_CUSTOM_VERSION || artifactDetails.version);
+ const fileName = artifact_utils_1.getArtifactFileName(artifactDetails);
+ const url = await artifact_utils_1.getArtifactRemoteURL(artifactDetails);
+ const cache = new Cache_1.Cache(artifactDetails.cacheRoot);
+ // Do not check if the file exists in the cache when force === true
+ if (!artifactDetails.force) {
+ d(`Checking the cache (${artifactDetails.cacheRoot}) for ${fileName} (${url})`);
+ const cachedPath = await cache.getPathForFileInCache(url, fileName);
+ if (cachedPath === null) {
+ d('Cache miss');
+ }
+ else {
+ d('Cache hit');
+ return cachedPath;
+ }
+ }
+ if (!artifactDetails.isGeneric &&
+ utils_1.isOfficialLinuxIA32Download(artifactDetails.platform, artifactDetails.arch, artifactDetails.version, artifactDetails.mirrorOptions)) {
+ console.warn('Official Linux/ia32 support is deprecated.');
+ console.warn('For more info: https://electronjs.org/blog/linux-32bit-support');
+ }
+ return await utils_1.withTempDirectoryIn(artifactDetails.tempDirectory, async (tempFolder) => {
+ const tempDownloadPath = path.resolve(tempFolder, artifact_utils_1.getArtifactFileName(artifactDetails));
+ const downloader = artifactDetails.downloader || (await downloader_resolver_1.getDownloaderForSystem());
+ d(`Downloading ${url} to ${tempDownloadPath} with options: ${JSON.stringify(artifactDetails.downloadOptions)}`);
+ await downloader.download(url, tempDownloadPath, artifactDetails.downloadOptions);
+ // Don't try to verify the hash of the hash file itself
+ // and for older versions that don't have a SHASUMS256.txt
+ if (!artifactDetails.artifactName.startsWith('SHASUMS256') &&
+ !artifactDetails.unsafelyDisableChecksums &&
+ semver.gte(artifactDetails.version, '1.3.2')) {
+ await utils_1.withTempDirectory(async (tmpDir) => {
+ let shasumPath;
+ const checksums = artifactDetails.checksums;
+ if (checksums) {
+ shasumPath = path.resolve(tmpDir, 'SHASUMS256.txt');
+ const fileNames = Object.keys(checksums);
+ if (fileNames.length === 0) {
+ throw new Error('Provided "checksums" object is empty, cannot generate a valid SHASUMS256.txt');
+ }
+ const generatedChecksums = fileNames
+ .map(fileName => `${checksums[fileName]} *${fileName}`)
+ .join('\n');
+ await fs.writeFile(shasumPath, generatedChecksums);
+ }
+ else {
+ shasumPath = await downloadArtifact({
+ isGeneric: true,
+ version: artifactDetails.version,
+ artifactName: 'SHASUMS256.txt',
+ force: artifactDetails.force,
+ downloadOptions: artifactDetails.downloadOptions,
+ cacheRoot: artifactDetails.cacheRoot,
+ downloader: artifactDetails.downloader,
+ mirrorOptions: artifactDetails.mirrorOptions,
+ });
+ }
+ // For versions 1.3.2 - 1.3.4, need to overwrite the `defaultTextEncoding` option:
+ // https://github.com/electron/electron/pull/6676#discussion_r75332120
+ if (semver.satisfies(artifactDetails.version, '1.3.2 - 1.3.4')) {
+ const validatorOptions = {};
+ validatorOptions.defaultTextEncoding = 'binary';
+ const checker = new sumchecker.ChecksumValidator('sha256', shasumPath, validatorOptions);
+ await checker.validate(path.dirname(tempDownloadPath), path.basename(tempDownloadPath));
+ }
+ else {
+ await sumchecker('sha256', shasumPath, path.dirname(tempDownloadPath), [
+ path.basename(tempDownloadPath),
+ ]);
+ }
+ });
+ }
+ return await cache.putFileInCache(url, tempDownloadPath, fileName);
+ });
+}
+exports.downloadArtifact = downloadArtifact;
+/**
+ * Downloads a specific version of Electron and returns an absolute path to a
+ * ZIP file.
+ *
+ * @param version - The version of Electron you want to download
+ */
+function download(version, options) {
+ return downloadArtifact(Object.assign(Object.assign({}, options), { version, platform: process.platform, arch: process.arch, artifactName: 'electron' }));
+}
+exports.download = download;
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/index.js.map b/node_modules/@electron/get/dist/cjs/index.js.map
new file mode 100644
index 0000000..d79dbec
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/proxy.d.ts b/node_modules/@electron/get/dist/cjs/proxy.d.ts
new file mode 100644
index 0000000..df3e16a
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/proxy.d.ts
@@ -0,0 +1,4 @@
+/**
+ * Initializes a third-party proxy module for HTTP(S) requests.
+ */
+export declare function initializeProxy(): void;
diff --git a/node_modules/@electron/get/dist/cjs/proxy.js b/node_modules/@electron/get/dist/cjs/proxy.js
new file mode 100644
index 0000000..68160a8
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/proxy.js
@@ -0,0 +1,32 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const debug = require("debug");
+const utils_1 = require("./utils");
+const d = debug('@electron/get:proxy');
+/**
+ * Initializes a third-party proxy module for HTTP(S) requests.
+ */
+function initializeProxy() {
+ try {
+ // Code originally from https://github.com/yeoman/yo/blob/b2eea87e/lib/cli.js#L19-L28
+ const MAJOR_NODEJS_VERSION = parseInt(process.version.slice(1).split('.')[0], 10);
+ if (MAJOR_NODEJS_VERSION >= 10) {
+ // See: https://github.com/electron/get/pull/214#discussion_r798845713
+ const env = utils_1.getEnv('GLOBAL_AGENT_');
+ utils_1.setEnv('GLOBAL_AGENT_HTTP_PROXY', env('HTTP_PROXY'));
+ utils_1.setEnv('GLOBAL_AGENT_HTTPS_PROXY', env('HTTPS_PROXY'));
+ utils_1.setEnv('GLOBAL_AGENT_NO_PROXY', env('NO_PROXY'));
+ // `global-agent` works with Node.js v10 and above.
+ require('global-agent').bootstrap();
+ }
+ else {
+ // `global-tunnel-ng` works with Node.js v10 and below.
+ require('global-tunnel-ng').initialize();
+ }
+ }
+ catch (e) {
+ d('Could not load either proxy modules, built-in proxy support not available:', e);
+ }
+}
+exports.initializeProxy = initializeProxy;
+//# sourceMappingURL=proxy.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/proxy.js.map b/node_modules/@electron/get/dist/cjs/proxy.js.map
new file mode 100644
index 0000000..19b8124
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/proxy.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":";;AAAA,+BAA+B;AAC/B,mCAAyC;AAEzC,MAAM,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAEvC;;GAEG;AACH,SAAgB,eAAe;IAC7B,IAAI;QACF,qFAAqF;QACrF,MAAM,oBAAoB,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAElF,IAAI,oBAAoB,IAAI,EAAE,EAAE;YAC9B,sEAAsE;YACtE,MAAM,GAAG,GAAG,cAAM,CAAC,eAAe,CAAC,CAAC;YAEpC,cAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;YACrD,cAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;YACvD,cAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YAEjD,mDAAmD;YACnD,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC;SACrC;aAAM;YACL,uDAAuD;YACvD,OAAO,CAAC,kBAAkB,CAAC,CAAC,UAAU,EAAE,CAAC;SAC1C;KACF;IAAC,OAAO,CAAC,EAAE;QACV,CAAC,CAAC,4EAA4E,EAAE,CAAC,CAAC,CAAC;KACpF;AACH,CAAC;AAtBD,0CAsBC"}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/types.d.ts b/node_modules/@electron/get/dist/cjs/types.d.ts
new file mode 100644
index 0000000..d8f73f3
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/types.d.ts
@@ -0,0 +1,124 @@
+import { Downloader } from './Downloader';
+export declare type DownloadOptions = any;
+export interface MirrorOptions {
+ /**
+ * DEPRECATED - see nightlyMirror.
+ */
+ nightly_mirror?: string;
+ /**
+ * The Electron nightly-specific mirror URL.
+ */
+ nightlyMirror?: string;
+ /**
+ * The base URL of the mirror to download from,
+ * e.g https://github.com/electron/electron/releases/download
+ */
+ mirror?: string;
+ /**
+ * The name of the directory to download from,
+ * often scoped by version number e.g 'v4.0.4'
+ */
+ customDir?: string;
+ /**
+ * The name of the asset to download,
+ * e.g 'electron-v4.0.4-linux-x64.zip'
+ */
+ customFilename?: string;
+ /**
+ * A function allowing customization of the url returned
+ * from getArtifactRemoteURL().
+ */
+ resolveAssetURL?: (opts: DownloadOptions) => Promise;
+}
+export interface ElectronDownloadRequest {
+ /**
+ * The version of Electron associated with the artifact.
+ */
+ version: string;
+ /**
+ * The type of artifact. For example:
+ * * `electron`
+ * * `ffmpeg`
+ */
+ artifactName: string;
+}
+export interface ElectronDownloadRequestOptions {
+ /**
+ * Whether to download an artifact regardless of whether it's in the cache directory.
+ *
+ * Defaults to `false`.
+ */
+ force?: boolean;
+ /**
+ * When set to `true`, disables checking that the artifact download completed successfully
+ * with the correct payload.
+ *
+ * Defaults to `false`.
+ */
+ unsafelyDisableChecksums?: boolean;
+ /**
+ * Provides checksums for the artifact as strings.
+ * Can be used if you already know the checksums of the Electron artifact
+ * you are downloading and want to skip the checksum file download
+ * without skipping the checksum validation.
+ *
+ * This should be an object whose keys are the file names of the artifacts and
+ * the values are their respective SHA256 checksums.
+ */
+ checksums?: Record;
+ /**
+ * The directory that caches Electron artifact downloads.
+ *
+ * The default value is dependent upon the host platform:
+ *
+ * * Linux: `$XDG_CACHE_HOME` or `~/.cache/electron/`
+ * * MacOS: `~/Library/Caches/electron/`
+ * * Windows: `%LOCALAPPDATA%/electron/Cache` or `~/AppData/Local/electron/Cache/`
+ */
+ cacheRoot?: string;
+ /**
+ * Options passed to the downloader module.
+ */
+ downloadOptions?: DownloadOptions;
+ /**
+ * Options related to specifying an artifact mirror.
+ */
+ mirrorOptions?: MirrorOptions;
+ /**
+ * The custom [[Downloader]] class used to download artifacts. Defaults to the
+ * built-in [[GotDownloader]].
+ */
+ downloader?: Downloader;
+ /**
+ * A temporary directory for downloads.
+ * It is used before artifacts are put into cache.
+ */
+ tempDirectory?: string;
+}
+export declare type ElectronPlatformArtifactDetails = {
+ /**
+ * The target artifact platform. These are Node-style platform names, for example:
+ * * `win32`
+ * * `darwin`
+ * * `linux`
+ */
+ platform: string;
+ /**
+ * The target artifact architecture. These are Node-style architecture names, for example:
+ * * `ia32`
+ * * `x64`
+ * * `armv7l`
+ */
+ arch: string;
+ artifactSuffix?: string;
+ isGeneric?: false;
+} & ElectronDownloadRequest & ElectronDownloadRequestOptions;
+export declare type ElectronGenericArtifactDetails = {
+ isGeneric: true;
+} & ElectronDownloadRequest & ElectronDownloadRequestOptions;
+export declare type ElectronArtifactDetails = ElectronPlatformArtifactDetails | ElectronGenericArtifactDetails;
+export declare type Omit = Pick>;
+export declare type ElectronPlatformArtifactDetailsWithDefaults = (Omit & {
+ platform?: string;
+ arch?: string;
+}) | ElectronGenericArtifactDetails;
diff --git a/node_modules/@electron/get/dist/cjs/types.js b/node_modules/@electron/get/dist/cjs/types.js
new file mode 100644
index 0000000..11e638d
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/types.js
@@ -0,0 +1,3 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+//# sourceMappingURL=types.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/types.js.map b/node_modules/@electron/get/dist/cjs/types.js.map
new file mode 100644
index 0000000..7b5fff8
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/types.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/utils.d.ts b/node_modules/@electron/get/dist/cjs/utils.d.ts
new file mode 100644
index 0000000..3cc40c1
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/utils.d.ts
@@ -0,0 +1,25 @@
+export declare function withTempDirectoryIn(parentDirectory: string | undefined, fn: (directory: string) => Promise): Promise;
+export declare function withTempDirectory(fn: (directory: string) => Promise): Promise;
+export declare function normalizeVersion(version: string): string;
+/**
+ * Runs the `uname` command and returns the trimmed output.
+ */
+export declare function uname(): string;
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name.
+ */
+export declare function getNodeArch(arch: string): string;
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name, from the `process` module information.
+ */
+export declare function getHostArch(): string;
+export declare function ensureIsTruthyString(obj: T, key: K): void;
+export declare function isOfficialLinuxIA32Download(platform: string, arch: string, version: string, mirrorOptions?: object): boolean;
+/**
+ * Find the value of a environment variable which may or may not have the
+ * prefix, in a case-insensitive manner.
+ */
+export declare function getEnv(prefix?: string): (name: string) => string | undefined;
+export declare function setEnv(key: string, value: string | undefined): void;
diff --git a/node_modules/@electron/get/dist/cjs/utils.js b/node_modules/@electron/get/dist/cjs/utils.js
new file mode 100644
index 0000000..4806842
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/utils.js
@@ -0,0 +1,107 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+const childProcess = require("child_process");
+const fs = require("fs-extra");
+const os = require("os");
+const path = require("path");
+async function useAndRemoveDirectory(directory, fn) {
+ let result;
+ try {
+ result = await fn(directory);
+ }
+ finally {
+ await fs.remove(directory);
+ }
+ return result;
+}
+async function withTempDirectoryIn(parentDirectory = os.tmpdir(), fn) {
+ const tempDirectoryPrefix = 'electron-download-';
+ const tempDirectory = await fs.mkdtemp(path.resolve(parentDirectory, tempDirectoryPrefix));
+ return useAndRemoveDirectory(tempDirectory, fn);
+}
+exports.withTempDirectoryIn = withTempDirectoryIn;
+async function withTempDirectory(fn) {
+ return withTempDirectoryIn(undefined, fn);
+}
+exports.withTempDirectory = withTempDirectory;
+function normalizeVersion(version) {
+ if (!version.startsWith('v')) {
+ return `v${version}`;
+ }
+ return version;
+}
+exports.normalizeVersion = normalizeVersion;
+/**
+ * Runs the `uname` command and returns the trimmed output.
+ */
+function uname() {
+ return childProcess
+ .execSync('uname -m')
+ .toString()
+ .trim();
+}
+exports.uname = uname;
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name.
+ */
+function getNodeArch(arch) {
+ if (arch === 'arm') {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ switch (process.config.variables.arm_version) {
+ case '6':
+ return uname();
+ case '7':
+ default:
+ return 'armv7l';
+ }
+ }
+ return arch;
+}
+exports.getNodeArch = getNodeArch;
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name, from the `process` module information.
+ */
+function getHostArch() {
+ return getNodeArch(process.arch);
+}
+exports.getHostArch = getHostArch;
+function ensureIsTruthyString(obj, key) {
+ if (!obj[key] || typeof obj[key] !== 'string') {
+ throw new Error(`Expected property "${key}" to be provided as a string but it was not`);
+ }
+}
+exports.ensureIsTruthyString = ensureIsTruthyString;
+function isOfficialLinuxIA32Download(platform, arch, version, mirrorOptions) {
+ return (platform === 'linux' &&
+ arch === 'ia32' &&
+ Number(version.slice(1).split('.')[0]) >= 4 &&
+ typeof mirrorOptions === 'undefined');
+}
+exports.isOfficialLinuxIA32Download = isOfficialLinuxIA32Download;
+/**
+ * Find the value of a environment variable which may or may not have the
+ * prefix, in a case-insensitive manner.
+ */
+function getEnv(prefix = '') {
+ const envsLowerCase = {};
+ for (const envKey in process.env) {
+ envsLowerCase[envKey.toLowerCase()] = process.env[envKey];
+ }
+ return (name) => {
+ return (envsLowerCase[`${prefix}${name}`.toLowerCase()] ||
+ envsLowerCase[name.toLowerCase()] ||
+ undefined);
+ };
+}
+exports.getEnv = getEnv;
+function setEnv(key, value) {
+ // The `void` operator always returns `undefined`.
+ // See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void
+ if (value !== void 0) {
+ process.env[key] = value;
+ }
+}
+exports.setEnv = setEnv;
+//# sourceMappingURL=utils.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/cjs/utils.js.map b/node_modules/@electron/get/dist/cjs/utils.js.map
new file mode 100644
index 0000000..5add151
--- /dev/null
+++ b/node_modules/@electron/get/dist/cjs/utils.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/Cache.d.ts b/node_modules/@electron/get/dist/esm/Cache.d.ts
new file mode 100644
index 0000000..626001a
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/Cache.d.ts
@@ -0,0 +1,8 @@
+export declare class Cache {
+ private cacheRoot;
+ constructor(cacheRoot?: string);
+ static getCacheDirectory(downloadUrl: string): string;
+ getCachePath(downloadUrl: string, fileName: string): string;
+ getPathForFileInCache(url: string, fileName: string): Promise;
+ putFileInCache(url: string, currentPath: string, fileName: string): Promise;
+}
diff --git a/node_modules/@electron/get/dist/esm/Cache.js b/node_modules/@electron/get/dist/esm/Cache.js
new file mode 100644
index 0000000..4801010
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/Cache.js
@@ -0,0 +1,57 @@
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+import debug from 'debug';
+import envPaths from 'env-paths';
+import * as fs from 'fs-extra';
+import * as path from 'path';
+import * as url from 'url';
+import * as crypto from 'crypto';
+const d = debug('@electron/get:cache');
+const defaultCacheRoot = envPaths('electron', {
+ suffix: '',
+}).cache;
+export class Cache {
+ constructor(cacheRoot = defaultCacheRoot) {
+ this.cacheRoot = cacheRoot;
+ }
+ static getCacheDirectory(downloadUrl) {
+ const parsedDownloadUrl = url.parse(downloadUrl);
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const { search, hash, pathname } = parsedDownloadUrl, rest = __rest(parsedDownloadUrl, ["search", "hash", "pathname"]);
+ const strippedUrl = url.format(Object.assign(Object.assign({}, rest), { pathname: path.dirname(pathname || 'electron') }));
+ return crypto
+ .createHash('sha256')
+ .update(strippedUrl)
+ .digest('hex');
+ }
+ getCachePath(downloadUrl, fileName) {
+ return path.resolve(this.cacheRoot, Cache.getCacheDirectory(downloadUrl), fileName);
+ }
+ async getPathForFileInCache(url, fileName) {
+ const cachePath = this.getCachePath(url, fileName);
+ if (await fs.pathExists(cachePath)) {
+ return cachePath;
+ }
+ return null;
+ }
+ async putFileInCache(url, currentPath, fileName) {
+ const cachePath = this.getCachePath(url, fileName);
+ d(`Moving ${currentPath} to ${cachePath}`);
+ if (await fs.pathExists(cachePath)) {
+ d('* Replacing existing file');
+ await fs.remove(cachePath);
+ }
+ await fs.move(currentPath, cachePath);
+ return cachePath;
+ }
+}
+//# sourceMappingURL=Cache.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/Cache.js.map b/node_modules/@electron/get/dist/esm/Cache.js.map
new file mode 100644
index 0000000..943403b
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/Cache.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Cache.js","sourceRoot":"","sources":["../../src/Cache.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,MAAM,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAEvC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,UAAU,EAAE;IAC5C,MAAM,EAAE,EAAE;CACX,CAAC,CAAC,KAAK,CAAC;AAET,MAAM,OAAO,KAAK;IAChB,YAAoB,YAAY,gBAAgB;QAA5B,cAAS,GAAT,SAAS,CAAmB;IAAG,CAAC;IAE7C,MAAM,CAAC,iBAAiB,CAAC,WAAmB;QACjD,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjD,6DAA6D;QAC7D,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,KAAc,iBAAiB,EAA7B,gEAA6B,CAAC;QAC9D,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,iCAAM,IAAI,KAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAG,CAAC;QAE5F,OAAO,MAAM;aACV,UAAU,CAAC,QAAQ,CAAC;aACpB,MAAM,CAAC,WAAW,CAAC;aACnB,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAEM,YAAY,CAAC,WAAmB,EAAE,QAAgB;QACvD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtF,CAAC;IAEM,KAAK,CAAC,qBAAqB,CAAC,GAAW,EAAE,QAAgB;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAClC,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,GAAW,EAAE,WAAmB,EAAE,QAAgB;QAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC,CAAC,UAAU,WAAW,OAAO,SAAS,EAAE,CAAC,CAAC;QAC3C,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;YAClC,CAAC,CAAC,2BAA2B,CAAC,CAAC;YAC/B,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SAC5B;QAED,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAEtC,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/Downloader.d.ts b/node_modules/@electron/get/dist/esm/Downloader.d.ts
new file mode 100644
index 0000000..8e5e40e
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/Downloader.d.ts
@@ -0,0 +1,3 @@
+export interface Downloader {
+ download(url: string, targetFilePath: string, options: T): Promise;
+}
diff --git a/node_modules/@electron/get/dist/esm/Downloader.js b/node_modules/@electron/get/dist/esm/Downloader.js
new file mode 100644
index 0000000..6ff5866
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/Downloader.js
@@ -0,0 +1 @@
+//# sourceMappingURL=Downloader.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/Downloader.js.map b/node_modules/@electron/get/dist/esm/Downloader.js.map
new file mode 100644
index 0000000..c6199d5
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/Downloader.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"Downloader.js","sourceRoot":"","sources":["../../src/Downloader.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/GotDownloader.d.ts b/node_modules/@electron/get/dist/esm/GotDownloader.d.ts
new file mode 100644
index 0000000..88686fd
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/GotDownloader.d.ts
@@ -0,0 +1,19 @@
+import * as got from 'got';
+import { Downloader } from './Downloader';
+/**
+ * See [`got#options`](https://github.com/sindresorhus/got#options) for possible keys/values.
+ */
+export declare type GotDownloaderOptions = got.GotOptions & {
+ /**
+ * if defined, triggers every time `got`'s `downloadProgress` event callback is triggered.
+ */
+ getProgressCallback?: (progress: got.Progress) => Promise;
+ /**
+ * if `true`, disables the console progress bar (setting the `ELECTRON_GET_NO_PROGRESS`
+ * environment variable to a non-empty value also does this).
+ */
+ quiet?: boolean;
+};
+export declare class GotDownloader implements Downloader {
+ download(url: string, targetFilePath: string, options?: GotDownloaderOptions): Promise;
+}
diff --git a/node_modules/@electron/get/dist/esm/GotDownloader.js b/node_modules/@electron/get/dist/esm/GotDownloader.js
new file mode 100644
index 0000000..b5fc207
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/GotDownloader.js
@@ -0,0 +1,73 @@
+var __rest = (this && this.__rest) || function (s, e) {
+ var t = {};
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+ t[p] = s[p];
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
+ t[p[i]] = s[p[i]];
+ }
+ return t;
+};
+import * as fs from 'fs-extra';
+import * as got from 'got';
+import * as path from 'path';
+import * as ProgressBar from 'progress';
+const PROGRESS_BAR_DELAY_IN_SECONDS = 30;
+export class GotDownloader {
+ async download(url, targetFilePath, options) {
+ if (!options) {
+ options = {};
+ }
+ const { quiet, getProgressCallback } = options, gotOptions = __rest(options, ["quiet", "getProgressCallback"]);
+ let downloadCompleted = false;
+ let bar;
+ let progressPercent;
+ let timeout = undefined;
+ await fs.mkdirp(path.dirname(targetFilePath));
+ const writeStream = fs.createWriteStream(targetFilePath);
+ if (!quiet || !process.env.ELECTRON_GET_NO_PROGRESS) {
+ const start = new Date();
+ timeout = setTimeout(() => {
+ if (!downloadCompleted) {
+ bar = new ProgressBar(`Downloading ${path.basename(url)}: [:bar] :percent ETA: :eta seconds `, {
+ curr: progressPercent,
+ total: 100,
+ });
+ // https://github.com/visionmedia/node-progress/issues/159
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ bar.start = start;
+ }
+ }, PROGRESS_BAR_DELAY_IN_SECONDS * 1000);
+ }
+ await new Promise((resolve, reject) => {
+ const downloadStream = got.stream(url, gotOptions);
+ downloadStream.on('downloadProgress', async (progress) => {
+ progressPercent = progress.percent;
+ if (bar) {
+ bar.update(progress.percent);
+ }
+ if (getProgressCallback) {
+ await getProgressCallback(progress);
+ }
+ });
+ downloadStream.on('error', error => {
+ if (error.name === 'HTTPError' && error.statusCode === 404) {
+ error.message += ` for ${error.url}`;
+ }
+ if (writeStream.destroy) {
+ writeStream.destroy(error);
+ }
+ reject(error);
+ });
+ writeStream.on('error', error => reject(error));
+ writeStream.on('close', () => resolve());
+ downloadStream.pipe(writeStream);
+ });
+ downloadCompleted = true;
+ if (timeout) {
+ clearTimeout(timeout);
+ }
+ }
+}
+//# sourceMappingURL=GotDownloader.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/GotDownloader.js.map b/node_modules/@electron/get/dist/esm/GotDownloader.js.map
new file mode 100644
index 0000000..9ba6756
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/GotDownloader.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"GotDownloader.js","sourceRoot":"","sources":["../../src/GotDownloader.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/artifact-utils.d.ts b/node_modules/@electron/get/dist/esm/artifact-utils.d.ts
new file mode 100644
index 0000000..3426f60
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/artifact-utils.d.ts
@@ -0,0 +1,3 @@
+import { ElectronArtifactDetails } from './types';
+export declare function getArtifactFileName(details: ElectronArtifactDetails): string;
+export declare function getArtifactRemoteURL(details: ElectronArtifactDetails): Promise;
diff --git a/node_modules/@electron/get/dist/esm/artifact-utils.js b/node_modules/@electron/get/dist/esm/artifact-utils.js
new file mode 100644
index 0000000..d50380b
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/artifact-utils.js
@@ -0,0 +1,52 @@
+import { ensureIsTruthyString } from './utils';
+const BASE_URL = 'https://github.com/electron/electron/releases/download/';
+const NIGHTLY_BASE_URL = 'https://github.com/electron/nightlies/releases/download/';
+export function getArtifactFileName(details) {
+ ensureIsTruthyString(details, 'artifactName');
+ if (details.isGeneric) {
+ return details.artifactName;
+ }
+ ensureIsTruthyString(details, 'arch');
+ ensureIsTruthyString(details, 'platform');
+ ensureIsTruthyString(details, 'version');
+ return `${[
+ details.artifactName,
+ details.version,
+ details.platform,
+ details.arch,
+ ...(details.artifactSuffix ? [details.artifactSuffix] : []),
+ ].join('-')}.zip`;
+}
+function mirrorVar(name, options, defaultValue) {
+ // Convert camelCase to camel_case for env var reading
+ const lowerName = name.replace(/([a-z])([A-Z])/g, (_, a, b) => `${a}_${b}`).toLowerCase();
+ return (process.env[`NPM_CONFIG_ELECTRON_${lowerName.toUpperCase()}`] ||
+ process.env[`npm_config_electron_${lowerName}`] ||
+ process.env[`npm_package_config_electron_${lowerName}`] ||
+ process.env[`ELECTRON_${lowerName.toUpperCase()}`] ||
+ options[name] ||
+ defaultValue);
+}
+export async function getArtifactRemoteURL(details) {
+ const opts = details.mirrorOptions || {};
+ let base = mirrorVar('mirror', opts, BASE_URL);
+ if (details.version.includes('nightly')) {
+ const nightlyDeprecated = mirrorVar('nightly_mirror', opts, '');
+ if (nightlyDeprecated) {
+ base = nightlyDeprecated;
+ console.warn(`nightly_mirror is deprecated, please use nightlyMirror`);
+ }
+ else {
+ base = mirrorVar('nightlyMirror', opts, NIGHTLY_BASE_URL);
+ }
+ }
+ const path = mirrorVar('customDir', opts, details.version).replace('{{ version }}', details.version.replace(/^v/, ''));
+ const file = mirrorVar('customFilename', opts, getArtifactFileName(details));
+ // Allow customized download URL resolution.
+ if (opts.resolveAssetURL) {
+ const url = await opts.resolveAssetURL(details);
+ return url;
+ }
+ return `${base}${path}/${file}`;
+}
+//# sourceMappingURL=artifact-utils.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/artifact-utils.js.map b/node_modules/@electron/get/dist/esm/artifact-utils.js.map
new file mode 100644
index 0000000..ba9cd1b
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/artifact-utils.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"artifact-utils.js","sourceRoot":"","sources":["../../src/artifact-utils.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/downloader-resolver.d.ts b/node_modules/@electron/get/dist/esm/downloader-resolver.d.ts
new file mode 100644
index 0000000..f7f09b2
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/downloader-resolver.d.ts
@@ -0,0 +1,3 @@
+import { DownloadOptions } from './types';
+import { Downloader } from './Downloader';
+export declare function getDownloaderForSystem(): Promise>;
diff --git a/node_modules/@electron/get/dist/esm/downloader-resolver.js b/node_modules/@electron/get/dist/esm/downloader-resolver.js
new file mode 100644
index 0000000..5a87c3c
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/downloader-resolver.js
@@ -0,0 +1,9 @@
+export async function getDownloaderForSystem() {
+ // TODO: Resolve the downloader or default to GotDownloader
+ // Current thoughts are a dot-file traversal for something like
+ // ".electron.downloader" which would be a text file with the name of the
+ // npm module to import() and use as the downloader
+ const { GotDownloader } = await import('./GotDownloader');
+ return new GotDownloader();
+}
+//# sourceMappingURL=downloader-resolver.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/downloader-resolver.js.map b/node_modules/@electron/get/dist/esm/downloader-resolver.js.map
new file mode 100644
index 0000000..201069b
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/downloader-resolver.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"downloader-resolver.js","sourceRoot":"","sources":["../../src/downloader-resolver.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,2DAA2D;IAC3D,+DAA+D;IAC/D,yEAAyE;IACzE,mDAAmD;IACnD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC1D,OAAO,IAAI,aAAa,EAAE,CAAC;AAC7B,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/index.d.ts b/node_modules/@electron/get/dist/esm/index.d.ts
new file mode 100644
index 0000000..93e709e
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/index.d.ts
@@ -0,0 +1,18 @@
+import { ElectronDownloadRequestOptions, ElectronPlatformArtifactDetailsWithDefaults } from './types';
+export { getHostArch } from './utils';
+export { initializeProxy } from './proxy';
+export * from './types';
+/**
+ * Downloads an artifact from an Electron release and returns an absolute path
+ * to the downloaded file.
+ *
+ * @param artifactDetails - The information required to download the artifact
+ */
+export declare function downloadArtifact(_artifactDetails: ElectronPlatformArtifactDetailsWithDefaults): Promise;
+/**
+ * Downloads a specific version of Electron and returns an absolute path to a
+ * ZIP file.
+ *
+ * @param version - The version of Electron you want to download
+ */
+export declare function download(version: string, options?: ElectronDownloadRequestOptions): Promise;
diff --git a/node_modules/@electron/get/dist/esm/index.js b/node_modules/@electron/get/dist/esm/index.js
new file mode 100644
index 0000000..e6f2303
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/index.js
@@ -0,0 +1,124 @@
+import debug from 'debug';
+import * as fs from 'fs-extra';
+import * as path from 'path';
+import * as semver from 'semver';
+import * as sumchecker from 'sumchecker';
+import { getArtifactFileName, getArtifactRemoteURL } from './artifact-utils';
+import { Cache } from './Cache';
+import { getDownloaderForSystem } from './downloader-resolver';
+import { initializeProxy } from './proxy';
+import { withTempDirectoryIn, normalizeVersion, getHostArch, getNodeArch, ensureIsTruthyString, isOfficialLinuxIA32Download, withTempDirectory, } from './utils';
+export { getHostArch } from './utils';
+export { initializeProxy } from './proxy';
+const d = debug('@electron/get:index');
+if (process.env.ELECTRON_GET_USE_PROXY) {
+ initializeProxy();
+}
+/**
+ * Downloads an artifact from an Electron release and returns an absolute path
+ * to the downloaded file.
+ *
+ * @param artifactDetails - The information required to download the artifact
+ */
+export async function downloadArtifact(_artifactDetails) {
+ const artifactDetails = Object.assign({}, _artifactDetails);
+ if (!_artifactDetails.isGeneric) {
+ const platformArtifactDetails = artifactDetails;
+ if (!platformArtifactDetails.platform) {
+ d('No platform found, defaulting to the host platform');
+ platformArtifactDetails.platform = process.platform;
+ }
+ if (platformArtifactDetails.arch) {
+ platformArtifactDetails.arch = getNodeArch(platformArtifactDetails.arch);
+ }
+ else {
+ d('No arch found, defaulting to the host arch');
+ platformArtifactDetails.arch = getHostArch();
+ }
+ }
+ ensureIsTruthyString(artifactDetails, 'version');
+ artifactDetails.version = normalizeVersion(process.env.ELECTRON_CUSTOM_VERSION || artifactDetails.version);
+ const fileName = getArtifactFileName(artifactDetails);
+ const url = await getArtifactRemoteURL(artifactDetails);
+ const cache = new Cache(artifactDetails.cacheRoot);
+ // Do not check if the file exists in the cache when force === true
+ if (!artifactDetails.force) {
+ d(`Checking the cache (${artifactDetails.cacheRoot}) for ${fileName} (${url})`);
+ const cachedPath = await cache.getPathForFileInCache(url, fileName);
+ if (cachedPath === null) {
+ d('Cache miss');
+ }
+ else {
+ d('Cache hit');
+ return cachedPath;
+ }
+ }
+ if (!artifactDetails.isGeneric &&
+ isOfficialLinuxIA32Download(artifactDetails.platform, artifactDetails.arch, artifactDetails.version, artifactDetails.mirrorOptions)) {
+ console.warn('Official Linux/ia32 support is deprecated.');
+ console.warn('For more info: https://electronjs.org/blog/linux-32bit-support');
+ }
+ return await withTempDirectoryIn(artifactDetails.tempDirectory, async (tempFolder) => {
+ const tempDownloadPath = path.resolve(tempFolder, getArtifactFileName(artifactDetails));
+ const downloader = artifactDetails.downloader || (await getDownloaderForSystem());
+ d(`Downloading ${url} to ${tempDownloadPath} with options: ${JSON.stringify(artifactDetails.downloadOptions)}`);
+ await downloader.download(url, tempDownloadPath, artifactDetails.downloadOptions);
+ // Don't try to verify the hash of the hash file itself
+ // and for older versions that don't have a SHASUMS256.txt
+ if (!artifactDetails.artifactName.startsWith('SHASUMS256') &&
+ !artifactDetails.unsafelyDisableChecksums &&
+ semver.gte(artifactDetails.version, '1.3.2')) {
+ await withTempDirectory(async (tmpDir) => {
+ let shasumPath;
+ const checksums = artifactDetails.checksums;
+ if (checksums) {
+ shasumPath = path.resolve(tmpDir, 'SHASUMS256.txt');
+ const fileNames = Object.keys(checksums);
+ if (fileNames.length === 0) {
+ throw new Error('Provided "checksums" object is empty, cannot generate a valid SHASUMS256.txt');
+ }
+ const generatedChecksums = fileNames
+ .map(fileName => `${checksums[fileName]} *${fileName}`)
+ .join('\n');
+ await fs.writeFile(shasumPath, generatedChecksums);
+ }
+ else {
+ shasumPath = await downloadArtifact({
+ isGeneric: true,
+ version: artifactDetails.version,
+ artifactName: 'SHASUMS256.txt',
+ force: artifactDetails.force,
+ downloadOptions: artifactDetails.downloadOptions,
+ cacheRoot: artifactDetails.cacheRoot,
+ downloader: artifactDetails.downloader,
+ mirrorOptions: artifactDetails.mirrorOptions,
+ });
+ }
+ // For versions 1.3.2 - 1.3.4, need to overwrite the `defaultTextEncoding` option:
+ // https://github.com/electron/electron/pull/6676#discussion_r75332120
+ if (semver.satisfies(artifactDetails.version, '1.3.2 - 1.3.4')) {
+ const validatorOptions = {};
+ validatorOptions.defaultTextEncoding = 'binary';
+ const checker = new sumchecker.ChecksumValidator('sha256', shasumPath, validatorOptions);
+ await checker.validate(path.dirname(tempDownloadPath), path.basename(tempDownloadPath));
+ }
+ else {
+ await sumchecker('sha256', shasumPath, path.dirname(tempDownloadPath), [
+ path.basename(tempDownloadPath),
+ ]);
+ }
+ });
+ }
+ return await cache.putFileInCache(url, tempDownloadPath, fileName);
+ });
+}
+/**
+ * Downloads a specific version of Electron and returns an absolute path to a
+ * ZIP file.
+ *
+ * @param version - The version of Electron you want to download
+ */
+export function download(version, options) {
+ return downloadArtifact(Object.assign(Object.assign({}, options), { version, platform: process.platform, arch: process.arch, artifactName: 'electron' }));
+}
+//# sourceMappingURL=index.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/index.js.map b/node_modules/@electron/get/dist/esm/index.js.map
new file mode 100644
index 0000000..cfeb2a2
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/proxy.d.ts b/node_modules/@electron/get/dist/esm/proxy.d.ts
new file mode 100644
index 0000000..df3e16a
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/proxy.d.ts
@@ -0,0 +1,4 @@
+/**
+ * Initializes a third-party proxy module for HTTP(S) requests.
+ */
+export declare function initializeProxy(): void;
diff --git a/node_modules/@electron/get/dist/esm/proxy.js b/node_modules/@electron/get/dist/esm/proxy.js
new file mode 100644
index 0000000..8063ef2
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/proxy.js
@@ -0,0 +1,29 @@
+import * as debug from 'debug';
+import { getEnv, setEnv } from './utils';
+const d = debug('@electron/get:proxy');
+/**
+ * Initializes a third-party proxy module for HTTP(S) requests.
+ */
+export function initializeProxy() {
+ try {
+ // Code originally from https://github.com/yeoman/yo/blob/b2eea87e/lib/cli.js#L19-L28
+ const MAJOR_NODEJS_VERSION = parseInt(process.version.slice(1).split('.')[0], 10);
+ if (MAJOR_NODEJS_VERSION >= 10) {
+ // See: https://github.com/electron/get/pull/214#discussion_r798845713
+ const env = getEnv('GLOBAL_AGENT_');
+ setEnv('GLOBAL_AGENT_HTTP_PROXY', env('HTTP_PROXY'));
+ setEnv('GLOBAL_AGENT_HTTPS_PROXY', env('HTTPS_PROXY'));
+ setEnv('GLOBAL_AGENT_NO_PROXY', env('NO_PROXY'));
+ // `global-agent` works with Node.js v10 and above.
+ require('global-agent').bootstrap();
+ }
+ else {
+ // `global-tunnel-ng` works with Node.js v10 and below.
+ require('global-tunnel-ng').initialize();
+ }
+ }
+ catch (e) {
+ d('Could not load either proxy modules, built-in proxy support not available:', e);
+ }
+}
+//# sourceMappingURL=proxy.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/proxy.js.map b/node_modules/@electron/get/dist/esm/proxy.js.map
new file mode 100644
index 0000000..81d7b83
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/proxy.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAEvC;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI;QACF,qFAAqF;QACrF,MAAM,oBAAoB,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAElF,IAAI,oBAAoB,IAAI,EAAE,EAAE;YAC9B,sEAAsE;YACtE,MAAM,GAAG,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;YAEpC,MAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;YACrD,MAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;YACvD,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YAEjD,mDAAmD;YACnD,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC;SACrC;aAAM;YACL,uDAAuD;YACvD,OAAO,CAAC,kBAAkB,CAAC,CAAC,UAAU,EAAE,CAAC;SAC1C;KACF;IAAC,OAAO,CAAC,EAAE;QACV,CAAC,CAAC,4EAA4E,EAAE,CAAC,CAAC,CAAC;KACpF;AACH,CAAC"}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/types.d.ts b/node_modules/@electron/get/dist/esm/types.d.ts
new file mode 100644
index 0000000..d8f73f3
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/types.d.ts
@@ -0,0 +1,124 @@
+import { Downloader } from './Downloader';
+export declare type DownloadOptions = any;
+export interface MirrorOptions {
+ /**
+ * DEPRECATED - see nightlyMirror.
+ */
+ nightly_mirror?: string;
+ /**
+ * The Electron nightly-specific mirror URL.
+ */
+ nightlyMirror?: string;
+ /**
+ * The base URL of the mirror to download from,
+ * e.g https://github.com/electron/electron/releases/download
+ */
+ mirror?: string;
+ /**
+ * The name of the directory to download from,
+ * often scoped by version number e.g 'v4.0.4'
+ */
+ customDir?: string;
+ /**
+ * The name of the asset to download,
+ * e.g 'electron-v4.0.4-linux-x64.zip'
+ */
+ customFilename?: string;
+ /**
+ * A function allowing customization of the url returned
+ * from getArtifactRemoteURL().
+ */
+ resolveAssetURL?: (opts: DownloadOptions) => Promise;
+}
+export interface ElectronDownloadRequest {
+ /**
+ * The version of Electron associated with the artifact.
+ */
+ version: string;
+ /**
+ * The type of artifact. For example:
+ * * `electron`
+ * * `ffmpeg`
+ */
+ artifactName: string;
+}
+export interface ElectronDownloadRequestOptions {
+ /**
+ * Whether to download an artifact regardless of whether it's in the cache directory.
+ *
+ * Defaults to `false`.
+ */
+ force?: boolean;
+ /**
+ * When set to `true`, disables checking that the artifact download completed successfully
+ * with the correct payload.
+ *
+ * Defaults to `false`.
+ */
+ unsafelyDisableChecksums?: boolean;
+ /**
+ * Provides checksums for the artifact as strings.
+ * Can be used if you already know the checksums of the Electron artifact
+ * you are downloading and want to skip the checksum file download
+ * without skipping the checksum validation.
+ *
+ * This should be an object whose keys are the file names of the artifacts and
+ * the values are their respective SHA256 checksums.
+ */
+ checksums?: Record;
+ /**
+ * The directory that caches Electron artifact downloads.
+ *
+ * The default value is dependent upon the host platform:
+ *
+ * * Linux: `$XDG_CACHE_HOME` or `~/.cache/electron/`
+ * * MacOS: `~/Library/Caches/electron/`
+ * * Windows: `%LOCALAPPDATA%/electron/Cache` or `~/AppData/Local/electron/Cache/`
+ */
+ cacheRoot?: string;
+ /**
+ * Options passed to the downloader module.
+ */
+ downloadOptions?: DownloadOptions;
+ /**
+ * Options related to specifying an artifact mirror.
+ */
+ mirrorOptions?: MirrorOptions;
+ /**
+ * The custom [[Downloader]] class used to download artifacts. Defaults to the
+ * built-in [[GotDownloader]].
+ */
+ downloader?: Downloader;
+ /**
+ * A temporary directory for downloads.
+ * It is used before artifacts are put into cache.
+ */
+ tempDirectory?: string;
+}
+export declare type ElectronPlatformArtifactDetails = {
+ /**
+ * The target artifact platform. These are Node-style platform names, for example:
+ * * `win32`
+ * * `darwin`
+ * * `linux`
+ */
+ platform: string;
+ /**
+ * The target artifact architecture. These are Node-style architecture names, for example:
+ * * `ia32`
+ * * `x64`
+ * * `armv7l`
+ */
+ arch: string;
+ artifactSuffix?: string;
+ isGeneric?: false;
+} & ElectronDownloadRequest & ElectronDownloadRequestOptions;
+export declare type ElectronGenericArtifactDetails = {
+ isGeneric: true;
+} & ElectronDownloadRequest & ElectronDownloadRequestOptions;
+export declare type ElectronArtifactDetails = ElectronPlatformArtifactDetails | ElectronGenericArtifactDetails;
+export declare type Omit = Pick>;
+export declare type ElectronPlatformArtifactDetailsWithDefaults = (Omit & {
+ platform?: string;
+ arch?: string;
+}) | ElectronGenericArtifactDetails;
diff --git a/node_modules/@electron/get/dist/esm/types.js b/node_modules/@electron/get/dist/esm/types.js
new file mode 100644
index 0000000..5b2306a
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/types.js
@@ -0,0 +1 @@
+//# sourceMappingURL=types.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/types.js.map b/node_modules/@electron/get/dist/esm/types.js.map
new file mode 100644
index 0000000..7b5fff8
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/types.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/utils.d.ts b/node_modules/@electron/get/dist/esm/utils.d.ts
new file mode 100644
index 0000000..3cc40c1
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/utils.d.ts
@@ -0,0 +1,25 @@
+export declare function withTempDirectoryIn(parentDirectory: string | undefined, fn: (directory: string) => Promise): Promise;
+export declare function withTempDirectory(fn: (directory: string) => Promise): Promise;
+export declare function normalizeVersion(version: string): string;
+/**
+ * Runs the `uname` command and returns the trimmed output.
+ */
+export declare function uname(): string;
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name.
+ */
+export declare function getNodeArch(arch: string): string;
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name, from the `process` module information.
+ */
+export declare function getHostArch(): string;
+export declare function ensureIsTruthyString(obj: T, key: K): void;
+export declare function isOfficialLinuxIA32Download(platform: string, arch: string, version: string, mirrorOptions?: object): boolean;
+/**
+ * Find the value of a environment variable which may or may not have the
+ * prefix, in a case-insensitive manner.
+ */
+export declare function getEnv(prefix?: string): (name: string) => string | undefined;
+export declare function setEnv(key: string, value: string | undefined): void;
diff --git a/node_modules/@electron/get/dist/esm/utils.js b/node_modules/@electron/get/dist/esm/utils.js
new file mode 100644
index 0000000..575ea86
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/utils.js
@@ -0,0 +1,95 @@
+import * as childProcess from 'child_process';
+import * as fs from 'fs-extra';
+import * as os from 'os';
+import * as path from 'path';
+async function useAndRemoveDirectory(directory, fn) {
+ let result;
+ try {
+ result = await fn(directory);
+ }
+ finally {
+ await fs.remove(directory);
+ }
+ return result;
+}
+export async function withTempDirectoryIn(parentDirectory = os.tmpdir(), fn) {
+ const tempDirectoryPrefix = 'electron-download-';
+ const tempDirectory = await fs.mkdtemp(path.resolve(parentDirectory, tempDirectoryPrefix));
+ return useAndRemoveDirectory(tempDirectory, fn);
+}
+export async function withTempDirectory(fn) {
+ return withTempDirectoryIn(undefined, fn);
+}
+export function normalizeVersion(version) {
+ if (!version.startsWith('v')) {
+ return `v${version}`;
+ }
+ return version;
+}
+/**
+ * Runs the `uname` command and returns the trimmed output.
+ */
+export function uname() {
+ return childProcess
+ .execSync('uname -m')
+ .toString()
+ .trim();
+}
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name.
+ */
+export function getNodeArch(arch) {
+ if (arch === 'arm') {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ switch (process.config.variables.arm_version) {
+ case '6':
+ return uname();
+ case '7':
+ default:
+ return 'armv7l';
+ }
+ }
+ return arch;
+}
+/**
+ * Generates an architecture name that would be used in an Electron or Node.js
+ * download file name, from the `process` module information.
+ */
+export function getHostArch() {
+ return getNodeArch(process.arch);
+}
+export function ensureIsTruthyString(obj, key) {
+ if (!obj[key] || typeof obj[key] !== 'string') {
+ throw new Error(`Expected property "${key}" to be provided as a string but it was not`);
+ }
+}
+export function isOfficialLinuxIA32Download(platform, arch, version, mirrorOptions) {
+ return (platform === 'linux' &&
+ arch === 'ia32' &&
+ Number(version.slice(1).split('.')[0]) >= 4 &&
+ typeof mirrorOptions === 'undefined');
+}
+/**
+ * Find the value of a environment variable which may or may not have the
+ * prefix, in a case-insensitive manner.
+ */
+export function getEnv(prefix = '') {
+ const envsLowerCase = {};
+ for (const envKey in process.env) {
+ envsLowerCase[envKey.toLowerCase()] = process.env[envKey];
+ }
+ return (name) => {
+ return (envsLowerCase[`${prefix}${name}`.toLowerCase()] ||
+ envsLowerCase[name.toLowerCase()] ||
+ undefined);
+ };
+}
+export function setEnv(key, value) {
+ // The `void` operator always returns `undefined`.
+ // See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void
+ if (value !== void 0) {
+ process.env[key] = value;
+ }
+}
+//# sourceMappingURL=utils.js.map
\ No newline at end of file
diff --git a/node_modules/@electron/get/dist/esm/utils.js.map b/node_modules/@electron/get/dist/esm/utils.js.map
new file mode 100644
index 0000000..6c65992
--- /dev/null
+++ b/node_modules/@electron/get/dist/esm/utils.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/node_modules/@electron/get/package.json b/node_modules/@electron/get/package.json
new file mode 100644
index 0000000..4e6986d
--- /dev/null
+++ b/node_modules/@electron/get/package.json
@@ -0,0 +1,102 @@
+{
+ "name": "@electron/get",
+ "version": "1.14.1",
+ "description": "Utility for downloading artifacts from different versions of Electron",
+ "main": "dist/cjs/index.js",
+ "module": "dist/esm/index.js",
+ "repository": "https://github.com/electron/get",
+ "author": "Samuel Attard",
+ "license": "MIT",
+ "scripts": {
+ "build": "tsc && tsc -p tsconfig.esm.json",
+ "build:docs": "typedoc --out docs",
+ "eslint": "eslint --ext .ts src test",
+ "jest": "jest --coverage",
+ "lint": "npm run prettier && npm run eslint",
+ "prettier": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\"",
+ "prepublishOnly": "npm run build",
+ "test": "npm run lint && npm run jest",
+ "test:nonetwork": "npm run lint && npm run jest -- --testPathIgnorePatterns network.spec"
+ },
+ "files": [
+ "dist/*",
+ "README.md"
+ ],
+ "engines": {
+ "node": ">=8.6"
+ },
+ "dependencies": {
+ "debug": "^4.1.1",
+ "env-paths": "^2.2.0",
+ "fs-extra": "^8.1.0",
+ "got": "^9.6.0",
+ "progress": "^2.0.3",
+ "semver": "^6.2.0",
+ "sumchecker": "^3.0.1"
+ },
+ "devDependencies": {
+ "@continuous-auth/semantic-release-npm": "^2.0.0",
+ "@types/debug": "^4.1.4",
+ "@types/fs-extra": "^8.0.0",
+ "@types/got": "^9.4.4",
+ "@types/jest": "^24.0.13",
+ "@types/node": "^12.0.2",
+ "@types/progress": "^2.0.3",
+ "@types/semver": "^6.2.0",
+ "@typescript-eslint/eslint-plugin": "^2.34.0",
+ "@typescript-eslint/parser": "^2.34.0",
+ "eslint": "^6.8.0",
+ "eslint-config-prettier": "^6.15.0",
+ "eslint-plugin-import": "^2.22.1",
+ "eslint-plugin-jest": "< 24.0.0",
+ "husky": "^2.3.0",
+ "jest": "^24.8.0",
+ "lint-staged": "^8.1.7",
+ "prettier": "^1.17.1",
+ "ts-jest": "^24.0.0",
+ "typedoc": "^0.17.2",
+ "typescript": "^3.8.0"
+ },
+ "eslintConfig": {
+ "parser": "@typescript-eslint/parser",
+ "extends": [
+ "eslint:recommended",
+ "plugin:@typescript-eslint/eslint-recommended",
+ "plugin:@typescript-eslint/recommended",
+ "plugin:jest/recommended",
+ "plugin:import/errors",
+ "plugin:import/warnings",
+ "plugin:import/typescript",
+ "prettier",
+ "prettier/@typescript-eslint"
+ ]
+ },
+ "husky": {
+ "hooks": {
+ "pre-commit": "lint-staged"
+ }
+ },
+ "lint-staged": {
+ "*.ts": [
+ "eslint --fix",
+ "prettier --write",
+ "git add"
+ ]
+ },
+ "keywords": [
+ "electron",
+ "download",
+ "prebuild",
+ "get",
+ "artifact",
+ "release"
+ ],
+ "optionalDependencies": {
+ "global-agent": "^3.0.0",
+ "global-tunnel-ng": "^2.7.1"
+ },
+ "resolutions": {
+ "eslint/inquirer": "< 7.3.0",
+ "**/@typescript-eslint/typescript-estree/semver": "^6.3.0"
+ }
+}
diff --git a/node_modules/@sindresorhus/is/dist/index.d.ts b/node_modules/@sindresorhus/is/dist/index.d.ts
new file mode 100644
index 0000000..e94d30b
--- /dev/null
+++ b/node_modules/@sindresorhus/is/dist/index.d.ts
@@ -0,0 +1,132 @@
+///
+///
+///
+///
+///
+declare type TypedArray = Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array;
+declare type Primitive = null | undefined | string | number | boolean | Symbol;
+export interface ArrayLike {
+ length: number;
+}
+export interface Class {
+ new (...args: any[]): T;
+}
+declare type DomElement = object & {
+ nodeType: 1;
+ nodeName: string;
+};
+declare type NodeStream = object & {
+ pipe: Function;
+};
+export declare const enum TypeName {
+ null = "null",
+ boolean = "boolean",
+ undefined = "undefined",
+ string = "string",
+ number = "number",
+ symbol = "symbol",
+ Function = "Function",
+ GeneratorFunction = "GeneratorFunction",
+ AsyncFunction = "AsyncFunction",
+ Observable = "Observable",
+ Array = "Array",
+ Buffer = "Buffer",
+ Object = "Object",
+ RegExp = "RegExp",
+ Date = "Date",
+ Error = "Error",
+ Map = "Map",
+ Set = "Set",
+ WeakMap = "WeakMap",
+ WeakSet = "WeakSet",
+ Int8Array = "Int8Array",
+ Uint8Array = "Uint8Array",
+ Uint8ClampedArray = "Uint8ClampedArray",
+ Int16Array = "Int16Array",
+ Uint16Array = "Uint16Array",
+ Int32Array = "Int32Array",
+ Uint32Array = "Uint32Array",
+ Float32Array = "Float32Array",
+ Float64Array = "Float64Array",
+ ArrayBuffer = "ArrayBuffer",
+ SharedArrayBuffer = "SharedArrayBuffer",
+ DataView = "DataView",
+ Promise = "Promise",
+ URL = "URL"
+}
+declare function is(value: unknown): TypeName;
+declare namespace is {
+ const undefined: (value: unknown) => value is undefined;
+ const string: (value: unknown) => value is string;
+ const number: (value: unknown) => value is number;
+ const function_: (value: unknown) => value is Function;
+ const null_: (value: unknown) => value is null;
+ const class_: (value: unknown) => value is Class;
+ const boolean: (value: unknown) => value is boolean;
+ const symbol: (value: unknown) => value is Symbol;
+ const numericString: (value: unknown) => boolean;
+ const array: (arg: any) => arg is any[];
+ const buffer: (input: unknown) => input is Buffer;
+ const nullOrUndefined: (value: unknown) => value is null | undefined;
+ const object: (value: unknown) => value is object;
+ const iterable: (value: unknown) => value is IterableIterator;
+ const asyncIterable: (value: unknown) => value is AsyncIterableIterator;
+ const generator: (value: unknown) => value is Generator;
+ const nativePromise: (value: unknown) => value is Promise;
+ const promise: (value: unknown) => value is Promise;
+ const generatorFunction: (value: unknown) => value is GeneratorFunction;
+ const asyncFunction: (value: unknown) => value is Function;
+ const boundFunction: (value: unknown) => value is Function;
+ const regExp: (value: unknown) => value is RegExp;
+ const date: (value: unknown) => value is Date;
+ const error: (value: unknown) => value is Error;
+ const map: (value: unknown) => value is Map;
+ const set: (value: unknown) => value is Set;
+ const weakMap: (value: unknown) => value is WeakMap