diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 3cb657ba..00000000 --- a/.travis.yml +++ /dev/null @@ -1,10 +0,0 @@ -language: node_js -node_js: - "9.3.0" - -before_install: -- git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" -- git fetch - -notifications: - email: false diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index cbadd441..00000000 --- a/package-lock.json +++ /dev/null @@ -1,1056 +0,0 @@ -{ - "name": "community", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "addressparser": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.3.2.tgz", - "integrity": "sha1-WYc/Nej89sc2HBAjkmHXbhU0i7I=", - "dev": true - }, - "adm-zip": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", - "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", - "dev": true - }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "4.6.0", - "fast-deep-equal": "1.0.0", - "fast-json-stable-stringify": "2.0.0", - "json-schema-traverse": "0.3.1" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "1.0.3" - } - }, - "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", - "dev": true - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", - "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true, - "requires": { - "hoek": "4.2.0" - } - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "bufferjs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/bufferjs/-/bufferjs-1.1.0.tgz", - "integrity": "sha1-CV/6OcXmtAoheKEWnJ7/xYSnMgE=", - "dev": true, - "optional": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "commander": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", - "dev": true, - "requires": { - "graceful-readlink": "1.0.1" - } - }, - "compressjs": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/compressjs/-/compressjs-1.0.3.tgz", - "integrity": "sha1-ldt03VuQOM+AvKMhqw7eJxtJWbY=", - "dev": true, - "requires": { - "amdefine": "1.0.1", - "commander": "2.8.1" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "dev": true, - "requires": { - "boom": "5.2.0" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "dev": true, - "requires": { - "hoek": "4.2.0" - } - } - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "emailjs": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/emailjs/-/emailjs-1.0.12.tgz", - "integrity": "sha1-vWVZxRxJYxJSGGJtoJi+ci96HHI=", - "dev": true, - "requires": { - "addressparser": "0.3.2", - "bufferjs": "1.1.0", - "mimelib": "0.2.14", - "moment": "2.15.2", - "starttls": "1.0.1" - }, - "dependencies": { - "moment": { - "version": "2.15.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.15.2.tgz", - "integrity": "sha1-G/3t9qbjRfMi/pVtXfW9CKjOhNw=", - "dev": true - } - } - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "dev": true, - "requires": { - "iconv-lite": "0.4.19" - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "dev": true - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", - "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", - "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", - "dev": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.17" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fstream": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", - "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.2" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "1.0.0" - } - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "glob-all": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-all/-/glob-all-3.1.0.tgz", - "integrity": "sha1-iRPd+17hrHgSZWJBsD1SF8ZLAqs=", - "dev": true, - "requires": { - "glob": "7.1.2", - "yargs": "1.2.6" - } - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "dev": true, - "requires": { - "ajv": "5.5.2", - "har-schema": "2.0.0" - } - }, - "hash-files": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/hash-files/-/hash-files-1.1.1.tgz", - "integrity": "sha1-X4nGTvIezmnIJhJUt2Wb1A6R2N4=", - "dev": true, - "requires": { - "async": "1.5.2", - "glob-all": "3.1.0", - "opter": "1.1.0", - "read-files": "0.1.0", - "underscore": "1.8.3" - } - }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "dev": true, - "requires": { - "boom": "4.3.1", - "cryptiles": "3.1.2", - "hoek": "4.2.0", - "sntp": "2.1.0" - } - }, - "hoek": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", - "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", - "dev": true - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "jsprim": "1.4.1", - "sshpk": "1.13.1" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true - }, - "imap": { - "version": "0.8.19", - "resolved": "https://registry.npmjs.org/imap/-/imap-0.8.19.tgz", - "integrity": "sha1-NniHOTSrCc6mukh0HyhNoq9Z2NU=", - "dev": true, - "requires": { - "readable-stream": "1.1.14", - "utf7": "1.0.2" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "jasmine": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", - "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", - "dev": true, - "requires": { - "exit": "0.1.2", - "glob": "7.1.2", - "jasmine-core": "2.8.0" - } - }, - "jasmine-core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", - "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", - "dev": true - }, - "js-yaml": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", - "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", - "dev": true, - "requires": { - "argparse": "1.0.9", - "esprima": "4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - }, - "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 - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, - "mail-notifier": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/mail-notifier/-/mail-notifier-0.3.0.tgz", - "integrity": "sha1-drhsopga0Ws8fLXz7r9lZr9HeqU=", - "dev": true, - "requires": { - "debug": "2.6.9", - "imap": "0.8.19", - "mailparser": "0.4.9" - } - }, - "mailparser": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/mailparser/-/mailparser-0.4.9.tgz", - "integrity": "sha1-HQpI1vqqovCawTmO0CPY746xnis=", - "dev": true, - "requires": { - "encoding": "0.1.12", - "mime": "2.0.3", - "mimelib": "0.3.1", - "uue": "1.0.0" - }, - "dependencies": { - "addressparser": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz", - "integrity": "sha1-R6++GiqSYhkdtoOOT9HTm0CCF0Y=", - "dev": true - }, - "mimelib": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.3.1.tgz", - "integrity": "sha1-eHrdJBXYJ6yzr27EvKHqlZZBiFM=", - "dev": true, - "requires": { - "addressparser": "1.0.1", - "encoding": "0.1.12" - } - } - } - }, - "mime": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.0.3.tgz", - "integrity": "sha512-TrpAd/vX3xaLPDgVRm6JkZwLR0KHfukMdU2wTEbqMDdCnY6Yo3mE+mjs9YE6oMNw2QRfXVeBEYpmpO94BIqiug==", - "dev": true - }, - "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", - "dev": true - }, - "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", - "dev": true, - "requires": { - "mime-db": "1.30.0" - } - }, - "mimelib": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/mimelib/-/mimelib-0.2.14.tgz", - "integrity": "sha1-KhqnJL0ZC4W9Um5jF6thBu39aDE=", - "dev": true, - "requires": { - "addressparser": "0.2.1", - "encoding": "0.1.12" - }, - "dependencies": { - "addressparser": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-0.2.1.tgz", - "integrity": "sha1-0RpbLu2gTP7+vfMZbBCuE9ts1gc=", - "dev": true - } - } - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "1.1.8" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "moment": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.20.1.tgz", - "integrity": "sha512-Yh9y73JRljxW5QxN08Fner68eFLxM5ynNOAw2LbIB1YAGeQzZT8QFSUvkAz609Zf+IHhhaUxqZK8dG3W/+HEvg==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node-virustotal": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/node-virustotal/-/node-virustotal-2.4.2.tgz", - "integrity": "sha1-Rxqko6YnEVcy3aR0Hleu/jiR8ek=", - "dev": true, - "requires": { - "compressjs": "1.0.3", - "emailjs": "1.0.12", - "mail-notifier": "0.3.0", - "moment": "2.20.1", - "request": "2.83.0", - "shelljs": "0.7.8", - "speedconcat": "1.0.2", - "tar": "2.2.1" - } - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, - "object-path": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", - "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "opter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/opter/-/opter-1.1.0.tgz", - "integrity": "sha1-JZiuu2Cz8acyKvEJcIb055jISnY=", - "dev": true, - "requires": { - "commander": "2.8.1", - "js-yaml": "3.10.0", - "object-path": "0.11.4", - "underscore": "1.8.3", - "z-schema": "3.19.0", - "z-schema-errors": "0.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", - "dev": true - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", - "dev": true - }, - "read-files": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/read-files/-/read-files-0.1.0.tgz", - "integrity": "sha1-YGu3oBd5Utai+YPVmAlglDFNMh4=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "0.0.1", - "string_decoder": "0.10.31" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "1.5.0" - } - }, - "request": { - "version": "2.83.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", - "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", - "dev": true, - "requires": { - "aws-sign2": "0.7.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.3.1", - "har-validator": "5.0.3", - "hawk": "6.0.2", - "http-signature": "1.2.0", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.17", - "oauth-sign": "0.8.2", - "performance-now": "2.1.0", - "qs": "6.5.1", - "safe-buffer": "5.1.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.3", - "tunnel-agent": "0.6.0", - "uuid": "3.1.0" - } - }, - "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", - "dev": true, - "requires": { - "path-parse": "1.0.5" - } - }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true - }, - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, - "requires": { - "glob": "7.1.2", - "interpret": "1.1.0", - "rechoir": "0.6.2" - } - }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "dev": true, - "requires": { - "hoek": "4.2.0" - } - }, - "speedconcat": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/speedconcat/-/speedconcat-1.0.2.tgz", - "integrity": "sha1-1PVSp712PK1ywY4tnwjclB8AK+I=", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", - "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", - "dev": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - } - }, - "starttls": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/starttls/-/starttls-1.0.1.tgz", - "integrity": "sha1-5ggcJd5rF49adfjyccFIdEkYO0I=", - "dev": true - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", - "dev": true - }, - "tar": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tough-cookie": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", - "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", - "dev": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "optional": true - }, - "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", - "dev": true - }, - "utf7": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/utf7/-/utf7-1.0.2.tgz", - "integrity": "sha1-lV9JCq5lO6IguUVqCod2wZk2CZE=", - "dev": true, - "requires": { - "semver": "5.3.0" - } - }, - "uue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/uue/-/uue-1.0.0.tgz", - "integrity": "sha1-ITuUSLmLmLnQPK9gGiI1ib2IZDA=", - "dev": true - }, - "uuid": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", - "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", - "dev": true - }, - "validator": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-9.2.0.tgz", - "integrity": "sha512-6Ij4Eo0KM4LkR0d0IegOwluG5453uqT5QyF5SV5Ezvm8/zmkKI/L4eoraafZGlZPC9guLkwKzgypcw8VGWWnGA==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "1.3.0" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true - }, - "yargs": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.2.6.tgz", - "integrity": "sha1-nHtKgv1dWVsr8Xq23MQxNUMv40s=", - "dev": true, - "requires": { - "minimist": "0.1.0" - }, - "dependencies": { - "minimist": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.1.0.tgz", - "integrity": "sha1-md9lelJXTCHJBXSX33QnkLK0wN4=", - "dev": true - } - } - }, - "z-schema": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-3.19.0.tgz", - "integrity": "sha512-V94f3ODuluBS4kQLLjNhwoMek0dyIXCsvNu/A17dAyJ6sMhT5KkJQwSn07R0naByLIXJWMDk+ruMfI/3G3hS4Q==", - "dev": true, - "requires": { - "commander": "2.8.1", - "lodash.get": "4.4.2", - "lodash.isequal": "4.5.0", - "validator": "9.2.0" - } - }, - "z-schema-errors": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/z-schema-errors/-/z-schema-errors-0.0.1.tgz", - "integrity": "sha1-4GJwpMpDklcp8ldkeJyp9Gv/D30=", - "dev": true, - "requires": { - "xtend": "4.0.1" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index c4b3fde1..00000000 --- a/package.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "community", - "version": "1.0.0", - "description": "*Manifest repository for VCV Rack plugins*", - "scripts": { - "test": "jasmine" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/VCVRack/community.git" - }, - "bugs": { - "url": "https://github.com/VCVRack/community/issues" - }, - "homepage": "https://github.com/VCVRack/community#readme", - "devDependencies": { - "adm-zip": "^0.4.7", - "ajv": "^5.5.2", - "hash-files": "^1.1.1", - "jasmine": "^2.8.0", - "node-virustotal": "^2.4.2", - "request": "^2.83.0" - } -} diff --git a/spec/README.md b/spec/README.md deleted file mode 100644 index 7800878e..00000000 --- a/spec/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# Tests - -## Jasmine - -[Jasmine Intro](https://jasmine.github.io/2.8/introduction.html) - -Tests only run on changed manifests files. - -To run all tests: -``` -npm test -``` - -To force the tests to run for certain manifest files: -``` -TEST_MANIFEST=plugins/JW-Modules.json npm test -``` - -## Schema Validation - -Our schema is [here](./manifest.json) - -We use [ajv](https://github.com/epoberezkin/ajv) to validate manifests against that schema. - - -## Virus Total - -*Currently Disabled because they are slow and annoying* - -**Rate Limit: 4 per minute** - -`VT_API_KEY` env var is required and already set in travisci settings - -[Public API](https://www.virustotal.com/en/documentation/public-api/v2/) - - diff --git a/spec/manifest.json b/spec/manifest.json deleted file mode 100644 index 5b5f5acf..00000000 --- a/spec/manifest.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "id": "manifest.json", - "type": "object", - "additionalProperties": false, - "required": [ - "slug", - "version" - ], - "description": "A plugin manifest file for VCV Rack.", - "properties": { - "slug": { - "type": "string", - "description": "SEE README" - }, - "name": { - "type": "string", - "description": "SEE README" - }, - "author": { - "type": "string", - "description": "SEE README" - }, - "license": { - "type": "string", - "description": "SEE README" - }, - "version": { - "type": "string", - "description": "SEE README" - }, - "homepage": { - "type": "string", - "description": "SEE README" - }, - "donation": { - "type": "string", - "description": "SEE README" - }, - "manual": { - "type": "string", - "description": "SEE README" - }, - "source": { - "type": "string", - "description": "SEE README" - }, - "disabled": { - "type": "boolean", - "description": "used when a plugin needs to be disabled" - }, - "productId": { - "type": "string", - "description": "only used by vcv rack website" - }, - "downloads": { - "type": "object", - "additionalProperties": false, - "properties": { - "win": { - "type": "object", - "additionalProperties": false, - "required": [ - "download", - "sha256" - ], - "properties": { - "download": { - "type": "string", - "description": "SEE README" - }, - "sha256": { - "type": "string", - "description": "SEE README" - } - } - }, - "lin": { - "type": "object", - "additionalProperties": false, - "required": [ - "download", - "sha256" - ], - "properties": { - "download": { - "type": "string", - "description": "SEE README" - }, - "sha256": { - "type": "string", - "description": "SEE README" - } - } - }, - "mac": { - "type": "object", - "additionalProperties": false, - "required": [ - "download", - "sha256" - ], - "properties": { - "download": { - "type": "string", - "description": "SEE README" - }, - "sha256": { - "type": "string", - "description": "SEE README" - } - } - } - } - } - } -} \ No newline at end of file diff --git a/spec/manifest.tests.spec.js b/spec/manifest.tests.spec.js deleted file mode 100644 index 8ec4b811..00000000 --- a/spec/manifest.tests.spec.js +++ /dev/null @@ -1,158 +0,0 @@ -const TEMP_DIR = ".tmp-zips/"; -const CUR_VER_PREFIX = '0.5'; -const MF_DIR = 'plugins'; -const fs = require("fs"); - -const Ajv = require('ajv'); //https://github.com/epoberezkin/ajv -const ajv = new Ajv({allErrors:true}); -const validate = ajv.compile(require('./manifest.json')); - -const request = require("request"); -const { execSync } = require('child_process'); -const AdmZip = require('adm-zip'); //https://github.com/cthackers/adm-zip -const hashFiles = require('hash-files'); //https://github.com/mac-/hash-files -const manifestsToTest = getManifestsThatApply(); - -if(manifestsToTest.length === 0){ - console.log("No manifest files to test."); - return; -} - -//virus total stuff -const VIRUS_TOTAL_ENABLED = false; -const vt = require("node-virustotal"); //https://github.com/natewatson999/node-virustotal -const con = vt.MakePublicConnection(); -if(VIRUS_TOTAL_ENABLED){ - con.setKey(process.env.VT_API_KEY); - con.setDelay(15000); - jasmine.DEFAULT_TIMEOUT_INTERVAL = manifestsToTest.length * 4 * con.getDelay(); -} - -describe("test manifests", function() { - - beforeEach(()=>{ - execSync(`mkdir -p ${TEMP_DIR}`) - }); - - afterEach(()=>{ - execSync(`rm ${TEMP_DIR}*.zip`) - fs.rmdirSync(TEMP_DIR); - }); - - const testMF = (filePath) => { - it("valid properties and zip files", function(done) { - - try { - if (!filePath.toLowerCase().endsWith('.json')) { - fail("manifests should have .json extension"); - } - - const fileContent = fs.readFileSync(filePath, 'utf8'); - const mfObj = JSON.parse(fileContent); - const valid = validate(mfObj); - if (!valid) { - validate.errors.map(e => e.message += ` in ${filePath}`) - fail(validate.errors); - } - - if (!(/^[a-zA-Z0-9_\-]*$/).test(mfObj.slug)) { - fail(`slug does not match regex in ${filePath}`); - } - - const fileName = filePath.replace('plugins/', ''); - if (fileName.replace('.json', '') !== mfObj.slug) { - fail(`slug '${mfObj.slug}' does not match fileName: ${fileName}`); - } - - if (mfObj.version && !mfObj.version.startsWith(CUR_VER_PREFIX)) { - fail(`version '${mfObj.version}' must start with '${CUR_VER_PREFIX}'`); - } - - if(mfObj.downloads){ - const urlsChecked = []; - let lastSha256; - ['win', 'lin', 'mac'].map(os => { - const osObj = mfObj.downloads[os]; - if(osObj && osObj.download && osObj.sha256){ - const zipUrl = osObj.download; - if(urlsChecked.includes(zipUrl)){ - if(lastSha256 !== osObj.sha256){ - fail("SHA256 should be the same if the download URL is the same"); - } - } else { - urlsChecked.push(zipUrl); - lastSha256 = osObj.sha256; - testOneZip(mfObj.slug, osObj, done); - } - } - }); - } - - } catch(err){ - fail(`Error while trying to validate manifest: ${filePath}\n${err}`); - } - }); - }; - - manifestsToTest.map(testMF); -}); - -function testOneZip(expectedRootDir, osObj, done) { - const urlParts = osObj.download.split('/'); - const zipName = urlParts[urlParts.length - 1].split('\?')[0]; - request(osObj.download).pipe(fs.createWriteStream(TEMP_DIR+zipName)).on('finish', ()=>{ - - console.log(`Downloaded ${TEMP_DIR+zipName}`); - const zip = new AdmZip(TEMP_DIR+zipName); - const zipEntries = zip.getEntries(); - // zipEntries.map(ze=>console.log(ze.toString())); - - const slugDirFound = zipEntries.find(ze => ze.isDirectory && - (ze.entryName === expectedRootDir+'/' || ze.entryName === expectedRootDir+'\\') - ); - - if(slugDirFound){ - const invalidEntry = zipEntries.find(ze => !ze.entryName.startsWith(slugDirFound.entryName)); - if(invalidEntry){ - fail(`Zip entries should all be under a dir named ${expectedRootDir} but this entry was found: ${invalidEntry.entryName}`); - } - } else { - fail(`Zip should have one dir named ${expectedRootDir}`); - } - - - if(VIRUS_TOTAL_ENABLED){ - con.FileEvaluation(zipName, "application/zip", fs.readFileSync(TEMP_DIR+zipName), function(data) { - console.log(data); - if(osObj.sha256 !== data.sha256){ - throw new Error(`Invalid sha256 value. manifest:${osObj.sha256} virustotal:${data.sha256}`); - } - if(data.positives > 2){ - throw new Error(`Too many positives from virustotal.`); - } - done(); - }, function(err) { - if (err){ throw err; } - done(); - }); - } else { - hashFiles({files:[TEMP_DIR+zipName], algorithm:'sha256'}, function(error, hash) { - if(osObj.sha256 !== hash){ - throw new Error(`Invalid sha256 value. manifest:${osObj.sha256} hash:${hash}`); - } - done(); - }); - } - }); -} - -function getManifestsThatApply(){ - let paths = ""; - if(process.env.TEST_MANIFEST){ - paths = process.env.TEST_MANIFEST; - } else { - paths = execSync(`git diff -w --stat --name-only origin/master -- ${MF_DIR}/`, {encoding:'utf8'}); - } - return paths.trim().split('\n').filter(s=>s.trim() !== ''); -} - diff --git a/spec/support/jasmine.json b/spec/support/jasmine.json deleted file mode 100644 index 3ea31669..00000000 --- a/spec/support/jasmine.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "spec_dir": "spec", - "spec_files": [ - "**/*[sS]pec.js" - ], - "helpers": [ - "helpers/**/*.js" - ], - "stopSpecOnExpectationFailure": false, - "random": false -}