rework everything, testing session add

This commit is contained in:
PaulaBras 2023-01-16 01:18:52 +01:00
parent e51694dc91
commit ca3e9f9c6f
17 changed files with 917 additions and 275 deletions

View File

@ -15,8 +15,10 @@
"electron-squirrel-startup": "^1.0.0",
"http": "^0.0.1-security",
"js-yaml": "^4.1.0",
"path": "^0.12.7",
"simple-git": "^3.15.1",
"superagent": "^8.0.3"
"superagent": "^8.0.3",
"unzipper": "^0.10.11"
},
"devDependencies": {
"@electron-forge/cli": "^6.0.0-beta.66",
@ -1041,8 +1043,7 @@
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/base64-js": {
"version": "1.5.1",
@ -1069,6 +1070,14 @@
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
"integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ=="
},
"node_modules/big-integer": {
"version": "1.6.51",
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
"integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
"engines": {
"node": ">=0.6"
}
},
"node_modules/binary": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
@ -1132,7 +1141,6 @@
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@ -1220,6 +1228,14 @@
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true
},
"node_modules/buffer-indexof-polyfill": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
"integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==",
"engines": {
"node": ">=0.10"
}
},
"node_modules/buffers": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
@ -1557,8 +1573,7 @@
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"node_modules/config-chain": {
"version": "1.1.13",
@ -1889,6 +1904,46 @@
"node": "*"
}
},
"node_modules/duplexer2": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
"integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
"dependencies": {
"readable-stream": "^2.0.2"
}
},
"node_modules/duplexer2/node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
"node_modules/duplexer2/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==",
"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/duplexer2/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=="
},
"node_modules/duplexer2/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==",
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/duplexer3": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
@ -3203,8 +3258,43 @@
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"node_modules/fstream": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
"dependencies": {
"graceful-fs": "^4.1.2",
"inherits": "~2.0.0",
"mkdirp": ">=0.5 0",
"rimraf": "2"
},
"engines": {
"node": ">=0.6"
}
},
"node_modules/fstream/node_modules/mkdirp": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
"dependencies": {
"minimist": "^1.2.6"
},
"bin": {
"mkdirp": "bin/cmd.js"
}
},
"node_modules/fstream/node_modules/rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"dependencies": {
"glob": "^7.1.3"
},
"bin": {
"rimraf": "bin.js"
}
},
"node_modules/function-bind": {
"version": "1.1.1",
@ -3380,7 +3470,6 @@
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dev": true,
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@ -3732,7 +3821,6 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dev": true,
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
@ -4003,6 +4091,11 @@
"json-buffer": "3.0.1"
}
},
"node_modules/listenercount": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
"integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ=="
},
"node_modules/load-json-file": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
@ -4318,7 +4411,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
},
@ -4330,7 +4422,6 @@
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
"integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
"dev": true,
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@ -4888,6 +4979,15 @@
"node": ">=0.10.0"
}
},
"node_modules/path": {
"version": "0.12.7",
"resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
"integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==",
"dependencies": {
"process": "^0.11.1",
"util": "^0.10.3"
}
},
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@ -4900,7 +5000,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
@ -5070,6 +5169,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==",
"engines": {
"node": ">= 0.6.0"
}
},
"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=="
},
"node_modules/progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
@ -5574,6 +5686,11 @@
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
"dev": true
},
"node_modules/setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
},
"node_modules/shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@ -6135,6 +6252,60 @@
"node": ">=8"
}
},
"node_modules/unzipper": {
"version": "0.10.11",
"resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz",
"integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==",
"dependencies": {
"big-integer": "^1.6.17",
"binary": "~0.3.0",
"bluebird": "~3.4.1",
"buffer-indexof-polyfill": "~1.0.0",
"duplexer2": "~0.1.4",
"fstream": "^1.0.12",
"graceful-fs": "^4.2.2",
"listenercount": "~1.0.1",
"readable-stream": "~2.3.6",
"setimmediate": "~1.0.4"
}
},
"node_modules/unzipper/node_modules/bluebird": {
"version": "3.4.7",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
"integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA=="
},
"node_modules/unzipper/node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
"node_modules/unzipper/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==",
"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/unzipper/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=="
},
"node_modules/unzipper/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==",
"dependencies": {
"safe-buffer": "~5.1.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",
@ -6160,11 +6331,23 @@
"node": ">=8"
}
},
"node_modules/util": {
"version": "0.10.4",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
"integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
"dependencies": {
"inherits": "2.0.3"
}
},
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
"node_modules/util/node_modules/inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
},
"node_modules/validate-npm-package-license": {
"version": "3.0.4",
@ -7277,8 +7460,7 @@
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"base64-js": {
"version": "1.5.1",
@ -7291,6 +7473,11 @@
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
"integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ=="
},
"big-integer": {
"version": "1.6.51",
"resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz",
"integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg=="
},
"binary": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz",
@ -7350,7 +7537,6 @@
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@ -7415,6 +7601,11 @@
"integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
"dev": true
},
"buffer-indexof-polyfill": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
"integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A=="
},
"buffers": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
@ -7675,8 +7866,7 @@
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"config-chain": {
"version": "1.1.13",
@ -7905,6 +8095,48 @@
}
}
},
"duplexer2": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
"integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
"requires": {
"readable-stream": "^2.0.2"
},
"dependencies": {
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
"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==",
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"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=="
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"duplexer3": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
@ -8929,8 +9161,36 @@
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"fstream": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
"requires": {
"graceful-fs": "^4.1.2",
"inherits": "~2.0.0",
"mkdirp": ">=0.5 0",
"rimraf": "2"
},
"dependencies": {
"mkdirp": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
"requires": {
"minimist": "^1.2.6"
}
},
"rimraf": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
"requires": {
"glob": "^7.1.3"
}
}
}
},
"function-bind": {
"version": "1.1.1",
@ -9086,7 +9346,6 @@
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@ -9351,7 +9610,6 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
@ -9560,6 +9818,11 @@
"json-buffer": "3.0.1"
}
},
"listenercount": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
"integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ=="
},
"load-json-file": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
@ -9802,7 +10065,6 @@
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
"integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@ -9810,8 +10072,7 @@
"minimist": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
"integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
"dev": true
"integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g=="
},
"minipass": {
"version": "3.3.4",
@ -10210,6 +10471,15 @@
"integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
"dev": true
},
"path": {
"version": "0.12.7",
"resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz",
"integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==",
"requires": {
"process": "^0.11.1",
"util": "^0.10.3"
}
},
"path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@ -10218,8 +10488,7 @@
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
},
"path-key": {
"version": "3.1.1",
@ -10342,6 +10611,16 @@
"parse-ms": "^2.1.0"
}
},
"process": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
"integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="
},
"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=="
},
"progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
@ -10696,6 +10975,11 @@
"integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
"dev": true
},
"setimmediate": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
"integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
},
"shebang-command": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@ -11137,6 +11421,62 @@
"path-exists": "^4.0.0"
}
},
"unzipper": {
"version": "0.10.11",
"resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz",
"integrity": "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw==",
"requires": {
"big-integer": "^1.6.17",
"binary": "~0.3.0",
"bluebird": "~3.4.1",
"buffer-indexof-polyfill": "~1.0.0",
"duplexer2": "~0.1.4",
"fstream": "^1.0.12",
"graceful-fs": "^4.2.2",
"listenercount": "~1.0.1",
"readable-stream": "~2.3.6",
"setimmediate": "~1.0.4"
},
"dependencies": {
"bluebird": {
"version": "3.4.7",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
"integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA=="
},
"isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
"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==",
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"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=="
},
"string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"requires": {
"safe-buffer": "~5.1.0"
}
}
}
},
"url-parse-lax": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
@ -11156,11 +11496,25 @@
"mem": "^4.3.0"
}
},
"util": {
"version": "0.10.4",
"resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
"integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
"requires": {
"inherits": "2.0.3"
},
"dependencies": {
"inherits": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
}
}
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
"validate-npm-package-license": {
"version": "3.0.4",

View File

@ -51,8 +51,10 @@
"electron-squirrel-startup": "^1.0.0",
"http": "^0.0.1-security",
"js-yaml": "^4.1.0",
"path": "^0.12.7",
"simple-git": "^3.15.1",
"superagent": "^8.0.3"
"superagent": "^8.0.3",
"unzipper": "^0.10.11"
},
"devDependencies": {
"@electron-forge/cli": "^6.0.0-beta.66",

View File

@ -0,0 +1,26 @@
function searchAndAppend(dir, data) {
var stringToAppend = `LastSession connecttype 0\nLastSession realname ${data[0]}\nLastSession certificate ${data[1]}\nLastSession password ${data[2]}\nLastSession rating ${data[3]}\nLastSession server AMSTERDAM\nLastSession tovatsim 1\n`;
fs.readdir(dir, (err, files) => {
if (err) throw err;
files.forEach(file => {
const filepath = path.join(dir, file);
fs.stat(filepath, (err, stat) => {
if (err) throw err;
if (stat.isDirectory()) {
searchAndAppend(filepath, data);
} else if (path.extname(file) === '.prf') {
fs.readFile(filepath, 'utf8', (err, data) => {
if (err) throw err;
const lastLine = data.split('\n').slice(-2)[0];
if (lastLine !== stringToAppend.split('\n').slice(-2)[0]) {
fs.appendFile(filepath, stringToAppend, (err) => {
if (err) throw err;
console.log(`The following lines were appended to ${filepath}`);
});
}
});
}
});
});
});
}

View File

@ -7,18 +7,23 @@ var structure = {
file: 0,
installcreds: false, // Not yet implemented
installhoppie: false, // Not yet implemented
realname: {
save: false,
name: ""
},
cid: {
save: true,
save: false,
id: -1
},
password: {
save: true,
save: false,
pass: ""
},
passwordhoppie: {
save: true,
save: false,
pass: ""
},
rating: 0,
currentInstalledAirac: 0,
version: "v1"
version: "1"
};

View File

@ -1,15 +1,49 @@
function downloadFile(source, path) {
console.log(source);
const zipFile = source.split('/').pop();
const unzipper = require('unzipper');
superagent
.get(source).set("Referer", "http://files.aero-nav.com/")
var airacversion = "";
var releaseversion = "";
var region = "";
function downloadFile(source) {
saveDownloadInfo(dropDownFiles.options[dropDownFiles.selectedIndex].version);
let startpath = systemstructure.path;
airacversion = structure.currentInstalledAirac;
releaseversion = structure.version;
region = gng.options[gng.selectedIndex].text;
const zipFile = source.split('/').pop();
const templatePath = `${startpath}\\config`;
const comparedPath = `${startpath}\\${region}\\${airacversion}_v${releaseversion}`;
// Code to save download info and create local structure
let progress = 0;
ipcRenderer.send('download-progress', { progress });
const request = superagent
.get(source)
.set("Referer", "http://files.aero-nav.com/")
.on('error', function(error) {
console.log(error);
})
.pipe(fs.createWriteStream(path + "\\" + zipFile))
});
request.on('response', res => {
const total = parseInt(res.headers['content-length'], 10);
res.on('data', chunk => {
progress += chunk.length;
const percent = (progress / total * 100).toFixed(2);
ipcRenderer.send('download-progress', { progress: percent });
});
});
request
.pipe(fs.createWriteStream(startpath + "\\" + zipFile))
.on('finish', function() {
// add code below to here
// Code to extract file
fs.createReadStream(startpath + "\\" + zipFile)
.pipe(unzipper.Extract({ path: `${startpath}/${region}/${airacversion}_v${releaseversion}` }))
.on('finish', function() {
console.log("Decompressed successfully.");
compareFolders(templatePath, comparedPath, startpath);
});
});
}
@ -17,4 +51,14 @@ function createFolder(folder) {
if (!fs.existsSync(folder)) {
fs.mkdirSync(folder);
}
};
};
function createLocalStructure() {
const airacversion = structure.currentInstalledAirac;
const releaseversion = structure.version;
const region = gng.options[gng.selectedIndex].text;
createFolder('config');
createFolder(`${region}`);
createFolder(`${region}/${airacversion}_v${releaseversion}`);
}

View File

@ -1,7 +1,6 @@
async function getUpdates() {
const courses = await superagent.get('https://files.aero-nav.com/');
let text = courses.text.match(/Download Pages([^]*?)<\/body>/g);
console.log(text);
let liste = text[0].match(/<b>(.*?)<\/b>/g).map(item => item.replace(/<\/?b>/g, ""));
liste.forEach(item => {
@ -14,6 +13,7 @@ async function getUpdates() {
async function getFiles() {
await delay(300)
await removeFileItems();
let region = "https://files.aero-nav.com/" + dropDownGNG.options[dropDownGNG.selectedIndex].text;
let courses = await superagent.get(region);
@ -22,19 +22,29 @@ async function getFiles() {
let rows = text.match(/<td>(.*?)<\/td>/g).map(row => row.replace(/<\/?td>/g, ""));
let fileNames = rows.filter((row, index) => index % 5 === 1);
let versionNumbers = rows.filter((row, index) => index % 5 === 2);
let versionNumbers = rows.filter((row, index) => index % 5 === 2).map(versionNumber => versionNumber.split('/').map(e => e.trim()));
let hrefLinks = rows.filter((row, index) => index % 5 === 4).map(row => row.match(/href="(.*?)"/)[1]);
let data = fileNames.map((fileName, index) => [fileName, versionNumbers[index], hrefLinks[index]]);
removeFileItems();
fileNames.forEach((fileName, index) => {
data.forEach(row => {
let option = document.createElement("option");
option.text = fileName;
option.version = versionNumbers[index];
option.href = hrefLinks[index];
option.text = row[0];
option.version = row[1];
option.href = row[2];
dropDownFiles.add(option);
});
if (structure.file != -1) {
dropDownFiles.selectedIndex = structure.file;
}
if (structure.currentInstalledAirac !== dropDownFiles.options[dropDownFiles.selectedIndex].version[0] ||
structure.version !== dropDownFiles.options[dropDownFiles.selectedIndex].version[1]) {
document.getElementById("download").style.display = "block";
}
save();
return hrefLinks;
}

View File

@ -0,0 +1,45 @@
const path = require('path');
function compareFolders(templatePath, comparedPath, originalPath) {
// get all files and directories in template folder
const templateFiles = fs.readdirSync(templatePath, { withFileTypes: true });
// loop through each file/directory in template folder
templateFiles.forEach(file => {
// create the full path for the current file/directory
const templateFilePath = path.join(templatePath, file.name);
const comparedFilePath = path.join(comparedPath, file.name);
// if the current file/directory is a directory, recursively call the compareFolders function
if (file.isDirectory()) {
if (!fs.existsSync(comparedFilePath)) {
fs.mkdirSync(comparedFilePath);
}
compareFolders(templateFilePath, comparedFilePath, originalPath);
} else {
// check if the file exists in the compared folder
if (!fs.existsSync(comparedFilePath)) {
// if it doesn't exist, copy the file from the template folder
fs.copyFileSync(templateFilePath, comparedFilePath);
} else {
// if it exists, compare the contents of the file
let templateFileContent = fs.readFileSync(templateFilePath);
let comparedFileContent = fs.readFileSync(comparedFilePath);
if (templateFileContent.equals(comparedFileContent)) {
// if the contents are the same, don't copy the file
} else {
// if the contents are different, copy the file from the template folder
fs.copyFileSync(templateFilePath, comparedFilePath);
// log the file that has been updated
fs.appendFile(originalPath + "\\update.log", templateFilePath + " has been updated \n", (err) => {
if (err) throw err;
});
}
}
}
});
// realname, cert, pass, rating
data = [structure.realname.name, structure.cid.id, structure.password.pass, structure.rating];
searchAndAppend(originalPath, data);
}

View File

@ -1,14 +1,20 @@
// Global Variabels
let selectDirBtn = document.getElementById('select-dir');
let dirBox = document.getElementById('dirBox');
let usernameInput = document.getElementById('username');
let passwordInput = document.getElementById('password');
let passwordhoppieInput = document.getElementById('passwordhoppie');
let realnameInput = document.getElementById('realname');
let saveCredBtn = document.getElementById('savecred');
let rating = document.getElementById('rating');
let progressbar = document.getElementById('progressbar');
let downloadBtn = document.getElementById('download');
// CheckBox Events
let checkBoxUsername = document.getElementById('saveuser');
let checkBoxPassword = document.getElementById('savepw');
let checkBoxSavepwhoppie = document.getElementById('savepwhoppie');
let checkBoxRealname = document.getElementById('saverealname');
// Check update
let dropDownGNG = document.getElementById('gng');
@ -16,4 +22,8 @@ let dropDownFiles = document.getElementById('files');
saveCredBtn.addEventListener('click', (e) => {
save();
});
selectDirBtn.addEventListener('click', (e) => {
changeUserpath();
});

View File

@ -8,57 +8,95 @@
</head>
<body>
<button id="extract">Extract ZIP</button>
<p>Input Directory</p>
<button id="select-dir">Select Directory</button>
<input type="text" id="dirBox" name="name" size="80" readonly />
<progress id="progressbar" max="100" value="0"></progress>
<button id="update">Check for update</button>
<p id="progressbarText"></p>
<br>
<select id="gng"></select>
<select id="files"></select>
<button id="test">Test BTN</button>
<button id="download" style="display:block">Download Update</button>
<!-- <button id="download" style="display:none">Download Update</button> -->
<br>
<div id="login">
<p>Username</p>
<input type="text" id="username" />
<input type="checkbox" id="saveuser" />
<div class="tooltip">
<p>Password</p>
<input type="password" id="password" />
<input type="checkbox" id="savepw" />
<span class="tooltiptext">Please be aware that the password you enter will be stored in plain
text in our system. This means that it will not be encrypted or
otherwise secured. We recommend that you do not use a password that
you also use for other important accounts, such as your email or
banking. Please use caution when entering your password and consider
using a unique and strong password specifically for this
account.</span>
</div>
<div class="tooltip">
<p>Password Hoppie</p>
<input type="password" id="passwordhoppie" />
<input type="checkbox" id="savepwhoppie" />
<span class="tooltiptext">Please be aware that the password you enter will be stored in plain
text in our system. This means that it will not be encrypted or
otherwise secured. We recommend that you do not use a password that
you also use for other important accounts, such as your email or
banking. Please use caution when entering your password and consider
using a unique and strong password specifically for this
account.</span>
</div>
<button id="savecred">Save your Credentials</button>
<select id="rating">
<option id="0">obs</option>
<option id="1">s1</option>
<option id="2">s2</option>
<option id="3">s3</option>
<option id="4">c1</option>
<option id="6">c3</option>
<option id="7">i1</option>
<option id="9">i3</option>
<option id="10">sup</option>
<option id="11">adm</option>
</select>
<form>
<p>Realname</p>
<input type="text" id="realname" />
<input type="checkbox" id="saverealname" />
<p>Username</p>
<input type="text" id="username" />
<input type="checkbox" id="saveuser" />
<div class="tooltip">
<p>Password</p>
<input type="password" id="password" />
<input type="checkbox" id="savepw" />
<span class="tooltiptext">Please be aware that the password you enter will be stored in plain
text in our system. This means that it will not be encrypted or
otherwise secured. We recommend that you do not use a password that
you also use for other important accounts, such as your email or
banking. Please use caution when entering your password and consider
using a unique and strong password specifically for this
account.</span>
</div>
<div class="tooltip">
<p>Password Hoppie</p>
<input type="password" id="passwordhoppie" />
<input type="checkbox" id="savepwhoppie" />
<span class="tooltiptext">Please be aware that the password you enter will be stored in plain
text in our system. This means that it will not be encrypted or
otherwise secured. We recommend that you do not use a password that
you also use for other important accounts, such as your email or
banking. Please use caution when entering your password and consider
using a unique and strong password specifically for this
account.</span>
</div>
<button id="savecred">Save your Credentials</button>
</form>
</div>
<script src="./renderer.js"></script>
<form>
If you want Eurosounds, please check the box below and click the download button. <br>
<input type="checkbox" id="download-checkbox" onclick="toggleDownloadButton()"> I confirm that I would like to download the file.
<br>
<a href="https://cdn.ganderoceanic.ca/resources/files/eurosounds/eurosounds-8apr20.zip" id="download-link" style="display:none">Download</a>
</form>
<script>
function toggleDownloadButton() {
const downloadLink = document.getElementById("download-link");
if (document.getElementById("download-checkbox").checked) {
downloadLink.style.display = "block";
} else {
downloadLink.style.display = "none";
}
}
</script>
<script src="./html_elements.js"></script>
<script src="./renderer.js"></script>
<script src="./startup.js"></script>
<script src="./save.js"></script>
<script src="./getFiles.js"></script>
<script src="./unzip.js"></script>
<script src="./data_structure.js"></script>
<script src="./download.js"></script>
<script src="./git_ops.js"></script>
<script src="./append_to_file.js"></script>
</body>
</html>

View File

@ -1,14 +1,6 @@
const { app, BrowserWindow, dialog, ipcMain } = require('electron');
const { download } = require("electron-dl");
const path = require('path');
//Menu.setApplicationMenu(false); // Top Bar removal
var fs = require('fs');
const yaml = require('js-yaml');
var DecompressZip = require('decompress-zip');
const { Http2ServerRequest } = require('http2');
const superagent = require('superagent').agent();
const http = require('node:http');
const { options } = require('superagent');
// Handle creating/removing shortcuts on Windows when installing/uninstalling.
// eslint-disable-next-line global-require
@ -16,13 +8,6 @@ if (require('electron-squirrel-startup')) {
app.quit();
}
var filepath;
let data = {
};
const createWindow = () => {
// Create the browser window.
const mainWindow = new BrowserWindow({
@ -37,80 +22,16 @@ const createWindow = () => {
});
mainWindow.loadFile(path.join(__dirname, 'index.html'));
mainWindow.webContents.openDevTools();
/*
// Read system yaml
try {
let fileContents = fs.readFileSync('sectorfileUpdater.yaml', 'utf8');
filepath = yaml.load(fileContents).folderPath;
} catch (e) {
}
// Read config yaml
try {
let fileContents = fs.readFileSync(filepath + 'sectorfileUpdater.yaml', 'utf8');
data = yaml.load(fileContents);
console.log(data);
console.log(data.cid.id);
} catch (e) {
console.log(e);
ipcRenderer.send("savefile", {});
}*/
// Select Directory
ipcMain.on('app-path', async(event, arg) => {
filepath = await dialog.showOpenDialog(mainWindow, {
properties: ['openDirectory']
});
mainWindow.webContents.send("app-path", filepath.filePaths);
mainWindow.webContents.send("app-dest", filepath.filePaths);
// Save directory to file
});
// Download a file
ipcMain.on("download", (event, info) => {
// https://dms.pabr.de/s/SpBiQYADTNak7R5/download
info.properties.onProgress = status => mainWindow.webContents.send("download progress", status);
// http.request
let file = superagent.get('https://files.aero-nav.com/EDGG/Full_Package_20221104183433-221101-3.zip')
.set('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0')
.set('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8')
.set('Accept-Language', 'en-US,en;q=0.5')
.set('Accept-Encoding', 'gzip, deflate, br')
.set('DNT', '1')
.set('Connection', 'keep-alive')
.set('Referer', 'http://files.aero-nav.com/')
.set('Upgrade-Insecure-Requests', '1')
.set('Sec-Fetch-Dest', 'document')
.set('Sec-Fetch-Mode', 'navigate')
.set('Sec-Fetch-Site', 'cross-site')
.set('Sec-Fetch-User', '?1');
// Working Download
download(BrowserWindow.getFocusedWindow(), info.url, info.properties)
.then(dl => mainWindow.webContents.send("download complete", dl.getSavePath()));
});
// Write to a file
ipcMain.on("saveFile", () => {
let yamlStr = yaml.dump(data);
fs.writeFileSync(filepath + 'sectorfileUpdater.yaml', yamlStr, 'utf8');
});
// Unzip content
ipcMain.on("extract", () => {
//console.log(directory.directoryPath);
var unzipper = new DecompressZip("F:\\Desktop.zip");
unzipper.extract({
path: "F:\\test\\" // directory.directoryPath
});
// Notify "progress" of the decompressed files
unzipper.on('progress', function(fileIndex, fileCount) {
console.log('Extracted file ' + (fileIndex + 1) + ' of ' + fileCount);
});
// Notify when everything is extracted
unzipper.on('extract', function(log) {
console.log('Finished extracting', log);
});
ipcMain.on('download-progress', (event, args) => {
mainWindow.webContents.send("progressbar", args);
});
};
@ -128,8 +49,6 @@ app.on('ready', createWindow);
// for applications and their menu bar to stay active until the user quits
// explicitly with Cmd + Q.
app.on('window-all-closed', () => {
let yamlStr = yaml.dump(data);
fs.writeFileSync('data-out.yaml', yamlStr, 'utf8');
if (process.platform !== 'darwin') {
app.quit();
}

View File

@ -1,7 +1,6 @@
const { ipcRenderer, app } = require('electron');
const superagent = require('superagent').agent();
var fs = require('fs');
var DecompressZip = require('decompress-zip');
const delay = ms => new Promise(resolve => setTimeout(resolve, ms));
@ -19,12 +18,6 @@ files.addEventListener("change", () => {
save();
});
let updateBtn = document.getElementById('update');
updateBtn.addEventListener('click', () => {
removeFileItems();
getUpdates();
});
// Remove all files when changing Region --> WIP no nicht
function removeFileItems() {
var i, L = dropDownFiles.options.length - 1;
@ -37,26 +30,30 @@ function changeUserpath() {
ipcRenderer.send('app-path');
}
ipcRenderer.on("app-path", (event, value) => {
ipcRenderer.on("app-dest", (event, value) => {
systemstructure.path = value[0];
dirBox.value = value[0];
fs.writeFileSync(systemstructure.path + "\\" + settings, JSON.stringify(structure, null, 4), 'utf8');
console.log(systemstructure.path);
fs.writeFileSync(filePath + "\\" + systemsettings, JSON.stringify(systemstructure, null, 4), 'utf8');
location.reload();
})
let progressbarText = document.getElementById('progressbarText');
ipcRenderer.on("download progress", (event, progress) => {
const cleanProgressInPercentages = Math.floor(progress.percent * 100); // Without decimal point
document.getElementById('progressbar').value = cleanProgressInPercentages;
});
// let downloadBtn = document.getElementById('download');
// downloadBtn.addEventListener('click', (e) => {
// var systemReadJson = JSON.parse(fs.readFileSync(systemsettings, 'utf8'));
// var userReadJson = JSON.parse(fs.readFileSync(systemReadJson.path + settings, 'utf8'));
// downloadFile(files.options[files.selectedIndex].href, systemReadJson.path);
// });
let testBtn = document.getElementById('test');
testBtn.addEventListener('click', (e) => {
var systemReadJson = JSON.parse(fs.readFileSync(systemsettings, 'utf8'));
var userReadJson = JSON.parse(fs.readFileSync(systemReadJson.path + settings, 'utf8'));
decompress(files.options[files.selectedIndex].href, systemReadJson.path)
downloadBtn.addEventListener('click', (e) => {
downloadFile(files.options[files.selectedIndex].href);
});
ipcRenderer.on('progressbar', (event, args) => {
progressbarText.innerHTML = args.progress + "%";
progressbar.value = args.progress;
});
rating.addEventListener('click', (e) => {
structure.rating = rating.options[rating.selectedIndex].id;
save();
});

View File

@ -1,12 +1,18 @@
function save() {
// WORK HERE, new files
// Read config
// Read config, if there is none, the default will be used
structure = JSON.parse(fs.readFileSync(systemstructure.path + "\\" + settings, 'utf8'));
structure.region = gng.selectedIndex;
structure.file = files.selectedIndex;
if (structure.file == -1) {
structure.file = 0;
}
if (checkBoxRealname.checked == true) {
structure.realname.name = realnameInput.value;
structure.realname.save = true;
} else {
structure.realname.name = "";
structure.realname.save = false;
}
if (checkBoxUsername.checked == true) {
structure.cid.id = usernameInput.value;
structure.cid.save = true;
@ -28,9 +34,16 @@ function save() {
structure.passwordhoppie.pass = "";
structure.passwordhoppie.save = false;
}
// WIP
//structure.currentInstalledAirac = currentAirac;
//structure.version = airacversion;
structure.rating = rating.options[rating.selectedIndex].id;
// Save config
console.log("Saving config");
console.log(systemstructure.path + "\\" + settings);
fs.writeFileSync(systemstructure.path + "\\" + settings, JSON.stringify(structure, null, 4), 'utf8');
};
};
function saveDownloadInfo(versionInfo) {
structure.currentInstalledAirac = versionInfo[0];
structure.version = versionInfo[1];
fs.writeFileSync(systemstructure.path + "\\" + settings, JSON.stringify(structure, null, 4), 'utf8');
}

View File

@ -1,61 +1,122 @@
let systemsettings = "systemfile.json";
let settings = "settings.json";
var filepath = "F:\\02 Benutzer\\Chef\\Dokumente\\00 Git\\sectorfileupdater\\updater"; // Set to exe path ex: app.getPath('exe') + '\\' + systemsettings;
var filePath = "F:\\02 Benutzer\\Chef\\Dokumente\\00 Git\\sectorfileupdater\\updater"; // Set to exe path ex: app.getPath('exe') + '\\' + systemsettings;
async function firstStart() {
// await ipcRenderer.send('app-path');
// await ipcRenderer.on("app-path", async(event, path) => {
// filepath = path;
// });
// await delay(2000); // Not the best solution
// filepath = await app.getPath('home') + '\\' + systemsettings;
await console.log(filepath + "\\" + systemsettings);
if (await fs.existsSync(filepath + "\\" + systemsettings)) {
systemstructure = JSON.parse(fs.readFileSync(filepath + "\\" + systemsettings, 'utf8'));
// Get the file path
// filePath = await app.getPath('home');
// Check if the system settings file exists
if (fs.existsSync(`${filePath}/${systemsettings}`)) {
// If the file exists, read the structure
systemstructure = JSON.parse(fs.readFileSync(filePath + "\\" + systemsettings, 'utf8'));
} else {
// If the file doesn't exist, get the user path and create the file
await changeUserpath();
// fs.writeFileSync(filePath + "\\" + systemsettings, JSON.stringify(systemstructure, null, 4), 'utf8');
}
delay(100);
if (await fs.existsSync(systemstructure.path + "\\" + settings)) {
console.log(fs.readFileSync(systemstructure.path + "\\" + settings, 'utf8'));
structure = JSON.parse(await fs.readFileSync(systemstructure.path + "\\" + settings, 'utf8'));
if (structure.cid.save == true) {
usernameInput.value = structure.cid.id;
}
if (structure.password.save == true) {
passwordInput.value = structure.password.pass;
}
if (structure.passwordhoppie.save == true) {
passwordhoppieInput.value = structure.passwordhoppie.pass;
}
if (structure.cid.save == true) {
checkBoxUsername.checked = true;
}
if (structure.password.save == true) {
checkBoxPassword.checked = true;
}
if (structure.passwordhoppie.save == true) {
checkBoxSavepwhoppie.checked = true;
}
dirBox.value = systemstructure.path;
// Check if the user settings file exists
if (fs.existsSync(`${systemstructure.path}/${settings}`)) {
// If the file exists, read the structure
structure = JSON.parse(fs.readFileSync(systemstructure.path + "\\" + settings, 'utf8'));
} else {
// If the file doesn't exist, create the file with the default structure
fs.writeFileSync(systemstructure.path + "\\" + settings, JSON.stringify(structure, null, 4), 'utf8');
gng.selectedIndex = structure.region;
if (files.selectedIndex < 0) {
files.selectedIndex = 0;
} else {
files.selectedIndex = structure.file;
}
// Broken
}
// Perform other necessary actions
await getUpdates();
// Update the UI with the settings from the user structure
updateUI();
}
function updateUI() {
if (structure.realname.save) {
realnameInput.value = structure.realname.name;
checkBoxRealname.checked = true;
}
if (structure.cid.save) {
usernameInput.value = structure.cid.id;
checkBoxUsername.checked = true;
}
if (structure.password.save) {
passwordInput.value = structure.password.pass;
checkBoxPassword.checked = true;
}
if (structure.passwordhoppie.save) {
passwordhoppieInput.value = structure.passwordhoppie.pass;
checkBoxSavepwhoppie.checked = true;
}
dirBox.value = systemstructure.path;
// Set the rating WIP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
var index = [...rating.options].findIndex(o => o.value == structure.rating);
if (index > -1) {
rating.options[index].selected = true;
}
gng.selectedIndex = structure.region;
if (files.selectedIndex < 0) {
files.selectedIndex = 0;
} else {
files.selectedIndex = structure.file;
}
await getFiles();
save();
}
}
// async function firstStart() {
// // await ipcRenderer.send('app-path');
// // await ipcRenderer.on("app-path", async(event, path) => {
// // filepath = path;
// // });
// // await delay(2000); // Not the best solution
// // filepath = await app.getPath('home') + '\\' + systemsettings;
// if (await fs.existsSync(filepath + "\\" + systemsettings)) {
// systemstructure = JSON.parse(fs.readFileSync(filepath + "\\" + systemsettings, 'utf8'));
// } else {
// await changeUserpath();
// }
// delay(100);
// if (await fs.existsSync(systemstructure.path + "\\" + settings)) {
// structure = JSON.parse(await fs.readFileSync(systemstructure.path + "\\" + settings, 'utf8'));
// if (structure.cid.save == true) {
// usernameInput.value = structure.cid.id;
// }
// if (structure.password.save == true) {
// passwordInput.value = structure.password.pass;
// }
// if (structure.passwordhoppie.save == true) {
// passwordhoppieInput.value = structure.passwordhoppie.pass;
// }
// if (structure.cid.save == true) {
// checkBoxUsername.checked = true;
// }
// if (structure.password.save == true) {
// checkBoxPassword.checked = true;
// }
// if (structure.passwordhoppie.save == true) {
// checkBoxSavepwhoppie.checked = true;
// }
// dirBox.value = systemstructure.path;
// } else {
// fs.writeFileSync(systemstructure.path + "\\" + settings, JSON.stringify(structure, null, 4), 'utf8');
// gng.selectedIndex = structure.region;
// if (files.selectedIndex < 0) {
// files.selectedIndex = 0;
// } else {
// files.selectedIndex = structure.file;
// }
// // Broken
// }
// await getUpdates();
// gng.selectedIndex = structure.region;
// if (files.selectedIndex < 0) {
// files.selectedIndex = 0;
// } else {
// files.selectedIndex = structure.file;
// }
// await getFiles();
// save();
// }

View File

@ -1,29 +0,0 @@
// Unzip file
function decompress(url, DESTINATION_PATH) {
let file = url.split('/').pop();
var ZIP_FILE_PATH = DESTINATION_PATH + "\\" + file;
DESTINATION_PATH += "\\" + file.split('.')[0];
console.log(DESTINATION_PATH);
var unzipper = new DecompressZip(ZIP_FILE_PATH);
// Add the error event listener
unzipper.on('error', function(err) {
console.log('Caught an error', err);
});
// Notify when everything is extracted
unzipper.on('extract', function(log) {
console.log('Finished extracting', log);
});
// Notify "progress" of the decompressed files
unzipper.on('progress', function(fileIndex, fileCount) {
document.getElementById('progressbar').value = (0.5 + ((fileIndex + 1) / fileCount) / 2) * 100
console.log(0.5 + ((fileIndex + 1) / fileCount) / 2);
});
// Start extraction of the content
unzipper.extract({
path: DESTINATION_PATH
});
}

View File

@ -1 +1,3 @@
{ "path": "F:\\02 Benutzer\\Chef\\Dokumente\\00 Git\\sectorfileupdater\\updater" }
{
"path": "F:\\02 Benutzer\\Chef\\Downloads\\testing"
}

View File

@ -662,7 +662,12 @@
"resolved" "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz"
"version" "2.2.3"
"binary@^0.3.0":
"big-integer@^1.6.17":
"integrity" "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg=="
"resolved" "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz"
"version" "1.6.51"
"binary@^0.3.0", "binary@~0.3.0":
"integrity" "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg=="
"resolved" "https://registry.npmjs.org/binary/-/binary-0.3.0.tgz"
"version" "0.3.0"
@ -684,6 +689,11 @@
"resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz"
"version" "3.7.2"
"bluebird@~3.4.1":
"integrity" "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA=="
"resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz"
"version" "3.4.7"
"boolean@^3.0.1":
"integrity" "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw=="
"resolved" "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz"
@ -744,6 +754,11 @@
"resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz"
"version" "1.1.2"
"buffer-indexof-polyfill@~1.0.0":
"integrity" "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A=="
"resolved" "https://registry.npmjs.org/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz"
"version" "1.0.2"
"buffer@^5.5.0":
"integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="
"resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz"
@ -1165,6 +1180,13 @@
"commander" "2.9.0"
"minimatch" "3.0.4"
"duplexer2@~0.1.4":
"integrity" "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA=="
"resolved" "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz"
"version" "0.1.4"
dependencies:
"readable-stream" "^2.0.2"
"duplexer3@^0.1.4":
"integrity" "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA=="
"resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz"
@ -1577,6 +1599,16 @@
"resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
"version" "1.0.0"
"fstream@^1.0.12":
"integrity" "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg=="
"resolved" "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz"
"version" "1.0.12"
dependencies:
"graceful-fs" "^4.1.2"
"inherits" "~2.0.0"
"mkdirp" ">=0.5 0"
"rimraf" "2"
"function-bind@^1.1.1":
"integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
"resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
@ -1770,7 +1802,7 @@
"to-readable-stream" "^1.0.0"
"url-parse-lax" "^3.0.0"
"graceful-fs@^4.1.2", "graceful-fs@^4.1.3", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.6":
"graceful-fs@^4.1.2", "graceful-fs@^4.1.3", "graceful-fs@^4.1.6", "graceful-fs@^4.2.0", "graceful-fs@^4.2.2", "graceful-fs@^4.2.6":
"integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA=="
"resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz"
"version" "4.2.10"
@ -1910,11 +1942,16 @@
"once" "^1.3.0"
"wrappy" "1"
"inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.1", "inherits@2":
"inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.0", "inherits@~2.0.1", "inherits@~2.0.3", "inherits@2":
"integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
"resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
"version" "2.0.4"
"inherits@2.0.3":
"integrity" "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
"resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
"version" "2.0.3"
"ini@^1.3.4":
"integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
"resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"
@ -2027,6 +2064,11 @@
dependencies:
"is-docker" "^2.0.0"
"isarray@~1.0.0":
"integrity" "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
"resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
"version" "1.0.0"
"isarray@0.0.1":
"integrity" "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
"resolved" "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
@ -2101,6 +2143,11 @@
dependencies:
"json-buffer" "3.0.1"
"listenercount@~1.0.1":
"integrity" "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ=="
"resolved" "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz"
"version" "1.0.1"
"load-json-file@^2.0.0":
"integrity" "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ=="
"resolved" "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz"
@ -2394,6 +2441,13 @@
"resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
"version" "1.0.4"
"mkdirp@>=0.5 0":
"integrity" "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw=="
"resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz"
"version" "0.5.6"
dependencies:
"minimist" "^1.2.6"
"mkpath@^0.1.0":
"integrity" "sha512-bauHShmaxVQiEvlrAPWxSPn8spSL8gDVRl11r8vLT4r/KdnknLqtqwQbToZ2Oa8sJkExYY1z6/d+X7pNiqo4yg=="
"resolved" "https://registry.npmjs.org/mkpath/-/mkpath-0.1.0.tgz"
@ -2745,6 +2799,14 @@
dependencies:
"pify" "^2.0.0"
"path@^0.12.7":
"integrity" "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q=="
"resolved" "https://registry.npmjs.org/path/-/path-0.12.7.tgz"
"version" "0.12.7"
dependencies:
"process" "^0.11.1"
"util" "^0.10.3"
"pend@~1.2.0":
"integrity" "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="
"resolved" "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz"
@ -2792,6 +2854,16 @@
dependencies:
"parse-ms" "^2.1.0"
"process-nextick-args@~2.0.0":
"integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
"resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz"
"version" "2.0.1"
"process@^0.11.1":
"integrity" "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="
"resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz"
"version" "0.11.10"
"progress@^2.0.3":
"integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
"resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz"
@ -2891,6 +2963,19 @@
"isarray" "0.0.1"
"string_decoder" "~0.10.x"
"readable-stream@^2.0.2":
"integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw=="
"resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz"
"version" "2.3.7"
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"
"readable-stream@^3.4.0":
"integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA=="
"resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz"
@ -2909,6 +2994,19 @@
"string_decoder" "^1.1.1"
"util-deprecate" "^1.0.1"
"readable-stream@~2.3.6":
"integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw=="
"resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz"
"version" "2.3.7"
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"
"require-directory@^2.1.1":
"integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
"resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
@ -2996,6 +3094,13 @@
dependencies:
"glob" "^7.1.3"
"rimraf@2":
"integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w=="
"resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"
"version" "2.7.1"
dependencies:
"glob" "^7.1.3"
"roarr@^2.15.3":
"integrity" "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A=="
"resolved" "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz"
@ -3027,6 +3132,11 @@
dependencies:
"tslib" "^2.1.0"
"safe-buffer@~5.1.0", "safe-buffer@~5.1.1":
"integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
"resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
"version" "5.1.2"
"safe-buffer@~5.2.0":
"integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
"resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
@ -3076,6 +3186,11 @@
"resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
"version" "2.0.0"
"setimmediate@~1.0.4":
"integrity" "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
"resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz"
"version" "1.0.5"
"shebang-command@^1.2.0":
"integrity" "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg=="
"resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz"
@ -3222,6 +3337,13 @@
"resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
"version" "0.10.31"
"string_decoder@~1.1.1":
"integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="
"resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
"version" "1.1.1"
dependencies:
"safe-buffer" "~5.1.0"
"string-width@^1.0.2 || 2 || 3 || 4", "string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.3":
"integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="
"resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
@ -3449,6 +3571,22 @@
"modify-filename" "^1.1.0"
"path-exists" "^4.0.0"
"unzipper@^0.10.11":
"integrity" "sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw=="
"resolved" "https://registry.npmjs.org/unzipper/-/unzipper-0.10.11.tgz"
"version" "0.10.11"
dependencies:
"big-integer" "^1.6.17"
"binary" "~0.3.0"
"bluebird" "~3.4.1"
"buffer-indexof-polyfill" "~1.0.0"
"duplexer2" "~0.1.4"
"fstream" "^1.0.12"
"graceful-fs" "^4.2.2"
"listenercount" "~1.0.1"
"readable-stream" "~2.3.6"
"setimmediate" "~1.0.4"
"url-parse-lax@^3.0.0":
"integrity" "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ=="
"resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz"
@ -3464,11 +3602,18 @@
"execa" "^1.0.0"
"mem" "^4.3.0"
"util-deprecate@^1.0.1":
"util-deprecate@^1.0.1", "util-deprecate@~1.0.1":
"integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
"resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
"version" "1.0.2"
"util@^0.10.3":
"integrity" "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A=="
"resolved" "https://registry.npmjs.org/util/-/util-0.10.4.tgz"
"version" "0.10.4"
dependencies:
"inherits" "2.0.3"
"validate-npm-package-license@^3.0.1":
"integrity" "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew=="
"resolved" "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz"