From 7e8a9b31b12a304add48886437450d502de4b077 Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Thu, 30 Nov 2017 17:05:10 -0800 Subject: [PATCH 01/23] access bmp file path --- .eslintignore | 7 + .eslintrc | 28 + .gitignore | 148 + __test__/bitmapTransformer.test.js | 16 + index.js | 8 + lib/bitmapTransformer.js | 25 + package-lock.json | 4756 ++++++++++++++++++++++++++++ package.json | 24 + 8 files changed, 5012 insertions(+) create mode 100644 .eslintignore create mode 100644 .eslintrc create mode 100644 .gitignore create mode 100644 __test__/bitmapTransformer.test.js create mode 100644 index.js create mode 100644 lib/bitmapTransformer.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..9ec4b48 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,7 @@ +# Created by Vinicio Vladimir Sanchez Trejo + +**/node_modules/* +**/vendor/* +**/*.min.js +**/coverage/* +**/build/* diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..3b3fa9d --- /dev/null +++ b/.eslintrc @@ -0,0 +1,28 @@ +# Created by Vinicio Vladimir Sanchez Trejo + +{ + "env": { + "browser": true, + "node": true, + "commonjs": true, + "jest": true, + "es6": true + }, + "globals": { + "err": true, + "req": true, + "res": true, + "next": true + }, + "extends": "eslint:recommended", + "parserOptions": { + "sourceType": "module" + }, + "rules": { + "no-console": "off", + "indent": [ "error", 2 ], + "quotes": ["error", "single", { "allowTemplateLiterals": true }], + "comma-dangle": ["error", "always-multiline"], + "semi": [ "error", "always" ] + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8fe2634 --- /dev/null +++ b/.gitignore @@ -0,0 +1,148 @@ +# Created by https://www.gitignore.io/api/osx,vim,node,linux,windows,visualstudiocode + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### Node ### +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Typescript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + + +### OSX ### +*.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### Vim ### +# swap +[._]*.s[a-v][a-z] +[._]*.sw[a-p] +[._]s[a-v][a-z] +[._]sw[a-p] +# session +Session.vim +# temporary +.netrwhist +# auto-generated tag files +tags + +### VisualStudioCode ### +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Folder config file +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.gitignore.io/api/osx,vim,node,linux,windows,visualstudiocode diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js new file mode 100644 index 0000000..5d1e1e2 --- /dev/null +++ b/__test__/bitmapTransformer.test.js @@ -0,0 +1,16 @@ +'use strict'; + +const fs = require(`fs`); +const bitmapTransformer = require(`../lib/bitmapTransformer`); +const bmpPaths = fs.readdirSync(`${__dirname}/../asset`); + +describe(`bitmapTransformer.js`, () => { + test(`buffer should not be empty`, () => { + expect(bitmapTransformer.getBuffer(bmpPaths[0])).not.toBeNull(); + }) + // test(`Make sure that user provides an input file path, output file path, and transform option`, () => { + // expect(bitmapTransformer.alterBMP(`bitmap.bmp`, `newfile.bmp`, `greyscale`)).not.toBeNull(); + // }); +}); + +//expect it to take in .bmp file from assets folder, run 1+ color transformations, then output a new file diff --git a/index.js b/index.js new file mode 100644 index 0000000..154b53f --- /dev/null +++ b/index.js @@ -0,0 +1,8 @@ +'use strict'; + +const bitmapTransformer = require(`./lib/bitmapTransformer`); +const fs = require(`fs`); + +bitmapTransformer.alterBMP = (inputPath, outputPath, transformType) => { + +} diff --git a/lib/bitmapTransformer.js b/lib/bitmapTransformer.js new file mode 100644 index 0000000..fcf918d --- /dev/null +++ b/lib/bitmapTransformer.js @@ -0,0 +1,25 @@ +'use strict'; + +const fs = require(`fs`); +const bmpPaths = fs.readdirSync(`${__dirname}/../asset`); +// console.log(fs.readdirSync(`${__dirname}/../asset`)); //gives back array of bmp file names (as strings?) +const bitmapTransformer = module.exports = {}; + +const FILE_SIZE_OFFSET = 2; +const PIXEL_TABLE_OFFSET = 10; + +bitmapTransformer.getBuffer = (filePath) => { + fs.readFile(`${__dirname}/../asset/${filePath}`, + (error, output) => { + if (error) + return error; + + } + ); +}; + + + +//get the bmp file +//get the buffer data +//need to transform a color's pixel value to be something else diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..205dc00 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4756 @@ +{ + "name": "04-bitmap", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abab": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", + "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", + "dev": true + }, + "acorn": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.2.1.tgz", + "integrity": "sha512-jG0u7c4Ly+3QkkW18V+NRDN+4bWHdln30NL1ZL2AvFZZmQe/BfopYCtghCKKVBUSetZ4QKcyA0pY6/4Gw8Pv8w==", + "dev": true + }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "dev": true, + "requires": { + "acorn": "4.0.13" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "3.3.0" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.0.tgz", + "integrity": "sha1-6yhAdG6dxIvV4GOjbj/UAMXqtak=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "1.0.3" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "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.1.1" + } + } + } + }, + "babel-core": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz", + "integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-generator": "6.26.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.26.0", + "babel-runtime": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "convert-source-map": "1.5.1", + "debug": "2.6.9", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.8", + "slash": "1.0.0", + "source-map": "0.5.7" + }, + "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" + } + } + } + }, + "babel-generator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz", + "integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.7", + "trim-right": "1.0.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-template": "6.26.0" + } + }, + "babel-jest": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-21.2.0.tgz", + "integrity": "sha512-O0W2qLoWu1QOoOGgxiR2JID4O6WSpxPiQanrkyi9SSlM0PJ60Ptzlck47lhtnr9YZO3zYOsxHwnyeWJ6AffoBQ==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "4.1.5", + "babel-preset-jest": "21.2.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.5.tgz", + "integrity": "sha1-Z2DN2Xf0EdPhdbsGTyvDJ9mbK24=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.9.1", + "test-exclude": "4.1.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-21.2.0.tgz", + "integrity": "sha512-yi5QuiVyyvhBUDLP4ButAnhYzkdrUwWDtvUJv71hjH3fclhnZg4HkDeqaitcR2dZZx/E67kGkRcPVjtVu+SJfQ==", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-preset-jest": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-21.2.0.tgz", + "integrity": "sha512-hm9cBnr2h3J7yXoTtAVV0zg+3vg0Q/gT2GYuzlreTU0EPkJRtlNgKJJ3tBKEn0+VjAi3JykV6xCJkuUYttEEfA==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "21.2.0", + "babel-plugin-syntax-object-rest-spread": "6.13.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-runtime": "6.26.0", + "core-js": "2.5.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.18" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "2.5.1", + "regenerator-runtime": "0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "6.26.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "debug": "2.6.9", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + }, + "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" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "6.26.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "dev": true, + "requires": { + "resolve": "1.1.7" + } + }, + "bser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", + "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", + "dev": true, + "requires": { + "node-int64": "0.4.0" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chalk": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.5.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "ci-info": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.1.2.tgz", + "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", + "dev": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "2.0.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "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 + }, + "color-convert": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "dev": true, + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + }, + "content-type-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.2.tgz", + "integrity": "sha512-lM4l4CnMEwOLHAHr/P6MEZwZFPJFtAAKgL6pogbXmVZggIqXhdB6RbBtPOTsw2FcXwYhehRGERJmRrjOiIB8pQ==", + "dev": true + }, + "convert-source-map": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", + "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=", + "dev": true + }, + "core-js": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.3.0" + } + }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "dev": true, + "requires": { + "boom": "5.2.0" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + } + } + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, + "requires": { + "cssom": "0.3.2" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "5.0.0", + "is-path-cwd": "1.0.0", + "is-path-in-cwd": "1.0.0", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "rimraf": "2.6.2" + } + }, + "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 + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "diff": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", + "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", + "dev": true + }, + "doctrine": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.2.tgz", + "integrity": "sha512-y0tm5Pq6ywp3qSTZ1vPgVdAnbDEoeoc5wlOHXoY1c4Wug/a7JvqHIl7BTvwodaHmejWkK/9dSb3sCYfyo/om8A==", + "dev": true, + "requires": { + "esutils": "2.0.2" + } + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true, + "requires": { + "prr": "0.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.0.tgz", + "integrity": "sha512-v0MYvNQ32bzwoG2OSFzWAkuahDQHK92JBN0pTAALJ4RIxEZe766QJPDR8Hqy7XNUy5K3fnVL76OqYAdc4TZEIw==", + "dev": true, + "requires": { + "esprima": "3.1.3", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.5.7" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + } + } + }, + "eslint": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.12.1.tgz", + "integrity": "sha512-28hOYej+NZ/R5H1yMvyKa1+bPlu+fnsIAQffK6hxXgvmXnImos2bA5XfCn5dYv2k2mrKj+/U/Z4L5ICWxC7TQw==", + "dev": true, + "requires": { + "ajv": "5.5.0", + "babel-code-frame": "6.26.0", + "chalk": "2.3.0", + "concat-stream": "1.6.0", + "cross-spawn": "5.1.0", + "debug": "3.1.0", + "doctrine": "2.0.2", + "eslint-scope": "3.7.1", + "espree": "3.5.2", + "esquery": "1.0.0", + "estraverse": "4.2.0", + "esutils": "2.0.2", + "file-entry-cache": "2.0.0", + "functional-red-black-tree": "1.0.1", + "glob": "7.1.2", + "globals": "11.0.1", + "ignore": "3.3.7", + "imurmurhash": "0.1.4", + "inquirer": "3.3.0", + "is-resolvable": "1.0.0", + "js-yaml": "3.10.0", + "json-stable-stringify-without-jsonify": "1.0.1", + "levn": "0.3.0", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "optionator": "0.8.2", + "path-is-inside": "1.0.2", + "pluralize": "7.0.0", + "progress": "2.0.0", + "require-uncached": "1.0.3", + "semver": "5.4.1", + "strip-ansi": "4.0.0", + "strip-json-comments": "2.0.1", + "table": "4.0.2", + "text-table": "0.2.0" + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "4.2.0", + "estraverse": "4.2.0" + } + }, + "espree": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.2.tgz", + "integrity": "sha512-sadKeYwaR/aJ3stC2CdvgXu1T16TdYN+qwCpcWbMnGJ8s0zNWemzrvb2GbD4OhmJ/fwpJjudThAlLobGbWZbCQ==", + "dev": true, + "requires": { + "acorn": "5.2.1", + "acorn-jsx": "3.0.1" + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "esquery": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "integrity": "sha1-z7qLV9f7qT8XKYqKAGoEzaE9gPo=", + "dev": true, + "requires": { + "estraverse": "4.2.0" + } + }, + "esrecurse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.0.tgz", + "integrity": "sha1-+pVo2Y04I/mkHZHpAtyrnqblsWM=", + "dev": true, + "requires": { + "estraverse": "4.2.0", + "object-assign": "4.1.1" + } + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "exec-sh": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", + "integrity": "sha512-aLt95pexaugVtQerpmE51+4QfWrNc304uez7jvj6fWnN8GeEHpttB8F36n8N7uVhUMbH/1enbxQ9HImZ4w/9qg==", + "dev": true, + "requires": { + "merge": "1.2.0" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "5.1.0", + "get-stream": "3.0.0", + "is-stream": "1.1.0", + "npm-run-path": "2.0.2", + "p-finally": "1.0.0", + "signal-exit": "3.0.2", + "strip-eof": "1.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "expect": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-21.2.1.tgz", + "integrity": "sha512-orfQQqFRTX0jH7znRIGi8ZMR8kTNpXklTTz8+HGTpmTKZo3Occ6JNB5FXMb8cRuiiC/GyDqsr30zUa66ACYlYw==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "jest-diff": "21.2.1", + "jest-get-type": "21.2.0", + "jest-matcher-utils": "21.2.1", + "jest-message-util": "21.2.1", + "jest-regex-util": "21.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + } + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "external-editor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", + "dev": true, + "requires": { + "chardet": "0.4.2", + "iconv-lite": "0.4.19", + "tmp": "0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fb-watchman": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", + "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", + "dev": true, + "requires": { + "bser": "2.0.0" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "1.3.0", + "object-assign": "4.1.1" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "7.1.2", + "minimatch": "3.0.4" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "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" + } + }, + "flat-cache": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "dev": true, + "requires": { + "circular-json": "0.3.3", + "del": "2.2.2", + "graceful-fs": "4.1.11", + "write": "0.2.1" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.1.tgz", + "integrity": "sha1-b7lPvXGIUwbXPRXMSX/kzE7NRL8=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.17" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz", + "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.8.0", + "node-pre-gyp": "0.6.39" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.39", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "1.0.2", + "hawk": "3.1.3", + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "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.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.0.1.tgz", + "integrity": "sha1-Eqh7sBDlFUOWrMU14eQ/x1Ow5eg=", + "dev": true + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "1.0.2", + "arrify": "1.0.1", + "glob": "7.1.2", + "object-assign": "4.1.1", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "handlebars": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", + "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "requires": { + "ajv": "5.5.0", + "har-schema": "2.0.0" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "dev": true, + "requires": { + "boom": "4.3.1", + "cryptiles": "3.1.2", + "hoek": "4.2.0", + "sntp": "2.1.0" + } + }, + "hoek": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", + "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "1.0.3" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "jsprim": "1.4.1", + "sshpk": "1.13.1" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ignore": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + } + }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "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-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-ci": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", + "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "dev": true, + "requires": { + "ci-info": "1.1.2" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "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.1" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "1.0.1" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "1.0.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-resolvable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", + "integrity": "sha1-jfV8YeouPFAUCNEA+wE8+NbgzGI=", + "dev": true, + "requires": { + "tryit": "1.0.3" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "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": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.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 + }, + "istanbul-api": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.2.1.tgz", + "integrity": "sha512-oFCwXvd65amgaPCzqrR+a2XjanS1MvpXN6l/MlMUTv6uiA1NOgGX+I0uyq8Lg3GDxsxPsaP1049krz3hIJ5+KA==", + "dev": true, + "requires": { + "async": "2.6.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.1.0", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-report": "1.1.2", + "istanbul-lib-source-maps": "1.2.2", + "istanbul-reports": "1.1.3", + "js-yaml": "3.10.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.1.0.tgz", + "integrity": "sha512-U3qEgwVDUerZ0bt8cfl3dSP3S6opBoOtk3ROO5f2EfBr/SRiD9FQqzwaZBqFORu8W7O0EXpai+k7kxHK13beRg==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.1.tgz", + "integrity": "sha512-RQmXeQ7sphar7k7O1wTNzVczF9igKpaeGQAG9qR2L+BS4DCJNTI9nytRmIVYevwO0bbq+2CXvJmYDuz0gMrywA==", + "dev": true, + "requires": { + "babel-generator": "6.26.0", + "babel-template": "6.26.0", + "babel-traverse": "6.26.0", + "babel-types": "6.26.0", + "babylon": "6.18.0", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.2.tgz", + "integrity": "sha512-UTv4VGx+HZivJQwAo1wnRwe1KTvFpfi/NYwN7DcsrdzMXwpRT/Yb6r4SBPoHWj4VuQPakR32g4PUUeyKkdDkBA==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.2.tgz", + "integrity": "sha512-8BfdqSfEdtip7/wo1RnrvLpHVEd8zMZEDmOFEnpC6dg0vXflHt9nvoAyQUzig2uMSXfF2OBEYBV3CVjIL9JvaQ==", + "dev": true, + "requires": { + "debug": "3.1.0", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.2", + "source-map": "0.5.7" + } + }, + "istanbul-reports": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.3.tgz", + "integrity": "sha512-ZEelkHh8hrZNI5xDaKwPMFwDsUf5wIEI2bXAFGp1e6deR2mnEKBPhLJEgr4ZBt8Gi6Mj38E/C8kcy9XLggVO2Q==", + "dev": true, + "requires": { + "handlebars": "4.0.11" + } + }, + "jest": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest/-/jest-21.2.1.tgz", + "integrity": "sha512-mXN0ppPvWYoIcC+R+ctKxAJ28xkt/Z5Js875padm4GbgUn6baeR5N4Ng6LjatIRpUQDZVJABT7Y4gucFjPryfw==", + "dev": true, + "requires": { + "jest-cli": "21.2.1" + }, + "dependencies": { + "jest-cli": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-21.2.1.tgz", + "integrity": "sha512-T1BzrbFxDIW/LLYQqVfo94y/hhaj1NzVQkZgBumAC+sxbjMROI7VkihOdxNR758iYbQykL2ZOWUBurFgkQrzdg==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "glob": "7.1.2", + "graceful-fs": "4.1.11", + "is-ci": "1.0.10", + "istanbul-api": "1.2.1", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-instrument": "1.9.1", + "istanbul-lib-source-maps": "1.2.2", + "jest-changed-files": "21.2.0", + "jest-config": "21.2.1", + "jest-environment-jsdom": "21.2.1", + "jest-haste-map": "21.2.0", + "jest-message-util": "21.2.1", + "jest-regex-util": "21.2.0", + "jest-resolve-dependencies": "21.2.0", + "jest-runner": "21.2.1", + "jest-runtime": "21.2.1", + "jest-snapshot": "21.2.1", + "jest-util": "21.2.1", + "micromatch": "2.3.11", + "node-notifier": "5.1.2", + "pify": "3.0.0", + "slash": "1.0.0", + "string-length": "2.0.0", + "strip-ansi": "4.0.0", + "which": "1.3.0", + "worker-farm": "1.5.2", + "yargs": "9.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "jest-changed-files": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-21.2.0.tgz", + "integrity": "sha512-+lCNP1IZLwN1NOIvBcV5zEL6GENK6TXrDj4UxWIeLvIsIDa+gf6J7hkqsW2qVVt/wvH65rVvcPwqXdps5eclTQ==", + "dev": true, + "requires": { + "throat": "4.1.0" + } + }, + "jest-config": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-21.2.1.tgz", + "integrity": "sha512-fJru5HtlD/5l2o25eY9xT0doK3t2dlglrqoGpbktduyoI0T5CwuB++2YfoNZCrgZipTwPuAGonYv0q7+8yDc/A==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "glob": "7.1.2", + "jest-environment-jsdom": "21.2.1", + "jest-environment-node": "21.2.1", + "jest-get-type": "21.2.0", + "jest-jasmine2": "21.2.1", + "jest-regex-util": "21.2.0", + "jest-resolve": "21.2.0", + "jest-util": "21.2.1", + "jest-validate": "21.2.1", + "pretty-format": "21.2.1" + } + }, + "jest-diff": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-21.2.1.tgz", + "integrity": "sha512-E5fu6r7PvvPr5qAWE1RaUwIh/k6Zx/3OOkZ4rk5dBJkEWRrUuSgbMt2EO8IUTPTd6DOqU3LW6uTIwX5FRvXoFA==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "diff": "3.4.0", + "jest-get-type": "21.2.0", + "pretty-format": "21.2.1" + } + }, + "jest-docblock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", + "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", + "dev": true + }, + "jest-environment-jsdom": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-21.2.1.tgz", + "integrity": "sha512-mecaeNh0eWmzNrUNMWARysc0E9R96UPBamNiOCYL28k7mksb1d0q6DD38WKP7ABffjnXyUWJPVaWRgUOivwXwg==", + "dev": true, + "requires": { + "jest-mock": "21.2.0", + "jest-util": "21.2.1", + "jsdom": "9.12.0" + } + }, + "jest-environment-node": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-21.2.1.tgz", + "integrity": "sha512-R211867wx9mVBVHzrjGRGTy5cd05K7eqzQl/WyZixR/VkJ4FayS8qkKXZyYnwZi6Rxo6WEV81cDbiUx/GfuLNw==", + "dev": true, + "requires": { + "jest-mock": "21.2.0", + "jest-util": "21.2.1" + } + }, + "jest-get-type": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-21.2.0.tgz", + "integrity": "sha512-y2fFw3C+D0yjNSDp7ab1kcd6NUYfy3waPTlD8yWkAtiocJdBRQqNoRqVfMNxgj+IjT0V5cBIHJO0z9vuSSZ43Q==", + "dev": true + }, + "jest-haste-map": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-21.2.0.tgz", + "integrity": "sha512-5LhsY/loPH7wwOFRMs+PT4aIAORJ2qwgbpMFlbWbxfN0bk3ZCwxJ530vrbSiTstMkYLao6JwBkLhCJ5XbY7ZHw==", + "dev": true, + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "21.2.0", + "micromatch": "2.3.11", + "sane": "2.2.0", + "worker-farm": "1.5.2" + } + }, + "jest-jasmine2": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-21.2.1.tgz", + "integrity": "sha512-lw8FXXIEekD+jYNlStfgNsUHpfMWhWWCgHV7n0B7mA/vendH7vBFs8xybjQsDzJSduptBZJHqQX9SMssya9+3A==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "expect": "21.2.1", + "graceful-fs": "4.1.11", + "jest-diff": "21.2.1", + "jest-matcher-utils": "21.2.1", + "jest-message-util": "21.2.1", + "jest-snapshot": "21.2.1", + "p-cancelable": "0.3.0" + } + }, + "jest-matcher-utils": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-21.2.1.tgz", + "integrity": "sha512-kn56My+sekD43dwQPrXBl9Zn9tAqwoy25xxe7/iY4u+mG8P3ALj5IK7MLHZ4Mi3xW7uWVCjGY8cm4PqgbsqMCg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "21.2.0", + "pretty-format": "21.2.1" + } + }, + "jest-message-util": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-21.2.1.tgz", + "integrity": "sha512-EbC1X2n0t9IdeMECJn2BOg7buOGivCvVNjqKMXTzQOu7uIfLml+keUfCALDh8o4rbtndIeyGU8/BKfoTr/LVDQ==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "micromatch": "2.3.11", + "slash": "1.0.0" + } + }, + "jest-mock": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-21.2.0.tgz", + "integrity": "sha512-aZDfyVf0LEoABWiY6N0d+O963dUQSyUa4qgzurHR3TBDPen0YxKCJ6l2i7lQGh1tVdsuvdrCZ4qPj+A7PievCw==", + "dev": true + }, + "jest-regex-util": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-21.2.0.tgz", + "integrity": "sha512-BKQ1F83EQy0d9Jen/mcVX7D+lUt2tthhK/2gDWRgLDJRNOdRgSp1iVqFxP8EN1ARuypvDflRfPzYT8fQnoBQFQ==", + "dev": true + }, + "jest-resolve": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-21.2.0.tgz", + "integrity": "sha512-vefQ/Lr+VdNvHUZFQXWtOqHX3HEdOc2MtSahBO89qXywEbUxGPB9ZLP9+BHinkxb60UT2Q/tTDOS6rYc6Mwigw==", + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "chalk": "2.3.0", + "is-builtin-module": "1.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "21.2.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-21.2.0.tgz", + "integrity": "sha512-ok8ybRFU5ScaAcfufIQrCbdNJSRZ85mkxJ1EhUp8Bhav1W1/jv/rl1Q6QoVQHObNxmKnbHVKrfLZbCbOsXQ+bQ==", + "dev": true, + "requires": { + "jest-regex-util": "21.2.0" + } + }, + "jest-runner": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-21.2.1.tgz", + "integrity": "sha512-Anb72BOQlHqF/zETqZ2K20dbYsnqW/nZO7jV8BYENl+3c44JhMrA8zd1lt52+N7ErnsQMd2HHKiVwN9GYSXmrg==", + "dev": true, + "requires": { + "jest-config": "21.2.1", + "jest-docblock": "21.2.0", + "jest-haste-map": "21.2.0", + "jest-jasmine2": "21.2.1", + "jest-message-util": "21.2.1", + "jest-runtime": "21.2.1", + "jest-util": "21.2.1", + "pify": "3.0.0", + "throat": "4.1.0", + "worker-farm": "1.5.2" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "jest-runtime": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-21.2.1.tgz", + "integrity": "sha512-6omlpA3+NSE+rHwD0PQjNEjZeb2z+oRmuehMfM1tWQVum+E0WV3pFt26Am0DUfQkkPyTABvxITRjCUclYgSOsA==", + "dev": true, + "requires": { + "babel-core": "6.26.0", + "babel-jest": "21.2.0", + "babel-plugin-istanbul": "4.1.5", + "chalk": "2.3.0", + "convert-source-map": "1.5.1", + "graceful-fs": "4.1.11", + "jest-config": "21.2.1", + "jest-haste-map": "21.2.0", + "jest-regex-util": "21.2.0", + "jest-resolve": "21.2.0", + "jest-util": "21.2.1", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "slash": "1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "2.3.0", + "yargs": "9.0.1" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "jest-snapshot": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-21.2.1.tgz", + "integrity": "sha512-bpaeBnDpdqaRTzN8tWg0DqOTo2DvD3StOemxn67CUd1p1Po+BUpvePAp44jdJ7Pxcjfg+42o4NHw1SxdCA2rvg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-diff": "21.2.1", + "jest-matcher-utils": "21.2.1", + "mkdirp": "0.5.1", + "natural-compare": "1.4.0", + "pretty-format": "21.2.1" + } + }, + "jest-util": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-21.2.1.tgz", + "integrity": "sha512-r20W91rmHY3fnCoO7aOAlyfC51x2yeV3xF+prGsJAUsYhKeV670ZB8NO88Lwm7ASu8SdH0S+U+eFf498kjhA4g==", + "dev": true, + "requires": { + "callsites": "2.0.0", + "chalk": "2.3.0", + "graceful-fs": "4.1.11", + "jest-message-util": "21.2.1", + "jest-mock": "21.2.0", + "jest-validate": "21.2.1", + "mkdirp": "0.5.1" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "jest-validate": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-21.2.1.tgz", + "integrity": "sha512-k4HLI1rZQjlU+EC682RlQ6oZvLrE5SCh3brseQc24vbZTxzT/k/3urar5QMCVgjadmSO7lECeGdc6YxnM3yEGg==", + "dev": true, + "requires": { + "chalk": "2.3.0", + "jest-get-type": "21.2.0", + "leven": "2.1.0", + "pretty-format": "21.2.1" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "integrity": "sha512-O2v52ffjLa9VeM43J4XocZE//WT9N0IiwDa3KSHH7Tu8CtH+1qM8SIZvnsTh6v+4yFy5KUY3BHUVwjpfAWsjIA==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "esprima": "4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsdom": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", + "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", + "dev": true, + "requires": { + "abab": "1.0.4", + "acorn": "4.0.13", + "acorn-globals": "3.1.0", + "array-equal": "1.0.0", + "content-type-parser": "1.0.2", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "escodegen": "1.9.0", + "html-encoding-sniffer": "1.0.2", + "nwmatcher": "1.4.3", + "parse5": "1.5.1", + "request": "2.83.0", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.3", + "webidl-conversions": "4.0.2", + "whatwg-encoding": "1.0.3", + "whatwg-url": "4.8.0", + "xml-name-validator": "2.0.1" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "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.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "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 + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2", + "type-check": "0.3.2" + } + }, + "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.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "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": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "lru-cache": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha512-q4spe4KTfsAS1SUHLO0wz8Qiyf1+vMIAgpRYioFYDMNqKfHQbg+AVDH3i4fvpl71/P1L0dBl+fQi+P37UYf0ew==", + "dev": true, + "requires": { + "pseudomap": "1.0.2", + "yallist": "2.1.2" + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.4" + } + }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" + } + }, + "mime-db": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", + "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=", + "dev": true + }, + "mime-types": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", + "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "dev": true, + "requires": { + "mime-db": "1.30.0" + } + }, + "mimic-fn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "1.1.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.8.0.tgz", + "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", + "dev": true, + "optional": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-notifier": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", + "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", + "dev": true, + "requires": { + "growly": "1.3.0", + "semver": "5.4.1", + "shellwords": "0.1.1", + "which": "1.3.0" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "validate-npm-package-license": "3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "1.1.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "2.0.1" + } + }, + "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 + }, + "nwmatcher": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.3.tgz", + "integrity": "sha512-IKdSTiDWCarf2JTS5e9e2+5tPZGdkRJ79XjYV0pzK8Q9BpsFyBq1RGKxzs7Q8UBushGw7m6TzVKz6fcY99iSWw==", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-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.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "0.0.8", + "wordwrap": "0.0.3" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "0.1.3", + "fast-levenshtein": "2.0.6", + "levn": "0.3.0", + "prelude-ls": "1.1.2", + "type-check": "0.3.2", + "wordwrap": "1.0.0" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", + "dev": true, + "requires": { + "execa": "0.7.0", + "lcid": "1.0.0", + "mem": "1.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "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" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "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.3.1" + } + }, + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "dev": true + }, + "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-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "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.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "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.4" + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-format": { + "version": "21.2.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-21.2.1.tgz", + "integrity": "sha512-ZdWPGYAnYfcVP8yKA3zFjCn8s4/17TeYH28MXuC8vTp0o21eXjbFGcOAXZEaDaOFJjc3h2qa7HQNHNshhvoh2A==", + "dev": true, + "requires": { + "ansi-regex": "3.0.0", + "ansi-styles": "3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.1" + } + } + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "progress": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "dev": true + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "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.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.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.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "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.1.0", + "pinkie-promise": "2.0.1" + } + }, + "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.1" + } + } + } + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "regenerator-runtime": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz", + "integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "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.2" + } + }, + "request": { + "version": "2.83.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz", + "integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==", + "dev": true, + "requires": { + "aws-sign2": "0.7.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.3.1", + "har-validator": "5.0.3", + "hawk": "6.0.2", + "http-signature": "1.2.0", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.17", + "oauth-sign": "0.8.2", + "performance-now": "2.1.0", + "qs": "6.5.1", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.3", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "0.1.0", + "resolve-from": "1.0.1" + } + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "2.0.1", + "signal-exit": "3.0.2" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "2.1.0" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "4.0.8" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "sane": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.2.0.tgz", + "integrity": "sha512-OSJxhHO0CgPUw3lUm3GhfREAfza45smvEI9ozuFrxKG10GHVo0ryW9FK5VYlLvxj0SV7HVKHW0voYJIRu27GWg==", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "exec-sh": "0.2.1", + "fb-watchman": "2.0.0", + "fsevents": "1.1.3", + "minimatch": "3.0.4", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.18.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "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 + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0" + } + }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "dev": true, + "requires": { + "hoek": "4.2.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "0.5.7" + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + } + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "1.0.0", + "strip-ansi": "4.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } + } + }, + "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.1" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "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 + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", + "dev": true + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "5.5.0", + "ajv-keywords": "2.1.1", + "chalk": "2.3.0", + "lodash": "4.17.4", + "slice-ansi": "1.0.0", + "string-width": "2.1.1" + } + }, + "test-exclude": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.3.tgz", + "integrity": "sha1-C2GKVWW23qkL80JdBNVe3EdadWE=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tryit": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.3.tgz", + "integrity": "sha1-OTvnMKlEb9Hq1tpZoBQwjzbCics=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "1.1.2" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.7", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": 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.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "1.3.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.11" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha1-KAlUdsbffJDJYxOJkMClQj60uYY=", + "dev": true, + "requires": { + "exec-sh": "0.2.1", + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.3.tgz", + "integrity": "sha512-jLBwwKUhi8WtBfsMQlL4bUUcT8sMkAtQinscJAe/M4KHCkHuUJAF6vuB0tueNIw4c8ziO6AkRmgY+jL3a0iiPw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.19" + } + }, + "whatwg-url": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", + "dev": true, + "requires": { + "tr46": "0.0.3", + "webidl-conversions": "3.0.1" + }, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + } + } + }, + "which": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worker-farm": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.5.2.tgz", + "integrity": "sha512-XxiQ9kZN5n6mmnW+mFJ+wXjNNI/Nx4DIdaAKLX1Bn6LYBWlN/zaBhu34DQYPZ1AJobQuu67S2OfDdNSVULvXkQ==", + "dev": true, + "requires": { + "errno": "0.1.4", + "xtend": "4.0.1" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1" + }, + "dependencies": { + "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.1" + } + }, + "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.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "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.1.1" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "0.5.1" + } + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "signal-exit": "3.0.2" + } + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "requires": { + "camelcase": "4.1.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "2.1.0", + "read-pkg-up": "2.0.0", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "2.1.1", + "which-module": "2.0.0", + "y18n": "3.2.1", + "yargs-parser": "7.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + }, + "dependencies": { + "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.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + } + } + }, + "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.1" + } + }, + "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.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "strip-bom": "3.0.0" + } + }, + "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.3.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.4.0", + "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.1.0", + "read-pkg": "2.0.0" + } + }, + "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.1.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "yargs-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", + "dev": true, + "requires": { + "camelcase": "4.1.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e0f8002 --- /dev/null +++ b/package.json @@ -0,0 +1,24 @@ +{ + "name": "04-bitmap", + "version": "1.0.0", + "description": "bitmap transformer", + "main": "index.js", + "scripts": { + "test": "jest -i --coverage", + "lint": "eslint ./" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/sedillon93/04-bitmap.git" + }, + "author": "shannon-matthew", + "license": "MIT", + "bugs": { + "url": "https://github.com/sedillon93/04-bitmap/issues" + }, + "homepage": "https://github.com/sedillon93/04-bitmap#readme", + "devDependencies": { + "eslint": "^4.12.1", + "jest": "^21.2.1" + } +} From a7e264707fe3d4cc133d1d79cadedfb3ec4944b9 Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Thu, 30 Nov 2017 17:52:54 -0800 Subject: [PATCH 02/23] trying to get pixel data for color table for bmp --- __test__/bitmapTransformer.test.js | 2 +- index.js | 2 +- lib/bitmapTransformer.js | 29 ++++++++++++++++++++++------- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index 5d1e1e2..e6479c1 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -6,7 +6,7 @@ const bmpPaths = fs.readdirSync(`${__dirname}/../asset`); describe(`bitmapTransformer.js`, () => { test(`buffer should not be empty`, () => { - expect(bitmapTransformer.getBuffer(bmpPaths[0])).not.toBeNull(); + expect(bitmapTransformer.readFile(bmpPaths[2])).not.toBeNull(); }) // test(`Make sure that user provides an input file path, output file path, and transform option`, () => { // expect(bitmapTransformer.alterBMP(`bitmap.bmp`, `newfile.bmp`, `greyscale`)).not.toBeNull(); diff --git a/index.js b/index.js index 154b53f..c4778ea 100644 --- a/index.js +++ b/index.js @@ -4,5 +4,5 @@ const bitmapTransformer = require(`./lib/bitmapTransformer`); const fs = require(`fs`); bitmapTransformer.alterBMP = (inputPath, outputPath, transformType) => { - + fs.readFile(absolutePath, callback) } diff --git a/lib/bitmapTransformer.js b/lib/bitmapTransformer.js index fcf918d..2b7ee31 100644 --- a/lib/bitmapTransformer.js +++ b/lib/bitmapTransformer.js @@ -2,24 +2,39 @@ const fs = require(`fs`); const bmpPaths = fs.readdirSync(`${__dirname}/../asset`); -// console.log(fs.readdirSync(`${__dirname}/../asset`)); //gives back array of bmp file names (as strings?) const bitmapTransformer = module.exports = {}; -const FILE_SIZE_OFFSET = 2; +// const FILE_SIZE_OFFSET = 2; const PIXEL_TABLE_OFFSET = 10; +// const HEIGHT_OFFSET = 22; -bitmapTransformer.getBuffer = (filePath) => { +bitmapTransformer.getBufferData = (buffer) => { + let parsedBitmap = {}; + + parsedBitmap.buffer = buffer; + // parsedBitmap.headerOffset = buffer.toString('utf-8',0,2); //this works- returns 'BM' + // console.log(parsedBitmap.fileSize = buffer.readInt32LE(2)); //this also works- get 66616 bytes + parsedBitmap.tableOffset = buffer.readInt32LE(PIXEL_TABLE_OFFSET); //this returns 1078 for some reason + // console.log(parsedBitmap.tableOffset); + // console.log(buffer, `this is the complete buffer`); + // console.log(parsedBitmap.buffer.readInt32LE(PIXEL_TABLE_OFFSET), `this is a part of the buffer`); +}; + +bitmapTransformer.readFile = (filePath, callback) => { fs.readFile(`${__dirname}/../asset/${filePath}`, (error, output) => { if (error) return error; + bitmapTransformer.getBufferData(output); } ); }; - -//get the bmp file -//get the buffer data -//need to transform a color's pixel value to be something else +//get the bmp file-- done +//get the buffer data-- done + //get the Pixel Table Data + //only get the pixel color table data + //let pixelDataStart = buffer.readInt32LE(PIXEL_TABLE_OFFSET); (location in buffer where image data should begin) +//transform a color's pixel value to be something else From 1605359f4894cb717699b8a3344680df21dcebaf Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Fri, 1 Dec 2017 16:25:59 -0800 Subject: [PATCH 03/23] writing inverse color transform function --- lib/bitmapTransformer.js | 61 +++++++++++++++++++++++++++++----------- 1 file changed, 45 insertions(+), 16 deletions(-) diff --git a/lib/bitmapTransformer.js b/lib/bitmapTransformer.js index 2b7ee31..ef86a99 100644 --- a/lib/bitmapTransformer.js +++ b/lib/bitmapTransformer.js @@ -4,37 +4,66 @@ const fs = require(`fs`); const bmpPaths = fs.readdirSync(`${__dirname}/../asset`); const bitmapTransformer = module.exports = {}; -// const FILE_SIZE_OFFSET = 2; -const PIXEL_TABLE_OFFSET = 10; -// const HEIGHT_OFFSET = 22; +const PIXEL_TABLE_OFFSET = 10; //gives the offset of where the pixel data starts- yields 1078 +const BITMAP_FILE_HEADER_SIZE = 14; //in bytes +const DIB_HEADER_SIZE = 40; //in bytes +const COLOR_PALETTE_OFFSET = (BITMAP_FILE_HEADER_SIZE + DIB_HEADER_SIZE); bitmapTransformer.getBufferData = (buffer) => { let parsedBitmap = {}; parsedBitmap.buffer = buffer; - // parsedBitmap.headerOffset = buffer.toString('utf-8',0,2); //this works- returns 'BM' - // console.log(parsedBitmap.fileSize = buffer.readInt32LE(2)); //this also works- get 66616 bytes - parsedBitmap.tableOffset = buffer.readInt32LE(PIXEL_TABLE_OFFSET); //this returns 1078 for some reason - // console.log(parsedBitmap.tableOffset); - // console.log(buffer, `this is the complete buffer`); - // console.log(parsedBitmap.buffer.readInt32LE(PIXEL_TABLE_OFFSET), `this is a part of the buffer`); + buffer.pixelTableOffset = buffer.readInt32LE(PIXEL_TABLE_OFFSET); + parsedBitmap.colorPalette = buffer.slice(COLOR_PALETTE_OFFSET, buffer.pixelTableOffset); + parsedBitmap.bgrValues = + + console.log(parsedBitmap.colorPalette, `this is the color palette buffer data`); + parsedBitmap.bgrValues = JSON.stringify(parsedBitmap.colorPalette); + // console.log(JSON.parse(parsedBitmap.bgrValues), `these are the parsed bgr values`); + console.log(JSON.parse(parsedBitmap.bgrValues).data, `this is the parsed bgr data`); + invertColor(JSON.parse(parsedBitmap.bgrValues).data); }; bitmapTransformer.readFile = (filePath, callback) => { fs.readFile(`${__dirname}/../asset/${filePath}`, - (error, output) => { + (error, data) => { if (error) - return error; + console.error(error); - bitmapTransformer.getBufferData(output); + // data is the contents of the file being read (i.e. data is the buffer) + bitmapTransformer.getBufferData(data); } ); }; +// let colorToGreyscale = () => { +// } +// +let invertColor = (colorPalette) => { + //changing blue(?) values + // console.log(colorPalette); + for (let i = 1; i < colorPalette.length; i += 4){ + colorPalette[i] = 255 - colorPalette[i]; + } + //changing green? + for (let i = 2; i < colorPalette.length; i += 4){ + colorPalette[i] = 255 - colorPalette[i]; + } + //changing red? + for (let i = 3; i < colorPalette.length; i += 4){ + colorPalette[i] = 255 - colorPalette[i]; + } + // console.log(colorPalette); + return colorPalette; +} + +// let randomizeColors = () => { +// } //get the bmp file-- done //get the buffer data-- done - //get the Pixel Table Data - //only get the pixel color table data - //let pixelDataStart = buffer.readInt32LE(PIXEL_TABLE_OFFSET); (location in buffer where image data should begin) -//transform a color's pixel value to be something else +//only get the pixel color table data-- done + +//transform a bitmap image + //access individual colors in the palette-- done + //change a color's blue, green, or red value From af4d3d7e7ba40694998870c127231c3491a35bf7 Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Fri, 1 Dec 2017 16:46:39 -0800 Subject: [PATCH 04/23] invert bitmap colors with invertColor function --- lib/bitmapTransformer.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lib/bitmapTransformer.js b/lib/bitmapTransformer.js index ef86a99..e07dd88 100644 --- a/lib/bitmapTransformer.js +++ b/lib/bitmapTransformer.js @@ -15,13 +15,12 @@ bitmapTransformer.getBufferData = (buffer) => { parsedBitmap.buffer = buffer; buffer.pixelTableOffset = buffer.readInt32LE(PIXEL_TABLE_OFFSET); parsedBitmap.colorPalette = buffer.slice(COLOR_PALETTE_OFFSET, buffer.pixelTableOffset); - parsedBitmap.bgrValues = - console.log(parsedBitmap.colorPalette, `this is the color palette buffer data`); - parsedBitmap.bgrValues = JSON.stringify(parsedBitmap.colorPalette); + // parsedBitmap.bgrValues = JSON.stringify(parsedBitmap.colorPalette); + // console.log(parsedBitmap.bgrValues); // console.log(JSON.parse(parsedBitmap.bgrValues), `these are the parsed bgr values`); - console.log(JSON.parse(parsedBitmap.bgrValues).data, `this is the parsed bgr data`); - invertColor(JSON.parse(parsedBitmap.bgrValues).data); + invertColor(parsedBitmap.colorPalette); + // invertColor(JSON.parse(parsedBitmap.bgrValues).data); }; bitmapTransformer.readFile = (filePath, callback) => { @@ -41,8 +40,8 @@ bitmapTransformer.readFile = (filePath, callback) => { // let invertColor = (colorPalette) => { //changing blue(?) values - // console.log(colorPalette); for (let i = 1; i < colorPalette.length; i += 4){ + // colorPalette.fill(255 - colorPalette[i], 0); colorPalette[i] = 255 - colorPalette[i]; } //changing green? @@ -53,7 +52,6 @@ let invertColor = (colorPalette) => { for (let i = 3; i < colorPalette.length; i += 4){ colorPalette[i] = 255 - colorPalette[i]; } - // console.log(colorPalette); return colorPalette; } From 7ac10971cdebcb5e55ad9ba8fdb2c1a2b3c6a98a Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Fri, 1 Dec 2017 17:16:19 -0800 Subject: [PATCH 05/23] creating new bmp file using modified color palette --- lib/bitmapTransformer.js | 30 +++++++++++++++++------------- modified.bmp | Bin 0 -> 66616 bytes 2 files changed, 17 insertions(+), 13 deletions(-) create mode 100644 modified.bmp diff --git a/lib/bitmapTransformer.js b/lib/bitmapTransformer.js index e07dd88..897d755 100644 --- a/lib/bitmapTransformer.js +++ b/lib/bitmapTransformer.js @@ -19,8 +19,10 @@ bitmapTransformer.getBufferData = (buffer) => { // parsedBitmap.bgrValues = JSON.stringify(parsedBitmap.colorPalette); // console.log(parsedBitmap.bgrValues); // console.log(JSON.parse(parsedBitmap.bgrValues), `these are the parsed bgr values`); - invertColor(parsedBitmap.colorPalette); + invertColor(parsedBitmap.colorPalette);// instead of this pass in whatever input pathway was provided by the user // invertColor(JSON.parse(parsedBitmap.bgrValues).data); + bitmapTransformer.renderNewFile(parsedBitmap.buffer); + console.log(`renderNewFile ran`); }; bitmapTransformer.readFile = (filePath, callback) => { @@ -29,13 +31,21 @@ bitmapTransformer.readFile = (filePath, callback) => { if (error) console.error(error); - // data is the contents of the file being read (i.e. data is the buffer) bitmapTransformer.getBufferData(data); + console.log(`getBufferData ran`); } ); }; -// let colorToGreyscale = () => { +bitmapTransformer.renderNewFile = (parsedBitmapData) => { //create a new bmp file using the new color palette + fs.writeFile(`modified.bmp`, parsedBitmapData, (error) => { + if (error) + console.error(error); + }); +} + + +// let colorToGreyscale = (colorPalette) => { // } // let invertColor = (colorPalette) => { @@ -52,16 +62,10 @@ let invertColor = (colorPalette) => { for (let i = 3; i < colorPalette.length; i += 4){ colorPalette[i] = 255 - colorPalette[i]; } - return colorPalette; } -// let randomizeColors = () => { +// let randomizeColors = (colorPalette) => { +// for (let i = 1; i < colorPalette.length; i += 4){ +// colorPalette[i] = Math.random().floor +// } // } - -//get the bmp file-- done -//get the buffer data-- done -//only get the pixel color table data-- done - -//transform a bitmap image - //access individual colors in the palette-- done - //change a color's blue, green, or red value diff --git a/modified.bmp b/modified.bmp new file mode 100644 index 0000000000000000000000000000000000000000..72deec7d67d9c751c7aebe2662e974f11701d6ea GIT binary patch literal 66616 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 literal 0 HcmV?d00001 From f9ceb279f42fe526b3cf326d3ae9ccc4c983a2ac Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Sat, 2 Dec 2017 11:07:45 -0800 Subject: [PATCH 06/23] getting blue and yellow instead of white and black for color inverter function --- lib/bitmapTransformer.js | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/lib/bitmapTransformer.js b/lib/bitmapTransformer.js index 897d755..3b10ad4 100644 --- a/lib/bitmapTransformer.js +++ b/lib/bitmapTransformer.js @@ -22,7 +22,7 @@ bitmapTransformer.getBufferData = (buffer) => { invertColor(parsedBitmap.colorPalette);// instead of this pass in whatever input pathway was provided by the user // invertColor(JSON.parse(parsedBitmap.bgrValues).data); bitmapTransformer.renderNewFile(parsedBitmap.buffer); - console.log(`renderNewFile ran`); + // console.log(`renderNewFile ran`); }; bitmapTransformer.readFile = (filePath, callback) => { @@ -32,7 +32,7 @@ bitmapTransformer.readFile = (filePath, callback) => { console.error(error); bitmapTransformer.getBufferData(data); - console.log(`getBufferData ran`); + // console.log(`getBufferData ran`); } ); }; @@ -45,27 +45,33 @@ bitmapTransformer.renderNewFile = (parsedBitmapData) => { //create a new bmp fil } -// let colorToGreyscale = (colorPalette) => { -// } -// +let colorToGreyscale = (colorPalette) => { + //multiply each color value by .33 + for (let i = 1; i < colorPalette.length; i += 4){ + console.log(colorPalette[i], `this is the unmodified color`); + colorPalette[i] = (.33 * colorPalette[i]); + console.log(colorPalette[i], `this is the modified color`); + } +} + let invertColor = (colorPalette) => { - //changing blue(?) values + //change blue values for (let i = 1; i < colorPalette.length; i += 4){ - // colorPalette.fill(255 - colorPalette[i], 0); + // colorPalette.fill(255 - colorPalette[i], 0); //try to use .fill instead? colorPalette[i] = 255 - colorPalette[i]; } - //changing green? + //change green for (let i = 2; i < colorPalette.length; i += 4){ colorPalette[i] = 255 - colorPalette[i]; } - //changing red? + //change red for (let i = 3; i < colorPalette.length; i += 4){ colorPalette[i] = 255 - colorPalette[i]; } } -// let randomizeColors = (colorPalette) => { -// for (let i = 1; i < colorPalette.length; i += 4){ -// colorPalette[i] = Math.random().floor -// } -// } +let randomizeColors = (colorPalette) => { + for (let i = 1; i < colorPalette.length; i++){ //play with i incrementing; what happens with i += 4? + colorPalette[i] = Math.floor(Math.random() * 255); + } +} From e3c5f58c5f6026b0d5f4fb1f394ec654bc74478c Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Sat, 2 Dec 2017 21:50:06 -0800 Subject: [PATCH 07/23] finish grayscale transform function --- __test__/bitmapTransformer.test.js | 5 +--- lib/bitmapTransformer.js | 42 ++++++++++++++--------------- modified.bmp | Bin 66616 -> 11078 bytes 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index e6479c1..f3806ac 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -6,11 +6,8 @@ const bmpPaths = fs.readdirSync(`${__dirname}/../asset`); describe(`bitmapTransformer.js`, () => { test(`buffer should not be empty`, () => { - expect(bitmapTransformer.readFile(bmpPaths[2])).not.toBeNull(); + expect(bitmapTransformer.readFile(bmpPaths[0])).not.toBeNull(); }) - // test(`Make sure that user provides an input file path, output file path, and transform option`, () => { - // expect(bitmapTransformer.alterBMP(`bitmap.bmp`, `newfile.bmp`, `greyscale`)).not.toBeNull(); - // }); }); //expect it to take in .bmp file from assets folder, run 1+ color transformations, then output a new file diff --git a/lib/bitmapTransformer.js b/lib/bitmapTransformer.js index 3b10ad4..8efa9c6 100644 --- a/lib/bitmapTransformer.js +++ b/lib/bitmapTransformer.js @@ -16,13 +16,10 @@ bitmapTransformer.getBufferData = (buffer) => { buffer.pixelTableOffset = buffer.readInt32LE(PIXEL_TABLE_OFFSET); parsedBitmap.colorPalette = buffer.slice(COLOR_PALETTE_OFFSET, buffer.pixelTableOffset); - // parsedBitmap.bgrValues = JSON.stringify(parsedBitmap.colorPalette); - // console.log(parsedBitmap.bgrValues); - // console.log(JSON.parse(parsedBitmap.bgrValues), `these are the parsed bgr values`); - invertColor(parsedBitmap.colorPalette);// instead of this pass in whatever input pathway was provided by the user - // invertColor(JSON.parse(parsedBitmap.bgrValues).data); - bitmapTransformer.renderNewFile(parsedBitmap.buffer); - // console.log(`renderNewFile ran`); + // console.log(...parsedBitmap.colorPalette); + colorToGreyscale(parsedBitmap.colorPalette);// instead of parsedBitmap.colorPalette pass in whatever input pathway was provided by the user + // console.log(...parsedBitmap.colorPalette); + bitmapTransformer.renderNewFile(buffer); }; bitmapTransformer.readFile = (filePath, callback) => { @@ -32,7 +29,6 @@ bitmapTransformer.readFile = (filePath, callback) => { console.error(error); bitmapTransformer.getBufferData(data); - // console.log(`getBufferData ran`); } ); }; @@ -42,36 +38,38 @@ bitmapTransformer.renderNewFile = (parsedBitmapData) => { //create a new bmp fil if (error) console.error(error); }); -} +}; let colorToGreyscale = (colorPalette) => { - //multiply each color value by .33 - for (let i = 1; i < colorPalette.length; i += 4){ - console.log(colorPalette[i], `this is the unmodified color`); - colorPalette[i] = (.33 * colorPalette[i]); - console.log(colorPalette[i], `this is the modified color`); + //Luminosity based grayscale = 0.21 × R + 0.72 × G + 0.07 × B + for (let i = 0; i < colorPalette.length; i += 4){ + let avgColor = (colorPalette[i] * .11) + (colorPalette[i + 1] * .59) + (colorPalette[i + 2] * .3); + colorPalette[i] = avgColor; + colorPalette[i + 1] = avgColor; + colorPalette[i + 2] = avgColor; + // colorPalette[i] = colorPalette[i + 1] = colorPalette[i + 2] = colorAvg; } -} +}; let invertColor = (colorPalette) => { //change blue values - for (let i = 1; i < colorPalette.length; i += 4){ - // colorPalette.fill(255 - colorPalette[i], 0); //try to use .fill instead? + for (let i = 0; i < colorPalette.length; i += 4){ + // try to use .fill instead // colorPalette.fill(255 - colorPalette[i], 0); colorPalette[i] = 255 - colorPalette[i]; } //change green - for (let i = 2; i < colorPalette.length; i += 4){ + for (let i = 1; i < colorPalette.length; i += 4){ colorPalette[i] = 255 - colorPalette[i]; } //change red - for (let i = 3; i < colorPalette.length; i += 4){ + for (let i = 2; i < colorPalette.length; i += 4){ colorPalette[i] = 255 - colorPalette[i]; } -} +}; let randomizeColors = (colorPalette) => { - for (let i = 1; i < colorPalette.length; i++){ //play with i incrementing; what happens with i += 4? + for (let i = 0; i < colorPalette.length; i += 4){ colorPalette[i] = Math.floor(Math.random() * 255); } -} +}; diff --git a/modified.bmp b/modified.bmp index 72deec7d67d9c751c7aebe2662e974f11701d6ea..3ab843ea6c4623b2d10884f5af2260a4a6275cc2 100644 GIT binary patch literal 11078 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 From 6c88415665bd05a7d869838cd85a6d1282c7d29c Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Sun, 3 Dec 2017 09:52:07 -0800 Subject: [PATCH 08/23] trying to refactor code to pass color palette to transform function --- __test__/bitmapTransformer.test.js | 10 ++++-- index.js | 7 +++-- lib/bitmapTransformer.js | 49 ++++++++++++++++------------- modified.bmp | Bin 11078 -> 0 bytes package-lock.json | 5 +++ package.json | 3 ++ 6 files changed, 48 insertions(+), 26 deletions(-) delete mode 100644 modified.bmp diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index f3806ac..5014dcb 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -5,9 +5,15 @@ const bitmapTransformer = require(`../lib/bitmapTransformer`); const bmpPaths = fs.readdirSync(`${__dirname}/../asset`); describe(`bitmapTransformer.js`, () => { - test(`buffer should not be empty`, () => { - expect(bitmapTransformer.readFile(bmpPaths[0])).not.toBeNull(); + test(`greyscale image should be returned for greyscale transform function`, () => { + expect(bitmapTransformer.transform(bmpPaths[2], `transformedHouse.bmp`, `greyscale`)).not.toBeNull(); }) + // test(`inverted color image should be returned for inverted color transform function`, () => { + // expect(bitmapTransformer.transform(bmpPaths[2], `transformedHouse.bmp`, `invert`)).not.toBeNull(); + // }) + // test(`randomized color image should be returned for randomized color transform function`, () => { + // expect(bitmapTransformer.transform(bmpPaths[2], `transformedHouse.bmp`, `randomize`)).not.toBeNull(); + // }) }); //expect it to take in .bmp file from assets folder, run 1+ color transformations, then output a new file diff --git a/index.js b/index.js index c4778ea..8d0c94d 100644 --- a/index.js +++ b/index.js @@ -1,8 +1,11 @@ +#!/usr/bin/env node + 'use strict'; +const commander = require(`commander`); const bitmapTransformer = require(`./lib/bitmapTransformer`); const fs = require(`fs`); -bitmapTransformer.alterBMP = (inputPath, outputPath, transformType) => { - fs.readFile(absolutePath, callback) +bitmapTransformer.something = (inputPath, outputPath, transformType) => { + // fs.readFile(absolutePath, callback) } diff --git a/lib/bitmapTransformer.js b/lib/bitmapTransformer.js index 8efa9c6..2b7a0f0 100644 --- a/lib/bitmapTransformer.js +++ b/lib/bitmapTransformer.js @@ -4,55 +4,60 @@ const fs = require(`fs`); const bmpPaths = fs.readdirSync(`${__dirname}/../asset`); const bitmapTransformer = module.exports = {}; -const PIXEL_TABLE_OFFSET = 10; //gives the offset of where the pixel data starts- yields 1078 const BITMAP_FILE_HEADER_SIZE = 14; //in bytes const DIB_HEADER_SIZE = 40; //in bytes -const COLOR_PALETTE_OFFSET = (BITMAP_FILE_HEADER_SIZE + DIB_HEADER_SIZE); +const COLOR_PALETTE_OFFSET = (BITMAP_FILE_HEADER_SIZE + DIB_HEADER_SIZE); //where color palette starts +const PIXEL_TABLE_OFFSET = 10; //gives the offset of where the pixel data starts (i.e. end of color palette) -bitmapTransformer.getBufferData = (buffer) => { - let parsedBitmap = {}; +bitmapTransformer.transform = (inputPath, outputPath, transform) => { + fs.readFile(inputPath); + + greyscale(parsedBitmap.colorPalette); + // transformType2(parsedBitmap.colorPalette); + // transformType3(parsedBitmap.colorPalette); + renderNewFile(outputPath, parsedBitmap.buffer); +}; +bitmapTransformer.getColorPalette = (buffer) => { + let parsedBitmap = {}; parsedBitmap.buffer = buffer; buffer.pixelTableOffset = buffer.readInt32LE(PIXEL_TABLE_OFFSET); parsedBitmap.colorPalette = buffer.slice(COLOR_PALETTE_OFFSET, buffer.pixelTableOffset); - // console.log(...parsedBitmap.colorPalette); - colorToGreyscale(parsedBitmap.colorPalette);// instead of parsedBitmap.colorPalette pass in whatever input pathway was provided by the user - // console.log(...parsedBitmap.colorPalette); - bitmapTransformer.renderNewFile(buffer); + // invertColor(parsedBitmap.colorPalette);// instead of parsedBitmap.colorPalette pass in whatever input pathway was provided by the user + // bitmapTransformer.renderNewFile(parsedBitmap.buffer); }; -bitmapTransformer.readFile = (filePath, callback) => { - fs.readFile(`${__dirname}/../asset/${filePath}`, +bitmapTransformer.readFile = (pathOfInput, callback) => { + fs.readFile(`${__dirname}/../asset/${pathOfInput}`, (error, data) => { if (error) console.error(error); - bitmapTransformer.getBufferData(data); + bitmapTransformer.getColorPalette(data); } ); }; -bitmapTransformer.renderNewFile = (parsedBitmapData) => { //create a new bmp file using the new color palette - fs.writeFile(`modified.bmp`, parsedBitmapData, (error) => { +bitmapTransformer.renderNewFile = (outputPath, parsedBitmapData) => { + fs.writeFile(outputPath, parsedBitmapData, (error) => { if (error) console.error(error); }); }; -let colorToGreyscale = (colorPalette) => { - //Luminosity based grayscale = 0.21 × R + 0.72 × G + 0.07 × B +let greyscale = (colorPalette) => { + //Luminosity based grayscale: gray value = 0.21 × R + 0.72 × G + 0.07 × B for (let i = 0; i < colorPalette.length; i += 4){ - let avgColor = (colorPalette[i] * .11) + (colorPalette[i + 1] * .59) + (colorPalette[i + 2] * .3); - colorPalette[i] = avgColor; - colorPalette[i + 1] = avgColor; - colorPalette[i + 2] = avgColor; - // colorPalette[i] = colorPalette[i + 1] = colorPalette[i + 2] = colorAvg; + let weightedGrayscaleAvg = (colorPalette[i] * .11) + (colorPalette[i + 1] * .59) + (colorPalette[i + 2] * .3); + colorPalette[i] = weightedGrayscaleAvg; + colorPalette[i + 1] = weightedGrayscaleAvg; + colorPalette[i + 2] = weightedGrayscaleAvg; } }; -let invertColor = (colorPalette) => { +let invert = (colorPalette) => { //change blue values for (let i = 0; i < colorPalette.length; i += 4){ // try to use .fill instead // colorPalette.fill(255 - colorPalette[i], 0); @@ -68,7 +73,7 @@ let invertColor = (colorPalette) => { } }; -let randomizeColors = (colorPalette) => { +let randomize = (colorPalette) => { for (let i = 0; i < colorPalette.length; i += 4){ colorPalette[i] = Math.floor(Math.random() * 255); } diff --git a/modified.bmp b/modified.bmp deleted file mode 100644 index 3ab843ea6c4623b2d10884f5af2260a4a6275cc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11078 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 Date: Sun, 3 Dec 2017 11:06:20 -0800 Subject: [PATCH 09/23] fixed data persistence by saving function outputs to variables --- __test__/bitmapTransformer.test.js | 2 +- lib/bitmapTransformer.js | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index 5014dcb..2344b3c 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -6,7 +6,7 @@ const bmpPaths = fs.readdirSync(`${__dirname}/../asset`); describe(`bitmapTransformer.js`, () => { test(`greyscale image should be returned for greyscale transform function`, () => { - expect(bitmapTransformer.transform(bmpPaths[2], `transformedHouse.bmp`, `greyscale`)).not.toBeNull(); + expect(bitmapTransformer.alterImage(bmpPaths[2], `transformedHouse.bmp`, `greyscale`)).not.toBeNull(); }) // test(`inverted color image should be returned for inverted color transform function`, () => { // expect(bitmapTransformer.transform(bmpPaths[2], `transformedHouse.bmp`, `invert`)).not.toBeNull(); diff --git a/lib/bitmapTransformer.js b/lib/bitmapTransformer.js index 2b7a0f0..6797e82 100644 --- a/lib/bitmapTransformer.js +++ b/lib/bitmapTransformer.js @@ -9,8 +9,13 @@ const DIB_HEADER_SIZE = 40; //in bytes const COLOR_PALETTE_OFFSET = (BITMAP_FILE_HEADER_SIZE + DIB_HEADER_SIZE); //where color palette starts const PIXEL_TABLE_OFFSET = 10; //gives the offset of where the pixel data starts (i.e. end of color palette) -bitmapTransformer.transform = (inputPath, outputPath, transform) => { - fs.readFile(inputPath); +bitmapTransformer.alterImage = (inputPath, outputPath, transform) => { + // console.log(inputPath, `is the input path`); + console.log(bitmapTransformer.readFile(inputPath)); + // console.log(bitmapTransformer.readFile(inputPath), `should be the data`); + let data = bitmapTransformer.readFile(inputPath); + // console.log(data, `is the data`); + let parsedBitmap = bitmapTransformer.getColorPalette(data); greyscale(parsedBitmap.colorPalette); // transformType2(parsedBitmap.colorPalette); @@ -20,10 +25,14 @@ bitmapTransformer.transform = (inputPath, outputPath, transform) => { bitmapTransformer.getColorPalette = (buffer) => { let parsedBitmap = {}; + // console.log(buffer); parsedBitmap.buffer = buffer; + // console.log(parsedBitmap.buffer, `is the parsedBitmap buffer`); buffer.pixelTableOffset = buffer.readInt32LE(PIXEL_TABLE_OFFSET); parsedBitmap.colorPalette = buffer.slice(COLOR_PALETTE_OFFSET, buffer.pixelTableOffset); + return parsedBitmap; + // invertColor(parsedBitmap.colorPalette);// instead of parsedBitmap.colorPalette pass in whatever input pathway was provided by the user // bitmapTransformer.renderNewFile(parsedBitmap.buffer); }; @@ -34,7 +43,7 @@ bitmapTransformer.readFile = (pathOfInput, callback) => { if (error) console.error(error); - bitmapTransformer.getColorPalette(data); + return data; } ); }; From 8f6a68c40e7e3b81abbaeeb5e84b8d737f356a19 Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Sun, 3 Dec 2017 15:04:28 -0800 Subject: [PATCH 10/23] allow user to enter an array of more than one transform function name --- __test__/bitmapTransformer.test.js | 2 +- lib/bitmapTransformer.js | 83 ++++++++++++++++++++---------- 2 files changed, 58 insertions(+), 27 deletions(-) diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index 2344b3c..6593201 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -6,7 +6,7 @@ const bmpPaths = fs.readdirSync(`${__dirname}/../asset`); describe(`bitmapTransformer.js`, () => { test(`greyscale image should be returned for greyscale transform function`, () => { - expect(bitmapTransformer.alterImage(bmpPaths[2], `transformedHouse.bmp`, `greyscale`)).not.toBeNull(); + expect(bitmapTransformer.Main(bmpPaths[2], `newImage.bmp`, [`invert`, `greyscale`])).not.toBeNull(); }) // test(`inverted color image should be returned for inverted color transform function`, () => { // expect(bitmapTransformer.transform(bmpPaths[2], `transformedHouse.bmp`, `invert`)).not.toBeNull(); diff --git a/lib/bitmapTransformer.js b/lib/bitmapTransformer.js index 6797e82..4bb6089 100644 --- a/lib/bitmapTransformer.js +++ b/lib/bitmapTransformer.js @@ -9,45 +9,60 @@ const DIB_HEADER_SIZE = 40; //in bytes const COLOR_PALETTE_OFFSET = (BITMAP_FILE_HEADER_SIZE + DIB_HEADER_SIZE); //where color palette starts const PIXEL_TABLE_OFFSET = 10; //gives the offset of where the pixel data starts (i.e. end of color palette) -bitmapTransformer.alterImage = (inputPath, outputPath, transform) => { - // console.log(inputPath, `is the input path`); - console.log(bitmapTransformer.readFile(inputPath)); - // console.log(bitmapTransformer.readFile(inputPath), `should be the data`); - let data = bitmapTransformer.readFile(inputPath); - // console.log(data, `is the data`); - let parsedBitmap = bitmapTransformer.getColorPalette(data); - - greyscale(parsedBitmap.colorPalette); - // transformType2(parsedBitmap.colorPalette); - // transformType3(parsedBitmap.colorPalette); - renderNewFile(outputPath, parsedBitmap.buffer); -}; - -bitmapTransformer.getColorPalette = (buffer) => { - let parsedBitmap = {}; - // console.log(buffer); - parsedBitmap.buffer = buffer; - // console.log(parsedBitmap.buffer, `is the parsedBitmap buffer`); - buffer.pixelTableOffset = buffer.readInt32LE(PIXEL_TABLE_OFFSET); - parsedBitmap.colorPalette = buffer.slice(COLOR_PALETTE_OFFSET, buffer.pixelTableOffset); +bitmapTransformer.Main = (inputPath, outputPath, transforms) => { + bitmapTransformer.readFile(inputPath, (data) => { + let parsedBitmap = bitmapTransformer.getColorPalette(data); - return parsedBitmap; + for(let i = 0; i < transforms.length; i++){ + if(transforms[i] === `greyscale`) { + greyscale(parsedBitmap.colorPalette); + } + else if(transforms[i] === `randomize`){ + randomize(parsedBitmap.colorPalette); + } + else if(transforms[i] === `invert`){ + invert(parsedBitmap.colorPalette); + } + else{ + throw new ReferenceError(`the transform operation must be 'invert', 'greyscale', or 'randomize'`); + } + console.log(parsedBitmap.colorPalette, `this is transform ${i}`); + } - // invertColor(parsedBitmap.colorPalette);// instead of parsedBitmap.colorPalette pass in whatever input pathway was provided by the user - // bitmapTransformer.renderNewFile(parsedBitmap.buffer); + bitmapTransformer.renderNewFile(outputPath, parsedBitmap.buffer); + }); +// console.log(bitmapTransformer.readFile(inputPath), `is what data should be`); +// console.log(bitmapTransformer.readFile(inputPath), `should be the data`); +// bitmapTransformer.readFile(inputPath, bitmapTransformer.getColorPalette); +// console.log(parsedBitmap, `is the bitmap data`); +// let parsedBitmap = bitmapTransformer.getColorPalette(data); +// +// greyscale(parsedBitmap.colorPalette); +// transformType2(parsedBitmap.colorPalette); +// transformType3(parsedBitmap.colorPalette); +// renderNewFile(outputPath, parsedBitmap.buffer); }; -bitmapTransformer.readFile = (pathOfInput, callback) => { +bitmapTransformer.readFile = (pathOfInput, callback, pathOfOutput, transform) => { fs.readFile(`${__dirname}/../asset/${pathOfInput}`, (error, data) => { if (error) console.error(error); - return data; + callback(data); } ); }; +bitmapTransformer.getColorPalette = (buffer) => { + let parsedBitmap = {}; + parsedBitmap.buffer = buffer; + buffer.pixelTableOffset = buffer.readInt32LE(PIXEL_TABLE_OFFSET); + parsedBitmap.colorPalette = buffer.slice(COLOR_PALETTE_OFFSET, buffer.pixelTableOffset); + + return parsedBitmap; +}; + bitmapTransformer.renderNewFile = (outputPath, parsedBitmapData) => { fs.writeFile(outputPath, parsedBitmapData, (error) => { if (error) @@ -87,3 +102,19 @@ let randomize = (colorPalette) => { colorPalette[i] = Math.floor(Math.random() * 255); } }; + + + + + + + + + + + +// bitmapTransformer.alterImage = (data) => { +// let parsedBitmap = bitmapTransformer.getColorPalette(data); +// let updatedColorPalette = greyscale(parsedBitmap.colorPalette); +// bitmapTransformer.renderNewFile(outputPath, parsedBitmap.buffer); +// } From 8a6a787b6589c0b70541c712a2e0230e25eb83c1 Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Sun, 3 Dec 2017 17:41:02 -0800 Subject: [PATCH 11/23] trying out process.argv for CLI --- __test__/bitmapTransformer.test.js | 5 +- index.js | 27 +++++++- lib/bitmapTransformer.js | 58 ++--------------- newImage.bmp | Bin 0 -> 66616 bytes package-lock.json | 96 +++++++++++++---------------- package.json | 3 - 6 files changed, 74 insertions(+), 115 deletions(-) mode change 100644 => 100755 index.js create mode 100644 newImage.bmp diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index 6593201..8da5220 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -2,11 +2,12 @@ const fs = require(`fs`); const bitmapTransformer = require(`../lib/bitmapTransformer`); +const indexJS = require(`../index.js`); const bmpPaths = fs.readdirSync(`${__dirname}/../asset`); describe(`bitmapTransformer.js`, () => { test(`greyscale image should be returned for greyscale transform function`, () => { - expect(bitmapTransformer.Main(bmpPaths[2], `newImage.bmp`, [`invert`, `greyscale`])).not.toBeNull(); + expect(indexJS.transformImage(bmpPaths[2], `newImage.bmp`, [`invert`, `greyscale`])).not.toBeNull(); }) // test(`inverted color image should be returned for inverted color transform function`, () => { // expect(bitmapTransformer.transform(bmpPaths[2], `transformedHouse.bmp`, `invert`)).not.toBeNull(); @@ -15,5 +16,3 @@ describe(`bitmapTransformer.js`, () => { // expect(bitmapTransformer.transform(bmpPaths[2], `transformedHouse.bmp`, `randomize`)).not.toBeNull(); // }) }); - -//expect it to take in .bmp file from assets folder, run 1+ color transformations, then output a new file diff --git a/index.js b/index.js old mode 100644 new mode 100755 index 8d0c94d..8364d30 --- a/index.js +++ b/index.js @@ -2,10 +2,31 @@ 'use strict'; -const commander = require(`commander`); const bitmapTransformer = require(`./lib/bitmapTransformer`); const fs = require(`fs`); +const indexJS = module.exports = {}; -bitmapTransformer.something = (inputPath, outputPath, transformType) => { - // fs.readFile(absolutePath, callback) +let args = process.argv.slice(2); + +indexJS.transformImage = (inputPath, outputPath, transforms) => { + bitmapTransformer.readFile(inputPath, (data) => { + let parsedBitmap = bitmapTransformer.getColorPalette(data); + + for(let i = 0; i < transforms.length; i++){ + if(transforms[i] === `greyscale`) { + bitmapTransformer.greyscale(parsedBitmap.colorPalette); + } + else if(transforms[i] === `randomize`){ + bitmapTransformer.randomize(parsedBitmap.colorPalette); + } + else if(transforms[i] === `invert`){ + bitmapTransformer.invert(parsedBitmap.colorPalette); + } + else{ + throw new ReferenceError(`the transform operation must be 'invert', 'greyscale', or 'randomize'`); + } + } + + bitmapTransformer.renderNewFile(outputPath, parsedBitmap.buffer); + }); } diff --git a/lib/bitmapTransformer.js b/lib/bitmapTransformer.js index 4bb6089..2db1f2e 100644 --- a/lib/bitmapTransformer.js +++ b/lib/bitmapTransformer.js @@ -6,43 +6,9 @@ const bitmapTransformer = module.exports = {}; const BITMAP_FILE_HEADER_SIZE = 14; //in bytes const DIB_HEADER_SIZE = 40; //in bytes -const COLOR_PALETTE_OFFSET = (BITMAP_FILE_HEADER_SIZE + DIB_HEADER_SIZE); //where color palette starts +const COLOR_PALETTE_OFFSET = (BITMAP_FILE_HEADER_SIZE + DIB_HEADER_SIZE); //offset of where color palette starts const PIXEL_TABLE_OFFSET = 10; //gives the offset of where the pixel data starts (i.e. end of color palette) -bitmapTransformer.Main = (inputPath, outputPath, transforms) => { - bitmapTransformer.readFile(inputPath, (data) => { - let parsedBitmap = bitmapTransformer.getColorPalette(data); - - for(let i = 0; i < transforms.length; i++){ - if(transforms[i] === `greyscale`) { - greyscale(parsedBitmap.colorPalette); - } - else if(transforms[i] === `randomize`){ - randomize(parsedBitmap.colorPalette); - } - else if(transforms[i] === `invert`){ - invert(parsedBitmap.colorPalette); - } - else{ - throw new ReferenceError(`the transform operation must be 'invert', 'greyscale', or 'randomize'`); - } - console.log(parsedBitmap.colorPalette, `this is transform ${i}`); - } - - bitmapTransformer.renderNewFile(outputPath, parsedBitmap.buffer); - }); -// console.log(bitmapTransformer.readFile(inputPath), `is what data should be`); -// console.log(bitmapTransformer.readFile(inputPath), `should be the data`); -// bitmapTransformer.readFile(inputPath, bitmapTransformer.getColorPalette); -// console.log(parsedBitmap, `is the bitmap data`); -// let parsedBitmap = bitmapTransformer.getColorPalette(data); -// -// greyscale(parsedBitmap.colorPalette); -// transformType2(parsedBitmap.colorPalette); -// transformType3(parsedBitmap.colorPalette); -// renderNewFile(outputPath, parsedBitmap.buffer); -}; - bitmapTransformer.readFile = (pathOfInput, callback, pathOfOutput, transform) => { fs.readFile(`${__dirname}/../asset/${pathOfInput}`, (error, data) => { @@ -71,7 +37,7 @@ bitmapTransformer.renderNewFile = (outputPath, parsedBitmapData) => { }; -let greyscale = (colorPalette) => { +bitmapTransformer.greyscale = (colorPalette) => { //Luminosity based grayscale: gray value = 0.21 × R + 0.72 × G + 0.07 × B for (let i = 0; i < colorPalette.length; i += 4){ let weightedGrayscaleAvg = (colorPalette[i] * .11) + (colorPalette[i + 1] * .59) + (colorPalette[i + 2] * .3); @@ -81,7 +47,7 @@ let greyscale = (colorPalette) => { } }; -let invert = (colorPalette) => { +bitmapTransformer.invert = (colorPalette) => { //change blue values for (let i = 0; i < colorPalette.length; i += 4){ // try to use .fill instead // colorPalette.fill(255 - colorPalette[i], 0); @@ -97,24 +63,8 @@ let invert = (colorPalette) => { } }; -let randomize = (colorPalette) => { +bitmapTransformer.randomize = (colorPalette) => { for (let i = 0; i < colorPalette.length; i += 4){ colorPalette[i] = Math.floor(Math.random() * 255); } }; - - - - - - - - - - - -// bitmapTransformer.alterImage = (data) => { -// let parsedBitmap = bitmapTransformer.getColorPalette(data); -// let updatedColorPalette = greyscale(parsedBitmap.colorPalette); -// bitmapTransformer.renderNewFile(outputPath, parsedBitmap.buffer); -// } diff --git a/newImage.bmp b/newImage.bmp new file mode 100644 index 0000000000000000000000000000000000000000..dfc8616e54e56e79850202845119a09682ceabb2 GIT binary patch literal 66616 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˘cA#d0~@ zt}#w#C+pP$NS2VE*ceKzU@=?=3(*9EX0cumi4B2#0tyP^0UPEEwwaDcpfR07o+&T0 z{$d6UKrkMTh68kX*zXS!qR{q!t!bnq{(bsaC30N|j={R;-k>`9h8f z%>|0b-@iY67gs}F@%}~#FLrDR|LqR~>}kbf{&u^KJoZ~fn6Q1K6^xYiZjbe>h54%; z;;?~A2nu`>Th=Q;g4Plpli6y6Fkm_XCU){n1SsqRAkCSFMVsY}4QO1hMsNf%08pZ3 zI-B+92<{jK9nU7C>7+jyWBjt$K?Br7kI{T_e>X9OX*6 zRxXfckPk^VX$sa1fjooGV!D`x@z~04>^8gk_CV?VZol2^mF<4J+dl1hd%MGE=9t;; z_M83FYWEC)q6usG0vlitq*<*x5(pAci`5zmD9bq}(MANZgt{=ZSTqE?4a=gjA_HhA zDJgW)q1p2o`UcF*f}yEw_E&+?i27xDWDN6YXpEb!9`Xf zfB@)#(n{Ms1X5i<#Hu>kXM>+WDT^Us^j)9wkwA^i5~2}7Tso@m14 z4U2O^f;SKW;F7J`7W1K#!VFOX7a$Z9UxI}4B49u>iJU1G6CUthHbRGX#Lq!)*am38 z0<+NsR07dlkR_LjB*z8S3L!9{Zjih%8jpqo1Y+2yU~4yfy+Nl-z20p#n=OQ~(X5rJ z(9l9uu~aP-GvzFVAP(}y&3;de?{-i7C1yRbn>1{<&%0+{@U+-UldOQ}dB)Obr~z37 zB}|47Kc2u5#)@*Fost;AR^(Hn3Ofo`GNRaxxQmNO9 zq=j-7`O6`Q@Ib!q8DpNYY(L+N4>1w@METg0J>N?M`v)2F^1qtpk}VP`ZE28>$WVV6pD)F%maJ1qjDP6^+oif_?tX~2RSrh@_f zv@*QNi{S z1rkzXwrtA`vmz!u1BVbwCXlC{x5*SVf(bz-8wmwveLy6Ez#aZ%BAKEKqzwuz%7gh} zMp-l&jwVy;gJFL(9Cn7i0ZFk(P1Nr+DG%En0-(bmS)fUewb8Cu$pUpAr3#&me4f2q z3*q-z$F9S1A_CK}3>%5{XW8#PZ|Ez)tpGpo9&C zz@E5AT44Jjg%S&rVfY9^3R__z8p3DDA0Wsi@kE9YI!X8}c#;ZXIXhHG3cU&>fs$Y% z8DZKVwnzrO(YQw@5C|G|f}q)HbecUnU6p#1bcp3uSWv0(DCbbZ9N)5#kQdrxF~(xS zGnR`XL^{$pXI5POBnSxE1r1g^EK3vnO%wwEAipF~sU`>k5dlgndJ8i;2^87@FdmG?SI1wm&gi-!V1LIG|IQV@Zz$DX+7 zW1l2m1Tt2KHydTSrFSBwk_aV|NqJ4ZOafg^r*rC{;cPsnCYFA|phZLV$ux8LB0y_PEr-%BtnuGyeqLx$v6hl9TEOWW+ HpZ@eOmmqYv literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 9d0a8b8..a1fcd14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -88,8 +88,7 @@ "ansi-escapes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", - "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==", - "dev": true + "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==" }, "ansi-regex": { "version": "2.1.1", @@ -578,7 +577,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", - "dev": true, "requires": { "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", @@ -589,7 +587,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", - "dev": true, "requires": { "color-convert": "1.9.1" } @@ -598,7 +595,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dev": true, "requires": { "has-flag": "2.0.0" } @@ -608,8 +604,7 @@ "chardet": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=" }, "ci-info": { "version": "1.1.2", @@ -627,7 +622,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, "requires": { "restore-cursor": "2.0.0" } @@ -635,8 +629,7 @@ "cli-width": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" }, "cliui": { "version": "2.1.0", @@ -675,7 +668,6 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -683,8 +675,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "combined-stream": { "version": "1.0.5", @@ -902,8 +893,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.9.0", @@ -969,6 +959,30 @@ "strip-json-comments": "2.0.1", "table": "4.0.2", "text-table": "0.2.0" + }, + "dependencies": { + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "3.0.0", + "chalk": "2.3.0", + "cli-cursor": "2.1.0", + "cli-width": "2.2.0", + "external-editor": "2.1.0", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + } + } } }, "eslint-scope": { @@ -1105,7 +1119,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", "integrity": "sha512-E44iT5QVOUJBKij4IIV3uvxuNlbKS38Tw1HiupxEIHPv9qtC2PrDYohbXV5U+1jnfIXttny8gUhj+oZvflFlzA==", - "dev": true, "requires": { "chardet": "0.4.2", "iconv-lite": "0.4.19", @@ -1158,7 +1171,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, "requires": { "escape-string-regexp": "1.0.5" } @@ -2314,8 +2326,7 @@ "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" }, "hawk": { "version": "6.0.2", @@ -2374,8 +2385,7 @@ "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" }, "ignore": { "version": "3.3.7", @@ -2406,10 +2416,9 @@ "dev": true }, "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", - "dev": true, + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-4.0.1.tgz", + "integrity": "sha512-HVU3eq/6DCt5Wkt46N6cooQBLlQy55UcmTGwMOe7XEmuxgdVjNxllS3pxrKDc8+OmNIbu+saotsCfH7m+IxHfg==", "requires": { "ansi-escapes": "3.0.0", "chalk": "2.3.0", @@ -2511,8 +2520,7 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "is-glob": { "version": "2.0.1", @@ -2571,8 +2579,7 @@ "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, "is-resolvable": { "version": "1.0.0", @@ -3235,8 +3242,7 @@ "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", - "dev": true + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" }, "longest": { "version": "1.0.1", @@ -3326,8 +3332,7 @@ "mimic-fn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", - "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", - "dev": true + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=" }, "minimatch": { "version": "3.0.4", @@ -3362,8 +3367,7 @@ "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, "nan": { "version": "2.8.0", @@ -3473,7 +3477,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, "requires": { "mimic-fn": "1.1.0" } @@ -3530,8 +3533,7 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "p-cancelable": { "version": "0.3.0", @@ -3950,7 +3952,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, "requires": { "onetime": "2.0.1", "signal-exit": "3.0.2" @@ -3979,7 +3980,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, "requires": { "is-promise": "2.1.0" } @@ -3987,14 +3987,12 @@ "rx-lite": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=" }, "rx-lite-aggregates": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", - "dev": true, "requires": { "rx-lite": "4.0.8" } @@ -4071,8 +4069,7 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "slash": { "version": "1.0.0", @@ -4170,7 +4167,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", "strip-ansi": "4.0.0" @@ -4195,7 +4191,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, "requires": { "ansi-regex": "3.0.0" }, @@ -4203,8 +4198,7 @@ "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" } } }, @@ -4283,14 +4277,12 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "requires": { "os-tmpdir": "1.0.2" } diff --git a/package.json b/package.json index 971a4df..e0f8002 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,5 @@ "devDependencies": { "eslint": "^4.12.1", "jest": "^21.2.1" - }, - "dependencies": { - "commander": "^2.12.2" } } From 236284e3a7891b009873abd22b3c58030f333174 Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Sun, 3 Dec 2017 18:26:16 -0800 Subject: [PATCH 12/23] finish CLI app for editing BMP files --- __test__/bitmapTransformer.test.js | 22 +++++++++++----------- index.js | 2 ++ output.bmp | Bin 0 -> 66616 bytes 3 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 output.bmp diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index 8da5220..9192fc7 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -5,14 +5,14 @@ const bitmapTransformer = require(`../lib/bitmapTransformer`); const indexJS = require(`../index.js`); const bmpPaths = fs.readdirSync(`${__dirname}/../asset`); -describe(`bitmapTransformer.js`, () => { - test(`greyscale image should be returned for greyscale transform function`, () => { - expect(indexJS.transformImage(bmpPaths[2], `newImage.bmp`, [`invert`, `greyscale`])).not.toBeNull(); - }) - // test(`inverted color image should be returned for inverted color transform function`, () => { - // expect(bitmapTransformer.transform(bmpPaths[2], `transformedHouse.bmp`, `invert`)).not.toBeNull(); - // }) - // test(`randomized color image should be returned for randomized color transform function`, () => { - // expect(bitmapTransformer.transform(bmpPaths[2], `transformedHouse.bmp`, `randomize`)).not.toBeNull(); - // }) -}); +// describe(`bitmapTransformer.js`, () => { +// test(`greyscale image should be returned for greyscale transform function`, () => { +// expect(indexJS.transformImage(bmpPaths[2], `newImage.bmp`, [`invert`, `greyscale`])).not.toBeNull(); +// }) +// // test(`inverted color image should be returned for inverted color transform function`, () => { +// // expect(bitmapTransformer.transform(bmpPaths[2], `transformedHouse.bmp`, `invert`)).not.toBeNull(); +// // }) +// // test(`randomized color image should be returned for randomized color transform function`, () => { +// // expect(bitmapTransformer.transform(bmpPaths[2], `transformedHouse.bmp`, `randomize`)).not.toBeNull(); +// // }) +// }); diff --git a/index.js b/index.js index 8364d30..0ae95c6 100755 --- a/index.js +++ b/index.js @@ -30,3 +30,5 @@ indexJS.transformImage = (inputPath, outputPath, transforms) => { bitmapTransformer.renderNewFile(outputPath, parsedBitmap.buffer); }); } + +indexJS.transformImage(args[0], args[1], args.slice(2)); diff --git a/output.bmp b/output.bmp new file mode 100644 index 0000000000000000000000000000000000000000..dfc8616e54e56e79850202845119a09682ceabb2 GIT binary patch literal 66616 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˘cA#d0~@ zt}#w#C+pP$NS2VE*ceKzU@=?=3(*9EX0cumi4B2#0tyP^0UPEEwwaDcpfR07o+&T0 z{$d6UKrkMTh68kX*zXS!qR{q!t!bnq{(bsaC30N|j={R;-k>`9h8f z%>|0b-@iY67gs}F@%}~#FLrDR|LqR~>}kbf{&u^KJoZ~fn6Q1K6^xYiZjbe>h54%; z;;?~A2nu`>Th=Q;g4Plpli6y6Fkm_XCU){n1SsqRAkCSFMVsY}4QO1hMsNf%08pZ3 zI-B+92<{jK9nU7C>7+jyWBjt$K?Br7kI{T_e>X9OX*6 zRxXfckPk^VX$sa1fjooGV!D`x@z~04>^8gk_CV?VZol2^mF<4J+dl1hd%MGE=9t;; z_M83FYWEC)q6usG0vlitq*<*x5(pAci`5zmD9bq}(MANZgt{=ZSTqE?4a=gjA_HhA zDJgW)q1p2o`UcF*f}yEw_E&+?i27xDWDN6YXpEb!9`Xf zfB@)#(n{Ms1X5i<#Hu>kXM>+WDT^Us^j)9wkwA^i5~2}7Tso@m14 z4U2O^f;SKW;F7J`7W1K#!VFOX7a$Z9UxI}4B49u>iJU1G6CUthHbRGX#Lq!)*am38 z0<+NsR07dlkR_LjB*z8S3L!9{Zjih%8jpqo1Y+2yU~4yfy+Nl-z20p#n=OQ~(X5rJ z(9l9uu~aP-GvzFVAP(}y&3;de?{-i7C1yRbn>1{<&%0+{@U+-UldOQ}dB)Obr~z37 zB}|47Kc2u5#)@*Fost;AR^(Hn3Ofo`GNRaxxQmNO9 zq=j-7`O6`Q@Ib!q8DpNYY(L+N4>1w@METg0J>N?M`v)2F^1qtpk}VP`ZE28>$WVV6pD)F%maJ1qjDP6^+oif_?tX~2RSrh@_f zv@*QNi{S z1rkzXwrtA`vmz!u1BVbwCXlC{x5*SVf(bz-8wmwveLy6Ez#aZ%BAKEKqzwuz%7gh} zMp-l&jwVy;gJFL(9Cn7i0ZFk(P1Nr+DG%En0-(bmS)fUewb8Cu$pUpAr3#&me4f2q z3*q-z$F9S1A_CK}3>%5{XW8#PZ|Ez)tpGpo9&C zz@E5AT44Jjg%S&rVfY9^3R__z8p3DDA0Wsi@kE9YI!X8}c#;ZXIXhHG3cU&>fs$Y% z8DZKVwnzrO(YQw@5C|G|f}q)HbecUnU6p#1bcp3uSWv0(DCbbZ9N)5#kQdrxF~(xS zGnR`XL^{$pXI5POBnSxE1r1g^EK3vnO%wwEAipF~sU`>k5dlgndJ8i;2^87@FdmG?SI1wm&gi-!V1LIG|IQV@Zz$DX+7 zW1l2m1Tt2KHydTSrFSBwk_aV|NqJ4ZOafg^r*rC{;cPsnCYFA|phZLV$ux8LB0y_PEr-%BtnuGyeqLx$v6hl9TEOWW+ HpZ@eOmmqYv literal 0 HcmV?d00001 From 54a07351a3dbe5c00ebbf28df68ff9c8bc563eaa Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Sun, 3 Dec 2017 20:34:54 -0800 Subject: [PATCH 13/23] finish writing tests --- README.md | 67 +---------------------------- __test__/bitmapTransformer.test.js | 35 +++++++++------ index.js | 46 ++++++++++++-------- lib/bitmapTransformer.js | 1 - newImage.bmp | Bin 66616 -> 0 bytes output.bmp | Bin 66616 -> 0 bytes output2.bmp | Bin 0 -> 66616 bytes 7 files changed, 53 insertions(+), 96 deletions(-) delete mode 100644 newImage.bmp delete mode 100644 output.bmp create mode 100644 output2.bmp diff --git a/README.md b/README.md index 05fb99d..34e046b 100644 --- a/README.md +++ b/README.md @@ -1,66 +1 @@ -![CF](https://camo.githubusercontent.com/70edab54bba80edb7493cad3135e9606781cbb6b/687474703a2f2f692e696d6775722e636f6d2f377635415363382e706e67) Lab 04: Bitmap Transformer -=== - -## Submission Instructions -* Work in a fork of this repository -* Work in a branch on your fork -* Write all of your code in a directory named `lab-` + `` **e.g.** `lab-susan` -* Open a pull request to this repository -* Submit on canvas a question and observation, how long you spent, and a link to your pull request - -## Resources -* [Bitmap Specification](https://en.wikipedia.org/wiki/BMP_file_format) -* [Buffer Docs](https://nodejs.org/api/buffer.html) - -## Configuration -Configure the root of your repository with the following files and directories. Thoughfully name and organize any aditional configuration or module files. -* **README.md** - contains documentation -* **.gitignore** - contains a [robust](http://gitignore.io) `.gitignore` file -* **.eslintrc.json** - contains the course linter configuratoin -* **.eslintignore** - contains the course linter ignore configuration -* **package.json** - contains npm package config - * create a `lint` script for running eslint - * create a `test` script for running tests -* **lib/** - contains module definitions -* **\_\_test\_\_/assets/** - contains bitmaps for testing -* **\_\_test\_\_/** - contains unit tests - -## Feature Tasks -For this assignment you will be building a bitmap (`.bmp`) transformer CLI. It will read a bitmap in from the hardrive(assets folder), run one or more color transforms and then write it out to a new file. This project will require the use of node buffers in order to manipulate binary data. Your solution should be composed of small tested modules that solve specific problems. Your modules should be thoughtfully named and well documented. The entry point to your CLI should be an index.js file in the root of your package, and all helper modules should be placed in your lib/ directory. Your bitmap transformer modules should not use any third party libraries. - -#### Minimum Requirements -* The CLI should be architected using best modularization practices -* The CLI should require at least three arguments `input-file-path output-file-path transfrom-name` -* The CLI should support a minimum of three transforms -* The CLI should log useful Error messages if used incorrectly -* The CLI should log a success message on completion - -## Testing -* Use TDD `describe` and `test` methods to define descriptive tests and increase readablity -* Each `test` callback should aim to test a small well defined feature of a function -* Write tests to ensure each function behaves correctly with valid and invalid inputs -* The CLI should be tested without using `child_process` or any equivilant third party libraries - -## Documentation -In your README.md describe the exported values of each module you have defined. Every function description should include it's arity (expected number of paramiters), the expected data for each parameter (data-type and limitations), and it's behavior (for both valid and invalid use). Feel free to write any additional information in your README.md. - -## Tips -You will want to define a strategy for solving the problem before you begin to code. Once you have a strategy defined, you can break it down into steps that can be split into helper modules. Each helper module should solve a small specific problem. The main module should utilize the helper modules to execute your original strategy. - -###### Example Strategy -0. Gather user input (infile, outfile, and transform) -0. Read the input bitmap file using the fs module -0. Parse the bitmap's buffer into object representing a bitmap (using a constructor) -0. Using metadata from the parsed bitmap object to run a transform on the buffer directly (mutate the colors) -0. Write the mutated buffer to the output file path - -###### Transfrom Ideas -* Color Palette Transforms - * Invert - * Randomize - * Greyscale - * Black and White - * Darken or Lighten - * Add or Mutiply a Hue - * Add or Subtract Contrast - +The program alters an image (bmp format) using one of three provided transformation types and saves the new image as a different file. Three parameters are required: the file path of the image to be altered (must be a .bmp format), the desired output file path (with .bmp extension), and the name of the transform desired (invert, randomize, or greyscale). If a parameter is not supplied the program will return an error. If the transformation type is not one of the three provided an error will be thrown and no new image will be created. diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index 9192fc7..142a927 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -3,16 +3,27 @@ const fs = require(`fs`); const bitmapTransformer = require(`../lib/bitmapTransformer`); const indexJS = require(`../index.js`); -const bmpPaths = fs.readdirSync(`${__dirname}/../asset`); -// describe(`bitmapTransformer.js`, () => { -// test(`greyscale image should be returned for greyscale transform function`, () => { -// expect(indexJS.transformImage(bmpPaths[2], `newImage.bmp`, [`invert`, `greyscale`])).not.toBeNull(); -// }) -// // test(`inverted color image should be returned for inverted color transform function`, () => { -// // expect(bitmapTransformer.transform(bmpPaths[2], `transformedHouse.bmp`, `invert`)).not.toBeNull(); -// // }) -// // test(`randomized color image should be returned for randomized color transform function`, () => { -// // expect(bitmapTransformer.transform(bmpPaths[2], `transformedHouse.bmp`, `randomize`)).not.toBeNull(); -// // }) -// }); +describe(`bitmapTransformer.js`, () => { + test(`indexJS.transformImage should return an edited image based on the transform operation provided if no errors are present`, () => { + expect(() => { + indexJS.transformImage(`house.bmp`, `output.bmp`, 'invert'); + }).not.toThrow(); + expect(() => { + indexJS.transformImage(`house.bmp`, `output.bmp`, 'greyscale'); + }).not.toThrow(); + expect(() => { + indexJS.transformImage(`house.bmp`, `output.bmp`, 'randomize'); + }).not.toThrow(); + }); + test(`indexJS.transformImage should return an error if the transform type provided is not one of the three options`, () => { + expect(() => { + indexJS.transformImage(`house.bmp`, `output.bmp`, [blah]); + }).toThrow(); + }); + test(`indexJS.transformImage should return an error if fewer than three parameters are provided`, () => { + expect(() => { + indexJS.transformImage(`house.bmp`, `output.bmp`); + }).toThrow(); + }); +}); diff --git a/index.js b/index.js index 0ae95c6..fad9c31 100755 --- a/index.js +++ b/index.js @@ -9,26 +9,38 @@ const indexJS = module.exports = {}; let args = process.argv.slice(2); indexJS.transformImage = (inputPath, outputPath, transforms) => { + if(!inputPath || !outputPath || transforms.length < 1){ + throw new Error(`Please provide an input path, an output path, and at least one transformation type`); + return; + } bitmapTransformer.readFile(inputPath, (data) => { - let parsedBitmap = bitmapTransformer.getColorPalette(data); - - for(let i = 0; i < transforms.length; i++){ - if(transforms[i] === `greyscale`) { - bitmapTransformer.greyscale(parsedBitmap.colorPalette); - } - else if(transforms[i] === `randomize`){ - bitmapTransformer.randomize(parsedBitmap.colorPalette); - } - else if(transforms[i] === `invert`){ - bitmapTransformer.invert(parsedBitmap.colorPalette); - } - else{ - throw new ReferenceError(`the transform operation must be 'invert', 'greyscale', or 'randomize'`); - } + let parsedBitmap = bitmapTransformer.getColorPalette(data); + + for(let i = 0; i < transforms.length; i++){ + if(transforms[i] === `greyscale`) { + bitmapTransformer.greyscale(parsedBitmap.colorPalette); + } + else if(transforms[i] === `randomize`){ + bitmapTransformer.randomize(parsedBitmap.colorPalette); + } + else if(transforms[i] === `invert`){ + bitmapTransformer.invert(parsedBitmap.colorPalette); } + else{ + throw new ReferenceError(`The transformation type must be 'invert', 'greyscale', or 'randomize'`); + } + } + + bitmapTransformer.renderNewFile(outputPath, parsedBitmap.buffer); + + console.log(`Success! Your new image has been created`); + }); +}; - bitmapTransformer.renderNewFile(outputPath, parsedBitmap.buffer); - }); +() => { + if(args.length < 3){ + throw new Error (`Please provide an input path, an output path, and at least one transformation type`); + } } indexJS.transformImage(args[0], args[1], args.slice(2)); diff --git a/lib/bitmapTransformer.js b/lib/bitmapTransformer.js index 2db1f2e..7db764a 100644 --- a/lib/bitmapTransformer.js +++ b/lib/bitmapTransformer.js @@ -1,7 +1,6 @@ 'use strict'; const fs = require(`fs`); -const bmpPaths = fs.readdirSync(`${__dirname}/../asset`); const bitmapTransformer = module.exports = {}; const BITMAP_FILE_HEADER_SIZE = 14; //in bytes diff --git a/newImage.bmp b/newImage.bmp deleted file mode 100644 index dfc8616e54e56e79850202845119a09682ceabb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66616 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˘cA#d0~@ zt}#w#C+pP$NS2VE*ceKzU@=?=3(*9EX0cumi4B2#0tyP^0UPEEwwaDcpfR07o+&T0 z{$d6UKrkMTh68kX*zXS!qR{q!t!bnq{(bsaC30N|j={R;-k>`9h8f z%>|0b-@iY67gs}F@%}~#FLrDR|LqR~>}kbf{&u^KJoZ~fn6Q1K6^xYiZjbe>h54%; z;;?~A2nu`>Th=Q;g4Plpli6y6Fkm_XCU){n1SsqRAkCSFMVsY}4QO1hMsNf%08pZ3 zI-B+92<{jK9nU7C>7+jyWBjt$K?Br7kI{T_e>X9OX*6 zRxXfckPk^VX$sa1fjooGV!D`x@z~04>^8gk_CV?VZol2^mF<4J+dl1hd%MGE=9t;; z_M83FYWEC)q6usG0vlitq*<*x5(pAci`5zmD9bq}(MANZgt{=ZSTqE?4a=gjA_HhA zDJgW)q1p2o`UcF*f}yEw_E&+?i27xDWDN6YXpEb!9`Xf zfB@)#(n{Ms1X5i<#Hu>kXM>+WDT^Us^j)9wkwA^i5~2}7Tso@m14 z4U2O^f;SKW;F7J`7W1K#!VFOX7a$Z9UxI}4B49u>iJU1G6CUthHbRGX#Lq!)*am38 z0<+NsR07dlkR_LjB*z8S3L!9{Zjih%8jpqo1Y+2yU~4yfy+Nl-z20p#n=OQ~(X5rJ z(9l9uu~aP-GvzFVAP(}y&3;de?{-i7C1yRbn>1{<&%0+{@U+-UldOQ}dB)Obr~z37 zB}|47Kc2u5#)@*Fost;AR^(Hn3Ofo`GNRaxxQmNO9 zq=j-7`O6`Q@Ib!q8DpNYY(L+N4>1w@METg0J>N?M`v)2F^1qtpk}VP`ZE28>$WVV6pD)F%maJ1qjDP6^+oif_?tX~2RSrh@_f zv@*QNi{S z1rkzXwrtA`vmz!u1BVbwCXlC{x5*SVf(bz-8wmwveLy6Ez#aZ%BAKEKqzwuz%7gh} zMp-l&jwVy;gJFL(9Cn7i0ZFk(P1Nr+DG%En0-(bmS)fUewb8Cu$pUpAr3#&me4f2q z3*q-z$F9S1A_CK}3>%5{XW8#PZ|Ez)tpGpo9&C zz@E5AT44Jjg%S&rVfY9^3R__z8p3DDA0Wsi@kE9YI!X8}c#;ZXIXhHG3cU&>fs$Y% z8DZKVwnzrO(YQw@5C|G|f}q)HbecUnU6p#1bcp3uSWv0(DCbbZ9N)5#kQdrxF~(xS zGnR`XL^{$pXI5POBnSxE1r1g^EK3vnO%wwEAipF~sU`>k5dlgndJ8i;2^87@FdmG?SI1wm&gi-!V1LIG|IQV@Zz$DX+7 zW1l2m1Tt2KHydTSrFSBwk_aV|NqJ4ZOafg^r*rC{;cPsnCYFA|phZLV$ux8LB0y_PEr-%BtnuGyeqLx$v6hl9TEOWW+ HpZ@eOmmqYv diff --git a/output.bmp b/output.bmp deleted file mode 100644 index dfc8616e54e56e79850202845119a09682ceabb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66616 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˘cA#d0~@ zt}#w#C+pP$NS2VE*ceKzU@=?=3(*9EX0cumi4B2#0tyP^0UPEEwwaDcpfR07o+&T0 z{$d6UKrkMTh68kX*zXS!qR{q!t!bnq{(bsaC30N|j={R;-k>`9h8f z%>|0b-@iY67gs}F@%}~#FLrDR|LqR~>}kbf{&u^KJoZ~fn6Q1K6^xYiZjbe>h54%; z;;?~A2nu`>Th=Q;g4Plpli6y6Fkm_XCU){n1SsqRAkCSFMVsY}4QO1hMsNf%08pZ3 zI-B+92<{jK9nU7C>7+jyWBjt$K?Br7kI{T_e>X9OX*6 zRxXfckPk^VX$sa1fjooGV!D`x@z~04>^8gk_CV?VZol2^mF<4J+dl1hd%MGE=9t;; z_M83FYWEC)q6usG0vlitq*<*x5(pAci`5zmD9bq}(MANZgt{=ZSTqE?4a=gjA_HhA zDJgW)q1p2o`UcF*f}yEw_E&+?i27xDWDN6YXpEb!9`Xf zfB@)#(n{Ms1X5i<#Hu>kXM>+WDT^Us^j)9wkwA^i5~2}7Tso@m14 z4U2O^f;SKW;F7J`7W1K#!VFOX7a$Z9UxI}4B49u>iJU1G6CUthHbRGX#Lq!)*am38 z0<+NsR07dlkR_LjB*z8S3L!9{Zjih%8jpqo1Y+2yU~4yfy+Nl-z20p#n=OQ~(X5rJ z(9l9uu~aP-GvzFVAP(}y&3;de?{-i7C1yRbn>1{<&%0+{@U+-UldOQ}dB)Obr~z37 zB}|47Kc2u5#)@*Fost;AR^(Hn3Ofo`GNRaxxQmNO9 zq=j-7`O6`Q@Ib!q8DpNYY(L+N4>1w@METg0J>N?M`v)2F^1qtpk}VP`ZE28>$WVV6pD)F%maJ1qjDP6^+oif_?tX~2RSrh@_f zv@*QNi{S z1rkzXwrtA`vmz!u1BVbwCXlC{x5*SVf(bz-8wmwveLy6Ez#aZ%BAKEKqzwuz%7gh} zMp-l&jwVy;gJFL(9Cn7i0ZFk(P1Nr+DG%En0-(bmS)fUewb8Cu$pUpAr3#&me4f2q z3*q-z$F9S1A_CK}3>%5{XW8#PZ|Ez)tpGpo9&C zz@E5AT44Jjg%S&rVfY9^3R__z8p3DDA0Wsi@kE9YI!X8}c#;ZXIXhHG3cU&>fs$Y% z8DZKVwnzrO(YQw@5C|G|f}q)HbecUnU6p#1bcp3uSWv0(DCbbZ9N)5#kQdrxF~(xS zGnR`XL^{$pXI5POBnSxE1r1g^EK3vnO%wwEAipF~sU`>k5dlgndJ8i;2^87@FdmG?SI1wm&gi-!V1LIG|IQV@Zz$DX+7 zW1l2m1Tt2KHydTSrFSBwk_aV|NqJ4ZOafg^r*rC{;cPsnCYFA|phZLV$ux8LB0y_PEr-%BtnuGyeqLx$v6hl9TEOWW+ HpZ@eOmmqYv diff --git a/output2.bmp b/output2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7041c3a7c4c2e52dcff36259e60bae3c669006b4 GIT binary patch literal 66616 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�qV+5dsV+UuoBE8rN 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 literal 0 HcmV?d00001 From 2ce073519a7e42bb78bd1a2f7f9f8b24a2a5f78e Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Wed, 6 Dec 2017 13:05:03 -0800 Subject: [PATCH 14/23] fix linter errors, remove unnecessary variables, and correct number of arguments provided to bitmaptransformer.readfile --- .eslintignore | 2 -- .eslintrc => .eslintrc.json | 2 -- __test__/bitmapTransformer.test.js | 6 +++--- index.js | 7 ++----- lib/bitmapTransformer.js | 2 +- 5 files changed, 6 insertions(+), 13 deletions(-) rename .eslintrc => .eslintrc.json (92%) diff --git a/.eslintignore b/.eslintignore index 9ec4b48..05b1cf3 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,5 +1,3 @@ -# Created by Vinicio Vladimir Sanchez Trejo - **/node_modules/* **/vendor/* **/*.min.js diff --git a/.eslintrc b/.eslintrc.json similarity index 92% rename from .eslintrc rename to .eslintrc.json index 3b3fa9d..840d336 100644 --- a/.eslintrc +++ b/.eslintrc.json @@ -1,5 +1,3 @@ -# Created by Vinicio Vladimir Sanchez Trejo - { "env": { "browser": true, diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index 142a927..42e8302 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -1,7 +1,7 @@ 'use strict'; -const fs = require(`fs`); -const bitmapTransformer = require(`../lib/bitmapTransformer`); +// const fs = require(`fs`); +// const bitmapTransformer = require(`../lib/bitmapTransformer`); const indexJS = require(`../index.js`); describe(`bitmapTransformer.js`, () => { @@ -18,7 +18,7 @@ describe(`bitmapTransformer.js`, () => { }); test(`indexJS.transformImage should return an error if the transform type provided is not one of the three options`, () => { expect(() => { - indexJS.transformImage(`house.bmp`, `output.bmp`, [blah]); + indexJS.transformImage(`house.bmp`, `output.bmp`, ['blah']); }).toThrow(); }); test(`indexJS.transformImage should return an error if fewer than three parameters are provided`, () => { diff --git a/index.js b/index.js index fad9c31..077e6e1 100755 --- a/index.js +++ b/index.js @@ -1,9 +1,6 @@ -#!/usr/bin/env node - 'use strict'; const bitmapTransformer = require(`./lib/bitmapTransformer`); -const fs = require(`fs`); const indexJS = module.exports = {}; let args = process.argv.slice(2); @@ -11,8 +8,8 @@ let args = process.argv.slice(2); indexJS.transformImage = (inputPath, outputPath, transforms) => { if(!inputPath || !outputPath || transforms.length < 1){ throw new Error(`Please provide an input path, an output path, and at least one transformation type`); - return; } + bitmapTransformer.readFile(inputPath, (data) => { let parsedBitmap = bitmapTransformer.getColorPalette(data); @@ -41,6 +38,6 @@ indexJS.transformImage = (inputPath, outputPath, transforms) => { if(args.length < 3){ throw new Error (`Please provide an input path, an output path, and at least one transformation type`); } -} +}; indexJS.transformImage(args[0], args[1], args.slice(2)); diff --git a/lib/bitmapTransformer.js b/lib/bitmapTransformer.js index 7db764a..9b70ea5 100644 --- a/lib/bitmapTransformer.js +++ b/lib/bitmapTransformer.js @@ -8,7 +8,7 @@ const DIB_HEADER_SIZE = 40; //in bytes const COLOR_PALETTE_OFFSET = (BITMAP_FILE_HEADER_SIZE + DIB_HEADER_SIZE); //offset of where color palette starts const PIXEL_TABLE_OFFSET = 10; //gives the offset of where the pixel data starts (i.e. end of color palette) -bitmapTransformer.readFile = (pathOfInput, callback, pathOfOutput, transform) => { +bitmapTransformer.readFile = (pathOfInput, callback) => { fs.readFile(`${__dirname}/../asset/${pathOfInput}`, (error, data) => { if (error) From e4c9ede7f7af2850f18ee1d5fc6178b7f6c18816 Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Wed, 6 Dec 2017 14:54:58 -0800 Subject: [PATCH 15/23] still trying to fix bug testing bitmap function --- __test__/bitmapTransformer.test.js | 4 +--- index.js | 6 +++--- output2.bmp | Bin 66616 -> 0 bytes 3 files changed, 4 insertions(+), 6 deletions(-) delete mode 100644 output2.bmp diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index 42e8302..81f24e0 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -1,7 +1,5 @@ 'use strict'; -// const fs = require(`fs`); -// const bitmapTransformer = require(`../lib/bitmapTransformer`); const indexJS = require(`../index.js`); describe(`bitmapTransformer.js`, () => { @@ -18,7 +16,7 @@ describe(`bitmapTransformer.js`, () => { }); test(`indexJS.transformImage should return an error if the transform type provided is not one of the three options`, () => { expect(() => { - indexJS.transformImage(`house.bmp`, `output.bmp`, ['blah']); + indexJS.transformImage(`house.bmp`, `output.bmp`, [blah]); }).toThrow(); }); test(`indexJS.transformImage should return an error if fewer than three parameters are provided`, () => { diff --git a/index.js b/index.js index 077e6e1..bd0a373 100755 --- a/index.js +++ b/index.js @@ -6,11 +6,11 @@ const indexJS = module.exports = {}; let args = process.argv.slice(2); indexJS.transformImage = (inputPath, outputPath, transforms) => { - if(!inputPath || !outputPath || transforms.length < 1){ + if(!inputPath || !outputPath || transforms.length < 1){ //this + calling the function at the end is what's breaking my tests throw new Error(`Please provide an input path, an output path, and at least one transformation type`); } - bitmapTransformer.readFile(inputPath, (data) => { + bitmapTransformer.readFile(inputPath, (data) => { //for this function to run correctly transforms must have at least on argument let parsedBitmap = bitmapTransformer.getColorPalette(data); for(let i = 0; i < transforms.length; i++){ @@ -40,4 +40,4 @@ indexJS.transformImage = (inputPath, outputPath, transforms) => { } }; -indexJS.transformImage(args[0], args[1], args.slice(2)); +indexJS.transformImage(args[0], args[1], args.slice(2)); //this runs even for my tests, and breaks them because I get an error that I'm not passing in any arguments diff --git a/output2.bmp b/output2.bmp deleted file mode 100644 index 7041c3a7c4c2e52dcff36259e60bae3c669006b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66616 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�qV+5dsV+UuoBE8rN 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 From 627fa45ea9fbfd772555c5b32930aac2154e5668 Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Fri, 8 Dec 2017 14:47:44 -0800 Subject: [PATCH 16/23] trying to get args to reflect the array passed in through test file --- __test__/bitmapTransformer.test.js | 18 +++++++++++++----- index.js | 16 ++++++---------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index 81f24e0..aad81da 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -2,26 +2,34 @@ const indexJS = require(`../index.js`); +let args = [] || process.argv.slice(2); +console.log(args, `are the args in test`); + describe(`bitmapTransformer.js`, () => { test(`indexJS.transformImage should return an edited image based on the transform operation provided if no errors are present`, () => { expect(() => { - indexJS.transformImage(`house.bmp`, `output.bmp`, 'invert'); + args = [`house.bmp`,`invert.bmp`,`invert`]; + indexJS.transformImage(...args); }).not.toThrow(); expect(() => { - indexJS.transformImage(`house.bmp`, `output.bmp`, 'greyscale'); + args = [`house.bmp`,`greyscale.bmp`,`greyscale`]; + indexJS.transformImage(...args); }).not.toThrow(); expect(() => { - indexJS.transformImage(`house.bmp`, `output.bmp`, 'randomize'); + args = [`house.bmp`,`randomize.bmp`,`randomize`]; + indexJS.transformImage(...args); }).not.toThrow(); }); test(`indexJS.transformImage should return an error if the transform type provided is not one of the three options`, () => { expect(() => { - indexJS.transformImage(`house.bmp`, `output.bmp`, [blah]); + args = [`house.bmp`,`randomize.bmp`,[blah]]; + indexJS.transformImage(...args); }).toThrow(); }); test(`indexJS.transformImage should return an error if fewer than three parameters are provided`, () => { expect(() => { - indexJS.transformImage(`house.bmp`, `output.bmp`); + args = [`house.bmp`,`randomize.bmp`]; + indexJS.transformImage(...args); }).toThrow(); }); }); diff --git a/index.js b/index.js index bd0a373..a5cf523 100755 --- a/index.js +++ b/index.js @@ -3,14 +3,16 @@ const bitmapTransformer = require(`./lib/bitmapTransformer`); const indexJS = module.exports = {}; -let args = process.argv.slice(2); +indexJS.args = process.argv.slice(2); +// console.log(process.argv, `is argv`); +console.log(indexJS.args, `are the args provided in index`); indexJS.transformImage = (inputPath, outputPath, transforms) => { - if(!inputPath || !outputPath || transforms.length < 1){ //this + calling the function at the end is what's breaking my tests + if(!inputPath || !outputPath || transforms.length < 1){ throw new Error(`Please provide an input path, an output path, and at least one transformation type`); } - bitmapTransformer.readFile(inputPath, (data) => { //for this function to run correctly transforms must have at least on argument + bitmapTransformer.readFile(inputPath, (data) => { let parsedBitmap = bitmapTransformer.getColorPalette(data); for(let i = 0; i < transforms.length; i++){ @@ -34,10 +36,4 @@ indexJS.transformImage = (inputPath, outputPath, transforms) => { }); }; -() => { - if(args.length < 3){ - throw new Error (`Please provide an input path, an output path, and at least one transformation type`); - } -}; - -indexJS.transformImage(args[0], args[1], args.slice(2)); //this runs even for my tests, and breaks them because I get an error that I'm not passing in any arguments +// indexJS.transformImage(args[0], args[1], args.slice(2)); From e4bb58c81d1a90abc47f987c98e7c180fabe6ecf Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Fri, 8 Dec 2017 15:20:10 -0800 Subject: [PATCH 17/23] assign initial args value in test file then overwrite it with correct arguments in each test; still doesn't get tests to pass --- __test__/bitmapTransformer.test.js | 5 +++-- index.js | 4 +--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index aad81da..cdb6281 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -2,13 +2,14 @@ const indexJS = require(`../index.js`); -let args = [] || process.argv.slice(2); -console.log(args, `are the args in test`); +let args = process.argv; +console.log(args, `are the original args`); describe(`bitmapTransformer.js`, () => { test(`indexJS.transformImage should return an edited image based on the transform operation provided if no errors are present`, () => { expect(() => { args = [`house.bmp`,`invert.bmp`,`invert`]; + console.log(args, `are the changed args`); indexJS.transformImage(...args); }).not.toThrow(); expect(() => { diff --git a/index.js b/index.js index a5cf523..7c64a40 100755 --- a/index.js +++ b/index.js @@ -3,9 +3,7 @@ const bitmapTransformer = require(`./lib/bitmapTransformer`); const indexJS = module.exports = {}; -indexJS.args = process.argv.slice(2); -// console.log(process.argv, `is argv`); -console.log(indexJS.args, `are the args provided in index`); +let args = process.argv.slice(2); indexJS.transformImage = (inputPath, outputPath, transforms) => { if(!inputPath || !outputPath || transforms.length < 1){ From 5007af7d400d843ab0f1685c4a6112ea851ff799 Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Tue, 12 Dec 2017 17:26:25 -0800 Subject: [PATCH 18/23] trying to fix bug testing transformImage --- __test__/bitmapTransformer.test.js | 4 ++-- index.js | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index cdb6281..c203311 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -2,14 +2,14 @@ const indexJS = require(`../index.js`); -let args = process.argv; +let args; console.log(args, `are the original args`); describe(`bitmapTransformer.js`, () => { test(`indexJS.transformImage should return an edited image based on the transform operation provided if no errors are present`, () => { expect(() => { args = [`house.bmp`,`invert.bmp`,`invert`]; - console.log(args, `are the changed args`); + // console.log(args, `are the changed args`); indexJS.transformImage(...args); }).not.toThrow(); expect(() => { diff --git a/index.js b/index.js index 7c64a40..2c99972 100755 --- a/index.js +++ b/index.js @@ -6,6 +6,10 @@ const indexJS = module.exports = {}; let args = process.argv.slice(2); indexJS.transformImage = (inputPath, outputPath, transforms) => { + console.log(inputPath, `is the input path`); + console.log(outputPath, `is the output path`); + console.log(transforms, `is/are the transforms`); + if(!inputPath || !outputPath || transforms.length < 1){ throw new Error(`Please provide an input path, an output path, and at least one transformation type`); } @@ -34,4 +38,4 @@ indexJS.transformImage = (inputPath, outputPath, transforms) => { }); }; -// indexJS.transformImage(args[0], args[1], args.slice(2)); +indexJS.transformImage(args[0], args[1], args.slice(2)); From 64839063f141661e48ac57bce515f784d843d12e Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Tue, 12 Dec 2017 17:29:12 -0800 Subject: [PATCH 19/23] remove console log --- __test__/bitmapTransformer.test.js | 1 - 1 file changed, 1 deletion(-) diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index c203311..c348559 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -9,7 +9,6 @@ describe(`bitmapTransformer.js`, () => { test(`indexJS.transformImage should return an edited image based on the transform operation provided if no errors are present`, () => { expect(() => { args = [`house.bmp`,`invert.bmp`,`invert`]; - // console.log(args, `are the changed args`); indexJS.transformImage(...args); }).not.toThrow(); expect(() => { From ed6705467acc8df7095bb898ab8e51240be9fc67 Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Tue, 12 Dec 2017 17:52:15 -0800 Subject: [PATCH 20/23] refactoring code to separate index.js and imageTransformer function --- __test__/bitmapTransformer.test.js | 3 +-- index.js | 34 +--------------------------- lib/imageTransformer.js | 36 ++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 35 deletions(-) create mode 100644 lib/imageTransformer.js diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index c348559..49709cc 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -1,9 +1,8 @@ 'use strict'; -const indexJS = require(`../index.js`); +const imageTransformer = require(`../imageTransformer.js`); let args; -console.log(args, `are the original args`); describe(`bitmapTransformer.js`, () => { test(`indexJS.transformImage should return an edited image based on the transform operation provided if no errors are present`, () => { diff --git a/index.js b/index.js index 2c99972..5a82926 100755 --- a/index.js +++ b/index.js @@ -1,41 +1,9 @@ 'use strict'; const bitmapTransformer = require(`./lib/bitmapTransformer`); +const imageTransformer = require(`./lib/imageTransformer`); const indexJS = module.exports = {}; let args = process.argv.slice(2); -indexJS.transformImage = (inputPath, outputPath, transforms) => { - console.log(inputPath, `is the input path`); - console.log(outputPath, `is the output path`); - console.log(transforms, `is/are the transforms`); - - if(!inputPath || !outputPath || transforms.length < 1){ - throw new Error(`Please provide an input path, an output path, and at least one transformation type`); - } - - bitmapTransformer.readFile(inputPath, (data) => { - let parsedBitmap = bitmapTransformer.getColorPalette(data); - - for(let i = 0; i < transforms.length; i++){ - if(transforms[i] === `greyscale`) { - bitmapTransformer.greyscale(parsedBitmap.colorPalette); - } - else if(transforms[i] === `randomize`){ - bitmapTransformer.randomize(parsedBitmap.colorPalette); - } - else if(transforms[i] === `invert`){ - bitmapTransformer.invert(parsedBitmap.colorPalette); - } - else{ - throw new ReferenceError(`The transformation type must be 'invert', 'greyscale', or 'randomize'`); - } - } - - bitmapTransformer.renderNewFile(outputPath, parsedBitmap.buffer); - - console.log(`Success! Your new image has been created`); - }); -}; - indexJS.transformImage(args[0], args[1], args.slice(2)); diff --git a/lib/imageTransformer.js b/lib/imageTransformer.js new file mode 100644 index 0000000..a1f599c --- /dev/null +++ b/lib/imageTransformer.js @@ -0,0 +1,36 @@ +'use strict'; + +const bitmapTransformer = require(`./lib/bitmapTransformer`); + +indexJS.transformImage = (inputPath, outputPath, transforms) => { + console.log(inputPath, `is the input path`); + console.log(outputPath, `is the output path`); + console.log(transforms, `is/are the transforms`); + + if(!inputPath || !outputPath || transforms.length < 1){ + throw new Error(`Please provide an input path, an output path, and at least one transformation type`); + } + + bitmapTransformer.readFile(inputPath, (data) => { + let parsedBitmap = bitmapTransformer.getColorPalette(data); + + for(let i = 0; i < transforms.length; i++){ + if(transforms[i] === `greyscale`) { + bitmapTransformer.greyscale(parsedBitmap.colorPalette); + } + else if(transforms[i] === `randomize`){ + bitmapTransformer.randomize(parsedBitmap.colorPalette); + } + else if(transforms[i] === `invert`){ + bitmapTransformer.invert(parsedBitmap.colorPalette); + } + else{ + throw new ReferenceError(`The transformation type must be 'invert', 'greyscale', or 'randomize'`); + } + } + + bitmapTransformer.renderNewFile(outputPath, parsedBitmap.buffer); + + console.log(`Success! Your new image has been created`); + }); +}; From 02a491c1c6aaa72cd187bb9f250cdd051d32f89e Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Tue, 12 Dec 2017 17:59:02 -0800 Subject: [PATCH 21/23] successfully separate image transform function from function call; tests pass but don't produce a new bitmap image --- __test__/bitmapTransformer.test.js | 18 +++++++++--------- index.js | 2 +- lib/imageTransformer.js | 9 +++------ 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/__test__/bitmapTransformer.test.js b/__test__/bitmapTransformer.test.js index 49709cc..da7ffc8 100644 --- a/__test__/bitmapTransformer.test.js +++ b/__test__/bitmapTransformer.test.js @@ -1,34 +1,34 @@ 'use strict'; -const imageTransformer = require(`../imageTransformer.js`); +const imageTransformer = require(`../lib/imageTransformer.js`); let args; describe(`bitmapTransformer.js`, () => { - test(`indexJS.transformImage should return an edited image based on the transform operation provided if no errors are present`, () => { + test(`imageTransformer.transformImage should return an edited image based on the transform operation provided if no errors are present`, () => { expect(() => { args = [`house.bmp`,`invert.bmp`,`invert`]; - indexJS.transformImage(...args); + imageTransformer.transformImage(...args); }).not.toThrow(); expect(() => { args = [`house.bmp`,`greyscale.bmp`,`greyscale`]; - indexJS.transformImage(...args); + imageTransformer.transformImage(...args); }).not.toThrow(); expect(() => { args = [`house.bmp`,`randomize.bmp`,`randomize`]; - indexJS.transformImage(...args); + imageTransformer.transformImage(...args); }).not.toThrow(); }); - test(`indexJS.transformImage should return an error if the transform type provided is not one of the three options`, () => { + test(`imageTransformer.transformImage should return an error if the transform type provided is not one of the three options`, () => { expect(() => { args = [`house.bmp`,`randomize.bmp`,[blah]]; - indexJS.transformImage(...args); + imageTransformer.transformImage(...args); }).toThrow(); }); - test(`indexJS.transformImage should return an error if fewer than three parameters are provided`, () => { + test(`imageTransformer.transformImage should return an error if fewer than three parameters are provided`, () => { expect(() => { args = [`house.bmp`,`randomize.bmp`]; - indexJS.transformImage(...args); + imageTransformer.transformImage(...args); }).toThrow(); }); }); diff --git a/index.js b/index.js index 5a82926..05b9d60 100755 --- a/index.js +++ b/index.js @@ -6,4 +6,4 @@ const indexJS = module.exports = {}; let args = process.argv.slice(2); -indexJS.transformImage(args[0], args[1], args.slice(2)); +imageTransformer.transformImage(args[0], args[1], args.slice(2)); diff --git a/lib/imageTransformer.js b/lib/imageTransformer.js index a1f599c..4d25d4d 100644 --- a/lib/imageTransformer.js +++ b/lib/imageTransformer.js @@ -1,12 +1,9 @@ 'use strict'; -const bitmapTransformer = require(`./lib/bitmapTransformer`); - -indexJS.transformImage = (inputPath, outputPath, transforms) => { - console.log(inputPath, `is the input path`); - console.log(outputPath, `is the output path`); - console.log(transforms, `is/are the transforms`); +const bitmapTransformer = require(`./bitmapTransformer`); +const imageTransformer = module.exports = {}; +imageTransformer.transformImage = (inputPath, outputPath, transforms) => { if(!inputPath || !outputPath || transforms.length < 1){ throw new Error(`Please provide an input path, an output path, and at least one transformation type`); } From 0a786291c8dcd3e0bd9cb5dcdd73fde1478cdfc5 Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Sat, 16 Dec 2017 08:31:35 -0800 Subject: [PATCH 22/23] fixing file structure so everything is in a lab-shannon folder --- .eslintignore => lab-shannon/.eslintignore | 0 .eslintrc.json => lab-shannon/.eslintrc.json | 0 README.md => lab-shannon/README.md | 0 .../__test__}/bitmapTransformer.test.js | 0 {asset => lab-shannon/asset}/bitmap.bmp | Bin {asset => lab-shannon/asset}/finger-print.bmp | Bin {asset => lab-shannon/asset}/house.bmp | Bin {asset => lab-shannon/asset}/non-palette-bitmap.bmp | Bin index.js => lab-shannon/index.js | 0 {lib => lab-shannon/lib}/bitmapTransformer.js | 0 {lib => lab-shannon/lib}/imageTransformer.js | 0 package.json => lab-shannon/package.json | 0 12 files changed, 0 insertions(+), 0 deletions(-) rename .eslintignore => lab-shannon/.eslintignore (100%) rename .eslintrc.json => lab-shannon/.eslintrc.json (100%) rename README.md => lab-shannon/README.md (100%) rename {__test__ => lab-shannon/__test__}/bitmapTransformer.test.js (100%) rename {asset => lab-shannon/asset}/bitmap.bmp (100%) rename {asset => lab-shannon/asset}/finger-print.bmp (100%) rename {asset => lab-shannon/asset}/house.bmp (100%) rename {asset => lab-shannon/asset}/non-palette-bitmap.bmp (100%) rename index.js => lab-shannon/index.js (100%) rename {lib => lab-shannon/lib}/bitmapTransformer.js (100%) rename {lib => lab-shannon/lib}/imageTransformer.js (100%) rename package.json => lab-shannon/package.json (100%) diff --git a/.eslintignore b/lab-shannon/.eslintignore similarity index 100% rename from .eslintignore rename to lab-shannon/.eslintignore diff --git a/.eslintrc.json b/lab-shannon/.eslintrc.json similarity index 100% rename from .eslintrc.json rename to lab-shannon/.eslintrc.json diff --git a/README.md b/lab-shannon/README.md similarity index 100% rename from README.md rename to lab-shannon/README.md diff --git a/__test__/bitmapTransformer.test.js b/lab-shannon/__test__/bitmapTransformer.test.js similarity index 100% rename from __test__/bitmapTransformer.test.js rename to lab-shannon/__test__/bitmapTransformer.test.js diff --git a/asset/bitmap.bmp b/lab-shannon/asset/bitmap.bmp similarity index 100% rename from asset/bitmap.bmp rename to lab-shannon/asset/bitmap.bmp diff --git a/asset/finger-print.bmp b/lab-shannon/asset/finger-print.bmp similarity index 100% rename from asset/finger-print.bmp rename to lab-shannon/asset/finger-print.bmp diff --git a/asset/house.bmp b/lab-shannon/asset/house.bmp similarity index 100% rename from asset/house.bmp rename to lab-shannon/asset/house.bmp diff --git a/asset/non-palette-bitmap.bmp b/lab-shannon/asset/non-palette-bitmap.bmp similarity index 100% rename from asset/non-palette-bitmap.bmp rename to lab-shannon/asset/non-palette-bitmap.bmp diff --git a/index.js b/lab-shannon/index.js similarity index 100% rename from index.js rename to lab-shannon/index.js diff --git a/lib/bitmapTransformer.js b/lab-shannon/lib/bitmapTransformer.js similarity index 100% rename from lib/bitmapTransformer.js rename to lab-shannon/lib/bitmapTransformer.js diff --git a/lib/imageTransformer.js b/lab-shannon/lib/imageTransformer.js similarity index 100% rename from lib/imageTransformer.js rename to lab-shannon/lib/imageTransformer.js diff --git a/package.json b/lab-shannon/package.json similarity index 100% rename from package.json rename to lab-shannon/package.json From 178854cacdbb37d665790d33f6fa8e210f6672e9 Mon Sep 17 00:00:00 2001 From: Shannon Dillon Date: Sat, 16 Dec 2017 08:35:58 -0800 Subject: [PATCH 23/23] undo accidental overwrite of master README file --- README.md | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..bc5e30a --- /dev/null +++ b/README.md @@ -0,0 +1,65 @@ +![CF](https://camo.githubusercontent.com/70edab54bba80edb7493cad3135e9606781cbb6b/687474703a2f2f692e696d6775722e636f6d2f377635415363382e706e67) Lab 04: Bitmap Transformer +=== + +## Submission Instructions +* Work in a fork of this repository +* Work in a branch on your fork +* Write all of your code in a directory named `lab-` + `` **e.g.** `lab-susan` +* Open a pull request to this repository +* Submit on canvas a question and observation, how long you spent, and a link to your pull request + +## Resources +* [Bitmap Specification](https://en.wikipedia.org/wiki/BMP_file_format) +* [Buffer Docs](https://nodejs.org/api/buffer.html) + +## Configuration +Configure the root of your repository with the following files and directories. Thoughfully name and organize any aditional configuration or module files. +* **README.md** - contains documentation +* **.gitignore** - contains a [robust](http://gitignore.io) `.gitignore` file +* **.eslintrc.json** - contains the course linter configuratoin +* **.eslintignore** - contains the course linter ignore configuration +* **package.json** - contains npm package config + * create a `lint` script for running eslint + * create a `test` script for running tests +* **lib/** - contains module definitions +* **\_\_test\_\_/assets/** - contains bitmaps for testing +* **\_\_test\_\_/** - contains unit tests + +## Feature Tasks +For this assignment you will be building a bitmap (`.bmp`) transformer CLI. It will read a bitmap in from the hardrive(assets folder), run one or more color transforms and then write it out to a new file. This project will require the use of node buffers in order to manipulate binary data. Your solution should be composed of small tested modules that solve specific problems. Your modules should be thoughtfully named and well documented. The entry point to your CLI should be an index.js file in the root of your package, and all helper modules should be placed in your lib/ directory. Your bitmap transformer modules should not use any third party libraries. + +#### Minimum Requirements +* The CLI should be architected using best modularization practices +* The CLI should require at least three arguments `input-file-path output-file-path transfrom-name` +* The CLI should support a minimum of three transforms +* The CLI should log useful Error messages if used incorrectly +* The CLI should log a success message on completion + +## Testing +* Use TDD `describe` and `test` methods to define descriptive tests and increase readability +* Each `test` callback should aim to test a small well defined feature of a function +* Write tests to ensure each function behaves correctly with valid and invalid inputs +* The CLI should be tested without using `child_process` or any equivilant third party libraries + +## Documentation +In your README.md describe the exported values of each module you have defined. Every function description should include it's arity (expected number of parameters), the expected data for each parameter (data-type and limitations), and it's behavior (for both valid and invalid use). Feel free to write any additional information in your README.md. + +## Tips +You will want to define a strategy for solving the problem before you begin to code. Once you have a strategy defined, you can break it down into steps that can be split into helper modules. Each helper module should solve a small specific problem. The main module should utilize the helper modules to execute your original strategy. + +###### Example Strategy +0. Gather user input (infile, outfile, and transform) +0. Read the input bitmap file using the fs module +0. Parse the bitmap's buffer into object representing a bitmap (using a constructor) +0. Using metadata from the parsed bitmap object to run a transform on the buffer directly (mutate the colors) +0. Write the mutated buffer to the output file path + +###### Transfrom Ideas +* Color Palette Transforms + * Invert + * Randomize + * Greyscale + * Black and White + * Darken or Lighten + * Add or Mutiply a Hue + * Add or Subtract Contrast