From 7d009e266d2f72666c2b546025d092d04e56fbaf Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Tue, 16 Jul 2019 14:14:06 +0900 Subject: [PATCH 01/14] Removed the path type --- desktop/package-lock.json | 1788 ++++++++++++++++++++++++++ desktop/package.json | 22 +- desktop/sources/scripts/commander.js | 8 +- desktop/sources/scripts/library.js | 9 +- desktop/sources/scripts/lisp.js | 9 +- desktop/sources/scripts/ronin.js | 8 +- 6 files changed, 1815 insertions(+), 29 deletions(-) create mode 100644 desktop/package-lock.json diff --git a/desktop/package-lock.json b/desktop/package-lock.json new file mode 100644 index 0000000..661f152 --- /dev/null +++ b/desktop/package-lock.json @@ -0,0 +1,1788 @@ +{ + "name": "Ronin", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/node": { + "version": "10.14.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.12.tgz", + "integrity": "sha512-QcAKpaO6nhHLlxWBvpc4WeLrTvPqlHOvaj0s5GriKkA1zq+bsFBPpfYCvQhLqLgYlIko8A9YrPdaMHCo5mBcpg==", + "dev": true + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "asar": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asar/-/asar-1.0.0.tgz", + "integrity": "sha512-MBiDU5cDr9UWuY2F0zq2fZlnyRq1aOPmJGMas22Qa14K1odpRXL3xkMHPN3uw2hAK5mD89Q+/KidOUtpi4V0Cg==", + "dev": true, + "requires": { + "chromium-pickle-js": "^0.2.0", + "commander": "^2.19.0", + "cuint": "^0.2.2", + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "pify": "^4.0.1", + "tmp-promise": "^1.0.5" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "author-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz", + "integrity": "sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA=", + "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.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "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 + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bluebird": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz", + "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==", + "dev": true + }, + "brace-expansion": { + "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" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chromium-pickle-js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz", + "integrity": "sha1-BKEGZywYsIWrd02YPfo+oTjyIgU=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", + "dev": true + }, + "compare-version": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz", + "integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=", + "dev": true + }, + "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 + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "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==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "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 + }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "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": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "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.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "electron": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/electron/-/electron-5.0.6.tgz", + "integrity": "sha512-0L53lv26eDhaaNxL6DqXGQrQOEAYbrQg40stRSb2pzrY06kwPbABzXEiaCvEsBuKUQ+9OQBbVyyvXRbLJlun/A==", + "dev": true, + "requires": { + "@types/node": "^10.12.18", + "electron-download": "^4.1.0", + "extract-zip": "^1.0.3" + } + }, + "electron-download": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz", + "integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==", + "dev": true, + "requires": { + "debug": "^3.0.0", + "env-paths": "^1.0.0", + "fs-extra": "^4.0.1", + "minimist": "^1.2.0", + "nugget": "^2.0.1", + "path-exists": "^3.0.0", + "rc": "^1.2.1", + "semver": "^5.4.1", + "sumchecker": "^2.0.2" + } + }, + "electron-notarize": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/electron-notarize/-/electron-notarize-0.0.5.tgz", + "integrity": "sha512-YzrqZ6RDQ7Wt2RWlxzRoQUuxnTeXrfp7laH7XKcmQqrZ6GaAr50DMPvFMpqDKdrZSHSbcgZgB7ktIQbjvITmCQ==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "fs-extra": "^7.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "electron-osx-sign": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/electron-osx-sign/-/electron-osx-sign-0.4.11.tgz", + "integrity": "sha512-VVd40nrnVqymvFrY9ZkOYgHJOvexHHYTR3di/SN+mjJ0OWhR1I8BRVj3U+Yamw6hnkZZNKZp52rqL5EFAAPFkQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "compare-version": "^0.1.2", + "debug": "^2.6.8", + "isbinaryfile": "^3.0.2", + "minimist": "^1.2.0", + "plist": "^3.0.1" + }, + "dependencies": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "electron-packager": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/electron-packager/-/electron-packager-13.1.1.tgz", + "integrity": "sha512-3Drgcw8OEOP3Psw/PprloAFJSkSUSQgjUq3AmWffJGB3Kj5WXmZl6A3GOUs8aT7bP/8GWg4oYqSiCSnA5PQkdQ==", + "dev": true, + "requires": { + "asar": "^1.0.0", + "debug": "^4.0.1", + "electron-download": "^4.1.1", + "electron-notarize": "^0.0.5", + "electron-osx-sign": "^0.4.11", + "extract-zip": "^1.0.3", + "fs-extra": "^7.0.0", + "galactus": "^0.2.1", + "get-package-info": "^1.0.0", + "parse-author": "^2.0.0", + "pify": "^4.0.0", + "plist": "^3.0.0", + "rcedit": "^1.0.0", + "resolve": "^1.1.6", + "sanitize-filename": "^1.6.0", + "semver": "^5.3.0", + "yargs-parser": "^13.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "env-paths": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz", + "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extract-zip": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz", + "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=", + "dev": true, + "requires": { + "concat-stream": "1.6.2", + "debug": "2.6.9", + "mkdirp": "0.5.1", + "yauzl": "2.4.1" + }, + "dependencies": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", + "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 + }, + "fd-slicer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz", + "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=", + "dev": true, + "requires": { + "pend": "~1.2.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "flora-colossus": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/flora-colossus/-/flora-colossus-1.0.1.tgz", + "integrity": "sha512-d+9na7t9FyH8gBJoNDSi28mE4NgQVGGvxQ4aHtFRetjyh5SXjuus+V5EZaxFmFdXVemSOrx0lsgEl/ZMjnOWJA==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "fs-extra": "^7.0.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "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.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "galactus": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/galactus/-/galactus-0.2.1.tgz", + "integrity": "sha1-y+0tIKQMH1Z5o1kI4rlBVzPnjbk=", + "dev": true, + "requires": { + "debug": "^3.1.0", + "flora-colossus": "^1.0.0", + "fs-extra": "^4.0.0" + } + }, + "get-package-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-package-info/-/get-package-info-1.0.0.tgz", + "integrity": "sha1-ZDJ5ZWPigRPNlHTbvQAFKYWkmZw=", + "dev": true, + "requires": { + "bluebird": "^3.1.1", + "debug": "^2.2.0", + "lodash.get": "^4.0.0", + "read-pkg-up": "^2.0.0" + }, + "dependencies": { + "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" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "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.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", + "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", + "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.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "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.2.2", + "sshpk": "^1.7.0" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "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 + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "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 + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": 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.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "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 + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "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" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.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 + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + }, + "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.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "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" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "nugget": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz", + "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=", + "dev": true, + "requires": { + "debug": "^2.1.3", + "minimist": "^1.1.0", + "pretty-bytes": "^1.0.2", + "progress-stream": "^1.1.0", + "request": "^2.45.0", + "single-line-log": "^1.1.2", + "throttleit": "0.0.2" + }, + "dependencies": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", + "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" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-author": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz", + "integrity": "sha1-00YL8d3Q367tQtp1QkLmX7aEqB8=", + "dev": true, + "requires": { + "author-regex": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "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.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", + "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 + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "plist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", + "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", + "dev": true, + "requires": { + "base64-js": "^1.2.3", + "xmlbuilder": "^9.0.7", + "xmldom": "0.1.x" + } + }, + "pretty-bytes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz", + "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1", + "meow": "^3.1.0" + } + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz", + "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=", + "dev": true, + "requires": { + "speedometer": "~0.1.2", + "through2": "~0.2.3" + } + }, + "psl": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz", + "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "rcedit": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rcedit/-/rcedit-1.1.2.tgz", + "integrity": "sha512-z2ypB4gbINhI6wVe0JJMmdpmOpmNc4g90sE6/6JSuch5kYnjfz9CxvVPqqhShgR6GIkmtW3W2UlfiXhWljA0Fw==", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "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.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "resolve": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", + "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sanitize-filename": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.1.tgz", + "integrity": "sha1-YS2hyWRz+gLczaktzVtKsWSmdyo=", + "dev": true, + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "single-line-log": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz", + "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=", + "dev": true, + "requires": { + "string-width": "^1.0.1" + } + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "speedometer": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz", + "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "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 + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "sumchecker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz", + "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=", + "dev": true, + "requires": { + "debug": "^2.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "throttleit": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz", + "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=", + "dev": true + }, + "through2": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz", + "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=", + "dev": true, + "requires": { + "readable-stream": "~1.1.9", + "xtend": "~2.1.1" + } + }, + "tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "dev": true, + "requires": { + "rimraf": "^2.6.3" + } + }, + "tmp-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-1.1.0.tgz", + "integrity": "sha512-8+Ah9aB1IRXCnIOxXZ0uFozV1nMU5xiu7hhFVUSxZ3bYu+psD4TzagCzVbexUCgNNGJnsmNDQlS4nG3mTyoNkw==", + "dev": true, + "requires": { + "bluebird": "^3.5.0", + "tmp": "0.1.0" + } + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=", + "dev": true, + "requires": { + "utf8-byte-length": "^1.0.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.0.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 + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha1-9F8VDExm7uloGGUFq5P8u4rWv2E=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "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.2.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xmldom": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "dev": true + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "yauzl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", + "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=", + "dev": true, + "requires": { + "fd-slicer": "~1.0.1" + } + } + } +} diff --git a/desktop/package.json b/desktop/package.json index 6b6caca..fd78a06 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -4,17 +4,17 @@ "main": "main.js", "scripts": { "start": "electron .", - "clean" : "rm -r ~/Desktop/Ronin-darwin-x64/ ; rm -r ~/Desktop/Ronin-linux-x64/ ; rm -r ~/Desktop/Ronin-win32-x64/ ; echo 'cleaned build location'", - "build_osx" : "electron-packager . Ronin --platform=darwin --arch=x64 --out ~/Desktop/ --overwrite --icon=icon.icns ; echo 'Built for OSX'", - "build_linux" : "electron-packager . Ronin --platform=linux --arch=x64 --out ~/Desktop/ --overwrite --icon=icon.ico ; echo 'Built for LINUX'", - "build_win" : "electron-packager . Ronin --platform=win32 --arch=x64 --out ~/Desktop/ --overwrite --icon=icon.ico ; echo 'Built for WIN'", - "build" : "npm run clean ; npm run build_osx ; npm run build_linux ; npm run build_win", - "push_osx" : "~/butler push ~/Desktop/Ronin-darwin-x64/ hundredrabbits/ronin:osx-64", - "push_linux" : "~/butler push ~/Desktop/Ronin-linux-x64/ hundredrabbits/ronin:linux-64", - "push_win" : "~/butler push ~/Desktop/Ronin-win32-x64/ hundredrabbits/ronin:windows-64", - "push_theme" : "~/butler push ~/Github/HundredRabbits/Themes/themes/ hundredrabbits/ronin:themes", - "push_status" : "~/butler status hundredrabbits/ronin", - "push" : "npm run build ; npm run push_theme ; npm run push_osx ; npm run push_linux ; npm run push_win ; npm run clean ; npm run push_status" + "clean": "rm -r ~/Desktop/Ronin-darwin-x64/ ; rm -r ~/Desktop/Ronin-linux-x64/ ; rm -r ~/Desktop/Ronin-win32-x64/ ; echo 'cleaned build location'", + "build_osx": "electron-packager . Ronin --platform=darwin --arch=x64 --out ~/Desktop/ --overwrite --icon=icon.icns ; echo 'Built for OSX'", + "build_linux": "electron-packager . Ronin --platform=linux --arch=x64 --out ~/Desktop/ --overwrite --icon=icon.ico ; echo 'Built for LINUX'", + "build_win": "electron-packager . Ronin --platform=win32 --arch=x64 --out ~/Desktop/ --overwrite --icon=icon.ico ; echo 'Built for WIN'", + "build": "npm run clean ; npm run build_osx ; npm run build_linux ; npm run build_win", + "push_osx": "~/butler push ~/Desktop/Ronin-darwin-x64/ hundredrabbits/ronin:osx-64", + "push_linux": "~/butler push ~/Desktop/Ronin-linux-x64/ hundredrabbits/ronin:linux-64", + "push_win": "~/butler push ~/Desktop/Ronin-win32-x64/ hundredrabbits/ronin:windows-64", + "push_theme": "~/butler push ~/Github/HundredRabbits/Themes/themes/ hundredrabbits/ronin:themes", + "push_status": "~/butler status hundredrabbits/ronin", + "push": "npm run build ; npm run push_theme ; npm run push_osx ; npm run push_linux ; npm run push_win ; npm run clean ; npm run push_status" }, "devDependencies": { "electron": "^5.0.6", diff --git a/desktop/sources/scripts/commander.js b/desktop/sources/scripts/commander.js index 5d51581..74a520d 100644 --- a/desktop/sources/scripts/commander.js +++ b/desktop/sources/scripts/commander.js @@ -106,8 +106,14 @@ function Commander (ronin) { this.cache = this._input.value } + this.canInject = function () { + return this._input.value.indexOf('$path') > -1 + } + this.injectPath = function (path) { - this._input.value = this._input.value.replace('($path)', `(path "${path}")`) + if (this.canInject()) { + this._input.value = this._input.value.replace('$path', `"${path}"`) + } } this.commit = function () { diff --git a/desktop/sources/scripts/library.js b/desktop/sources/scripts/library.js index 22a3272..726961b 100644 --- a/desktop/sources/scripts/library.js +++ b/desktop/sources/scripts/library.js @@ -7,9 +7,8 @@ function Library (ronin) { this.folder = (path = ronin.source.path) => { const a = [] if (path) { - const folder = ronin.source.folder(path) - if (fs.existsSync(folder)) { - return fs.readdirSync(folder) + if (fs.existsSync(path)) { + return fs.readdirSync(path) } } return a @@ -169,10 +168,6 @@ function Library (ronin) { return this.pos(rect.w / 2, rect.h / 2) } - this.path = (path) => { - return path - } - this.scale = (rect, w, h) => { return { x: rect.x, y: rect.y, w: rect.w * w, h: rect.h * h } } diff --git a/desktop/sources/scripts/lisp.js b/desktop/sources/scripts/lisp.js index 0ef700d..793ea80 100644 --- a/desktop/sources/scripts/lisp.js +++ b/desktop/sources/scripts/lisp.js @@ -20,10 +20,9 @@ function Lisp (input, lib) { const special = { run: (input, context) => { - const file = fs.readFileSync( - path.resolve(input[1].value), - { encoding: 'utf-8' }) - + const p = input[1].value + if (!fs.existsSync(p)) { console.warn('Source', p); return [] } + const file = fs.readFileSync(p, { encoding: 'utf-8' }) return interpret(this.parse(file), context) }, let: function (input, context) { @@ -31,7 +30,6 @@ function Lisp (input, lib) { acc.scope[x[0].value] = interpret(x[1], context) return acc }, new Context({}, context)) - return interpret(input[2], letContext) }, def: function (input, context) { @@ -68,7 +66,6 @@ function Lisp (input, lib) { acc[x.value] = lambdaArguments[i] return acc }, {}) - return interpret(input[2], new Context(lambdaScope, context)) } }, diff --git a/desktop/sources/scripts/ronin.js b/desktop/sources/scripts/ronin.js index e43c051..5620108 100644 --- a/desktop/sources/scripts/ronin.js +++ b/desktop/sources/scripts/ronin.js @@ -92,12 +92,12 @@ function Ronin () { const file = e.dataTransfer.files[0] if (!file || !file.name) { console.warn('File', 'Not a valid file.'); return } const path = file.path ? file.path : file.name - if (path.indexOf('.lisp') > -1) { - this.source.read(path) - this.commander.show() - } else if (file.path) { + if (this.commander.canInject()) { this.commander.injectPath(file.path) this.commander.show() + } else if (path.indexOf('.lisp') > -1) { + this.source.read(path) + this.commander.show() } } } From 5f766f7270526ed920ec15e8182b9ea2e56ba2b6 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Tue, 16 Jul 2019 14:16:41 +0900 Subject: [PATCH 02/14] Clear on new --- desktop/sources/scripts/source.js | 1 + 1 file changed, 1 insertion(+) diff --git a/desktop/sources/scripts/source.js b/desktop/sources/scripts/source.js index 39e7943..29a6457 100644 --- a/desktop/sources/scripts/source.js +++ b/desktop/sources/scripts/source.js @@ -14,6 +14,7 @@ function Source (ronin) { this.new = function () { console.log('Source', 'Make a new file..') this.path = null + ronin.surface.clear() } this.open = function () { From 7a8e25b51b5ab6791c998dcc3701be666e9ecfcb Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Tue, 16 Jul 2019 14:19:16 +0900 Subject: [PATCH 03/14] Run is now include --- desktop/sources/scripts/lisp.js | 2 +- examples/recursive.lisp | 3 ++- examples/run.lisp | 5 ++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/desktop/sources/scripts/lisp.js b/desktop/sources/scripts/lisp.js index 793ea80..2b7788e 100644 --- a/desktop/sources/scripts/lisp.js +++ b/desktop/sources/scripts/lisp.js @@ -19,7 +19,7 @@ function Lisp (input, lib) { } const special = { - run: (input, context) => { + include: (input, context) => { const p = input[1].value if (!fs.existsSync(p)) { console.warn('Source', p); return [] } const file = fs.readFileSync(p, { encoding: 'utf-8' }) diff --git a/examples/recursive.lisp b/examples/recursive.lisp index 50a2c7c..7c4cd6c 100644 --- a/examples/recursive.lisp +++ b/examples/recursive.lisp @@ -2,13 +2,14 @@ ( (clear) + (def line-color "red") (defn rec (v) (if (gt v 0) ((stroke (circle (mul 5 v) (mul 5 v) - (mul 5 v)) 1 "red") + (mul 5 v)) 1 line-color) (rec (sub v 5)))) ) diff --git a/examples/run.lisp b/examples/run.lisp index 0954598..1877cf0 100644 --- a/examples/run.lisp +++ b/examples/run.lisp @@ -1,5 +1,4 @@ ( - (run "../examples/recursive.lisp") - (echo value) - (echo (addOne value)) + (include "../examples/recursive.lisp") + (echo line-color) ) \ No newline at end of file From 4358457b2006aee7eec294901a64c787bf097fbc Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Tue, 16 Jul 2019 14:29:13 +0900 Subject: [PATCH 04/14] Implemented (exit) --- desktop/sources/scripts/library.js | 24 ++++++------------------ desktop/sources/scripts/ronin.js | 3 +-- desktop/sources/scripts/surface.js | 6 ------ examples/load.lisp | 5 ----- 4 files changed, 7 insertions(+), 31 deletions(-) delete mode 100644 examples/load.lisp diff --git a/desktop/sources/scripts/library.js b/desktop/sources/scripts/library.js index 726961b..25f9f6b 100644 --- a/desktop/sources/scripts/library.js +++ b/desktop/sources/scripts/library.js @@ -4,16 +4,6 @@ function Library (ronin) { return path } - this.folder = (path = ronin.source.path) => { - const a = [] - if (path) { - if (fs.existsSync(path)) { - return fs.readdirSync(path) - } - } - return a - } - this.save = (path = ronin.source.folder(), type = 'png', quality = 1.0) => { if (!path) { console.warn('Missing save path'); return path } var fullQuality = ronin.surface.el.toDataURL('image/png', quality) @@ -47,8 +37,12 @@ function Library (ronin) { return rect } + this.folder = (path = ronin.source.path) => { + return fs.existsSync(path) ? fs.readdirSync(path) : [] + } + this.exit = () => { - // TODO: Closes Ronin + ronin.source.quit() } // Logic @@ -293,16 +287,10 @@ function Library (ronin) { // Generics this.echo = (...args) => { - const msg = args.reduce((acc, val) => { return acc + val + ' ' }, '') - ronin.log(msg) + ronin.log(args) return args } - this.print = (msg) => { - ronin.log(msg) - return msg - } - this.str = (...args) => { return args.reduce((acc, val) => { return acc + val }, '') } diff --git a/desktop/sources/scripts/ronin.js b/desktop/sources/scripts/ronin.js index 5620108..ec6e9c4 100644 --- a/desktop/sources/scripts/ronin.js +++ b/desktop/sources/scripts/ronin.js @@ -40,7 +40,6 @@ function Ronin () { this.source.start() this.commander.start() this.surface.start() - console.log('Ronin', 'Started') } @@ -50,7 +49,7 @@ function Ronin () { this.log = function (msg) { console.log(msg) - this.commander.setStatus(msg) + this.commander.setStatus(msg.reduce((acc, val) => { return acc + val + ' ' }, '')) } this.load = function (content = this.default()) { diff --git a/desktop/sources/scripts/surface.js b/desktop/sources/scripts/surface.js index b5e7854..ef054ae 100644 --- a/desktop/sources/scripts/surface.js +++ b/desktop/sources/scripts/surface.js @@ -4,7 +4,6 @@ function Surface (ronin) { this._guide = document.createElement('canvas') this._guide.id = 'guide' this.ratio = window.devicePixelRatio - // Contexts this.context = this.el.getContext('2d') this.guide = this.el.getContext('2d') @@ -22,11 +21,6 @@ function Surface (ronin) { this.start = function () { this.maximize() - console.log('Surface', `Ratio:${this.ratio}`) - } - - this.update = function () { - } // Shape diff --git a/examples/load.lisp b/examples/load.lisp deleted file mode 100644 index fa9c31e..0000000 --- a/examples/load.lisp +++ /dev/null @@ -1,5 +0,0 @@ -; load file - -((clear) - (print (folder)) -) \ No newline at end of file From 8cbd0aa36f0f06734e23f9b6fdb8aebe8b8f4b48 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Tue, 16 Jul 2019 14:39:23 +0900 Subject: [PATCH 05/14] Added (export) --- desktop/sources/scripts/library.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/desktop/sources/scripts/library.js b/desktop/sources/scripts/library.js index 25f9f6b..0c9d93c 100644 --- a/desktop/sources/scripts/library.js +++ b/desktop/sources/scripts/library.js @@ -4,13 +4,11 @@ function Library (ronin) { return path } - this.save = (path = ronin.source.folder(), type = 'png', quality = 1.0) => { - if (!path) { console.warn('Missing save path'); return path } - var fullQuality = ronin.surface.el.toDataURL('image/png', quality) - const base64Data = url.replace(/^data:image\/png;base64,/, '') - fs.writeFile('image.png', base64Data, 'base64', function (err) { - console.warn('error', err) - }) + this.export = (path, type = 'image/png', quality = 1.0) => { + if (!path) { console.warn('Missing export path'); return path } + var dataUrl = ronin.surface.el.toDataURL(type, quality) + const data = dataUrl.replace(/^data:image\/png;base64,/, '') + fs.writeFileSync(path, data, 'base64') return path } From 4ff34116b6d46853593318baff390ccd55960d9b Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Tue, 16 Jul 2019 15:07:06 +0900 Subject: [PATCH 06/14] Moved Toggle menu --- desktop/sources/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/desktop/sources/index.html b/desktop/sources/index.html index 60e7506..8e0340c 100644 --- a/desktop/sources/index.html +++ b/desktop/sources/index.html @@ -43,10 +43,10 @@ ronin.controller.add("default","View","Zoom In",() => { ronin.modZoom(0.25) },"CmdOrCtrl+=") ronin.controller.add("default","View","Zoom Out",() => { ronin.modZoom(-0.25) },"CmdOrCtrl+-") ronin.controller.add("default","View","Zoom Reset",() => { ronin.modZoom(1,true) },"CmdOrCtrl+0") + ronin.controller.add("default","View","Toggle Commander",() => { ronin.commander.toggle(); },"CmdOrCtrl+K"); ronin.controller.add("default","Project","Run",() => { ronin.commander.run(); },"CmdOrCtrl+R"); ronin.controller.add("default","Project","Reload Run",() => { ronin.source.revert(); ronin.commander.run(); },"CmdOrCtrl+Shift+R"); ronin.controller.add("default","Project", "Toggle Animation (experimental)",() => { ronin.commander.toggleAnimation(); },"CmdOrCtrl+Shift+T"); - ronin.controller.add("default","Commander","Toggle",() => { ronin.commander.toggle(); },"CmdOrCtrl+K"); ronin.controller.add("default","Theme","Open Theme",() => { ronin.theme.open() },"CmdOrCtrl+Shift+O") ronin.controller.add("default","Theme","Reset Theme",() => { ronin.theme.reset() },"CmdOrCtrl+Shift+Backspace") ronin.controller.addSpacer('default', 'Theme', 'Download') From 71dc7440f70848daab9910347ea69a8cdaf643f2 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Tue, 16 Jul 2019 15:17:56 +0900 Subject: [PATCH 07/14] Improved README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9eebfd5..6682bc3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # Ronin -Ronin is a graphic design tool under development. +_All I wanted, was a way of resizing photos._ + +Ronin is a LISP repl to create generative graphics currently under development. You can follow the daily progress on [Mastodon](https://merveilles.town/@neauoire/). Until we have documented the library, you can find a list of available functions [here](https://github.com/hundredrabbits/Ronin/blob/master/desktop/sources/scripts/library.js). From db0eaabd7aeae5c8f6c5c4db7a9290fa6c59189f Mon Sep 17 00:00:00 2001 From: Xavier Van de Woestyne Date: Tue, 16 Jul 2019 10:34:19 +0200 Subject: [PATCH 08/14] More efficient 'and', 'or' --- desktop/sources/scripts/library.js | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/desktop/sources/scripts/library.js b/desktop/sources/scripts/library.js index 0c9d93c..e5c57bb 100644 --- a/desktop/sources/scripts/library.js +++ b/desktop/sources/scripts/library.js @@ -58,21 +58,11 @@ function Library (ronin) { } this.and = (...args) => { - for (let i = 0; i < args.length; i++) { - if (!args[i]) { - return args[i] - } - } - return args[args.length - 1] + return args.every((x) => x) } this.or = (...args) => { - for (let i = 0; i < args.length; i++) { - if (args[i]) { - return args[i] - } - } - return args[args.length - 1] + return args.some((x) => x) } // Arrays From 1bbe934f6910130b019088bbb085a6742991a97d Mon Sep 17 00:00:00 2001 From: Xavier Van de Woestyne Date: Tue, 16 Jul 2019 14:16:58 +0200 Subject: [PATCH 09/14] Safe version of and/or --- desktop/sources/scripts/library.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/desktop/sources/scripts/library.js b/desktop/sources/scripts/library.js index e5c57bb..e88fb6e 100644 --- a/desktop/sources/scripts/library.js +++ b/desktop/sources/scripts/library.js @@ -57,12 +57,24 @@ function Library (ronin) { return a === b } - this.and = (...args) => { - return args.every((x) => x) + this.and = (a, b, ...rest) => { + let args = [a, b].concat(rest) + for (let i = 0; i < args.length; i++) { + if (!args[i]) { + return args[i] + } + } + return args[args.length - 1] } - this.or = (...args) => { - return args.some((x) => x) + this.or = (a, b, ...rest) => { + let args = [a, b].concat(rest) + for (let i = 0; i < args.length; i++) { + if (args[i]) { + return args[i] + } + } + return args[args.length - 1] } // Arrays From acea1ad26d80ce134a556f8b49ac1e3ebac8124f Mon Sep 17 00:00:00 2001 From: Quentin Leonetti Date: Tue, 16 Jul 2019 20:49:22 +0200 Subject: [PATCH 10/14] refactor for async --- desktop/sources/scripts/library.js | 35 ++++++++++++++++------------- desktop/sources/scripts/lisp.js | 16 ++++++------- desktop/sources/scripts/surface.js | 36 +++++++++++++++--------------- examples/crop.lisp | 13 ++--------- examples/glitch.lisp | 7 +++--- examples/open.lisp | 14 +++++------- examples/pixels.lisp | 19 +++++----------- examples/random.lisp | 19 ++++++++-------- examples/resize.lisp | 13 ++--------- 9 files changed, 74 insertions(+), 98 deletions(-) diff --git a/desktop/sources/scripts/library.js b/desktop/sources/scripts/library.js index 0c9d93c..7223dc2 100644 --- a/desktop/sources/scripts/library.js +++ b/desktop/sources/scripts/library.js @@ -1,7 +1,6 @@ function Library (ronin) { - this.open = (path, callback) => { - ronin.surface.open(path, callback) - return path + this.open = async (path) => { + return ronin.surface.open(path) } this.export = (path, type = 'image/png', quality = 1.0) => { @@ -12,27 +11,24 @@ function Library (ronin) { return path } - this.draw = (path, rect, callback) => { + this.draw = async (path, rect) => { const img = new Image() img.src = path - ronin.surface.draw(img, rect, callback) - return rect + return ronin.surface.draw(img, rect) } - this.resize = (w = 1, h = 1, callback) => { + this.resize = async (w = 1, h = 1) => { const rect = w <= 1 || h <= 1 ? { x: 0, y: 0, w: this.frame().w * w, h: this.frame().h * h } : { x: 0, y: 0, w, h } const a = document.createElement('img') const b = document.createElement('img') a.src = ronin.surface.el.toDataURL() ronin.surface.resizeImage(a, b) ronin.surface.resize(rect, true) - ronin.surface.draw(b, rect, callback) - return rect + return ronin.surface.draw(b, rect) } - this.crop = (rect, callback) => { - ronin.surface.crop(rect, callback) - return rect + this.crop = async (rect) => { + return ronin.surface.crop(rect) } this.folder = (path = ronin.source.path) => { @@ -77,13 +73,22 @@ function Library (ronin) { // Arrays - this.map = (fn, arr) => { - return arr.map(fn) + this.map = async (fn, arr) => { + return Promise.all(arr.map(fn)) } - this.filter = (fn, arr) => { + this._filter = (fn, arr) => { return arr.filter(fn) } + this.filter= (fn, arr) => { + const list = Array.from(arr); + return Promise.all(list.map((element, index) => fn(element, index, list))) + .then(result => { + return list.filter((_, index) => { + return result[index]; + }); + }); + } this.reduce = (fn, arr, acc = 0) => { return arr.reduce(fn, acc) diff --git a/desktop/sources/scripts/lisp.js b/desktop/sources/scripts/lisp.js index 2b7788e..fe9b520 100644 --- a/desktop/sources/scripts/lisp.js +++ b/desktop/sources/scripts/lisp.js @@ -50,7 +50,7 @@ function Lisp (input, lib) { // docstring console.log(input[2].value) } - context.scope[identifier] = function () { + context.scope[identifier] = async function () { const lambdaArguments = arguments const lambdaScope = argumentNames.reduce(function (acc, x, i) { acc[x.value] = lambdaArguments[i] @@ -60,7 +60,7 @@ function Lisp (input, lib) { } }, lambda: function (input, context) { - return function () { + return async function () { const lambdaArguments = arguments const lambdaScope = input[1].reduce(function (acc, x, i) { acc[x.value] = lambdaArguments[i] @@ -69,23 +69,23 @@ function Lisp (input, lib) { return interpret(input[2], new Context(lambdaScope, context)) } }, - if: function (input, context) { - if (interpret(input[1], context)) { + if: async function (input, context) { + if (await interpret(input[1], context)) { return interpret(input[2], context) } return input[3] ? interpret(input[3], context) : [] } } - const interpretList = function (input, context) { + const interpretList = async function (input, context) { if (input.length > 0 && input[0].value in special) { return special[input[0].value](input, context) } - const list = input.map(function (x) { return interpret(x, context) }) + const list = await Promise.all(input.map(function (x) { return interpret(x, context) })) return list[0] instanceof Function ? list[0].apply(undefined, list.slice(1)) : list } - const interpret = function (input, context) { + const interpret = async function (input, context) { if (!input) { console.warn('error', context.scope); return null } if (context === undefined) { @@ -134,7 +134,7 @@ function Lisp (input, lib) { return parenthesize(tokenize(input)) } - this.toPixels = function () { + this.toPixels = async function () { return interpret(this.parse(input)) } } diff --git a/desktop/sources/scripts/surface.js b/desktop/sources/scripts/surface.js index ef054ae..621ce02 100644 --- a/desktop/sources/scripts/surface.js +++ b/desktop/sources/scripts/surface.js @@ -106,32 +106,32 @@ function Surface (ronin) { // IO - this.open = function (path, callback = () => {}) { - const img = new Image() - img.src = path - img.onload = () => { - ronin.log(`Open ${img.width}x${img.height}`) - const rect = { x: 0, y: 0, w: img.width, h: img.height } - this.resize(rect, true) - this.context.drawImage(img, 0, 0, img.width, img.height) - if (typeof callback === 'function') { - callback() + this.open = function (path) { + return new Promise(resolve => { + const img = new Image() + img.src = path + img.onload = () => { + //ronin.log(`Open ${img.width}x${img.height}`) + const rect = { x: 0, y: 0, w: img.width, h: img.height } + this.resize(rect, true) + this.context.drawImage(img, 0, 0, img.width, img.height) + resolve() } - } + }) } - this.draw = function (img, rect = this.getFrame(), callback = () => {}) { - img.onload = () => { - ronin.log(`Draw ${img.width}x${img.height}`) + this.draw = function (img, rect = this.getFrame()) { + return new Promise(resolve => { + img.onload = () => { + //ronin.log(`Draw ${img.width}x${img.height}`) this.context.drawImage(img, rect.x, rect.y, rect.w, rect.h) // no strect: img.height * (rect.w / img.width) - if (typeof callback === 'function') { - callback() - } + resolve() } + }); } this.crop = function (rect) { - ronin.log(`Crop ${rect.w}x${rect.h} from ${rect.x}x${rect.y}`) + // ronin.log(`Crop ${rect.w}x${rect.h} from ${rect.x}x${rect.y}`) const crop = this.getCrop(rect) this.resize(rect, true) this.context.drawImage(crop, 0, 0) diff --git a/examples/crop.lisp b/examples/crop.lisp index d0e57de..0a8168a 100644 --- a/examples/crop.lisp +++ b/examples/crop.lisp @@ -2,15 +2,6 @@ ( (clear) - - ; Filter - - (def filter-action - (lambda () (crop (rect 100 100 400 400)))) - - ; Draw photo - - (open - "../../PREVIEW.jpg" - filter-action) + (open "../static/crystal.jpg") + (crop (rect 100 100 400 400)) ) \ No newline at end of file diff --git a/examples/glitch.lisp b/examples/glitch.lisp index 6804bc2..f84b501 100644 --- a/examples/glitch.lisp +++ b/examples/glitch.lisp @@ -3,7 +3,7 @@ ( (clear) - ; Filter + ; Glitch (defn glitch (rec) @@ -19,6 +19,7 @@ (draw "../static/crystal.jpg" - (rect 0 0 400 400) - (lambda () (glitch 2000))) + (rect 0 0 400 400)) + + (glitch 500) ) \ No newline at end of file diff --git a/examples/open.lisp b/examples/open.lisp index 817d061..6166815 100644 --- a/examples/open.lisp +++ b/examples/open.lisp @@ -1,13 +1,9 @@ ; scale file ( - ; Filter - (def filter-action - (lambda () (pixels - (frame) - saturation - 0.5) - )) - -(open (path "/Users/VillaMoirai/Desktop/clip.jpg") filter-action) + (open "../static/crystal.jpg") + (pixels + (frame) + saturation + 12) ) \ No newline at end of file diff --git a/examples/pixels.lisp b/examples/pixels.lisp index e58fb38..d45baa9 100644 --- a/examples/pixels.lisp +++ b/examples/pixels.lisp @@ -2,20 +2,11 @@ ( (clear) - - ; Filter - - (def filter-action - (lambda () (pixels - (rect 0 0 500 500) - saturation - 0.5) - )) - - ; Draw photo - (draw "../../PREVIEW.jpg" - (frame) - filter-action) + (frame)) + (pixels + (rect 0 0 500 500) + saturation + 0.5) ) \ No newline at end of file diff --git a/examples/random.lisp b/examples/random.lisp index 490b2b6..0753a05 100644 --- a/examples/random.lisp +++ b/examples/random.lisp @@ -6,15 +6,16 @@ (defn place (rec) (if (gt rec 0) - ((draw "../static/crystal.jpg" - (rect - (random 200) - (random 200) - (random 200) - (random 200)) - (lambda () (place (sub rec 1))) - ))) -) + ( + (draw "../static/crystal.jpg" + (rect + (random 200) + (random 200) + (random 200) + (random 200))) + (place (sub rec 1)) + )) + ) (place 30) ) \ No newline at end of file diff --git a/examples/resize.lisp b/examples/resize.lisp index 9cac33a..620a36c 100644 --- a/examples/resize.lisp +++ b/examples/resize.lisp @@ -2,15 +2,6 @@ ( (clear) - - ; Filter - - (def filter-action - (lambda () (resize 0.5 0.5))) - - ; Draw photo - - (open - "../../PREVIEW.jpg" - filter-action) + (open "../../PREVIEW.jpg") + (resize 0.5 0.5) ) \ No newline at end of file From a5afeb3784da2164ebe00ce8aaf0f4bc2077463f Mon Sep 17 00:00:00 2001 From: Quentin Leonetti Date: Tue, 16 Jul 2019 22:54:31 +0200 Subject: [PATCH 11/14] fix back ronin.log --- desktop/sources/scripts/ronin.js | 4 ++-- desktop/sources/scripts/surface.js | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/desktop/sources/scripts/ronin.js b/desktop/sources/scripts/ronin.js index ec6e9c4..b0b58cd 100644 --- a/desktop/sources/scripts/ronin.js +++ b/desktop/sources/scripts/ronin.js @@ -47,8 +47,8 @@ function Ronin () { this.theme.reset() } - this.log = function (msg) { - console.log(msg) + this.log = function (...msg) { + console.log(...msg) this.commander.setStatus(msg.reduce((acc, val) => { return acc + val + ' ' }, '')) } diff --git a/desktop/sources/scripts/surface.js b/desktop/sources/scripts/surface.js index 621ce02..8c1086d 100644 --- a/desktop/sources/scripts/surface.js +++ b/desktop/sources/scripts/surface.js @@ -111,7 +111,7 @@ function Surface (ronin) { const img = new Image() img.src = path img.onload = () => { - //ronin.log(`Open ${img.width}x${img.height}`) + ronin.log(`Open ${img.width}x${img.height}`) const rect = { x: 0, y: 0, w: img.width, h: img.height } this.resize(rect, true) this.context.drawImage(img, 0, 0, img.width, img.height) @@ -123,7 +123,7 @@ function Surface (ronin) { this.draw = function (img, rect = this.getFrame()) { return new Promise(resolve => { img.onload = () => { - //ronin.log(`Draw ${img.width}x${img.height}`) + ronin.log(`Draw ${img.width}x${img.height}`) this.context.drawImage(img, rect.x, rect.y, rect.w, rect.h) // no strect: img.height * (rect.w / img.width) resolve() } @@ -131,7 +131,7 @@ function Surface (ronin) { } this.crop = function (rect) { - // ronin.log(`Crop ${rect.w}x${rect.h} from ${rect.x}x${rect.y}`) + ronin.log(`Crop ${rect.w}x${rect.h} from ${rect.x}x${rect.y}`) const crop = this.getCrop(rect) this.resize(rect, true) this.context.drawImage(crop, 0, 0) From 1a7b1c53d75832efee7e54f3dc7ecbc5a0e893a0 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Wed, 17 Jul 2019 09:21:17 +0900 Subject: [PATCH 12/14] Added (ronin) object, renamed animation function to .animate() --- desktop/sources/index.html | 2 +- desktop/sources/scripts/commander.js | 9 +------ desktop/sources/scripts/library.js | 31 +++++++++++++++-------- desktop/sources/scripts/ronin.js | 9 +++++++ desktop/sources/scripts/surface.js | 10 ++++---- examples/{animation.lisp => animate.lisp} | 4 +-- 6 files changed, 39 insertions(+), 26 deletions(-) rename examples/{animation.lisp => animate.lisp} (73%) diff --git a/desktop/sources/index.html b/desktop/sources/index.html index 8e0340c..9474f27 100644 --- a/desktop/sources/index.html +++ b/desktop/sources/index.html @@ -46,7 +46,7 @@ ronin.controller.add("default","View","Toggle Commander",() => { ronin.commander.toggle(); },"CmdOrCtrl+K"); ronin.controller.add("default","Project","Run",() => { ronin.commander.run(); },"CmdOrCtrl+R"); ronin.controller.add("default","Project","Reload Run",() => { ronin.source.revert(); ronin.commander.run(); },"CmdOrCtrl+Shift+R"); - ronin.controller.add("default","Project", "Toggle Animation (experimental)",() => { ronin.commander.toggleAnimation(); },"CmdOrCtrl+Shift+T"); + ronin.controller.add("default","Project", "Toggle Animation (experimental)",() => { ronin.animate(!ronin.always); },"CmdOrCtrl+Shift+T"); ronin.controller.add("default","Theme","Open Theme",() => { ronin.theme.open() },"CmdOrCtrl+Shift+O") ronin.controller.add("default","Theme","Reset Theme",() => { ronin.theme.reset() },"CmdOrCtrl+Shift+Backspace") ronin.controller.addSpacer('default', 'Theme', 'Download') diff --git a/desktop/sources/scripts/commander.js b/desktop/sources/scripts/commander.js index 74a520d..8169562 100644 --- a/desktop/sources/scripts/commander.js +++ b/desktop/sources/scripts/commander.js @@ -4,7 +4,6 @@ function Commander (ronin) { this._input = document.createElement('textarea') this._status = document.createElement('div') this._status.id = 'status' - this.isAnimated = false this.install = function (host) { this.el.appendChild(this._input) @@ -23,16 +22,10 @@ function Commander (ronin) { this.run = (txt = this._input.value) => { if (txt.indexOf('$') > -1) { ronin.log('Present: $'); return } - !this.isAnimated && console.log('========') ronin.surface.maximize() const inter = new Lisp(txt, ronin.library) inter.toPixels() - this.isAnimated && requestAnimationFrame(() => this.run(txt)) - } - - this.toggleAnimation = () => { - this.isAnimated = !this.isAnimated - this.run(this._input.value) + ronin.always && requestAnimationFrame(() => this.run(txt)) } this.load = function (txt) { diff --git a/desktop/sources/scripts/library.js b/desktop/sources/scripts/library.js index 5c78dad..c04f194 100644 --- a/desktop/sources/scripts/library.js +++ b/desktop/sources/scripts/library.js @@ -82,14 +82,14 @@ function Library (ronin) { this._filter = (fn, arr) => { return arr.filter(fn) } - this.filter= (fn, arr) => { - const list = Array.from(arr); - return Promise.all(list.map((element, index) => fn(element, index, list))) - .then(result => { - return list.filter((_, index) => { - return result[index]; - }); - }); + this.filter = (fn, arr) => { + const list = Array.from(arr) + return Promise.all(list.map((element, index) => fn(element, index, list))) + .then(result => { + return list.filter((_, index) => { + return result[index] + }) + }) } this.reduce = (fn, arr, acc = 0) => { @@ -193,7 +193,16 @@ function Library (ronin) { return rect } - // + this.get = (item, key) => { + return item[key] + } + + this.set = (item, key, val) => { + item[key] = val + return item[key] + } + + // TODO: Should remove (of) for (get)? this.of = (h, ...keys) => { return keys.reduce((acc, key) => { @@ -315,9 +324,11 @@ function Library (ronin) { } // Livecoding - this.time = Date.now // javascript interop this.js = window + + // Client + this.ronin = ronin } diff --git a/desktop/sources/scripts/ronin.js b/desktop/sources/scripts/ronin.js index b0b58cd..4db3261 100644 --- a/desktop/sources/scripts/ronin.js +++ b/desktop/sources/scripts/ronin.js @@ -21,6 +21,10 @@ function Ronin () { this.surface = new Surface(this) this.library = new Library(this) + // Parameters + + this.always = false + this.install = function (host = document.body) { this._wrapper = document.createElement('div') this._wrapper.id = 'wrapper' @@ -56,6 +60,11 @@ function Ronin () { } + this.animate = (b = true) => { + this.always = b + this.commander.run() + } + // Zoom this.modZoom = function (mod = 0, set = false) { diff --git a/desktop/sources/scripts/surface.js b/desktop/sources/scripts/surface.js index 8c1086d..efaa8a1 100644 --- a/desktop/sources/scripts/surface.js +++ b/desktop/sources/scripts/surface.js @@ -123,11 +123,11 @@ function Surface (ronin) { this.draw = function (img, rect = this.getFrame()) { return new Promise(resolve => { img.onload = () => { - ronin.log(`Draw ${img.width}x${img.height}`) - this.context.drawImage(img, rect.x, rect.y, rect.w, rect.h) // no strect: img.height * (rect.w / img.width) - resolve() - } - }); + ronin.log(`Draw ${img.width}x${img.height}`) + this.context.drawImage(img, rect.x, rect.y, rect.w, rect.h) // no strect: img.height * (rect.w / img.width) + resolve() + } + }) } this.crop = function (rect) { diff --git a/examples/animation.lisp b/examples/animate.lisp similarity index 73% rename from examples/animation.lisp rename to examples/animate.lisp index e8ccf30..b3b4690 100644 --- a/examples/animation.lisp +++ b/examples/animate.lisp @@ -1,7 +1,7 @@ -; animation -; click Project > Toggle Animation +; animate ( +(ronin animate) (def t (sin (div (time) 100))) (def pos (add 200 (mul 30 t))) From 06bfca5828e70ae68c43eba0e8155e3a3e361f6a Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Wed, 17 Jul 2019 11:17:27 +0900 Subject: [PATCH 13/14] Fixed animate example --- desktop/icon.png | Bin 4689 -> 5397 bytes desktop/sources/index.html | 2 +- desktop/sources/scripts/ronin.js | 1 + examples/animate.lisp | 13 ++++++++----- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/desktop/icon.png b/desktop/icon.png index e7f6c5550e27cd258018172ac253bbf3faa95ea4..3bd7dbb74870e6e1c06404cb53785093087ef113 100644 GIT binary patch literal 5397 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 JT(WxOzX5MR-K78k literal 4689 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 { ronin.commander.toggle(); },"CmdOrCtrl+K"); ronin.controller.add("default","Project","Run",() => { ronin.commander.run(); },"CmdOrCtrl+R"); ronin.controller.add("default","Project","Reload Run",() => { ronin.source.revert(); ronin.commander.run(); },"CmdOrCtrl+Shift+R"); - ronin.controller.add("default","Project", "Toggle Animation (experimental)",() => { ronin.animate(!ronin.always); },"CmdOrCtrl+Shift+T"); + ronin.controller.add("default","Project", "Animate",() => { ronin.animate(!ronin.always); },"CmdOrCtrl+Shift+T"); ronin.controller.add("default","Theme","Open Theme",() => { ronin.theme.open() },"CmdOrCtrl+Shift+O") ronin.controller.add("default","Theme","Reset Theme",() => { ronin.theme.reset() },"CmdOrCtrl+Shift+Backspace") ronin.controller.addSpacer('default', 'Theme', 'Download') diff --git a/desktop/sources/scripts/ronin.js b/desktop/sources/scripts/ronin.js index 4db3261..3bcb7e9 100644 --- a/desktop/sources/scripts/ronin.js +++ b/desktop/sources/scripts/ronin.js @@ -61,6 +61,7 @@ function Ronin () { } this.animate = (b = true) => { + if(this.always === b){ return } this.always = b this.commander.run() } diff --git a/examples/animate.lisp b/examples/animate.lisp index b3b4690..fa12b3c 100644 --- a/examples/animate.lisp +++ b/examples/animate.lisp @@ -1,10 +1,13 @@ ; animate ( -(ronin animate) -(def t (sin (div (time) 100))) + (def start (get ronin "animate")) + + (def t (sin (div (time) 100))) -(def pos (add 200 (mul 30 t))) -(defn square (a) (rect a a a a)) -(stroke (square pos) 1 "red") + (def pos (add 200 (mul 30 t))) + (defn square (a) (rect a a a a)) + (stroke (square pos) 1 "red") + + (start) ) \ No newline at end of file From 0113c3f87556b7dd22c9c0c565c9f0112f02def8 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Wed, 17 Jul 2019 11:55:43 +0900 Subject: [PATCH 14/14] Improved resize --- desktop/main.js | 2 +- desktop/sources/links/main.css | 3 ++- desktop/sources/links/theme.css | 2 +- desktop/sources/scripts/commander.js | 16 ++++++++-------- desktop/sources/scripts/ronin.js | 2 +- desktop/sources/scripts/surface.js | 3 ++- 6 files changed, 15 insertions(+), 13 deletions(-) diff --git a/desktop/main.js b/desktop/main.js index 9835437..5201349 100644 --- a/desktop/main.js +++ b/desktop/main.js @@ -12,7 +12,7 @@ app.on('ready', () => { width: 780, height: 392, minWidth: 380, - minHeight: 380, + minHeight: 360, backgroundColor: '#000', icon: path.join(__dirname, { darwin: 'icon.icns', linux: 'icon.png', win32: 'icon.ico' }[process.platform] || 'icon.ico'), resizable: true, diff --git a/desktop/sources/links/main.css b/desktop/sources/links/main.css index cc17c46..350ac06 100644 --- a/desktop/sources/links/main.css +++ b/desktop/sources/links/main.css @@ -4,12 +4,13 @@ body { margin:0px; padding:0px; overflow:hidden; font-family:"input_mono_regular #ronin { height: calc(100vh - 60px); width:calc(100vw - 60px); -webkit-app-region: drag; padding: 30px;overflow: hidden; } #ronin #wrapper { overflow: hidden; position: relative; } -#ronin #wrapper #commander { z-index: 9000; position: relative; width: 300px; height: calc(100vh - 60px); border-right: 1px solid #333; -webkit-app-region: no-drag; padding-right: 30px; transition: margin-left 250ms;} +#ronin #wrapper #commander { z-index: 9000;position: relative;width: 310px;height: calc(100vh - 60px);-webkit-app-region: no-drag;padding-right: 30px;transition: margin-left 250ms;} #ronin #wrapper #commander textarea { background: none; width: 100%; height: calc(100vh - 80px); resize: none; font-size: 12px;line-height: 15px; padding-right: 15px} #ronin #wrapper #commander div#status { position: absolute; bottom: 0px; } #ronin.hidden #wrapper #commander { margin-left:-331px; } #ronin canvas#surface,#ronin canvas#guide { position: absolute; top:0px; -webkit-user-select: none;-webkit-app-region: no-drag; background-image: url("data:image/svg+xml;utf8,"); background-size: 10px 10px; background-position: -4px -4px; width:100%; height:100%; left:340px; transition: left 250ms} #ronin canvas#guide { background:none; } +#ronin canvas#surface { border-radius: 2px } #ronin.hidden canvas#surface, #ronin.hidden canvas#guide { left:0px; } \ No newline at end of file diff --git a/desktop/sources/links/theme.css b/desktop/sources/links/theme.css index bd8b6b7..f82f7b7 100644 --- a/desktop/sources/links/theme.css +++ b/desktop/sources/links/theme.css @@ -1,5 +1,5 @@ body { background:var(--background); } #ronin #wrapper { background: var(--background); } -#ronin #wrapper #commander { background:var(--background);border-right-color: var(--f_low) } +#ronin #wrapper #commander { background:var(--background); } #ronin #wrapper #commander textarea { color:var(--f_high); } #ronin #wrapper #commander div#status { color:var(--f_med); } \ No newline at end of file diff --git a/desktop/sources/scripts/commander.js b/desktop/sources/scripts/commander.js index 8169562..ccf9f1f 100644 --- a/desktop/sources/scripts/commander.js +++ b/desktop/sources/scripts/commander.js @@ -4,6 +4,7 @@ function Commander (ronin) { this._input = document.createElement('textarea') this._status = document.createElement('div') this._status.id = 'status' + this.isVisible = true this.install = function (host) { this.el.appendChild(this._input) @@ -22,7 +23,6 @@ function Commander (ronin) { this.run = (txt = this._input.value) => { if (txt.indexOf('$') > -1) { ronin.log('Present: $'); return } - ronin.surface.maximize() const inter = new Lisp(txt, ronin.library) inter.toPixels() ronin.always && requestAnimationFrame(() => this.run(txt)) @@ -144,19 +144,19 @@ function Commander (ronin) { // Display this.show = function () { - if (ronin.el.className !== '') { - ronin.el.className = '' - } + if (this.isVisible === true) { return } + ronin.el.className = '' + this.isVisible = true } this.hide = function () { - if (ronin.el.className !== 'hidden') { - ronin.el.className = 'hidden' - } + if (this.isVisible !== true) { return } + ronin.el.className = 'hidden' + this.isVisible = false } this.toggle = function () { - if (ronin.el.className === 'hidden') { + if (this.isVisible !== true) { this.show() } else { this.hide() diff --git a/desktop/sources/scripts/ronin.js b/desktop/sources/scripts/ronin.js index 3bcb7e9..0883f22 100644 --- a/desktop/sources/scripts/ronin.js +++ b/desktop/sources/scripts/ronin.js @@ -61,7 +61,7 @@ function Ronin () { } this.animate = (b = true) => { - if(this.always === b){ return } + if (this.always === b) { return } this.always = b this.commander.run() } diff --git a/desktop/sources/scripts/surface.js b/desktop/sources/scripts/surface.js index efaa8a1..d1143e0 100644 --- a/desktop/sources/scripts/surface.js +++ b/desktop/sources/scripts/surface.js @@ -150,6 +150,7 @@ function Surface (ronin) { } this.resize = function (size, fit = false) { + console.log('Surface', `Resize: ${size.w}x${size.h}`) this.el.width = size.w this.el.height = size.h this.el.style.width = size.w + 'px' @@ -165,7 +166,7 @@ function Surface (ronin) { this.fitWindow = function (size) { const win = require('electron').remote.getCurrentWindow() - const pad = { w: 60, h: 60 } + const pad = { w: ronin.commander.isVisible === true ? 400 : 60, h: 60 } win.setSize(size.w + pad.w, size.h + pad.h, false) }