diff --git a/.gitignore b/.gitignore index 305f4b1..ed0a8b2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ /node_modules -test/build +test/_build diff --git a/.travis.yml b/.travis.yml index 15dc198..57f9ecf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,3 @@ -sudo: false language: node_js node_js: - "node" diff --git a/History.md b/History.md index c95fbb3..2dd52e6 100644 --- a/History.md +++ b/History.md @@ -1,4 +1,13 @@ +3.1.0 / 2020-06-04 +================== + + * export runner and argument parser + * fix make check and lint target + * fix typo in Readme + * move command line tests to tape + * update tape to ~5 + 3.0.1 / 2020-04-22 ================== diff --git a/Makefile b/Makefile index b214e32..af191c8 100644 --- a/Makefile +++ b/Makefile @@ -1,68 +1,12 @@ -all: clean lint test +check: lint test lint: - ./node_modules/.bin/jshint *.js + ./node_modules/.bin/jshint *.js lib test bin/postcss -TESTS = opts source-maps source-maps-file config config-all js-config js-config-all invalid warning - -DIFF = diff -q - -test: \ - test-unit \ - test-help \ - test-version \ - $(patsubst %,test/build/%.css,$(TESTS)) - -test-unit: +test: ./node_modules/.bin/tape test/*.js -test-help: | test/build - ./bin/postcss --help - -test-version: | test/build - ./bin/postcss --version - -test/build/opts.css: test/fixtures/in.css | test/build - ./bin/postcss -u postcss-url --postcss-url.url=rebase -o $@ $< - @$(DIFF) $@ $(subst build,ref,$@) - -test/build/source-maps.css: test/fixtures/in.css | test/build - ./bin/postcss -u postcss-url --postcss-url.url=rebase --map -o $@ $< - @$(DIFF) $@ $(subst build,ref,$@) - -test/build/source-maps-file.css: test/fixtures/in.css | test/build - ./bin/postcss -u postcss-url --postcss-url.url=rebase --map file -o $@ $< - @$(DIFF) $@ $(subst build,ref,$@) - @$(DIFF) ${@}.map $(subst build,ref,${@}.map) - -test/build/invalid.css: test/fixtures/in-force-error.css | test/build - NODE_PATH=./test/fixtures ./bin/postcss --use dummy-plugin --dummy-plugin.fail=true -o $@ $< || echo Error is OK here.... - -test/build/warning.css: test/fixtures/in-warning.css | test/build - NODE_PATH=./test/fixtures ./bin/postcss --use dummy-plugin -o $@ $< && echo Warning is OK here.... - -test/build/config.css: test/fixtures/in.css | test/build - ./bin/postcss -u postcss-url -c test/fixtures/config.json -o $@ $< - @$(DIFF) $@ $(subst build,ref,$@) - -test/build/config-all.css: test/fixtures/in.css | test/build - ./bin/postcss -c test/fixtures/config-all.json test/fixtures/in.css - @$(DIFF) $@ $(subst build,ref,$@) - -test/build/js-config.css: test/fixtures/in.css | test/build - ./bin/postcss -u postcss-url -c test/fixtures/config.js -o $@ $< - @$(DIFF) $@ $(subst build,ref,$@) - -test/build/js-config-all.css: test/fixtures/in.css | test/build - ./bin/postcss -c test/fixtures/config-all.js test/fixtures/in.css - @$(DIFF) $@ $(subst build,ref,$@) - -test/build: - mkdir -p $@ - -.NOTPARALLEL: test/build - clean: - rm -rf test/build + rm -rf test/_build -.PHONY: all lint clean test test-help test-version +.PHONY: check clean lint test diff --git a/Readme.md b/Readme.md index 524068e..8f27cd2 100644 --- a/Readme.md +++ b/Readme.md @@ -6,6 +6,7 @@ # postcss-cli-simple Simple CLI for [postcss]. To be used in Makefiles. If you are looking for more options check out [postcss-cli]. +More on the [history of this project][history]. ## Installation @@ -63,7 +64,7 @@ JSON file with plugin configuration. Plugin names should be the keys. } ```` -JavaScript configuration can be used if functions are allowed as plugins parameters. Although you might be better of to write your own plugin. +JavaScript configuration can be used if functions are allowed as plugins parameters. Although you might be better off writing your own plugin. ````js module.exports = { @@ -128,6 +129,7 @@ MIT [postcss]: https://npmjs.org/package/postcss [postcss-cli]: https://npmjs.org/package/postcss-cli +[history]: https://github.com/postcss/postcss/issues/154#issuecomment-177278640 [source-map-options]: https://github.com/postcss/postcss/blob/master/docs/source-maps.md [pattern rules]: https://www.gnu.org/software/make/manual/html_node/Pattern-Rules.html [yargs dot notation]: https://www.npmjs.com/package/yargs#dot-notation diff --git a/bin/postcss b/bin/postcss index ade3350..30fb802 100755 --- a/bin/postcss +++ b/bin/postcss @@ -1,3 +1,10 @@ #!/usr/bin/env node -require('../'); +const { argv, run } = require('..'); +const args = argv(); + +if (typeof args === 'number') { + process.exit(args); +} else { + run(args, exitCode => process.exit(exitCode)); +} diff --git a/index.js b/index.js index f1298dd..66c9005 100644 --- a/index.js +++ b/index.js @@ -1,10 +1,4 @@ -const argv = require('./lib/argv'); -const run = require('./lib/run'); - -const args = argv(); - -if (typeof args === 'number') { - process.exit(args); -} else { - run(args, exitCode => process.exit(exitCode)); -} +module.exports = { + argv: require('./lib/argv'), + run: require('./lib/run') +}; diff --git a/package.json b/package.json index d407fba..bc44708 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "postcss-cli-simple", - "version": "3.0.1", + "version": "3.1.0", "description": "simple CLI for postcss", "main": "index.js", "bin": { "postcss": "./bin/postcss" }, "scripts": { - "test": "make" + "test": "make check" }, "repository": "https://github.com/pirxpilot/postcss-cli.git", "keywords": [ @@ -25,7 +25,7 @@ "devDependencies": { "jshint": "~2", "postcss-url": "^8.0.0", - "tape": "~4" + "tape": "~5" }, "files": [ "index.js", diff --git a/test/cmd.js b/test/cmd.js new file mode 100644 index 0000000..c210ae9 --- /dev/null +++ b/test/cmd.js @@ -0,0 +1,130 @@ +const { mkdir, rmdir, readFileSync } = require('fs'); +const { resolve } = require('path'); +const { exec } = require('child_process'); +const test = require('tape'); + +function c(strs) { + return strs + .map(s => s + .replace('postcss', resolve(__dirname, '../bin/postcss')) + .replace(/fixtures|ref|_build/g, p => resolve(__dirname, p)) + ) + .join(''); +} + +function read(path) { + return readFileSync(path, 'utf-8'); +} + +test('setup', function(t) { + mkdir(c`_build`, { recursive: true }, t.end); +}); + +test('help', function(t) { + exec(c`postcss --help`, function(err, stdout, stderr) { + t.ifError(err); + t.equal(stderr, ''); + t.ok(stdout.includes('Usage:'), 'help needs to include Usage'); + t.ok(stdout.includes('Options:'), 'help needs to include Options'); + t.ok(stdout.includes('Examples:'), 'help needs to include Examples'); + t.end(); + }); +}); + +test('version', function(t) { + exec(c`postcss --version`, function(err, stdout, stderr) { + t.ifError(err); + t.equal(stderr, ''); + t.ok(/postcss version: \d+\.\d+\.\d+/.test(stdout), 'version of postcss is displayed'); + t.end(); + }); +}); + +test('warning', function(t) { + const cmd = c` + NODE_PATH=fixtures postcss --use dummy-plugin -o _build/warning.css fixtures/in-warning.css + `; + exec(cmd, function(err, stdout, stderr) { + t.ifError(err); + t.equal(stderr, c`dummy-plugin: fixtures/in-warning.css:1:1: Dummy warning\n`, 'should display warning'); + t.equal(stdout, '', 'should be empty'); + t.end(); + }); +}); + +test('error', function(t) { + const cmd = c` + NODE_PATH=fixtures postcss \ + --use dummy-plugin \ + --dummy-plugin.fail=true \ + -o _build/invalid.css fixtures/in-force-error.css + `; + exec(cmd, function(err, stdout, stderr) { + t.ok(err, 'should return error'); + t.equal(err.code, 1); + t.equal(stderr, c`dummy-plugin: fixtures/in-force-error.css:1:1: Dummy error > 1 | a { + | ^ + 2 | background: url(image.png); + 3 | display: flex; +` + , 'should display error'); + // t.equal(stdout, '', 'should be empty'); + t.end(); + }); +}); + +test('source-maps-file', function(t) { + const cmd = c` + postcss -u postcss-url --postcss-url.url=rebase --map file -o _build/source-maps-file.css fixtures/in.css + `; + const expected = read(c`ref/source-maps-file.css`); + const expectedMap = read(c`ref/source-maps-file.css.map`); + exec(cmd, function(err, stdout, stderr) { + t.ifError(err); + t.equal(stderr, '', 'should be empty'); + t.equal(stdout, '', 'should be empty'); + + const output = read(c`_build/source-maps-file.css`); + t.equal(output, expected, 'css is compiled'); + + const outputMap = read(c`_build/source-maps-file.css.map`); + t.equal(outputMap, expectedMap, 'source map is emitted to a file'); + + t.end(); + }); +}); + +cliTest('opts', c`postcss --use -u postcss-url --postcss-url.url=rebase`); + +cliTest('source-maps', c`postcss -u postcss-url --postcss-url.url=rebase --map`); + +cliTest('config', c`postcss -u postcss-url -c fixtures/config.json`); + +cliTest('config-all', c`postcss -c fixtures/config-all.json`); + +cliTest('js-config', c`postcss -u postcss-url -c fixtures/config.js`); + +cliTest('js-config-all', c`postcss -c fixtures/config-all.js`); + + +test('teardown', function(t) { + rmdir(c`_build`, { recursive: true }, t.end); +}); + +function cliTest(name, cmd, + inpath = c`fixtures/in.css`, + outpath = c`_build/` + `${name}.css`, + refpath = outpath.replace('_build', 'ref') +) { + test(name, function(t) { + const expected = read(refpath); + exec(`${cmd} -o ${outpath} ${inpath}`, function(err, stdout, stderr) { + t.ifError(err); + t.equal(stderr, '', 'stderr should be empty'); + t.equal(stdout, '', 'stdout should be empty'); + const output = read(outpath); + t.equal(output, expected, 'css should be compiled'); + t.end(); + }); + }); +} diff --git a/yarn.lock b/yarn.lock index 81530a7..2b06cfb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,11 +9,23 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + async@~3: version "3.2.0" resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== +available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + dependencies: + array-filter "^1.0.0" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -93,17 +105,25 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -deep-equal@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== +deep-equal@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.3.tgz#cad1c15277ad78a5c01c49c2dee0f54de8a6a7b0" + integrity sha512-Spqdl4H+ky45I9ByyJtXteOm9CaIrPmnIPmOhrkKGNYWeDgCvJ8jNYVCTjChxW4FqGuZnLHADc8EKRMX6+CgvA== dependencies: + es-abstract "^1.17.5" + es-get-iterator "^1.1.0" is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" + is-date-object "^1.0.2" + is-regex "^1.0.5" + isarray "^2.0.5" + object-is "^1.1.2" object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" + object.assign "^4.1.0" + regexp.prototype.flags "^1.3.0" + side-channel "^1.0.2" + which-boxed-primitive "^1.0.1" + which-collection "^1.0.1" + which-typed-array "^1.1.2" define-properties@^1.1.2, define-properties@^1.1.3: version "1.1.3" @@ -112,7 +132,7 @@ define-properties@^1.1.2, define-properties@^1.1.3: dependencies: object-keys "^1.0.12" -defined@~1.0.0: +defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= @@ -150,7 +170,7 @@ domutils@1.5: dom-serializer "0" domelementtype "1" -dotignore@~0.1.2: +dotignore@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== @@ -163,11 +183,11 @@ entities@1.0: integrity sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY= entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" - integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + version "2.0.3" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" + integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== -es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: +es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5: version "1.17.5" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== @@ -184,6 +204,19 @@ es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: string.prototype.trimleft "^2.1.1" string.prototype.trimright "^2.1.1" +es-get-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" + integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== + dependencies: + es-abstract "^1.17.4" + has-symbols "^1.0.1" + is-arguments "^1.0.4" + is-map "^2.0.1" + is-set "^2.0.1" + is-string "^1.0.5" + isarray "^2.0.5" + es-to-primitive@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" @@ -203,24 +236,29 @@ exit@0.1.2, exit@0.1.x: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -for-each@~0.3.3: +for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: is-callable "^1.1.3" +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -function-bind@^1.1.1, function-bind@~1.1.1: +function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -glob@^7.1.1, glob@~7.1.6: +glob@^7.1.1, glob@^7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -242,7 +280,7 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has@^1.0.3, has@~1.0.3: +has@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== @@ -268,7 +306,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@~2.0.1, inherits@~2.0.4: +inherits@2, inherits@^2.0.4, inherits@~2.0.1: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -278,23 +316,53 @@ is-arguments@^1.0.4: resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== +is-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4" + integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g== + +is-boolean-object@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" + integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" - integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" + integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== -is-date-object@^1.0.1: +is-date-object@^1.0.1, is-date-object@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== -is-regex@^1.0.4, is-regex@^1.0.5, is-regex@~1.0.5: +is-map@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" + integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== + +is-number-object@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" + integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== + +is-regex@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== dependencies: has "^1.0.3" +is-set@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" + integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== + +is-string@^1.0.4, is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + is-symbol@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" @@ -302,15 +370,40 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" +is-typed-array@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.3.tgz#a4ff5a5e672e1a55f99c7f54e59597af5c1df04d" + integrity sha512-BSYUBOK/HJibQ30wWkWold5txYwMUXQct9YHAQJr8fSwvZoiglcqB0pd7vEN23+Tsi9IUEjztdOSzl4qLVYGTQ== + dependencies: + available-typed-arrays "^1.0.0" + es-abstract "^1.17.4" + foreach "^2.0.5" + has-symbols "^1.0.1" + +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakset@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" + integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + jshint@~2: - version "2.11.0" - resolved "https://registry.yarnpkg.com/jshint/-/jshint-2.11.0.tgz#7f3d99820b8b653eaaec7015a563b2d8101cbbc8" - integrity sha512-ooaD/hrBPhu35xXW4gn+o3SOuzht73gdBuffgJzrZBJZPGgGiiTvJEgTyxFvBO2nz0+X1G6etF8SzUODTlLY6Q== + version "2.11.1" + resolved "https://registry.yarnpkg.com/jshint/-/jshint-2.11.1.tgz#28ec7d1cf7baaae5ce7bd37b9a70ed6cfd938570" + integrity sha512-WXWePB8ssAH3DlD05IoqolsY6arhbll/1+i2JkRPpihQAuiNaR/gSt8VKIcxpV5m6XChP0hCwESQUqpuQMA8Tg== dependencies: cli "~1.0.0" console-browserify "1.1.x" @@ -327,9 +420,9 @@ lodash@~4.17.11: integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== mime@^2.3.1: - version "2.4.4" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.4.tgz#bd7b91135fc6b01cde3e9bae33d659b63d8857e5" - integrity sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA== + version "2.4.6" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== minimatch@^3.0.4, minimatch@~3.0.2: version "3.0.4" @@ -338,7 +431,7 @@ minimatch@^3.0.4, minimatch@~3.0.2: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.5, minimist@~1.2.0: +minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -350,12 +443,12 @@ mkdirp@^0.5.0: dependencies: minimist "^1.2.5" -object-inspect@^1.7.0, object-inspect@~1.7.0: +object-inspect@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== -object-is@^1.0.1: +object-is@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== @@ -407,9 +500,9 @@ postcss-url@^8.0.0: xxhashjs "^0.2.1" postcss@^7.0.2, "postcss@~5 || ~6 || ~7": - version "7.0.27" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" - integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== + version "7.0.32" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" + integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -425,7 +518,7 @@ readable-stream@1.1: isarray "0.0.1" string_decoder "~0.10.x" -regexp.prototype.flags@^1.2.0: +regexp.prototype.flags@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== @@ -433,14 +526,14 @@ regexp.prototype.flags@^1.2.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -resolve@~1.15.1: - version "1.15.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" - integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== +resolve@^1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" -resumer@~0.0.0: +resumer@^0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= @@ -452,12 +545,20 @@ shelljs@0.3.x: resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.3.0.tgz#3596e6307a781544f591f37da618360f31db57b1" integrity sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E= +side-channel@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.2.tgz#df5d1abadb4e4bf4af1cd8852bf132d2f7876947" + integrity sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA== + dependencies: + es-abstract "^1.17.0-next.1" + object-inspect "^1.7.0" + source-map@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -string.prototype.trim@~1.2.1: +string.prototype.trim@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" integrity sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw== @@ -524,32 +625,67 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -tape@~4: - version "4.13.2" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.13.2.tgz#eb419b9d9bc004025b1a81a5b63093e07f425629" - integrity sha512-waWwC/OqYVE9TS6r1IynlP2sEdk4Lfo6jazlgkuNkPTHIbuG2BTABIaKdlQWwPeB6Oo4ksZ1j33Yt0NTOAlYMQ== - dependencies: - deep-equal "~1.1.1" - defined "~1.0.0" - dotignore "~0.1.2" - for-each "~0.3.3" - function-bind "~1.1.1" - glob "~7.1.6" - has "~1.0.3" - inherits "~2.0.4" - is-regex "~1.0.5" - minimist "~1.2.0" - object-inspect "~1.7.0" - resolve "~1.15.1" - resumer "~0.0.0" - string.prototype.trim "~1.2.1" - through "~2.3.8" - -through@~2.3.4, through@~2.3.8: +tape@~5: + version "5.0.1" + resolved "https://registry.yarnpkg.com/tape/-/tape-5.0.1.tgz#0d70ce90a586387c4efda4393e72872672a416a3" + integrity sha512-wVsOl2shKPcjdJdc8a+PwacvrOdJZJ57cLUXlxW4TQ2R6aihXwG0m0bKm4mA4wjtQNTaLMCrYNEb4f9fjHKUYQ== + dependencies: + deep-equal "^2.0.3" + defined "^1.0.0" + dotignore "^0.1.2" + for-each "^0.3.3" + function-bind "^1.1.1" + glob "^7.1.6" + has "^1.0.3" + inherits "^2.0.4" + is-regex "^1.0.5" + minimist "^1.2.5" + object-inspect "^1.7.0" + object-is "^1.1.2" + object.assign "^4.1.0" + resolve "^1.17.0" + resumer "^0.0.0" + string.prototype.trim "^1.2.1" + through "^2.3.8" + +through@^2.3.8, through@~2.3.4: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +which-boxed-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.1.tgz#cbe8f838ebe91ba2471bb69e9edbda67ab5a5ec1" + integrity sha512-7BT4TwISdDGBgaemWU0N0OU7FeAEJ9Oo2P1PHRm/FCWoEi2VLWC9b6xvxAA3C/NMpxg3HXVgi0sMmGbNUbNepQ== + dependencies: + is-bigint "^1.0.0" + is-boolean-object "^1.0.0" + is-number-object "^1.0.3" + is-string "^1.0.4" + is-symbol "^1.0.2" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-typed-array@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.2.tgz#e5f98e56bda93e3dac196b01d47c1156679c00b2" + integrity sha512-KT6okrd1tE6JdZAy3o2VhMoYPh3+J6EMZLyrxBQsZflI1QCZIxMrIYLkosd8Twf+YfknVIHmYQPgJt238p8dnQ== + dependencies: + available-typed-arrays "^1.0.2" + es-abstract "^1.17.5" + foreach "^2.0.5" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"