From 1f79e4f3e0e422e8a1fc511665fddc42e6a40c41 Mon Sep 17 00:00:00 2001 From: Brian Mock Date: Sun, 7 Jul 2019 11:49:13 -0700 Subject: [PATCH 1/4] try to test headless chrome --- .travis.yml | 6 + karma.conf.js | 60 + package-lock.json | 4704 +++++++++++++++++------- package.json | 8 +- test/core/alt.test.js | 2 +- test/core/atLeast.test.js | 2 +- test/core/atMost.test.js | 2 +- test/core/bitSeqObj.test.js | 2 +- test/core/chain.test.js | 6 +- test/core/constructor.test.js | 6 +- test/core/contramap.test.js | 12 +- test/core/createLanguage.test.js | 14 +- test/core/custom.test.js | 8 +- test/core/desc.test.js | 8 +- test/core/empty.test.js | 2 +- test/core/eof.test.js | 2 +- test/core/fail.test.js | 6 +- test/core/fallback.test.js | 4 +- test/core/formatError.test.js | 30 +- test/core/index.test.js | 2 +- test/core/isParser.test.js | 2 +- test/core/lookahead.test.js | 18 +- test/core/makeFailure.test.js | 6 +- test/core/makeSuccess.test.js | 2 +- test/core/many.test.js | 8 +- test/core/map.test.js | 6 +- test/core/mark.test.js | 2 +- test/core/node.test.js | 2 +- test/core/noneOf.test.js | 4 +- test/core/notFollowedBy.test.js | 8 +- test/core/oneOf.test.js | 4 +- test/core/or.test.js | 18 +- test/core/parse.test.js | 6 +- test/core/promap.test.js | 8 +- test/core/range.test.js | 8 +- test/core/regexp.test.js | 10 +- test/core/result.test.js | 4 +- test/core/sepBy.test.js | 8 +- test/core/seq.test.js | 2 +- test/core/seqMap.test.js | 12 +- test/core/seqObj.test.js | 16 +- test/core/skip.test.js | 6 +- test/core/string.test.js | 2 +- test/core/takeWhile.test.js | 2 +- test/core/test.test.js | 8 +- test/core/then.test.js | 6 +- test/core/thru.test.js | 4 +- test/core/tie.test.js | 6 +- test/core/tieWith.test.js | 8 +- test/core/times.test.js | 12 +- test/core/trim.test.js | 4 +- test/core/tryParse.test.js | 12 +- test/core/wrap.test.js | 4 +- test/laws/applicative.test.js | 8 +- test/laws/apply.test.js | 4 +- test/laws/chain.test.js | 4 +- test/laws/fantasy-land-aliases.test.js | 8 +- test/laws/functor.test.js | 6 +- test/laws/monad.test.js | 6 +- test/laws/semigroup.test.js | 4 +- test/setup.js | 2 +- 61 files changed, 3736 insertions(+), 1420 deletions(-) create mode 100644 karma.conf.js diff --git a/.travis.yml b/.travis.yml index 9f75fbe..5c24297 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,5 +6,11 @@ node_js: - "8" - "7" - "6" +test: + - npm test + - npm run build + - npm run test:chrome after_success: npm run coverage cache: npm +addons: + chrome: stable diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000..c75bf4f --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,60 @@ +// Karma configuration +// Generated on Sun Jul 07 2019 10:17:21 GMT-0800 (GMT-08:00) + +module.exports = config => { + config.set({ + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: "", + + // frameworks to use + // available frameworks: https://npmjs.org/browse/keyword/karma-adapter + frameworks: ["mocha", "chai"], + + // list of files / patterns to load in the browser + files: ["build/parsimmon.umd.min.js", "test/**/*.js"], + + // list of files / patterns to exclude + exclude: [], + + // preprocess matching files before serving them to the browser + // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor + preprocessors: {}, + + // test results reporter to use + // possible values: 'dots', 'progress' + // available reporters: https://npmjs.org/browse/keyword/karma-reporter + reporters: ["progress"], + + // web server port + port: 9876, + + // enable / disable colors in the output (reporters and logs) + colors: true, + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: false, + + // start these browsers + // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher + browsers: ["ChromeCI"], + + customLaunchers: { + ChromeCI: { + base: "ChromeHeadless", + flags: ["--no-sandbox"] + } + }, + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: true, + + // Concurrency level + // how many browser should be started simultaneous + concurrency: Infinity + }); +}; diff --git a/package-lock.json b/package-lock.json index fd9d7be..555a833 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,39 @@ "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", "dev": true }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "dependencies": { + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + } + } + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, "ansi-escapes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", @@ -34,1545 +67,2884 @@ "integrity": "sha1-xnhwBYADV5AJCD9UrAq6+1wz0kI=", "dev": true }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "argparse": { - "version": "1.0.9", - "resolved": false, - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { + "anymatch": { "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.0.1" - } - }, - "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 - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-differ": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", - "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", - "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.1" - } - }, - "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 - }, - "asn1.js": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", - "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", - "dev": true, - "requires": { - "util": "0.10.3" - } - }, - "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "ast-types": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.3.tgz", - "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==", - "dev": true - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "async-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", - "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", - "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==", - "dev": true - }, - "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", - "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=", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" }, "dependencies": { - "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=", + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, - "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.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "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=", + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { - "ansi-regex": "^2.0.0" - } - }, - "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 - } - } - }, - "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.0", - "debug": "^2.6.8", - "json5": "^0.5.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.4", - "path-is-absolute": "^1.0.1", - "private": "^0.1.7", - "slash": "^1.0.0", - "source-map": "^0.5.6" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.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.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.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.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } }, - "balanced-match": { + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "kind-of": "^6.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 + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "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": { - "brace-expansion": "^1.1.7" + "kind-of": "^3.0.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.5" + } + } } }, - "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=", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true - } - } - }, - "babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "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" - }, - "dependencies": { - "jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } } } }, - "babel-helper-bindify-decorators": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", - "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true }, - "babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "argparse": { + "version": "1.0.9", + "resolved": false, + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", "dev": true, "requires": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "sprintf-js": "~1.0.2" } }, - "babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "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": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "arr-flatten": "^1.0.1" } }, - "babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } + "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 }, - "babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true }, - "babel-helper-explode-class": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", - "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", - "dev": true, - "requires": { - "babel-helper-bindify-decorators": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } + "array-differ": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", + "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", + "dev": true }, - "babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", + "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": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "array-uniq": "^1.0.1" } }, - "babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } + "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 }, - "babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true }, - "babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true }, - "babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" - } + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true }, - "babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", - "dev": true, - "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true }, - "babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", + "asn1.js": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", + "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", "dev": true, "requires": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "babel-helpers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", - "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", "dev": true, "requires": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "util": "0.10.3" } }, - "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.22.0" - } + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true }, - "babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true }, - "babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "babel-plugin-syntax-async-generators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", - "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", - "dev": true - }, - "babel-plugin-syntax-class-constructor-call": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", - "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, - "babel-plugin-syntax-class-properties": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", - "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "ast-types": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.11.3.tgz", + "integrity": "sha512-XA5o5dsNw8MhyW0Q7MWXJWc4oOzZKbdsEJq45h7c8q/d9DwWZ5F2ugUc1PuMLPGsUnphCt/cNDHu8JeBbxf1qA==", "dev": true }, - "babel-plugin-syntax-decorators": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", - "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, - "babel-plugin-syntax-dynamic-import": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", - "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", "dev": true }, - "babel-plugin-syntax-export-extensions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", - "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "babel-plugin-syntax-flow": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", - "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", + "atob": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.0.tgz", + "integrity": "sha512-SuiKH8vbsOyCALjA/+EINmt/Kdl+TQPrtFgW7XZZcwtryFu9e5kQoX3bjCW6mIvGH1fbeAZZuvwGR5IlBRznGw==", "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=", + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", "dev": true }, - "babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", "dev": true }, - "babel-plugin-transform-async-generator-functions": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", - "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", + "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": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-generators": "^6.5.0", - "babel-runtime": "^6.22.0" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "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 + }, + "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.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "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 + }, + "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.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.0.0" + } + }, + "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 + } } }, - "babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", + "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-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" + "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.0", + "debug": "^2.6.8", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.7", + "slash": "^1.0.0", + "source-map": "^0.5.6" + }, + "dependencies": { + "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 + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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 + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "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 + } } }, - "babel-plugin-transform-class-constructor-call": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", - "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, "requires": { - "babel-plugin-syntax-class-constructor-call": "^6.18.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "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" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } } }, - "babel-plugin-transform-class-properties": { + "babel-helper-bindify-decorators": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", - "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", + "resolved": "https://registry.npmjs.org/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz", + "integrity": "sha1-FMGeXxQte0fxmlJDHlKxzLxAozA=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", - "babel-plugin-syntax-class-properties": "^6.8.0", "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "babel-plugin-transform-decorators": { + "babel-helper-builder-binary-assignment-operator-visitor": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", - "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", "dev": true, "requires": { - "babel-helper-explode-class": "^6.24.1", - "babel-plugin-syntax-decorators": "^6.13.0", + "babel-helper-explode-assignable-expression": "^6.24.1", "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", "babel-types": "^6.24.1" } }, - "babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "babel-plugin-transform-es2015-block-scoping": { + "babel-helper-define-map": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", "dev": true, "requires": { + "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", "babel-types": "^6.26.0", "lodash": "^4.17.4" } }, - "babel-plugin-transform-es2015-classes": { + "babel-helper-explode-assignable-expression": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", "dev": true, "requires": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", "babel-traverse": "^6.24.1", "babel-types": "^6.24.1" } }, - "babel-plugin-transform-es2015-computed-properties": { + "babel-helper-explode-class": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "resolved": "https://registry.npmjs.org/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz", + "integrity": "sha1-fcKjkQ3uAHBW4eMdZAztPVTqqes=", "dev": true, "requires": { + "babel-helper-bindify-decorators": "^6.24.1", "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "babel-plugin-transform-es2015-duplicate-keys": { + "babel-helper-function-name": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", "dev": true, "requires": { + "babel-helper-get-function-arity": "^6.24.1", "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", "babel-types": "^6.24.1" } }, - "babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } - }, - "babel-plugin-transform-es2015-function-name": { + "babel-helper-get-function-arity": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", "dev": true, "requires": { - "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.22.0", "babel-types": "^6.24.1" } }, - "babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", "dev": true, "requires": { - "babel-runtime": "^6.22.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "babel-plugin-transform-es2015-modules-amd": { + "babel-helper-optimise-call-expression": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-types": "^6.24.1" } }, - "babel-plugin-transform-es2015-modules-commonjs": { + "babel-helper-regex": { "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", - "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", "dev": true, "requires": { - "babel-plugin-transform-strict-mode": "^6.24.1", "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" - } - }, - "babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", - "dev": true, - "requires": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "babel-types": "^6.26.0", + "lodash": "^4.17.4" } }, - "babel-plugin-transform-es2015-modules-umd": { + "babel-helper-remap-async-to-generator": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", "dev": true, "requires": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-helper-function-name": "^6.24.1", "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", - "dev": true, - "requires": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "babel-plugin-transform-es2015-parameters": { + "babel-helper-replace-supers": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", "dev": true, "requires": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", "babel-runtime": "^6.22.0", "babel-template": "^6.24.1", "babel-traverse": "^6.24.1", "babel-types": "^6.24.1" } }, - "babel-plugin-transform-es2015-shorthand-properties": { + "babel-helpers": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", "dev": true, "requires": { "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "babel-template": "^6.24.1" } }, - "babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "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.22.0" } }, - "babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" - } - }, - "babel-plugin-transform-es2015-template-literals": { + "babel-plugin-check-es2015-constants": { "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", "dev": true, "requires": { "babel-runtime": "^6.22.0" } }, - "babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", + "dev": true }, - "babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", - "dev": true, - "requires": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" - } + "babel-plugin-syntax-async-generators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz", + "integrity": "sha1-a8lj67FuzLrmuStZbrfzXDQqi5o=", + "dev": true }, - "babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", - "dev": true, - "requires": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" - } + "babel-plugin-syntax-class-constructor-call": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz", + "integrity": "sha1-nLnTn+Q8hgC+yBRkVt3L1OGnZBY=", + "dev": true }, - "babel-plugin-transform-export-extensions": { + "babel-plugin-syntax-class-properties": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz", + "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=", + "dev": true + }, + "babel-plugin-syntax-decorators": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz", + "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=", + "dev": true + }, + "babel-plugin-syntax-dynamic-import": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", + "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", + "dev": true + }, + "babel-plugin-syntax-export-extensions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz", + "integrity": "sha1-cKFITw+QiaToStRLrDU8lbmxJyE=", + "dev": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha1-TDqyCiryaqIM0lmVw5jE63AxDI0=", + "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-plugin-syntax-trailing-function-commas": { "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", - "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "dev": true + }, + "babel-plugin-transform-async-generator-functions": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz", + "integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=", "dev": true, "requires": { - "babel-plugin-syntax-export-extensions": "^6.8.0", + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-generators": "^6.5.0", "babel-runtime": "^6.22.0" } }, - "babel-plugin-transform-flow-strip-types": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", - "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", "dev": true, "requires": { - "babel-plugin-syntax-flow": "^6.18.0", + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", "babel-runtime": "^6.22.0" } }, - "babel-plugin-transform-object-rest-spread": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", - "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "babel-plugin-transform-class-constructor-call": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz", + "integrity": "sha1-gNwoVQWsBn3LjWxl4vbxGrd2Xvk=", "dev": true, "requires": { - "babel-plugin-syntax-object-rest-spread": "^6.8.0", - "babel-runtime": "^6.26.0" + "babel-plugin-syntax-class-constructor-call": "^6.18.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "babel-plugin-transform-class-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz", + "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=", "dev": true, "requires": { - "regenerator-transform": "^0.10.0" + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "babel-plugin-transform-strict-mode": { + "babel-plugin-transform-decorators": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz", + "integrity": "sha1-eIAT2PjGtSIr33s0Q5Df13Vp4k0=", "dev": true, "requires": { + "babel-helper-explode-class": "^6.24.1", + "babel-plugin-syntax-decorators": "^6.13.0", "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", "babel-types": "^6.24.1" } }, - "babel-preset-es2015": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", - "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", "dev": true, "requires": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.24.1", - "babel-plugin-transform-es2015-classes": "^6.24.1", - "babel-plugin-transform-es2015-computed-properties": "^6.24.1", - "babel-plugin-transform-es2015-destructuring": "^6.22.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", - "babel-plugin-transform-es2015-for-of": "^6.22.0", - "babel-plugin-transform-es2015-function-name": "^6.24.1", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", - "babel-plugin-transform-es2015-modules-umd": "^6.24.1", - "babel-plugin-transform-es2015-object-super": "^6.24.1", - "babel-plugin-transform-es2015-parameters": "^6.24.1", - "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", - "babel-plugin-transform-regenerator": "^6.24.1" + "babel-runtime": "^6.22.0" } }, - "babel-preset-stage-1": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", - "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", "dev": true, "requires": { - "babel-plugin-transform-class-constructor-call": "^6.24.1", - "babel-plugin-transform-export-extensions": "^6.22.0", - "babel-preset-stage-2": "^6.24.1" + "babel-runtime": "^6.22.0" } }, - "babel-preset-stage-2": { + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", - "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", "dev": true, "requires": { - "babel-plugin-syntax-dynamic-import": "^6.18.0", - "babel-plugin-transform-class-properties": "^6.24.1", - "babel-plugin-transform-decorators": "^6.24.1", - "babel-preset-stage-3": "^6.24.1" + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "babel-preset-stage-3": { + "babel-plugin-transform-es2015-computed-properties": { "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", - "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", "dev": true, "requires": { - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-generator-functions": "^6.24.1", - "babel-plugin-transform-async-to-generator": "^6.24.1", - "babel-plugin-transform-exponentiation-operator": "^6.24.1", - "babel-plugin-transform-object-rest-spread": "^6.22.0" + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "babel-register": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", - "integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=", + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", "dev": true, "requires": { - "babel-core": "^6.26.0", - "babel-runtime": "^6.26.0", - "core-js": "^2.5.0", - "home-or-tmp": "^2.0.0", - "lodash": "^4.17.4", - "mkdirp": "^0.5.1", - "source-map-support": "^0.4.15" + "babel-runtime": "^6.22.0" } }, - "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=", + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", "dev": true, "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", "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" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - } + "babel-runtime": "^6.22.0" } }, - "babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", "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.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - }, - "dependencies": { - "babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "dev": true - } + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", "dev": true, "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "babel-runtime": "^6.22.0" } }, - "babylon": { - "version": "7.0.0-beta.44", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", - "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", - "dev": true - }, - "balanced-match": { - "version": "0.4.2", - "resolved": false, - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", "dev": true, "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - } + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "base64-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", - "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz", + "integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=", "dev": true, - "optional": true, "requires": { - "tweetnacl": "^0.14.3" + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" } }, - "big.js": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", - "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", - "dev": true - }, - "binary-extensions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", - "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", - "dev": true - }, - "binaryextensions": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.1.tgz", - "integrity": "sha512-XBaoWE9RW8pPdPQNibZsW2zh8TW6gcarXp1FZPwT8Uop8ScSNldJEWf2k9l3HeTqdrEwsOsFcq74RiJECW34yA==", - "dev": true - }, - "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", - "dev": true - }, - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", - "dev": true - }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", "dev": true, "requires": { - "hoek": "2.x.x" + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "brace-expansion": { - "version": "1.1.7", - "resolved": false, - "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", "dev": true, "requires": { - "balanced-match": "^0.4.1", - "concat-map": "0.0.1" + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" } }, - "braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", "dev": true, "requires": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" } }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", - "dev": true - }, - "browserify-aes": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", - "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", "dev": true, "requires": { - "buffer-xor": "^1.0.2", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "inherits": "^2.0.1" + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" } }, - "browserify-cipher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", "dev": true, "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "browserify-des": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", "dev": true, "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1" + "babel-runtime": "^6.22.0" } }, - "browserify-rsa": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", - "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", "dev": true, "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" } }, - "browserify-sign": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", - "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", "dev": true, "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "babel-runtime": "^6.22.0" } }, - "browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", "dev": true, "requires": { - "pako": "~0.2.0" + "babel-runtime": "^6.22.0" } }, - "buffer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", "dev": true, "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" } }, - "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", - "dev": true + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } }, - "buffer-shims": { - "version": "1.0.0", - "resolved": false, - "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", - "dev": true + "babel-plugin-transform-export-extensions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz", + "integrity": "sha1-U3OLR+deghhYnuqUbLvTkQm75lM=", + "dev": true, + "requires": { + "babel-plugin-syntax-export-extensions": "^6.8.0", + "babel-runtime": "^6.22.0" + } }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha1-hMtnKTXUNxT9wyvOhFaNh0Qc988=", + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.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 + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + } }, - "cacache": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", "dev": true, "requires": { - "bluebird": "^3.5.1", - "chownr": "^1.0.1", - "glob": "^7.1.2", - "graceful-fs": "^4.1.11", - "lru-cache": "^4.1.1", - "mississippi": "^2.0.0", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha1-1EBQ1rwsn+6nAqrzjXJ6AhBTiTk=", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", + "babel-plugin-transform-es2015-computed-properties": "^6.24.1", + "babel-plugin-transform-es2015-destructuring": "^6.22.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", + "babel-plugin-transform-es2015-for-of": "^6.22.0", + "babel-plugin-transform-es2015-function-name": "^6.24.1", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-umd": "^6.24.1", + "babel-plugin-transform-es2015-object-super": "^6.24.1", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", + "babel-plugin-transform-regenerator": "^6.24.1" + } + }, + "babel-preset-stage-1": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz", + "integrity": "sha1-dpLNfc1oSZB+auSgqFWJz7niv7A=", + "dev": true, + "requires": { + "babel-plugin-transform-class-constructor-call": "^6.24.1", + "babel-plugin-transform-export-extensions": "^6.22.0", + "babel-preset-stage-2": "^6.24.1" + } + }, + "babel-preset-stage-2": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz", + "integrity": "sha1-2eKWD7PXEYfw5k7sYrwHdnIZvcE=", + "dev": true, + "requires": { + "babel-plugin-syntax-dynamic-import": "^6.18.0", + "babel-plugin-transform-class-properties": "^6.24.1", + "babel-plugin-transform-decorators": "^6.24.1", + "babel-preset-stage-3": "^6.24.1" + } + }, + "babel-preset-stage-3": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz", + "integrity": "sha1-g2raCp56f6N8sTj7kyb4eTSkg5U=", + "dev": true, + "requires": { + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-generator-functions": "^6.24.1", + "babel-plugin-transform-async-to-generator": "^6.24.1", + "babel-plugin-transform-exponentiation-operator": "^6.24.1", + "babel-plugin-transform-object-rest-spread": "^6.22.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.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.2", - "ssri": "^5.2.4", - "unique-filename": "^1.1.0", - "y18n": "^4.0.0" + "source-map-support": "^0.4.15" + } + }, + "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.4.0", + "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" }, "dependencies": { - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true + } + } + }, + "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.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "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": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "0.4.2", + "resolved": false, + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", + "integrity": "sha1-o5mS1yNYSBGYK+XikLtqU9hnAPE=", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "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.3" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", + "dev": true + }, + "binary-extensions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.8.0.tgz", + "integrity": "sha1-SOyNFt9Dd+rl+liEaCSAr02Vx3Q=", + "dev": true + }, + "binaryextensions": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-2.1.1.tgz", + "integrity": "sha512-XBaoWE9RW8pPdPQNibZsW2zh8TW6gcarXp1FZPwT8Uop8ScSNldJEWf2k9l3HeTqdrEwsOsFcq74RiJECW34yA==", + "dev": true + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "bluebird": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", + "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==", + "dev": true + }, + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.x.x" + } + }, + "brace-expansion": { + "version": "1.1.7", + "resolved": false, + "integrity": "sha1-Pv/DxQ4ABTH7cg6v+A8K6O8jz1k=", + "dev": true, + "requires": { + "balanced-match": "^0.4.1", + "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.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-stdout": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", + "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "dev": true + }, + "browserify-aes": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", + "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", + "dev": true, + "requires": { + "buffer-xor": "^1.0.2", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "inherits": "^2.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "requires": { + "pako": "~0.2.0" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", + "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==", + "dev": true + }, + "buffer-shims": { + "version": "1.0.0", + "resolved": false, + "integrity": "sha1-mXjOMXOIxkmth5MCjDR37wRKi1E=", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "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 + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "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 + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "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.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "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.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "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.7" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", + "dev": true, + "requires": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "dev": true + } + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "caseless": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "dev": true + }, + "chai": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", + "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.0", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": false, + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^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 + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", + "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.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.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.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.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^4.1.0", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "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, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "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.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "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.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.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 + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "kind-of": "^6.0.0" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } + } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "is-extglob": "^2.1.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 - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "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": { - "once": "^1.3.0", - "wrappy": "1" + "kind-of": "^3.0.2" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + } } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "dev": true, - "requires": { - "wrappy": "1" - } + "optional": 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=", + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } }, - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", - "dev": true - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, - "cacheable-request": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", - "integrity": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=", - "dev": true, - "requires": { - "clone-response": "1.0.2", - "get-stream": "3.0.0", - "http-cache-semantics": "3.8.1", - "keyv": "3.0.0", - "lowercase-keys": "1.0.0", - "normalize-url": "2.0.1", - "responselike": "1.0.2" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", - "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=", + "upath": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", + "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==", "dev": true } } }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": false, - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^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 - }, "chownr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", @@ -1897,12 +3269,24 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", "dev": true }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": false, @@ -1983,6 +3367,18 @@ } } }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + } + }, "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", @@ -1998,12 +3394,24 @@ "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", "dev": true }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "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 }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, "copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", @@ -2149,6 +3557,12 @@ "randombytes": "^2.0.0" } }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, "cyclist": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", @@ -2184,6 +3598,12 @@ "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", "dev": true }, + "date-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.0.0.tgz", + "integrity": "sha512-M6UqVvZVgFYqZL1SfHsRGIQSz3ZL+qgbsV5Lp1Vj61LZVYuEwcMXYay7DRDtYs2HQQBK5hQtQ0fD9aEJ89V0LA==", + "dev": true + }, "date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", @@ -2226,6 +3646,15 @@ "mimic-response": "^1.0.0" } }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, "deep-extend": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", @@ -2291,6 +3720,12 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -2316,6 +3751,12 @@ "repeating": "^2.0.0" } }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, "diff": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", @@ -2333,6 +3774,18 @@ "randombytes": "^2.0.0" } }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, "domain-browser": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", @@ -2435,6 +3888,12 @@ "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", "dev": true }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, "ejs": { "version": "2.5.9", "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.5.9.tgz", @@ -2468,6 +3927,12 @@ "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", "dev": true }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -2494,6 +3959,74 @@ } } }, + "engine.io": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", + "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.0", + "ws": "~3.3.1" + }, + "dependencies": { + "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" + } + } + } + }, + "engine.io-client": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", + "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.1.1", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~3.3.1", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "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" + } + } + } + }, + "engine.io-parser": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", + "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, "enhanced-resolve": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz", @@ -2513,6 +4046,12 @@ } } }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, "envinfo": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-4.4.2.tgz", @@ -2555,6 +4094,12 @@ "is-arrayish": "^0.2.1" } }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": false, @@ -3743,6 +5288,12 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "dev": true + }, "events": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", @@ -3920,6 +5471,21 @@ "repeat-string": "^1.5.2" } }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, "find-cache-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", @@ -4011,6 +5577,12 @@ } } }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, "flow-parser": { "version": "0.70.0", "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.70.0.tgz", @@ -4089,6 +5661,32 @@ } } }, + "follow-redirects": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", + "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", + "dev": true, + "requires": { + "debug": "^3.2.6" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -4202,6 +5800,26 @@ } } }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, "fs-write-stream-atomic": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", @@ -4329,14 +5947,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4351,20 +5967,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -4481,8 +6094,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -4494,7 +6106,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -4509,7 +6120,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -4517,14 +6127,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -4543,7 +6151,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -4624,8 +6231,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -4637,7 +6243,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -4759,7 +6364,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -4852,6 +6456,12 @@ "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", "dev": true }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -5342,12 +6952,35 @@ "ansi-regex": "^2.0.0" } }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, "has-color": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz", "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8=", "dev": true }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, "has-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", @@ -5513,6 +7146,30 @@ "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", "dev": true }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, "http-signature": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", @@ -6019,6 +7676,15 @@ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -6147,34 +7813,185 @@ "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", "dev": true }, - "json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonpointer": { + "version": "4.0.1", + "resolved": false, + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, + "jsprim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "dev": 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", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "karma": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/karma/-/karma-4.1.0.tgz", + "integrity": "sha512-xckiDqyNi512U4dXGOOSyLKPwek6X/vUizSy2f3geYevbLj+UIdvNwbn7IwfUIL2g1GXEPWt/87qFD1fBbl/Uw==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "braces": "^2.3.2", + "chokidar": "^2.0.3", + "colors": "^1.1.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "flatted": "^2.0.0", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^4.17.11", + "log4js": "^4.0.0", + "mime": "^2.3.1", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "2.1.1", + "source-map": "^0.6.1", + "tmp": "0.0.33", + "useragent": "2.3.0" + }, + "dependencies": { + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "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.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "karma-chai": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/karma-chai/-/karma-chai-0.1.0.tgz", + "integrity": "sha1-vuWtQEAFF4Ea40u5RfdikJEIt5o=", "dev": true }, - "jsonpointer": { - "version": "4.0.1", - "resolved": false, - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "dev": true, + "requires": { + "fs-access": "^1.0.0", + "which": "^1.2.1" + } }, - "jsprim": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", - "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "karma-mocha": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-1.3.0.tgz", + "integrity": "sha1-7qrH/8DiAetjxGdEDStpx883eL8=", "dev": true, "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" + "minimist": "1.2.0" }, "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true } } @@ -6757,6 +8574,36 @@ } } }, + "log4js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.4.0.tgz", + "integrity": "sha512-xwRvmxFsq8Hb7YeS+XKfvCrsH114bXex6mIwJ2+KmYVi23pB3+hlzyGq1JPycSFTJWNLhD/7PCtM0RfPy6/2yg==", + "dev": true, + "requires": { + "date-format": "^2.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.0", + "rfdc": "^1.1.4", + "streamroller": "^1.0.5" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "loose-envify": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", @@ -6814,6 +8661,12 @@ "object-visit": "^1.0.0" } }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, "mem": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", @@ -7015,6 +8868,12 @@ "brorand": "^1.0.1" } }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "dev": true + }, "mime-db": { "version": "1.27.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", @@ -7288,6 +9147,12 @@ } } }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, "neo-async": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", @@ -7421,6 +9286,12 @@ "path-key": "^2.0.0" } }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -9047,6 +10918,12 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", @@ -9128,6 +11005,15 @@ } } }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, "once": { "version": "1.4.0", "resolved": false, @@ -9146,6 +11032,24 @@ "mimic-fn": "^1.0.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.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", + "dev": true + } + } + }, "ora": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz", @@ -9467,6 +11371,30 @@ "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", "dev": true }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", @@ -9512,6 +11440,12 @@ "pify": "^3.0.0" } }, + "pathval": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", + "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", + "dev": true + }, "pbkdf2": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", @@ -9697,6 +11631,12 @@ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, "qs": { "version": "6.3.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz", @@ -9776,6 +11716,35 @@ "safe-buffer": "^5.1.0" } }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, "read-chunk": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-2.1.0.tgz", @@ -10012,6 +11981,12 @@ "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, "resolve": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", @@ -10077,6 +12052,12 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true + }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -10338,6 +12319,12 @@ "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", "dev": true }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, "sha.js": { "version": "2.4.8", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", @@ -10627,6 +12614,98 @@ "hoek": "2.x.x" } }, + "socket.io": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", + "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", + "dev": true, + "requires": { + "debug": "~3.1.0", + "engine.io": "~3.2.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.1.1", + "socket.io-parser": "~3.2.0" + }, + "dependencies": { + "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" + } + } + } + }, + "socket.io-adapter": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", + "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", + "dev": true + }, + "socket.io-client": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", + "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "engine.io-client": "~3.2.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.2.0", + "to-array": "0.1.4" + }, + "dependencies": { + "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" + } + } + } + }, + "socket.io-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", + "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "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" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, "sort-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", @@ -10779,6 +12858,12 @@ } } }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, "stream-browserify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", @@ -10827,6 +12912,51 @@ "any-observable": "^0.2.0" } }, + "streamroller": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.5.tgz", + "integrity": "sha512-iGVaMcyF5PcUY0cPbW3xFQUXnr9O4RZXNBBjhuLZgrjLO4XCLLGfx4T2sGqygSeylUjwgWRsnNbT9aV0Zb8AYw==", + "dev": true, + "requires": { + "async": "^2.6.2", + "date-format": "^2.0.0", + "debug": "^3.2.6", + "fs-extra": "^7.0.1", + "lodash": "^4.17.11" + }, + "dependencies": { + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -11071,6 +13201,12 @@ "os-tmpdir": "~1.0.2" } }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", @@ -11163,6 +13299,12 @@ } } }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, "tough-cookie": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", @@ -11197,6 +13339,39 @@ "dev": true, "optional": true }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "dependencies": { + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", + "dev": true + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "dev": true, + "requires": { + "mime-db": "1.40.0" + } + } + } + }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -11267,6 +13442,12 @@ } } }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true + }, "underscore": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", @@ -11326,6 +13507,18 @@ "imurmurhash": "^0.1.4" } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", @@ -11463,6 +13656,16 @@ } } }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + } + }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", @@ -11486,6 +13689,12 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, "uuid": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", @@ -11580,6 +13789,12 @@ "indexof": "0.0.1" } }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, "webpack": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.6.0.tgz", @@ -12242,6 +14457,12 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, "worker-farm": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", @@ -12340,6 +14561,23 @@ } } }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, "xtend": { "version": "4.0.1", "resolved": false, @@ -12387,6 +14625,12 @@ "camelcase": "^4.1.0" } }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, "yeoman-environment": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/yeoman-environment/-/yeoman-environment-2.0.6.tgz", diff --git a/package.json b/package.json index cd73380..8bba9a5 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,13 @@ "main": "src/parsimmon.js", "browser": "build/parsimmon.umd.min.js", "devDependencies": { + "chai": "^4.2.0", "coveralls": "^2.13.1", "eslint": "^3.6.0", + "karma": "^4.1.0", + "karma-chai": "^0.1.0", + "karma-chrome-launcher": "^2.2.0", + "karma-mocha": "^1.3.0", "mkdirp": "^0.5.1", "mocha": "^3.4.2", "nyc": "^11.0.3", @@ -44,6 +49,7 @@ "pretest": "npm run lint", "test": "nyc --reporter=lcov --reporter=text-summary npm run test:mocha", "test:mocha": "mocha --reporter dot", - "test:watch": "mocha --reporter min --watch" + "test:watch": "mocha --reporter min --watch", + "test:chrome": "karma start" } } diff --git a/test/core/alt.test.js b/test/core/alt.test.js index b4d0d68..7bf90a2 100644 --- a/test/core/alt.test.js +++ b/test/core/alt.test.js @@ -1,6 +1,6 @@ "use strict"; -test("Parsimmon.alt", function() { +it("Parsimmon.alt", function() { var toNode = function(nodeType) { return function(value) { return { type: nodeType, value: value }; diff --git a/test/core/atLeast.test.js b/test/core/atLeast.test.js index cc25930..a2a8070 100644 --- a/test/core/atLeast.test.js +++ b/test/core/atLeast.test.js @@ -1,6 +1,6 @@ "use strict"; -test("atLeast", function() { +it("atLeast", function() { var atLeastTwo = Parsimmon.letter.atLeast(2); assert.deepEqual(atLeastTwo.parse("xy").value, ["x", "y"]); assert.deepEqual(atLeastTwo.parse("xyzw").value, ["x", "y", "z", "w"]); diff --git a/test/core/atMost.test.js b/test/core/atMost.test.js index 0fc0e10..7b26808 100644 --- a/test/core/atMost.test.js +++ b/test/core/atMost.test.js @@ -1,6 +1,6 @@ "use strict"; -test("atMost", function() { +it("atMost", function() { var atMostTwo = Parsimmon.letter.atMost(2); assert.deepEqual(atMostTwo.parse("").value, []); assert.deepEqual(atMostTwo.parse("a").value, ["a"]); diff --git a/test/core/bitSeqObj.test.js b/test/core/bitSeqObj.test.js index ac53e3a..746a992 100644 --- a/test/core/bitSeqObj.test.js +++ b/test/core/bitSeqObj.test.js @@ -86,7 +86,7 @@ describe("bitSeqObj", function() { }); }); - test("accepts 'constructor' as a key", function() { + it("accepts 'constructor' as a key", function() { var b = Buffer.from([0xff]); var p = Parsimmon.Binary.bitSeqObj([["constructor", 8]]); assert.deepEqual(p.parse(b).value, { constructor: 255 }); diff --git a/test/core/chain.test.js b/test/core/chain.test.js index 18029c2..69b06a3 100644 --- a/test/core/chain.test.js +++ b/test/core/chain.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("chain", function() { - test("asserts that a parser is returned", function() { +describe("chain", function() { + it("asserts that a parser is returned", function() { var parser1 = Parsimmon.letter.chain(function() { return "not a parser"; }); @@ -14,7 +14,7 @@ suite("chain", function() { }); }); - test("with a function that returns a parser, continues with that parser", function() { + it("with a function that returns a parser, continues with that parser", function() { var piped; var parser = Parsimmon.string("x").chain(function(x) { piped = x; diff --git a/test/core/constructor.test.js b/test/core/constructor.test.js index 84bb3b5..724295f 100644 --- a/test/core/constructor.test.js +++ b/test/core/constructor.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("Parsimmon()", function() { - test("should work in general", function() { +describe("Parsimmon()", function() { + it("should work in general", function() { var good = "just a Q"; var bad = "all I wanted was a Q"; var justQ = Parsimmon(function(str, i) { @@ -28,7 +28,7 @@ suite("Parsimmon()", function() { }); }); - test("unsafeUnion works on poorly formatted custom parser", function() { + it("unsafeUnion works on poorly formatted custom parser", function() { var p1 = Parsimmon.string("a").or(Parsimmon.string("b")); var p2 = Parsimmon(function(str, i) { return { diff --git a/test/core/contramap.test.js b/test/core/contramap.test.js index 9bdae47..e74991c 100644 --- a/test/core/contramap.test.js +++ b/test/core/contramap.test.js @@ -1,6 +1,6 @@ "use strict"; -suite("contramap", function() { +describe("contramap", function() { function toLower(x) { return x.toLowerCase(); } @@ -9,20 +9,20 @@ suite("contramap", function() { return b.toString("ascii"); } - test("with a function, transforms the input and parses that", function() { + it("with a function, transforms the input and parses that", function() { var parser = Parsimmon.string("x").contramap(function(x) { return x.toLowerCase(); }); assert.deepEqual(parser.parse("X"), { status: true, value: "x" }); }); - test("asserts that a function was given", function() { + it("asserts that a function was given", function() { assert.throws(function() { Parsimmon.string("x").contramap("not a function"); }); }); - test("upholds contravariant law of composition", function() { + it("upholds contravariant law of composition", function() { var parser1 = Parsimmon.string("a") .contramap(toLower) .contramap(chrs); @@ -34,7 +34,7 @@ suite("contramap", function() { assert.deepEqual(parser1.parse(input), parser2.parse(input)); }); - test("embedded contramaps make sense", function() { + it("embedded contramaps make sense", function() { var parser = Parsimmon.seq( Parsimmon.string("a"), Parsimmon.seq(Parsimmon.string("c"), Parsimmon.string("d")) @@ -47,7 +47,7 @@ suite("contramap", function() { assert.deepEqual(parser.parse("abcd"), { status: true, value: "acd" }); }); - test("backtracking with contramaps works", function() { + it("backtracking with contramaps works", function() { var parser = Parsimmon.seq( Parsimmon.string("a"), Parsimmon.seq(Parsimmon.string("c"), Parsimmon.string("d")) diff --git a/test/core/createLanguage.test.js b/test/core/createLanguage.test.js index 29a9f13..a083744 100644 --- a/test/core/createLanguage.test.js +++ b/test/core/createLanguage.test.js @@ -1,15 +1,15 @@ "use strict"; -suite("Parsimmon.createLanguage", function() { - setup(function() { +describe("Parsimmon.createLanguage", function() { + before(function() { Object.prototype.NASTY = "dont extend Object.prototype please"; }); - teardown(function() { + after(function() { delete Object.prototype.NASTY; }); - test("should return an object of parsers", function() { + it("should return an object of parsers", function() { var lang = Parsimmon.createLanguage({ a: function() { return Parsimmon.string("a"); @@ -22,7 +22,7 @@ suite("Parsimmon.createLanguage", function() { assert.ok(Parsimmon.isParser(lang.b)); }); - test("should allow direct recursion in parsers", function() { + it("should allow direct recursion in parsers", function() { var lang = Parsimmon.createLanguage({ Parentheses: function(r) { return Parsimmon.alt( @@ -36,7 +36,7 @@ suite("Parsimmon.createLanguage", function() { lang.Parentheses.tryParse("(((())))"); }); - test("should ignore non-own properties", function() { + it("should ignore non-own properties", function() { var obj = Object.create({ foo: function() { return Parsimmon.of(1); @@ -46,7 +46,7 @@ suite("Parsimmon.createLanguage", function() { assert.strictEqual(lang.foo, undefined); }); - test("should allow indirect recursion in parsers", function() { + it("should allow indirect recursion in parsers", function() { var lang = Parsimmon.createLanguage({ Value: function(r) { return Parsimmon.alt(r.Number, r.Symbol, r.List); diff --git a/test/core/custom.test.js b/test/core/custom.test.js index bd47251..586c513 100644 --- a/test/core/custom.test.js +++ b/test/core/custom.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("Parsimmon.custom", function() { - test("simple parser definition", function() { +describe("Parsimmon.custom", function() { + it("simple parser definition", function() { function customAny() { return Parsimmon.custom(function(success) { return function(input, i) { @@ -48,7 +48,7 @@ suite("Parsimmon.custom", function() { } }); - test("failing parser", function() { + it("failing parser", function() { function failer() { return Parsimmon.custom(function(success, failure) { return function(input, i) { @@ -68,7 +68,7 @@ suite("Parsimmon.custom", function() { }); }); - test("composes with existing parsers", function() { + it("composes with existing parsers", function() { function notChar(char) { return Parsimmon.custom(function(success, failure) { return function(input, i) { diff --git a/test/core/desc.test.js b/test/core/desc.test.js index 4854fa3..9c24be5 100644 --- a/test/core/desc.test.js +++ b/test/core/desc.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("desc", function() { - test("allows custom error messages", function() { +describe("desc", function() { + it("allows custom error messages", function() { var x = Parsimmon.string("x").desc("the letter x"); var y = Parsimmon.string("y").desc("the letter y"); var parser = x.then(y); @@ -27,7 +27,7 @@ suite("desc", function() { }); }); - test("allows tagging with `lazy`", function() { + it("allows tagging with `lazy`", function() { var x = Parsimmon.lazy("the letter x", function() { return Parsimmon.string("x"); }); @@ -57,7 +57,7 @@ suite("desc", function() { }); }); - test("allows multiple descriptions to be passed as an array", function() { + it("allows multiple descriptions to be passed as an array", function() { var x = Parsimmon.oneOf("xyz") .desc(["x", "y", "z"]) .atLeast(1); diff --git a/test/core/empty.test.js b/test/core/empty.test.js index 8c39e0b..01f3d81 100644 --- a/test/core/empty.test.js +++ b/test/core/empty.test.js @@ -1,6 +1,6 @@ "use strict"; -test(".empty()", function() { +it(".empty()", function() { var emptyParse = { status: false, expected: ["fantasy-land/empty"], diff --git a/test/core/eof.test.js b/test/core/eof.test.js index 9731df4..4182376 100644 --- a/test/core/eof.test.js +++ b/test/core/eof.test.js @@ -1,6 +1,6 @@ "use strict"; -test("eof", function() { +it("eof", function() { var parser = Parsimmon.optWhitespace .skip(Parsimmon.eof) .or(Parsimmon.all.result("default")); diff --git a/test/core/fail.test.js b/test/core/fail.test.js index 8ab5ee3..f171e47 100644 --- a/test/core/fail.test.js +++ b/test/core/fail.test.js @@ -1,10 +1,10 @@ "use strict"; -suite("fail", function() { +describe("fail", function() { var fail = Parsimmon.fail; var succeed = Parsimmon.succeed; - test("use Parsimmon.fail to fail dynamically", function() { + it("use Parsimmon.fail to fail dynamically", function() { var parser = Parsimmon.any .chain(function(ch) { return fail("a character besides " + ch); @@ -23,7 +23,7 @@ suite("fail", function() { assert.equal(parser.parse("x").value, "x"); }); - test("use Parsimmon.succeed or Parsimmon.fail to branch conditionally", function() { + it("use Parsimmon.succeed or Parsimmon.fail to branch conditionally", function() { var allowedOperator; var parser = Parsimmon.string("x") diff --git a/test/core/fallback.test.js b/test/core/fallback.test.js index 7a0f700..070b878 100644 --- a/test/core/fallback.test.js +++ b/test/core/fallback.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("fallback", function() { - test("allows fallback result if no match is found", function() { +describe("fallback", function() { + it("allows fallback result if no match is found", function() { var parser = Parsimmon.string("a").fallback("nothing"); assert.deepEqual(parser.parse("a").value, "a"); assert.deepEqual(parser.parse("").value, "nothing"); diff --git a/test/core/formatError.test.js b/test/core/formatError.test.js index 9b8461e..3bd7db7 100644 --- a/test/core/formatError.test.js +++ b/test/core/formatError.test.js @@ -8,8 +8,8 @@ function fill(length, filler) { return res; } -suite("formatError", function() { - test("end of input", function() { +describe("formatError", function() { + it("end of input", function() { var parser = Parsimmon.alt( Parsimmon.fail("a"), Parsimmon.fail("b"), @@ -29,7 +29,7 @@ suite("formatError", function() { assert.deepEqual(answer, expectation); }); - test("middle of input", function() { + it("middle of input", function() { var parser = Parsimmon.seq( Parsimmon.string("1"), Parsimmon.alt( @@ -52,7 +52,7 @@ suite("formatError", function() { assert.deepEqual(answer, expectation); }); - test("milti-line input", function() { + it("milti-line input", function() { var parser = Parsimmon.seq( Parsimmon.string("\n") .many() @@ -77,7 +77,7 @@ suite("formatError", function() { assert.deepEqual(answer, expectation); }); - test("multi-line line-number padding", function() { + it("multi-line line-number padding", function() { var parser = Parsimmon.seq( Parsimmon.string("\n") .many() @@ -102,7 +102,7 @@ suite("formatError", function() { assert.deepEqual(answer, expectation); }); - test("multi-line line-number with 3-digits", function() { + it("multi-line line-number with 3-digits", function() { var parser = Parsimmon.seq( Parsimmon.string("\n") .many() @@ -129,7 +129,7 @@ suite("formatError", function() { assert.deepEqual(answer, expectation); }); - test("multi-line line-number with 3-digit to 4-digit line numbers", function() { + it("multi-line line-number with 3-digit to 4-digit line numbers", function() { var parser = Parsimmon.seq( Parsimmon.string("\n") .many() @@ -155,7 +155,7 @@ suite("formatError", function() { assert.deepEqual(answer, expectation); }); - test("byte buffer error at the end of the short input", function() { + it("byte buffer error at the end of the short input", function() { var parser = Parsimmon.seq( Parsimmon.Binary.byte(0x00).many(), Parsimmon.Binary.byte(0x01) @@ -179,7 +179,7 @@ suite("formatError", function() { assert.deepEqual(answer, expectation); }); - test("byte buffer error with a value one character long", function() { + it("byte buffer error with a value one character long", function() { var parser = Parsimmon.seq(Parsimmon.Binary.byte(0x1)); var expectation = @@ -200,7 +200,7 @@ suite("formatError", function() { assert.deepEqual(answer, expectation); }); - test("byte buffer error with multi-line input", function() { + it("byte buffer error with multi-line input", function() { var parser = Parsimmon.seq( Parsimmon.Binary.byte(0x00).many(), Parsimmon.Binary.byte(0x01) @@ -252,7 +252,7 @@ suite("formatError", function() { assert.deepEqual(answer, expectation); }); - test("byte buffer error at the first line of the multi-line input", function() { + it("byte buffer error at the first line of the multi-line input", function() { var parser = Parsimmon.seq( Parsimmon.Binary.byte(0x00).many(), Parsimmon.Binary.byte(0x01) @@ -280,7 +280,7 @@ suite("formatError", function() { assert.deepEqual(answer, expectation); }); - test("byte buffer error at the end of the multi-line input", function() { + it("byte buffer error at the end of the multi-line input", function() { var parser = Parsimmon.seq( Parsimmon.Binary.byte(0x00).many(), Parsimmon.Binary.byte(0x01) @@ -324,7 +324,7 @@ suite("formatError", function() { assert.deepEqual(answer, expectation); }); - test("parsing error in a large byte buffer", function() { + it("parsing error in a large byte buffer", function() { var parser = Parsimmon.seq( Parsimmon.Binary.byte(0x00).many(), Parsimmon.Binary.byte(0x01) @@ -370,7 +370,7 @@ suite("formatError", function() { assert.deepEqual(answer, expectation); }); - test("error marker is padded with correctly in an error on a fourth byte", function() { + it("error marker is padded with correctly in an error on a fourth byte", function() { var parser = Parsimmon.seq( Parsimmon.Binary.byte(0x01), Parsimmon.Binary.byte(0x00), @@ -398,7 +398,7 @@ suite("formatError", function() { assert.deepEqual(answer, expectation); }); - test("error marker is padded with correctly in an error on a fifth byte", function() { + it("error marker is padded with correctly in an error on a fifth byte", function() { var parser = Parsimmon.seq( Parsimmon.Binary.byte(0x01), Parsimmon.Binary.byte(0x00), diff --git a/test/core/index.test.js b/test/core/index.test.js index f1edbcf..3552764 100644 --- a/test/core/index.test.js +++ b/test/core/index.test.js @@ -1,6 +1,6 @@ "use strict"; -test("index", function() { +it("index", function() { var parser = Parsimmon.regexp(/^[x\n]*/).then(Parsimmon.index); assert.deepEqual(parser.parse("").value, { offset: 0, diff --git a/test/core/isParser.test.js b/test/core/isParser.test.js index 46ef21c..ee0076e 100644 --- a/test/core/isParser.test.js +++ b/test/core/isParser.test.js @@ -1,6 +1,6 @@ "use strict"; -test("Parsimmon.isParser", function() { +it("Parsimmon.isParser", function() { assert.strictEqual(Parsimmon.isParser(undefined), false); assert.strictEqual(Parsimmon.isParser({}), false); assert.strictEqual(Parsimmon.isParser(null), false); diff --git a/test/core/lookahead.test.js b/test/core/lookahead.test.js index d68dcc3..5f4db4e 100644 --- a/test/core/lookahead.test.js +++ b/test/core/lookahead.test.js @@ -1,19 +1,19 @@ "use strict"; -suite("Parsimmon.lookahead", function() { - test("should handle a string", function() { +describe("Parsimmon.lookahead", function() { + it("should handle a string", function() { Parsimmon.lookahead(""); }); - test("should handle a regexp", function() { + it("should handle a regexp", function() { Parsimmon.lookahead(/./); }); - test("should handle a parser", function() { + it("should handle a parser", function() { Parsimmon.lookahead(Parsimmon.digit); }); - test("can be chained as prototype", function() { + it("can be chained as prototype", function() { var parser = Parsimmon.seq( Parsimmon.string("abc").lookahead("d"), Parsimmon.string("d") @@ -22,7 +22,7 @@ suite("Parsimmon.lookahead", function() { assert.deepEqual(answer.value, ["abc", "d"]); }); - test("does not consume from a string", function() { + it("does not consume from a string", function() { var parser = Parsimmon.seq( Parsimmon.string("abc"), Parsimmon.lookahead("d"), @@ -32,7 +32,7 @@ suite("Parsimmon.lookahead", function() { assert.deepEqual(answer.value, ["abc", "", "d"]); }); - test("does not consume from a regexp", function() { + it("does not consume from a regexp", function() { var parser = Parsimmon.seq( Parsimmon.string("abc"), Parsimmon.lookahead(/d/), @@ -42,7 +42,7 @@ suite("Parsimmon.lookahead", function() { assert.deepEqual(answer.value, ["abc", "", "d"]); }); - test("does not consume from a parser", function() { + it("does not consume from a parser", function() { var weirdParser = Parsimmon.string("Q").or(Parsimmon.string("d")); var parser = Parsimmon.seq( Parsimmon.string("abc"), @@ -53,7 +53,7 @@ suite("Parsimmon.lookahead", function() { assert.deepEqual(answer.value, ["abc", "", "d"]); }); - test("raises error if argument is not a string, regexp, or parser", function() { + it("raises error if argument is not a string, regexp, or parser", function() { assert.throws(function() { Parsimmon.lookahead({}); }); diff --git a/test/core/makeFailure.test.js b/test/core/makeFailure.test.js index 57494fc..8a177f5 100644 --- a/test/core/makeFailure.test.js +++ b/test/core/makeFailure.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("Parsimmon.makeFailure", function() { - test("creates a failure result", function() { +describe("Parsimmon.makeFailure", function() { + it("creates a failure result", function() { var furthest = 4444; var expected = "waiting in the clock tower"; var result = Parsimmon.makeFailure(furthest, expected); @@ -13,7 +13,7 @@ suite("Parsimmon.makeFailure", function() { expected: [expected] }); }); - test("creates a result with multiple expected values", function() { + it("creates a result with multiple expected values", function() { var furthest = 4444; var expected = ["once", "twice", "three times a lady"]; var result = Parsimmon.makeFailure(furthest, expected); diff --git a/test/core/makeSuccess.test.js b/test/core/makeSuccess.test.js index f09f933..d7f529f 100644 --- a/test/core/makeSuccess.test.js +++ b/test/core/makeSuccess.test.js @@ -1,6 +1,6 @@ "use strict"; -test("Parsimmon.makeSuccess", function() { +it("Parsimmon.makeSuccess", function() { var index = 11; var value = "a lucky number"; var result = Parsimmon.makeSuccess(index, value); diff --git a/test/core/many.test.js b/test/core/many.test.js index b657cfd..2964768 100644 --- a/test/core/many.test.js +++ b/test/core/many.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("many", function() { - test("simple case", function() { +describe("many", function() { + it("simple case", function() { var letters = Parsimmon.letter.many(); assert.deepEqual(letters.parse("x").value, ["x"]); assert.deepEqual(letters.parse("xyz").value, ["x", "y", "z"]); @@ -10,7 +10,7 @@ suite("many", function() { assert.ok(!letters.parse("xyz1").status); }); - test("followed by then", function() { + it("followed by then", function() { var parser = Parsimmon.string("x") .many() .then(Parsimmon.string("y")); @@ -19,7 +19,7 @@ suite("many", function() { assert.equal(parser.parse("xxxxxy").value, "y"); }); - test("throws on parsers that accept zero characters", function() { + it("throws on parsers that accept zero characters", function() { var parser = Parsimmon.regexp(/a*/).many(); assert.throws(function() { parser.parse("a"); diff --git a/test/core/map.test.js b/test/core/map.test.js index 5e999d6..ab13fcd 100644 --- a/test/core/map.test.js +++ b/test/core/map.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("map", function() { - test("with a function, pipes the value in and uses that return value", function() { +describe("map", function() { + it("with a function, pipes the value in and uses that return value", function() { var piped; var parser = Parsimmon.string("x").map(function(x) { piped = x; @@ -11,7 +11,7 @@ suite("map", function() { assert.equal(piped, "x"); }); - test("asserts that a function was given", function() { + it("asserts that a function was given", function() { assert.throws(function() { Parsimmon.string("x").map("not a function"); }); diff --git a/test/core/mark.test.js b/test/core/mark.test.js index d3129be..aac7699 100644 --- a/test/core/mark.test.js +++ b/test/core/mark.test.js @@ -1,6 +1,6 @@ "use strict"; -test("mark", function() { +it("mark", function() { var ys = Parsimmon.regexp(/^y*/).mark(); var parser = Parsimmon.optWhitespace.then(ys).skip(Parsimmon.optWhitespace); assert.deepEqual(parser.parse("").value, { diff --git a/test/core/node.test.js b/test/core/node.test.js index 1adba08..778207b 100644 --- a/test/core/node.test.js +++ b/test/core/node.test.js @@ -1,6 +1,6 @@ "use strict"; -test(".node(name)", function() { +it(".node(name)", function() { var ys = Parsimmon.regexp(/^y*/).node("Y"); var parser = ys.trim(Parsimmon.optWhitespace); assert.deepEqual(parser.parse("").value, { diff --git a/test/core/noneOf.test.js b/test/core/noneOf.test.js index 0913c2c..9efc24d 100644 --- a/test/core/noneOf.test.js +++ b/test/core/noneOf.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("noneOf", function() { - test("matches EVERYTHING BUT the characters specified", function() { +describe("noneOf", function() { + it("matches EVERYTHING BUT the characters specified", function() { var parser = Parsimmon.noneOf("abc"); var a = "a".charCodeAt(0); var c = "c".charCodeAt(0); diff --git a/test/core/notFollowedBy.test.js b/test/core/notFollowedBy.test.js index 57dda46..f081ffb 100644 --- a/test/core/notFollowedBy.test.js +++ b/test/core/notFollowedBy.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("Parsimmon.notFollowedBy", function() { - test("fails when its parser argument matches", function() { +describe("Parsimmon.notFollowedBy", function() { + it("fails when its parser argument matches", function() { var weirdParser = Parsimmon.string("dx"); var parser = Parsimmon.seq( Parsimmon.string("abc"), @@ -12,7 +12,7 @@ suite("Parsimmon.notFollowedBy", function() { assert.deepEqual(answer.expected, ['not "dx"']); }); - test("does not consume from its input", function() { + it("does not consume from its input", function() { var weirdParser = Parsimmon.string("Q"); var parser = Parsimmon.seq( Parsimmon.string("abc"), @@ -23,7 +23,7 @@ suite("Parsimmon.notFollowedBy", function() { assert.deepEqual(answer.value, ["abc", null, "d"]); }); - test("can be chained from prototype", function() { + it("can be chained from prototype", function() { var parser = Parsimmon.seq( Parsimmon.string("abc").notFollowedBy(Parsimmon.string("Q")), Parsimmon.string("d") diff --git a/test/core/oneOf.test.js b/test/core/oneOf.test.js index 28c9c74..0a7e6a7 100644 --- a/test/core/oneOf.test.js +++ b/test/core/oneOf.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("oneOf", function() { - test("matches ONLY the characters specified", function() { +describe("oneOf", function() { + it("matches ONLY the characters specified", function() { var parser = Parsimmon.oneOf("abc"); var a = "a".charCodeAt(0); var c = "c".charCodeAt(0); diff --git a/test/core/or.test.js b/test/core/or.test.js index 56f082d..948f5fe 100644 --- a/test/core/or.test.js +++ b/test/core/or.test.js @@ -1,14 +1,14 @@ "use strict"; -suite("or", function() { - test("two parsers", function() { +describe("or", function() { + it("two parsers", function() { var parser = Parsimmon.string("x").or(Parsimmon.string("y")); assert.equal(parser.parse("x").value, "x"); assert.equal(parser.parse("y").value, "y"); assert.ok(!parser.parse("z").status); }); - test("with chain", function() { + it("with chain", function() { var parser = Parsimmon.string("\\") .chain(function() { return Parsimmon.string("y"); @@ -19,13 +19,13 @@ suite("or", function() { assert.ok(!parser.parse("\\z").status); }); - test("asserts that a parser was given", function() { + it("asserts that a parser was given", function() { assert.throws(function() { Parsimmon.string("x").or("not a parser"); }); }); - test("prefer longest branch", function() { + it("prefer longest branch", function() { var parser = Parsimmon.string("abc") .then(Parsimmon.string("def")) .or(Parsimmon.string("ab").then(Parsimmon.string("cd"))); @@ -41,7 +41,7 @@ suite("or", function() { }); }); - test("prefer last of equal length branches", function() { + it("prefer last of equal length branches", function() { var parser = Parsimmon.string("abc") .then(Parsimmon.string("def")) .or(Parsimmon.string("abc").then(Parsimmon.string("d"))); @@ -57,7 +57,7 @@ suite("or", function() { }); }); - test("prefer longest branch even after a success", function() { + it("prefer longest branch even after a success", function() { var parser = Parsimmon.string("abcdef") .then(Parsimmon.string("g")) .or(Parsimmon.string("ab")) @@ -75,7 +75,7 @@ suite("or", function() { }); }); - test("prefer longest branch even in a .many()", function() { + it("prefer longest branch even in a .many()", function() { var list = Parsimmon.lazy(function() { return atom .or(sexpr) @@ -111,7 +111,7 @@ suite("or", function() { }); }); - test("prefer longest branch in .or() nested in .many()", function() { + it("prefer longest branch in .or() nested in .many()", function() { var parser = Parsimmon.string("abc") .then(Parsimmon.string("def")) .or(Parsimmon.string("a")) diff --git a/test/core/parse.test.js b/test/core/parse.test.js index 0132d66..ac3a802 100644 --- a/test/core/parse.test.js +++ b/test/core/parse.test.js @@ -1,7 +1,7 @@ "use strict"; -suite(".parse", function() { - test("Unique and sorted .expected array", function() { +describe(".parse", function() { + it("Unique and sorted .expected array", function() { var parser = Parsimmon.alt( Parsimmon.fail("c"), Parsimmon.fail("a"), @@ -15,7 +15,7 @@ suite(".parse", function() { assert.deepEqual(result.expected, ["a", "b", "c"]); }); - test("throws when given a non-string argument", function() { + it("throws when given a non-string argument", function() { assert.throws(function() { Parsimmon.of("kaboom").parse(0); }); diff --git a/test/core/promap.test.js b/test/core/promap.test.js index 095a313..5c80d31 100644 --- a/test/core/promap.test.js +++ b/test/core/promap.test.js @@ -1,6 +1,6 @@ "use strict"; -suite("promap", function() { +describe("promap", function() { function toLower(x) { return x.toLowerCase(); } @@ -21,12 +21,12 @@ suite("promap", function() { return x - 1; } - test("with a function, transforms the input and parses that, and transforms the output", function() { + it("with a function, transforms the input and parses that, and transforms the output", function() { var parser = Parsimmon.string("a").promap(toLower, ord); assert.deepEqual(parser.parse("A"), { status: true, value: 0x61 }); }); - test("asserts that a function was given", function() { + it("asserts that a function was given", function() { assert.throws(function() { Parsimmon.string("x").promap("not a function", toLower); }); @@ -36,7 +36,7 @@ suite("promap", function() { }); }); - test("upholds profunctor law of composition", function() { + it("upholds profunctor law of composition", function() { var parser1 = Parsimmon.string("aa") .promap(toLower, length) .promap(chrs, sub1); diff --git a/test/core/range.test.js b/test/core/range.test.js index c8a1519..30e6565 100644 --- a/test/core/range.test.js +++ b/test/core/range.test.js @@ -1,6 +1,6 @@ "use strict"; -suite("Parsimmon.range", function() { +describe("Parsimmon.range", function() { var codes = { a: "a".charCodeAt(0), z: "z".charCodeAt(0), @@ -9,21 +9,21 @@ suite("Parsimmon.range", function() { }; var a2z = Parsimmon.range("a", "z"); - test("should reject characters before the range", function() { + it("should reject characters before the range", function() { for (var i = codes.MIN; i < codes.a; i++) { var s = String.fromCharCode(i); assert.strictEqual(a2z.parse(s).status, false); } }); - test("should reject characters after the range", function() { + it("should reject characters after the range", function() { for (var i = codes.z + 1; i <= codes.MAX; i++) { var s = String.fromCharCode(i); assert.strictEqual(a2z.parse(s).status, false); } }); - test("should accept characters in the range", function() { + it("should accept characters in the range", function() { for (var i = codes.a; i <= codes.z; i++) { var s = String.fromCharCode(i); assert.strictEqual(a2z.parse(s).status, true); diff --git a/test/core/regexp.test.js b/test/core/regexp.test.js index 398ecd5..bb84446 100644 --- a/test/core/regexp.test.js +++ b/test/core/regexp.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("Parsimmon.regexp", function() { - test("general usage", function() { +describe("Parsimmon.regexp", function() { + it("general usage", function() { var parser = Parsimmon.regexp(/[0-9]/); assert.equal(parser.parse("1").value, "1"); @@ -32,17 +32,17 @@ suite("Parsimmon.regexp", function() { }); }); - test("rejects /g flag", function() { + it("rejects /g flag", function() { assert.throws(function() { Parsimmon.regexp(/a/g); }); }); - test("has alias Parsimmon.regex", function() { + it("has alias Parsimmon.regex", function() { assert.equal(Parsimmon.regex, Parsimmon.regexp); }); - test("supports groups", function() { + it("supports groups", function() { var parser0 = Parsimmon.regexp(/(\w)(\d)/, 0); var parser1 = Parsimmon.regexp(/(\w)(\d)/, 1); var parser2 = Parsimmon.regexp(/(\w)(\d)/, 2); diff --git a/test/core/result.test.js b/test/core/result.test.js index b91784d..a08f512 100644 --- a/test/core/result.test.js +++ b/test/core/result.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("result", function() { - test("returns a constant result", function() { +describe("result", function() { + it("returns a constant result", function() { var oneParser = Parsimmon.string("x").result(1); assert.deepEqual(oneParser.parse("x"), { status: true, value: 1 }); }); diff --git a/test/core/sepBy.test.js b/test/core/sepBy.test.js index 0c50597..7bed35a 100644 --- a/test/core/sepBy.test.js +++ b/test/core/sepBy.test.js @@ -1,6 +1,6 @@ "use strict"; -suite("Parsimmon.sepBy/sepBy1", function() { +describe("Parsimmon.sepBy/sepBy1", function() { var chars = Parsimmon.regexp(/[a-zA-Z]+/); var comma = Parsimmon.string(","); var csvSep = Parsimmon.sepBy(chars, comma); @@ -8,7 +8,7 @@ suite("Parsimmon.sepBy/sepBy1", function() { var csvSepB = chars.sepBy(comma); var csvSep1B = chars.sepBy1(comma); - test("successful, returns an array of parsed elements", function() { + it("successful, returns an array of parsed elements", function() { var input = "Heres,a,csv,string,in,our,restrictive,dialect"; var output = [ "Heres", @@ -35,7 +35,7 @@ suite("Parsimmon.sepBy/sepBy1", function() { }); }); - test("sepBy succeeds with the empty list on empty input, sepBy1 fails", function() { + it("sepBy succeeds with the empty list on empty input, sepBy1 fails", function() { assert.deepEqual(csvSep.parse("").value, []); assert.deepEqual(csvSepB.parse("").value, []); var failure = { @@ -51,7 +51,7 @@ suite("Parsimmon.sepBy/sepBy1", function() { assert.deepEqual(csvSep1B.parse(""), failure); }); - test("does not tolerate trailing separators", function() { + it("does not tolerate trailing separators", function() { var input = "Heres,a,csv,with,a,trailing,comma,"; var output = { status: false, diff --git a/test/core/seq.test.js b/test/core/seq.test.js index fdb8dac..719bdc9 100644 --- a/test/core/seq.test.js +++ b/test/core/seq.test.js @@ -1,6 +1,6 @@ "use strict"; -test("Parsimmon.seq", function() { +it("Parsimmon.seq", function() { var parser = Parsimmon.seq( Parsimmon.string("("), Parsimmon.regexp(/[^)]/) diff --git a/test/core/seqMap.test.js b/test/core/seqMap.test.js index 1edcef8..0e04cf7 100644 --- a/test/core/seqMap.test.js +++ b/test/core/seqMap.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("Parsimmon.seqMap", function() { - test("like Parsimmon.seq and .map but spreads arguments", function() { +describe("Parsimmon.seqMap", function() { + it("like Parsimmon.seq and .map but spreads arguments", function() { var add = function(a, b) { return a + b; }; @@ -9,14 +9,14 @@ suite("Parsimmon.seqMap", function() { assert.equal(parser.parse("").value, 3); }); - test("works for 1 arguments", function() { + it("works for 1 arguments", function() { var parser = Parsimmon.seqMap(function() { return 10; }); assert.equal(parser.parse("").value, 10); }); - test("works for 100 arguments", function() { + it("works for 100 arguments", function() { var sum = function() { var tot = 0; for (var i = 0; i < arguments.length; i++) { @@ -33,14 +33,14 @@ suite("Parsimmon.seqMap", function() { assert.equal(parser.parse("").value, 5050); }); - test("asserts the final argument is a function", function() { + it("asserts the final argument is a function", function() { Parsimmon.seqMap(function() {}); assert.throws(function() { Parsimmon.seqMap(1); }); }); - test("asserts at least 1 argument", function() { + it("asserts at least 1 argument", function() { assert.throws(function() { Parsimmon.seqMap(); }); diff --git a/test/core/seqObj.test.js b/test/core/seqObj.test.js index d5aca8a..5d76f99 100644 --- a/test/core/seqObj.test.js +++ b/test/core/seqObj.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("Parsimmon.seqObj", function() { - test("does not accept duplicate keys", function() { +describe("Parsimmon.seqObj", function() { + it("does not accept duplicate keys", function() { assert.throws(function() { Parsimmon.seqObj( ["a", Parsimmon.of(1)], @@ -11,13 +11,13 @@ suite("Parsimmon.seqObj", function() { }); }); - test("requires at least one key", function() { + it("requires at least one key", function() { assert.throws(function() { Parsimmon.seqObj(); }); }); - test("every key is present in the result object", function() { + it("every key is present in the result object", function() { var parser = Parsimmon.seqObj( ["a", Parsimmon.of(1)], ["b", Parsimmon.of(2)], @@ -31,7 +31,7 @@ suite("Parsimmon.seqObj", function() { }); }); - test("every parser is used", function() { + it("every parser is used", function() { var parser = Parsimmon.seqObj( ["a", Parsimmon.of(1)], ["b", Parsimmon.of(2)], @@ -41,7 +41,7 @@ suite("Parsimmon.seqObj", function() { assert.strictEqual(result.status, false); }); - test("every parser is used", function() { + it("every parser is used", function() { var parser = Parsimmon.seqObj( Parsimmon.string("a"), ["b", Parsimmon.string("b")], @@ -56,7 +56,7 @@ suite("Parsimmon.seqObj", function() { }); }); - test("named parser arrays are formed properly", function() { + it("named parser arrays are formed properly", function() { assert.throws(function() { Parsimmon.seqObj([]); }); @@ -74,7 +74,7 @@ suite("Parsimmon.seqObj", function() { }); }); - test("accepts 'constructor' as a key", function() { + it("accepts 'constructor' as a key", function() { var parser = Parsimmon.seqObj(["constructor", Parsimmon.of(1)]); var result = parser.tryParse(""); assert.deepStrictEqual(result, { diff --git a/test/core/skip.test.js b/test/core/skip.test.js index d3cb4e2..8d767f9 100644 --- a/test/core/skip.test.js +++ b/test/core/skip.test.js @@ -1,13 +1,13 @@ "use strict"; -suite("skip", function() { - test("uses the previous return value", function() { +describe("skip", function() { + it("uses the previous return value", function() { var parser = Parsimmon.string("x").skip(Parsimmon.string("y")); assert.deepStrictEqual(parser.parse("xy"), { status: true, value: "x" }); assert.strictEqual(parser.parse("x").status, false); }); - test("asserts that a parser was given", function() { + it("asserts that a parser was given", function() { assert.throws(function() { Parsimmon.string("x").skip("not a parser"); }); diff --git a/test/core/string.test.js b/test/core/string.test.js index 341d976..6c71849 100644 --- a/test/core/string.test.js +++ b/test/core/string.test.js @@ -1,6 +1,6 @@ "use strict"; -test("Parsimmon.string", function() { +it("Parsimmon.string", function() { var parser = Parsimmon.string("x"); var res = parser.parse("x"); assert.ok(res.status); diff --git a/test/core/takeWhile.test.js b/test/core/takeWhile.test.js index 2513efc..8fba157 100644 --- a/test/core/takeWhile.test.js +++ b/test/core/takeWhile.test.js @@ -1,6 +1,6 @@ "use strict"; -test("takeWhile", function() { +it("takeWhile", function() { var parser = Parsimmon.takeWhile(function(ch) { return ch !== "."; }).skip(Parsimmon.all); diff --git a/test/core/test.test.js b/test/core/test.test.js index 490ab2d..469b5c4 100644 --- a/test/core/test.test.js +++ b/test/core/test.test.js @@ -1,10 +1,10 @@ "use strict"; -test("test", function() { - var parser = Parsimmon.test(function(ch) { +it("test", function() { + var parser = Parsimmon.it(function(ch) { return ch !== "."; }); - var highBit = Parsimmon.test(function(ch) { + var highBit = Parsimmon.it(function(ch) { return ch | 128; }); assert.equal(parser.parse("x").value, "x"); @@ -13,6 +13,6 @@ test("test", function() { assert.equal(highBit.parse(Buffer.from([0])).status, true); assert.equal(highBit.parse(Buffer.from([127])).status, true); assert.throws(function() { - Parsimmon.test("not a function"); + Parsimmon.it("not a function"); }); }); diff --git a/test/core/then.test.js b/test/core/then.test.js index 3cbad20..db7bc2b 100644 --- a/test/core/then.test.js +++ b/test/core/then.test.js @@ -1,7 +1,7 @@ "use strict"; -suite(".then", function() { - test("with a parser, uses the last return value", function() { +describe(".then", function() { + it("with a parser, uses the last return value", function() { var parser = Parsimmon.string("x").then(Parsimmon.string("y")); assert.deepEqual(parser.parse("xy"), { status: true, value: "y" }); assert.deepEqual(parser.parse("y"), { @@ -24,7 +24,7 @@ suite(".then", function() { }); }); - test("errors when argument is not a parser", function() { + it("errors when argument is not a parser", function() { assert.throws(function() { Parsimmon.string("x").then("not a parser"); }); diff --git a/test/core/thru.test.js b/test/core/thru.test.js index 70abc1c..a9d5865 100644 --- a/test/core/thru.test.js +++ b/test/core/thru.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("parser.thru", function() { - test("should return wrapper(this)", function() { +describe("parser.thru", function() { + it("should return wrapper(this)", function() { function arrayify(x) { return [x]; } diff --git a/test/core/tie.test.js b/test/core/tie.test.js index 76c5d27..934e7ec 100644 --- a/test/core/tie.test.js +++ b/test/core/tie.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("parser.tie()", function() { - test("concatenates all the results", function() { +describe("parser.tie()", function() { + it("concatenates all the results", function() { var parser = Parsimmon.seq( Parsimmon.string("<| "), Parsimmon.letter, @@ -13,7 +13,7 @@ suite("parser.tie()", function() { assert.strictEqual(result, text); }); - test("only accept array of string parsers", function() { + it("only accept array of string parsers", function() { assert.throws(function() { Parsimmon.of(1) .tie() diff --git a/test/core/tieWith.test.js b/test/core/tieWith.test.js index 5ccafef..4f70d75 100644 --- a/test/core/tieWith.test.js +++ b/test/core/tieWith.test.js @@ -1,13 +1,13 @@ "use strict"; -suite("parser.tieWith()", function() { - test("handles empty args", function() { +describe("parser.tieWith()", function() { + it("handles empty args", function() { var parser = Parsimmon.of([]).tieWith(""); var result = parser.tryParse(""); assert.strictEqual(result, ""); }); - test("concatenates all the results", function() { + it("concatenates all the results", function() { var parser = Parsimmon.seq( Parsimmon.string("<| "), Parsimmon.letter, @@ -19,7 +19,7 @@ suite("parser.tieWith()", function() { assert.strictEqual(result, "<| +o+7+ |>"); }); - test("only accept array of string parsers", function() { + it("only accept array of string parsers", function() { assert.throws(function() { Parsimmon.of(1) .tieWith("") diff --git a/test/core/times.test.js b/test/core/times.test.js index 14c68c9..2b5cb5f 100644 --- a/test/core/times.test.js +++ b/test/core/times.test.js @@ -1,13 +1,13 @@ "use strict"; -suite("times", function() { - test("zero case", function() { +describe("times", function() { + it("zero case", function() { var zeroLetters = Parsimmon.letter.times(0); assert.deepEqual(zeroLetters.parse("").value, []); assert.ok(!zeroLetters.parse("x").status); }); - test("nonzero case", function() { + it("nonzero case", function() { var threeLetters = Parsimmon.letter.times(3); assert.deepEqual(threeLetters.parse("xyz").value, ["x", "y", "z"]); assert.ok(!threeLetters.parse("xy").status); @@ -19,7 +19,7 @@ suite("times", function() { assert.ok(!thenDigit.parse("xyzw").status); }); - test("with a min and max", function() { + it("with a min and max", function() { var someLetters = Parsimmon.letter.times(2, 4); assert.deepEqual(someLetters.parse("xy").value, ["x", "y"]); assert.deepEqual(someLetters.parse("xyz").value, ["x", "y", "z"]); @@ -36,7 +36,7 @@ suite("times", function() { assert.ok(!thenDigit.parse("x1").status); }); - test("checks that argument types are correct", function() { + it("checks that argument types are correct", function() { assert.throws(function() { Parsimmon.string("x").times("not a number"); }); @@ -51,7 +51,7 @@ suite("times", function() { }); }); - test("prefer longest branch in .times() too", function() { + it("prefer longest branch in .times() too", function() { var parser = Parsimmon.string("abc") .then(Parsimmon.string("def")) .or(Parsimmon.string("a")) diff --git a/test/core/trim.test.js b/test/core/trim.test.js index fe982b8..92f965f 100644 --- a/test/core/trim.test.js +++ b/test/core/trim.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("parser.trim", function() { - test("should remove stuff from the begin and end", function() { +describe("parser.trim", function() { + it("should remove stuff from the begin and end", function() { var parser = Parsimmon.letters.trim(Parsimmon.whitespace); var value = parser.tryParse("\t\n NICE \t\t "); assert.strictEqual(value, "NICE"); diff --git a/test/core/tryParse.test.js b/test/core/tryParse.test.js index f5f1bca..d58429a 100644 --- a/test/core/tryParse.test.js +++ b/test/core/tryParse.test.js @@ -1,18 +1,18 @@ "use strict"; -suite(".tryParse", function() { - test("returns just the value", function() { +describe(".tryParse", function() { + it("returns just the value", function() { var x = 4; assert.equal(Parsimmon.of(x).tryParse(""), x); }); - test("returns throws on a bad parse", function() { + it("returns throws on a bad parse", function() { assert.throws(function() { Parsimmon.digit.tryParse("a"); }); }); - test("thrown error message is equal to formatError", function() { + it("thrown error message is equal to formatError", function() { var input = "a"; var parser = Parsimmon.digit; var result = parser.parse(input); @@ -24,7 +24,7 @@ suite(".tryParse", function() { } }); - test("thrown error contains full result object", function() { + it("thrown error contains full result object", function() { var input = "a"; var parser = Parsimmon.digit; var result = parser.parse(input); @@ -35,7 +35,7 @@ suite(".tryParse", function() { } }); - test("thrown error message is equal to formatError", function() { + it("thrown error message is equal to formatError", function() { var input = "a"; var parser = Parsimmon.digit; try { diff --git a/test/core/wrap.test.js b/test/core/wrap.test.js index 79d5c95..fe634cf 100644 --- a/test/core/wrap.test.js +++ b/test/core/wrap.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("parser.wrap", function() { - test("should remove different stuff from the begin and end", function() { +describe("parser.wrap", function() { + it("should remove different stuff from the begin and end", function() { var lParen = Parsimmon.string("("); var rParen = Parsimmon.string(")"); var parser = Parsimmon.letters.wrap(lParen, rParen); diff --git a/test/laws/applicative.test.js b/test/laws/applicative.test.js index 89e5265..52aa75d 100644 --- a/test/laws/applicative.test.js +++ b/test/laws/applicative.test.js @@ -2,8 +2,8 @@ var H = require("../helpers"); -suite("Fantasy Land Applicative", function() { - test("identity", function() { +describe("Fantasy Land Applicative", function() { + it("identity", function() { var p1 = Parsimmon.any; var p2 = p1.ap( Parsimmon.of(function(x) { @@ -13,7 +13,7 @@ suite("Fantasy Land Applicative", function() { H.equivalentParsers(p1, p2, ["x", "z", "æ", "1", ""]); }); - test("homomorphism", function() { + it("homomorphism", function() { function fn(s) { return s.toUpperCase(); } @@ -23,7 +23,7 @@ suite("Fantasy Land Applicative", function() { assert.deepEqual(p1.parse(""), p2.parse("")); }); - test("interchange", function() { + it("interchange", function() { function increment(x) { return x + 1; } diff --git a/test/laws/apply.test.js b/test/laws/apply.test.js index 05eb1f0..2a0072e 100644 --- a/test/laws/apply.test.js +++ b/test/laws/apply.test.js @@ -2,8 +2,8 @@ var H = require("../helpers"); -suite("Fantasy Land Apply", function() { - test("composition", function() { +describe("Fantasy Land Apply", function() { + it("composition", function() { function reverse(s) { return s .split("") diff --git a/test/laws/chain.test.js b/test/laws/chain.test.js index 54f09b5..797c20e 100644 --- a/test/laws/chain.test.js +++ b/test/laws/chain.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("Fantasy Land Chain", function() { - test("associativity", function() { +describe("Fantasy Land Chain", function() { + it("associativity", function() { function appender(x) { return function(xs) { return Parsimmon.of(xs.concat(x)); diff --git a/test/laws/fantasy-land-aliases.test.js b/test/laws/fantasy-land-aliases.test.js index 663a129..919d603 100644 --- a/test/laws/fantasy-land-aliases.test.js +++ b/test/laws/fantasy-land-aliases.test.js @@ -1,6 +1,6 @@ "use strict"; -suite("fantasy-land/* method aliases", function() { +describe("fantasy-land/* method aliases", function() { function makeTester(name) { return function() { var flName = "fantasy-land/" + name; @@ -10,14 +10,14 @@ suite("fantasy-land/* method aliases", function() { } var methods = ["ap", "chain", "concat", "empty", "map", "of"]; for (var i = 0; i < methods.length; i++) { - test("fantasy-land/" + methods[i] + " alias", makeTester(methods[i])); + it("fantasy-land/" + methods[i] + " alias", makeTester(methods[i])); } - test("Fantasy Land Parsimmon.empty alias", function() { + it("Fantasy Land Parsimmon.empty alias", function() { assert.equal(Parsimmon.empty, Parsimmon["fantasy-land/empty"]); }); - test("Fantasy Land Parsimmon.of alias", function() { + it("Fantasy Land Parsimmon.of alias", function() { assert.equal(Parsimmon.of, Parsimmon["fantasy-land/of"]); assert.equal(Parsimmon.of, Parsimmon.any.of); }); diff --git a/test/laws/functor.test.js b/test/laws/functor.test.js index e09cd24..669b826 100644 --- a/test/laws/functor.test.js +++ b/test/laws/functor.test.js @@ -2,8 +2,8 @@ var H = require("../helpers"); -suite("Fantasy Land Functor", function() { - test("identity", function() { +describe("Fantasy Land Functor", function() { + it("identity", function() { var p1 = Parsimmon.digits; var p2 = Parsimmon.digits.map(function(x) { return x; @@ -11,7 +11,7 @@ suite("Fantasy Land Functor", function() { H.equivalentParsers(p1, p2, ["091", "111111", "46782792", "oops"]); }); - test("composition", function() { + it("composition", function() { function increment(x) { return x + 1; } diff --git a/test/laws/monad.test.js b/test/laws/monad.test.js index 09e79b3..bd3eebb 100644 --- a/test/laws/monad.test.js +++ b/test/laws/monad.test.js @@ -1,7 +1,7 @@ "use strict"; -suite("Fantasy Land Monad", function() { - test("left identity", function() { +describe("Fantasy Land Monad", function() { + it("left identity", function() { function upperCase(x) { return Parsimmon.of(x.toUpperCase()); } @@ -18,7 +18,7 @@ suite("Fantasy Land Monad", function() { assert.deepEqual(out1, output); }); - test("right identity", function() { + it("right identity", function() { var input = "monad burrito"; var output = { status: true, diff --git a/test/laws/semigroup.test.js b/test/laws/semigroup.test.js index 0db7a37..cdc2f8f 100644 --- a/test/laws/semigroup.test.js +++ b/test/laws/semigroup.test.js @@ -2,8 +2,8 @@ var H = require("../helpers"); -suite("Fantasy Land Semigroup", function() { - test("associativity", function() { +describe("Fantasy Land Semigroup", function() { + it("associativity", function() { var a = Parsimmon.string("a"); var b = Parsimmon.string("b"); var c = Parsimmon.string("c"); diff --git a/test/setup.js b/test/setup.js index 0f8aadb..9e3485c 100644 --- a/test/setup.js +++ b/test/setup.js @@ -1,4 +1,4 @@ "use strict"; -global.assert = require("assert"); +global.assert = require("chai").assert; global.Parsimmon = require(".."); From 5444d8150e7e36d7971b2114ab496286cf330399 Mon Sep 17 00:00:00 2001 From: Brian Mock Date: Sun, 7 Jul 2019 16:35:02 -0700 Subject: [PATCH 2/4] oops --- package-lock.json | 45 +++++++++++++++++++++++++++++++----------- test/core/test.test.js | 6 +++--- 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 555a833..fb2b227 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5926,7 +5926,8 @@ "ansi-regex": { "version": "2.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "aproba": { "version": "1.2.0", @@ -5947,12 +5948,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -5967,17 +5970,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -6094,7 +6100,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -6106,6 +6113,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -6120,6 +6128,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -6127,12 +6136,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -6151,6 +6162,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -6231,7 +6243,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -6243,6 +6256,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -6328,7 +6342,8 @@ "safe-buffer": { "version": "5.1.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "safer-buffer": { "version": "2.1.2", @@ -6364,6 +6379,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -6383,6 +6399,7 @@ "version": "3.0.1", "bundled": true, "dev": true, + "optional": true, "requires": { "ansi-regex": "^2.0.0" } @@ -6426,12 +6443,14 @@ "wrappy": { "version": "1.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "yallist": { "version": "3.0.2", "bundled": true, - "dev": true + "dev": true, + "optional": true } } }, @@ -9337,6 +9356,7 @@ "version": "0.1.4", "bundled": true, "dev": true, + "optional": true, "requires": { "kind-of": "^3.0.2", "longest": "^1.0.1", @@ -10129,7 +10149,8 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "loose-envify": { "version": "1.3.1", diff --git a/test/core/test.test.js b/test/core/test.test.js index 469b5c4..3bad4cf 100644 --- a/test/core/test.test.js +++ b/test/core/test.test.js @@ -1,10 +1,10 @@ "use strict"; it("test", function() { - var parser = Parsimmon.it(function(ch) { + var parser = Parsimmon.test(function(ch) { return ch !== "."; }); - var highBit = Parsimmon.it(function(ch) { + var highBit = Parsimmon.test(function(ch) { return ch | 128; }); assert.equal(parser.parse("x").value, "x"); @@ -13,6 +13,6 @@ it("test", function() { assert.equal(highBit.parse(Buffer.from([0])).status, true); assert.equal(highBit.parse(Buffer.from([127])).status, true); assert.throws(function() { - Parsimmon.it("not a function"); + Parsimmon.test("not a function"); }); }); From e27349bef30ffa4e7da58619982f4f8d881f9ccf Mon Sep 17 00:00:00 2001 From: Brian Mock Date: Sun, 7 Jul 2019 17:39:07 -0700 Subject: [PATCH 3/4] Fixes #282 --- karma.conf.js | 8 +- src/parsimmon.js | 4 +- test/{core => buffer}/bitSeq.test.js | 0 test/{core => buffer}/bitSeqObj.test.js | 0 test/{core => buffer}/buffer.test.js | 0 test/{core => buffer}/byte.test.js | 0 test/buffer/contramap.test.js | 23 ++ test/{core => buffer}/doubleBE.test.js | 0 test/{core => buffer}/doubleLE.test.js | 0 test/{core => buffer}/encodedString.test.js | 0 test/{core => buffer}/floatBE.test.js | 0 test/{core => buffer}/floatLE.test.js | 0 test/buffer/formatError.test.js | 282 ++++++++++++++++++++ test/{core => buffer}/intBE.test.js | 0 test/{core => buffer}/intLE.test.js | 0 test/buffer/parse.test.js | 12 + test/buffer/promap.test.js | 37 +++ test/buffer/test.test.js | 10 + test/{core => buffer}/uintBE.test.js | 0 test/{core => buffer}/uintLE.test.js | 0 test/core/contramap.test.js | 20 -- test/core/formatError.test.js | 279 ------------------- test/core/parse.test.js | 9 - test/core/promap.test.js | 30 --- test/core/test.test.js | 6 - test/helpers.js | 9 - test/laws/applicative.test.js | 6 +- test/laws/apply.test.js | 6 +- test/laws/functor.test.js | 8 +- test/laws/semigroup.test.js | 6 +- test/setup.js | 30 ++- 31 files changed, 412 insertions(+), 373 deletions(-) rename test/{core => buffer}/bitSeq.test.js (100%) rename test/{core => buffer}/bitSeqObj.test.js (100%) rename test/{core => buffer}/buffer.test.js (100%) rename test/{core => buffer}/byte.test.js (100%) create mode 100644 test/buffer/contramap.test.js rename test/{core => buffer}/doubleBE.test.js (100%) rename test/{core => buffer}/doubleLE.test.js (100%) rename test/{core => buffer}/encodedString.test.js (100%) rename test/{core => buffer}/floatBE.test.js (100%) rename test/{core => buffer}/floatLE.test.js (100%) create mode 100644 test/buffer/formatError.test.js rename test/{core => buffer}/intBE.test.js (100%) rename test/{core => buffer}/intLE.test.js (100%) create mode 100644 test/buffer/parse.test.js create mode 100644 test/buffer/promap.test.js create mode 100644 test/buffer/test.test.js rename test/{core => buffer}/uintBE.test.js (100%) rename test/{core => buffer}/uintLE.test.js (100%) delete mode 100644 test/helpers.js diff --git a/karma.conf.js b/karma.conf.js index c75bf4f..8459bdf 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -1,7 +1,9 @@ +"use strict"; + // Karma configuration // Generated on Sun Jul 07 2019 10:17:21 GMT-0800 (GMT-08:00) -module.exports = config => { +module.exports = function(config) { config.set({ // base path that will be used to resolve all patterns (eg. files, exclude) basePath: "", @@ -11,10 +13,10 @@ module.exports = config => { frameworks: ["mocha", "chai"], // list of files / patterns to load in the browser - files: ["build/parsimmon.umd.min.js", "test/**/*.js"], + files: ["build/parsimmon.umd.min.js", "test/setup.js", "test/**/*.test.js"], // list of files / patterns to exclude - exclude: [], + exclude: ["test/buffer/*"], // preprocess matching files before serving them to the browser // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor diff --git a/src/parsimmon.js b/src/parsimmon.js index 0cf8fe6..114a7ba 100644 --- a/src/parsimmon.js +++ b/src/parsimmon.js @@ -100,7 +100,7 @@ function bufferExists() { function ensureBuffer() { if (!bufferExists()) { throw new Error( - "Buffer global does not exist; please consider using https://github.com/feross/buffer if you are running Parsimmon in a browser." + "Buffer global does not exist; please use webpack if you need to parse Buffers in the browser." ); } } @@ -211,8 +211,8 @@ function bitSeqObj(namedAlignments) { } function parseBufferFor(other, length) { - ensureBuffer(); return new Parsimmon(function(input, i) { + ensureBuffer(); if (i + length > input.length) { return makeFailure(i, length + " bytes for " + other); } diff --git a/test/core/bitSeq.test.js b/test/buffer/bitSeq.test.js similarity index 100% rename from test/core/bitSeq.test.js rename to test/buffer/bitSeq.test.js diff --git a/test/core/bitSeqObj.test.js b/test/buffer/bitSeqObj.test.js similarity index 100% rename from test/core/bitSeqObj.test.js rename to test/buffer/bitSeqObj.test.js diff --git a/test/core/buffer.test.js b/test/buffer/buffer.test.js similarity index 100% rename from test/core/buffer.test.js rename to test/buffer/buffer.test.js diff --git a/test/core/byte.test.js b/test/buffer/byte.test.js similarity index 100% rename from test/core/byte.test.js rename to test/buffer/byte.test.js diff --git a/test/buffer/contramap.test.js b/test/buffer/contramap.test.js new file mode 100644 index 0000000..8f4d144 --- /dev/null +++ b/test/buffer/contramap.test.js @@ -0,0 +1,23 @@ +"use strict"; + +describe("contramap", function() { + function toLower(x) { + return x.toLowerCase(); + } + + function chrs(b) { + return b.toString("ascii"); + } + + it("upholds contravariant law of composition", function() { + var parser1 = Parsimmon.string("a") + .contramap(toLower) + .contramap(chrs); + var parser2 = Parsimmon.string("a").contramap(function(x) { + return toLower(chrs(x)); + }); + var input = Buffer.from([0x61]); + + assert.deepEqual(parser1.parse(input), parser2.parse(input)); + }); +}); diff --git a/test/core/doubleBE.test.js b/test/buffer/doubleBE.test.js similarity index 100% rename from test/core/doubleBE.test.js rename to test/buffer/doubleBE.test.js diff --git a/test/core/doubleLE.test.js b/test/buffer/doubleLE.test.js similarity index 100% rename from test/core/doubleLE.test.js rename to test/buffer/doubleLE.test.js diff --git a/test/core/encodedString.test.js b/test/buffer/encodedString.test.js similarity index 100% rename from test/core/encodedString.test.js rename to test/buffer/encodedString.test.js diff --git a/test/core/floatBE.test.js b/test/buffer/floatBE.test.js similarity index 100% rename from test/core/floatBE.test.js rename to test/buffer/floatBE.test.js diff --git a/test/core/floatLE.test.js b/test/buffer/floatLE.test.js similarity index 100% rename from test/core/floatLE.test.js rename to test/buffer/floatLE.test.js diff --git a/test/buffer/formatError.test.js b/test/buffer/formatError.test.js new file mode 100644 index 0000000..0c67fe0 --- /dev/null +++ b/test/buffer/formatError.test.js @@ -0,0 +1,282 @@ +"use strict"; + +function fill(length, filler) { + var res = []; + for (var i = 0; i < length; i++) { + res.push(filler); + } + return res; +} + +describe("formatError", function() { + it("byte buffer error at the end of the short input", function() { + var parser = Parsimmon.seq( + Parsimmon.Binary.byte(0x00).many(), + Parsimmon.Binary.byte(0x01) + ); + + var expectation = + "\n" + + "-- PARSING FAILED --------------------------------------------------\n" + + "\n" + + "> 00 | 00 02\n" + + " | ^^\n" + + "\n" + + "Expected one of the following: \n" + + "\n" + + "0x00, 0x01" + + "\n"; + + var input = Buffer.from([0x0, 0x02]); + var answer = Parsimmon.formatError(input, parser.parse(input)); + + assert.deepEqual(answer, expectation); + }); + + it("byte buffer error with a value one character long", function() { + var parser = Parsimmon.seq(Parsimmon.Binary.byte(0x1)); + + var expectation = + "\n" + + "-- PARSING FAILED --------------------------------------------------\n" + + "\n" + + "> 00 | 02\n" + + " | ^^\n" + + "\n" + + "Expected:\n" + + "\n" + + "0x01" + + "\n"; + + var input = Buffer.from([0x2]); + var answer = Parsimmon.formatError(input, parser.parse(input)); + + assert.deepEqual(answer, expectation); + }); + + it("byte buffer error with multi-line input", function() { + var parser = Parsimmon.seq( + Parsimmon.Binary.byte(0x00).many(), + Parsimmon.Binary.byte(0x01) + ); + + var expectation = + "\n" + + "-- PARSING FAILED --------------------------------------------------\n" + + "\n" + + " 10 | 00 00 00 00 00 00 00 00\n" + + " 18 | 00 00 00 00 00 00 00 00\n" + + " 20 | 00 00 00 00 00 00 00 00\n" + + " 28 | 00 00 00 00 00 00 00 00\n" + + " 30 | 00 00 00 00 00 00 00 00\n" + + "> 38 | 00 00 ff 00 00 00 00 00\n" + + " | ^^\n" + + " 40 | 00 00 00 00 00 00 00 00\n" + + " 48 | 00 00 00 00 00 00 00 00\n" + + " 50 | 00 00 00 00 00 00 00 00\n" + + " 58 | 00 00 00 00 00 00 00 00\n" + + "\n" + + "Expected one of the following: \n" + + "\n" + + "0x00, 0x01" + + "\n"; + + var input = Buffer.from( + [].concat( + [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], + [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], + [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], + [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], + [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], + [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], + [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], + [0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0], // <- Error + [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], + [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], + [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], + [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], + [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], + [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], + [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0] + ) + ); + + var answer = Parsimmon.formatError(input, parser.parse(input)); + + assert.deepEqual(answer, expectation); + }); + + it("byte buffer error at the first line of the multi-line input", function() { + var parser = Parsimmon.seq( + Parsimmon.Binary.byte(0x00).many(), + Parsimmon.Binary.byte(0x01) + ); + + var expectation = + "\n" + + "-- PARSING FAILED --------------------------------------------------\n" + + "\n" + + "> 00 | 00 00 ff 00 00 00 00 00\n" + + " | ^^\n" + + " 08 | 00 00 00 00\n" + + "\n" + + "Expected one of the following: \n" + + "\n" + + "0x00, 0x01" + + "\n"; + + var input = Buffer.from( + [].concat([0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0], [0x0, 0x0, 0x0, 0x0]) + ); + + var answer = Parsimmon.formatError(input, parser.parse(input)); + + assert.deepEqual(answer, expectation); + }); + + it("byte buffer error at the end of the multi-line input", function() { + var parser = Parsimmon.seq( + Parsimmon.Binary.byte(0x00).many(), + Parsimmon.Binary.byte(0x01) + ); + + var expectation = + "\n" + + "-- PARSING FAILED --------------------------------------------------\n" + + "\n" + + " 20 | 00 00 00 00 00 00 00 00\n" + + " 28 | 00 00 00 00 00 00 00 00\n" + + " 30 | 00 00 00 00 00 00 00 00\n" + + " 38 | 00 00 00 00 00 00 00 00\n" + + " 40 | 00 00 00 00 00 00 00 00\n" + + "> 48 | 00 00 00 00 00 00 00 ff\n" + + " | ^^\n" + + "\n" + + "Expected one of the following: \n" + + "\n" + + "0x00, 0x01" + + "\n"; + + // 90 bytes + var input = Buffer.from( + [].concat( + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff] // <- Error + ) + ); + + var answer = Parsimmon.formatError(input, parser.parse(input)); + + assert.deepEqual(answer, expectation); + }); + + it("parsing error in a large byte buffer", function() { + var parser = Parsimmon.seq( + Parsimmon.Binary.byte(0x00).many(), + Parsimmon.Binary.byte(0x01) + ); + + var expectation = + "\n" + + "-- PARSING FAILED --------------------------------------------------\n" + + "\n" + + " 0fd0 | 00 00 00 00 00 00 00 00\n" + + " 0fd8 | 00 00 00 00 00 00 00 00\n" + + " 0fe0 | 00 00 00 00 00 00 00 00\n" + + " 0fe8 | 00 00 00 00 00 00 00 00\n" + + " 0ff0 | 00 00 00 00 00 00 00 00\n" + + "> 0ff8 | 00 00 00 00 00 00 00 ff\n" + + " | ^^\n" + + " 1000 | 00 00 00 00 00 00 00 00\n" + + " 1008 | 00 00 00 00 00 00 00 00\n" + + " 1010 | 00 00 00 00 00 00 00 00\n" + + " 1018 | 00 00 00 00 00 00 00 00\n" + + "\n" + + "Expected one of the following: \n" + + "\n" + + "0x00, 0x01" + + "\n"; + + var list = fill(8 * 511, 0x0); + + var input = Buffer.from( + [].concat( + list, + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff], // <- Error + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], + [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00] + ) + ); + + var answer = Parsimmon.formatError(input, parser.parse(input)); + + assert.deepEqual(answer, expectation); + }); + + it("error marker is padded with correctly in an error on a fourth byte", function() { + var parser = Parsimmon.seq( + Parsimmon.Binary.byte(0x01), + Parsimmon.Binary.byte(0x00), + Parsimmon.Binary.byte(0x00), + Parsimmon.Binary.byte(0x02), + Parsimmon.Binary.byte(0x01) + ); + + var expectation = + "\n" + + "-- PARSING FAILED --------------------------------------------------\n" + + "\n" + + "> 00 | 01 00 00 03 00\n" + + " | ^^\n" + + "\n" + + "Expected:\n" + + "\n" + + "0x02" + + "\n"; + + var input = Buffer.from([0x01, 0x00, 0x00, 0x03, 0x00]); + + var answer = Parsimmon.formatError(input, parser.parse(input)); + + assert.deepEqual(answer, expectation); + }); + + it("error marker is padded with correctly in an error on a fifth byte", function() { + var parser = Parsimmon.seq( + Parsimmon.Binary.byte(0x01), + Parsimmon.Binary.byte(0x00), + Parsimmon.Binary.byte(0x00), + Parsimmon.Binary.byte(0x02), + Parsimmon.Binary.byte(0x01) + ); + + var expectation = + "\n" + + "-- PARSING FAILED --------------------------------------------------\n" + + "\n" + + "> 00 | 01 00 00 02 00\n" + + " | ^^\n" + + "\n" + + "Expected:\n" + + "\n" + + "0x01" + + "\n"; + + var input = Buffer.from([0x01, 0x00, 0x00, 0x02, 0x00]); + + var answer = Parsimmon.formatError(input, parser.parse(input)); + + assert.deepEqual(answer, expectation); + }); +}); diff --git a/test/core/intBE.test.js b/test/buffer/intBE.test.js similarity index 100% rename from test/core/intBE.test.js rename to test/buffer/intBE.test.js diff --git a/test/core/intLE.test.js b/test/buffer/intLE.test.js similarity index 100% rename from test/core/intLE.test.js rename to test/buffer/intLE.test.js diff --git a/test/buffer/parse.test.js b/test/buffer/parse.test.js new file mode 100644 index 0000000..b105276 --- /dev/null +++ b/test/buffer/parse.test.js @@ -0,0 +1,12 @@ +"use strict"; + +describe(".parse", function() { + context("The input is a buffer.", function() { + it("Formats errors correctly.", function() { + var parser = Parsimmon.Binary.byte(0); + assert.throws(function() { + parser.tryParse(Buffer.from([0xf])); + }, /0x00/); + }); + }); +}); diff --git a/test/buffer/promap.test.js b/test/buffer/promap.test.js new file mode 100644 index 0000000..48200dd --- /dev/null +++ b/test/buffer/promap.test.js @@ -0,0 +1,37 @@ +"use strict"; + +describe("promap", function() { + function toLower(x) { + return x.toLowerCase(); + } + + function chrs(b) { + return b.toString("ascii"); + } + + function length(x) { + return x.length; + } + + function sub1(x) { + return x - 1; + } + + it("upholds profunctor law of composition", function() { + var parser1 = Parsimmon.string("aa") + .promap(toLower, length) + .promap(chrs, sub1); + + var parser2 = Parsimmon.string("aa").promap( + function(x) { + return toLower(chrs(x)); + }, + function(x) { + return sub1(length(x)); + } + ); + var input = Buffer.from([0x41, 0x41]); + + assert.deepEqual(parser1.parse(input), parser2.parse(input)); + }); +}); diff --git a/test/buffer/test.test.js b/test/buffer/test.test.js new file mode 100644 index 0000000..28fef5c --- /dev/null +++ b/test/buffer/test.test.js @@ -0,0 +1,10 @@ +"use strict"; + +it("test", function() { + var highBit = Parsimmon.test(function(ch) { + return ch | 128; + }); + assert.equal(highBit.parse(Buffer.from([255])).status, true); + assert.equal(highBit.parse(Buffer.from([0])).status, true); + assert.equal(highBit.parse(Buffer.from([127])).status, true); +}); diff --git a/test/core/uintBE.test.js b/test/buffer/uintBE.test.js similarity index 100% rename from test/core/uintBE.test.js rename to test/buffer/uintBE.test.js diff --git a/test/core/uintLE.test.js b/test/buffer/uintLE.test.js similarity index 100% rename from test/core/uintLE.test.js rename to test/buffer/uintLE.test.js diff --git a/test/core/contramap.test.js b/test/core/contramap.test.js index e74991c..6cd5c88 100644 --- a/test/core/contramap.test.js +++ b/test/core/contramap.test.js @@ -1,14 +1,6 @@ "use strict"; describe("contramap", function() { - function toLower(x) { - return x.toLowerCase(); - } - - function chrs(b) { - return b.toString("ascii"); - } - it("with a function, transforms the input and parses that", function() { var parser = Parsimmon.string("x").contramap(function(x) { return x.toLowerCase(); @@ -22,18 +14,6 @@ describe("contramap", function() { }); }); - it("upholds contravariant law of composition", function() { - var parser1 = Parsimmon.string("a") - .contramap(toLower) - .contramap(chrs); - var parser2 = Parsimmon.string("a").contramap(function(x) { - return toLower(chrs(x)); - }); - var input = Buffer.from([0x61]); - - assert.deepEqual(parser1.parse(input), parser2.parse(input)); - }); - it("embedded contramaps make sense", function() { var parser = Parsimmon.seq( Parsimmon.string("a"), diff --git a/test/core/formatError.test.js b/test/core/formatError.test.js index 3bd7db7..d6c6847 100644 --- a/test/core/formatError.test.js +++ b/test/core/formatError.test.js @@ -1,13 +1,5 @@ "use strict"; -function fill(length, filler) { - var res = []; - for (var i = 0; i < length; i++) { - res.push(filler); - } - return res; -} - describe("formatError", function() { it("end of input", function() { var parser = Parsimmon.alt( @@ -154,275 +146,4 @@ describe("formatError", function() { assert.deepEqual(answer, expectation); }); - - it("byte buffer error at the end of the short input", function() { - var parser = Parsimmon.seq( - Parsimmon.Binary.byte(0x00).many(), - Parsimmon.Binary.byte(0x01) - ); - - var expectation = - "\n" + - "-- PARSING FAILED --------------------------------------------------\n" + - "\n" + - "> 00 | 00 02\n" + - " | ^^\n" + - "\n" + - "Expected one of the following: \n" + - "\n" + - "0x00, 0x01" + - "\n"; - - var input = Buffer.from([0x0, 0x02]); - var answer = Parsimmon.formatError(input, parser.parse(input)); - - assert.deepEqual(answer, expectation); - }); - - it("byte buffer error with a value one character long", function() { - var parser = Parsimmon.seq(Parsimmon.Binary.byte(0x1)); - - var expectation = - "\n" + - "-- PARSING FAILED --------------------------------------------------\n" + - "\n" + - "> 00 | 02\n" + - " | ^^\n" + - "\n" + - "Expected:\n" + - "\n" + - "0x01" + - "\n"; - - var input = Buffer.from([0x2]); - var answer = Parsimmon.formatError(input, parser.parse(input)); - - assert.deepEqual(answer, expectation); - }); - - it("byte buffer error with multi-line input", function() { - var parser = Parsimmon.seq( - Parsimmon.Binary.byte(0x00).many(), - Parsimmon.Binary.byte(0x01) - ); - - var expectation = - "\n" + - "-- PARSING FAILED --------------------------------------------------\n" + - "\n" + - " 10 | 00 00 00 00 00 00 00 00\n" + - " 18 | 00 00 00 00 00 00 00 00\n" + - " 20 | 00 00 00 00 00 00 00 00\n" + - " 28 | 00 00 00 00 00 00 00 00\n" + - " 30 | 00 00 00 00 00 00 00 00\n" + - "> 38 | 00 00 ff 00 00 00 00 00\n" + - " | ^^\n" + - " 40 | 00 00 00 00 00 00 00 00\n" + - " 48 | 00 00 00 00 00 00 00 00\n" + - " 50 | 00 00 00 00 00 00 00 00\n" + - " 58 | 00 00 00 00 00 00 00 00\n" + - "\n" + - "Expected one of the following: \n" + - "\n" + - "0x00, 0x01" + - "\n"; - - var input = Buffer.from( - [].concat( - [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], - [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], - [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], - [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], - [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], - [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], - [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], - [0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0], // <- Error - [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], - [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], - [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], - [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], - [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], - [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0], - [0x0, 0x0, 0x00, 0x0, 0x0, 0x0, 0x0, 0x0] - ) - ); - - var answer = Parsimmon.formatError(input, parser.parse(input)); - - assert.deepEqual(answer, expectation); - }); - - it("byte buffer error at the first line of the multi-line input", function() { - var parser = Parsimmon.seq( - Parsimmon.Binary.byte(0x00).many(), - Parsimmon.Binary.byte(0x01) - ); - - var expectation = - "\n" + - "-- PARSING FAILED --------------------------------------------------\n" + - "\n" + - "> 00 | 00 00 ff 00 00 00 00 00\n" + - " | ^^\n" + - " 08 | 00 00 00 00\n" + - "\n" + - "Expected one of the following: \n" + - "\n" + - "0x00, 0x01" + - "\n"; - - var input = Buffer.from( - [].concat([0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0], [0x0, 0x0, 0x0, 0x0]) - ); - - var answer = Parsimmon.formatError(input, parser.parse(input)); - - assert.deepEqual(answer, expectation); - }); - - it("byte buffer error at the end of the multi-line input", function() { - var parser = Parsimmon.seq( - Parsimmon.Binary.byte(0x00).many(), - Parsimmon.Binary.byte(0x01) - ); - - var expectation = - "\n" + - "-- PARSING FAILED --------------------------------------------------\n" + - "\n" + - " 20 | 00 00 00 00 00 00 00 00\n" + - " 28 | 00 00 00 00 00 00 00 00\n" + - " 30 | 00 00 00 00 00 00 00 00\n" + - " 38 | 00 00 00 00 00 00 00 00\n" + - " 40 | 00 00 00 00 00 00 00 00\n" + - "> 48 | 00 00 00 00 00 00 00 ff\n" + - " | ^^\n" + - "\n" + - "Expected one of the following: \n" + - "\n" + - "0x00, 0x01" + - "\n"; - - // 90 bytes - var input = Buffer.from( - [].concat( - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff] // <- Error - ) - ); - - var answer = Parsimmon.formatError(input, parser.parse(input)); - - assert.deepEqual(answer, expectation); - }); - - it("parsing error in a large byte buffer", function() { - var parser = Parsimmon.seq( - Parsimmon.Binary.byte(0x00).many(), - Parsimmon.Binary.byte(0x01) - ); - - var expectation = - "\n" + - "-- PARSING FAILED --------------------------------------------------\n" + - "\n" + - " 0fd0 | 00 00 00 00 00 00 00 00\n" + - " 0fd8 | 00 00 00 00 00 00 00 00\n" + - " 0fe0 | 00 00 00 00 00 00 00 00\n" + - " 0fe8 | 00 00 00 00 00 00 00 00\n" + - " 0ff0 | 00 00 00 00 00 00 00 00\n" + - "> 0ff8 | 00 00 00 00 00 00 00 ff\n" + - " | ^^\n" + - " 1000 | 00 00 00 00 00 00 00 00\n" + - " 1008 | 00 00 00 00 00 00 00 00\n" + - " 1010 | 00 00 00 00 00 00 00 00\n" + - " 1018 | 00 00 00 00 00 00 00 00\n" + - "\n" + - "Expected one of the following: \n" + - "\n" + - "0x00, 0x01" + - "\n"; - - var list = fill(8 * 511, 0x0); - - var input = Buffer.from( - [].concat( - list, - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff], // <- Error - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00], - [0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x00] - ) - ); - - var answer = Parsimmon.formatError(input, parser.parse(input)); - - assert.deepEqual(answer, expectation); - }); - - it("error marker is padded with correctly in an error on a fourth byte", function() { - var parser = Parsimmon.seq( - Parsimmon.Binary.byte(0x01), - Parsimmon.Binary.byte(0x00), - Parsimmon.Binary.byte(0x00), - Parsimmon.Binary.byte(0x02), - Parsimmon.Binary.byte(0x01) - ); - - var expectation = - "\n" + - "-- PARSING FAILED --------------------------------------------------\n" + - "\n" + - "> 00 | 01 00 00 03 00\n" + - " | ^^\n" + - "\n" + - "Expected:\n" + - "\n" + - "0x02" + - "\n"; - - var input = Buffer.from([0x01, 0x00, 0x00, 0x03, 0x00]); - - var answer = Parsimmon.formatError(input, parser.parse(input)); - - assert.deepEqual(answer, expectation); - }); - - it("error marker is padded with correctly in an error on a fifth byte", function() { - var parser = Parsimmon.seq( - Parsimmon.Binary.byte(0x01), - Parsimmon.Binary.byte(0x00), - Parsimmon.Binary.byte(0x00), - Parsimmon.Binary.byte(0x02), - Parsimmon.Binary.byte(0x01) - ); - - var expectation = - "\n" + - "-- PARSING FAILED --------------------------------------------------\n" + - "\n" + - "> 00 | 01 00 00 02 00\n" + - " | ^^\n" + - "\n" + - "Expected:\n" + - "\n" + - "0x01" + - "\n"; - - var input = Buffer.from([0x01, 0x00, 0x00, 0x02, 0x00]); - - var answer = Parsimmon.formatError(input, parser.parse(input)); - - assert.deepEqual(answer, expectation); - }); }); diff --git a/test/core/parse.test.js b/test/core/parse.test.js index ac3a802..b552883 100644 --- a/test/core/parse.test.js +++ b/test/core/parse.test.js @@ -23,13 +23,4 @@ describe(".parse", function() { Parsimmon.of("kaboom").parse(); }); }); - - context("The input is a buffer.", function() { - it("Formats errors correctly.", function() { - var parser = Parsimmon.Binary.byte(0); - assert.throws(function() { - parser.tryParse(Buffer.from([0xf])); - }, /0x00/); - }); - }); }); diff --git a/test/core/promap.test.js b/test/core/promap.test.js index 5c80d31..5b2042a 100644 --- a/test/core/promap.test.js +++ b/test/core/promap.test.js @@ -9,18 +9,6 @@ describe("promap", function() { return chr.charCodeAt(0); } - function chrs(b) { - return b.toString("ascii"); - } - - function length(x) { - return x.length; - } - - function sub1(x) { - return x - 1; - } - it("with a function, transforms the input and parses that, and transforms the output", function() { var parser = Parsimmon.string("a").promap(toLower, ord); assert.deepEqual(parser.parse("A"), { status: true, value: 0x61 }); @@ -35,22 +23,4 @@ describe("promap", function() { Parsimmon.string("x").promap(toLower, "not a function"); }); }); - - it("upholds profunctor law of composition", function() { - var parser1 = Parsimmon.string("aa") - .promap(toLower, length) - .promap(chrs, sub1); - - var parser2 = Parsimmon.string("aa").promap( - function(x) { - return toLower(chrs(x)); - }, - function(x) { - return sub1(length(x)); - } - ); - var input = Buffer.from([0x41, 0x41]); - - assert.deepEqual(parser1.parse(input), parser2.parse(input)); - }); }); diff --git a/test/core/test.test.js b/test/core/test.test.js index 3bad4cf..5dd2321 100644 --- a/test/core/test.test.js +++ b/test/core/test.test.js @@ -4,14 +4,8 @@ it("test", function() { var parser = Parsimmon.test(function(ch) { return ch !== "."; }); - var highBit = Parsimmon.test(function(ch) { - return ch | 128; - }); assert.equal(parser.parse("x").value, "x"); assert.equal(parser.parse(".").status, false); - assert.equal(highBit.parse(Buffer.from([255])).status, true); - assert.equal(highBit.parse(Buffer.from([0])).status, true); - assert.equal(highBit.parse(Buffer.from([127])).status, true); assert.throws(function() { Parsimmon.test("not a function"); }); diff --git a/test/helpers.js b/test/helpers.js deleted file mode 100644 index ea44f5d..0000000 --- a/test/helpers.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; - -function equivalentParsers(p1, p2, inputs) { - for (var i = 0; i < inputs.length; i++) { - assert.deepEqual(p1.parse(inputs[i]), p2.parse(inputs[i])); - } -} - -exports.equivalentParsers = equivalentParsers; diff --git a/test/laws/applicative.test.js b/test/laws/applicative.test.js index 52aa75d..1be34ec 100644 --- a/test/laws/applicative.test.js +++ b/test/laws/applicative.test.js @@ -1,6 +1,6 @@ -"use strict"; +/* global equivalentParsers */ -var H = require("../helpers"); +"use strict"; describe("Fantasy Land Applicative", function() { it("identity", function() { @@ -10,7 +10,7 @@ describe("Fantasy Land Applicative", function() { return x; }) ); - H.equivalentParsers(p1, p2, ["x", "z", "æ", "1", ""]); + equivalentParsers(p1, p2, ["x", "z", "æ", "1", ""]); }); it("homomorphism", function() { diff --git a/test/laws/apply.test.js b/test/laws/apply.test.js index 2a0072e..909605b 100644 --- a/test/laws/apply.test.js +++ b/test/laws/apply.test.js @@ -1,6 +1,6 @@ -"use strict"; +/* global equivalentParsers */ -var H = require("../helpers"); +"use strict"; describe("Fantasy Land Apply", function() { it("composition", function() { @@ -31,6 +31,6 @@ describe("Fantasy Land Apply", function() { Parsimmon.of(reverse).ap(Parsimmon.of(upperCase).map(compose)) ); - H.equivalentParsers(p1, p2, ["ok cool"]); + equivalentParsers(p1, p2, ["ok cool"]); }); }); diff --git a/test/laws/functor.test.js b/test/laws/functor.test.js index 669b826..4f9ff39 100644 --- a/test/laws/functor.test.js +++ b/test/laws/functor.test.js @@ -1,6 +1,6 @@ -"use strict"; +/* global equivalentParsers */ -var H = require("../helpers"); +"use strict"; describe("Fantasy Land Functor", function() { it("identity", function() { @@ -8,7 +8,7 @@ describe("Fantasy Land Functor", function() { var p2 = Parsimmon.digits.map(function(x) { return x; }); - H.equivalentParsers(p1, p2, ["091", "111111", "46782792", "oops"]); + equivalentParsers(p1, p2, ["091", "111111", "46782792", "oops"]); }); it("composition", function() { @@ -19,7 +19,7 @@ describe("Fantasy Land Functor", function() { return increment(Number(x)); }); var p2 = Parsimmon.digits.map(Number).map(increment); - H.equivalentParsers(p1, p2, [ + equivalentParsers(p1, p2, [ "12", "98789", "89772371298389217387128937979839821738", diff --git a/test/laws/semigroup.test.js b/test/laws/semigroup.test.js index cdc2f8f..add59c3 100644 --- a/test/laws/semigroup.test.js +++ b/test/laws/semigroup.test.js @@ -1,6 +1,6 @@ -"use strict"; +/* global equivalentParsers */ -var H = require("../helpers"); +"use strict"; describe("Fantasy Land Semigroup", function() { it("associativity", function() { @@ -9,6 +9,6 @@ describe("Fantasy Land Semigroup", function() { var c = Parsimmon.string("c"); var abc1 = a.concat(b).concat(c); var abc2 = a.concat(b.concat(c)); - H.equivalentParsers(abc1, abc2, ["abc", "ac"]); + equivalentParsers(abc1, abc2, ["abc", "ac"]); }); }); diff --git a/test/setup.js b/test/setup.js index 9e3485c..62a930d 100644 --- a/test/setup.js +++ b/test/setup.js @@ -1,4 +1,30 @@ +/* global globalThis */ + "use strict"; -global.assert = require("chai").assert; -global.Parsimmon = require(".."); +(function() { + if (typeof globalThis === "object") { + return; + } + Object.defineProperty(Object.prototype, "__magic__", { + get: function() { + return this; + }, + configurable: true // This makes it possible to `delete` the getter later. + }); + // eslint-disable-next-line no-undef + __magic__.globalThis = __magic__; // lolwat + delete Object.prototype.__magic__; +})(); + +// Karma loads these for us +if (typeof require !== "undefined") { + globalThis.assert = require("chai").assert; + globalThis.Parsimmon = require(".."); +} + +globalThis.equivalentParsers = function equivalentParsers(p1, p2, inputs) { + for (var i = 0; i < inputs.length; i++) { + assert.deepEqual(p1.parse(inputs[i]), p2.parse(inputs[i])); + } +}; From 89d1054a5e4a6db365b8b45255d7f40a546b5134 Mon Sep 17 00:00:00 2001 From: Brian Mock Date: Sun, 7 Jul 2019 17:49:22 -0700 Subject: [PATCH 4/4] oops --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5c24297..82ed2af 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ node_js: - "8" - "7" - "6" -test: +script: - npm test - npm run build - npm run test:chrome