diff --git a/.travis.yml b/.travis.yml index 14c9d3a..b0cc5a5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,11 +2,14 @@ language: node_js sudo: true dist: trusty node_js: - - 6 - 8 - 10 + - 12 install: - yarn +script: + - npm run lint + - npm test notifications: email: on_failure: change diff --git a/CHANGELOG.md b/CHANGELOG.md index c70097c..4d8294a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,12 @@ +3.2.6 - November, 24 2019 + +* 1764ccc Chore: update rcs-core to latest alpha 3 (JPeer264) +* 4cf2420 Improve documentation with usual caveats (#45) (X-Ryl669) +* 33a3722 Add support for warning the user about bad library usage (#46) (X-Ryl669) +* c230f13 Update rcs core (#44) (X-Ryl669) +* a10956d Chore: drop support for node v6, add support v12 (JPeer264) +* 8e35da9 Chore: add husky/lint-staged | travis lint check (JPeer264) + 3.2.5 - August, 01 2019 * 5f6bf01 Test: add testcase for #43 (JPeer264) diff --git a/README.md b/README.md index 32eef27..1adccc9 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,10 @@ You can also use a config file with the combination of [generateMapping](#genera - [Installation](#installation) - [Usage](#usage) - [Methods](#methods) +- [Caveats](#caveats) - [LICENSE](#license) + ## Installation Install with [npm](https://docs.npmjs.com/cli/install) or [yarn](https://yarnpkg.com/en/docs/install) @@ -38,7 +40,7 @@ Async: const rcs = require('rename-css-selectors') // if you want to include the .rcsrc config -rcs.includeConfig(); +rcs.config.load(); // if you have some generated mappings - load them! // you can also specify the string although it does not exist yet. @@ -98,7 +100,13 @@ try { - [rcs.process.any](docs/api/processAny.md) - [rcs.generateMapping](docs/api/generateMapping.md) - [rcs.loadMapping](docs/api/loadMapping.md) -- [rcs.includeConfig](docs/api/includeConfig.md) +- [rcs.config](docs/api/config.md) + +## Caveats + +Correctly using `rename-css-selectors` on large project means few rules should be followed. +[This document](docs/caveats.md) explains most of them. + # LICENSE diff --git a/docs/api/includeConfig.md b/docs/api/config.md similarity index 78% rename from docs/api/includeConfig.md rename to docs/api/config.md index e2ca21d..1eaacaf 100644 --- a/docs/api/includeConfig.md +++ b/docs/api/config.md @@ -1,6 +1,6 @@ -# includeConfig +# Config -**includeConfig([pathLocation])** +**Config.load([pathLocation])** > All available configs [here](#rcs-config) @@ -23,6 +23,7 @@ rcs.includeConfig(); - [Example](#example) - [Exclude](#exclude-classes-and-ids) +- [Ignore](#ignore-files) - [Include from other projects](#include-renamed-classes-from-other-project) ### Example @@ -70,3 +71,20 @@ Let's exclude 4 classes and id's: `js`, `flexbox`, `canvas` and `svg` ] } ``` + +### Ignore files + +`ignore` + +If you need to ignore some file or some file pattern from processing, this is how to do it using minimatch pattern (glob) +Please notice that filepathes are matched absolutely. + +```json +{ + "ignore": [ + "relativeFile.js", + "**/*.min.js", + ] +} +``` + diff --git a/docs/caveats.md b/docs/caveats.md new file mode 100644 index 0000000..22671d2 --- /dev/null +++ b/docs/caveats.md @@ -0,0 +1,155 @@ +# Using rename-css-selectors correctly and patterns to avoid + +`rename-css-selectors` is using `rcs-core` to perform its CSS selectors optimization. +The core is performing three steps on your files: +1. Extracting CSS's class and id selectors, keyframes, variables and attributes selectors +2. Assigning minified value for each entry it has found +3. Trying to replace all elements that could match in your files with the minified version + +## Caveats for step 1 +Currently, the first step is done on CSS syntax only (either from CSS files or extracted from HTML's ` +
+ Yeah +
+ +``` +Here, the *key* `'b'` in the javascript code can refer to the tag name `` (when being called by `document.querySelector`) or to the class `.b` (when being called by `document.getElementsByClassName`. +The core does not run your code (it only parses it) and, as such, can't figure out when a variable is being used for the former or latter case. +Please notice that the core can't expect a *class* selection by looking at `getElementsByClassName` since you can be using any library that's abstracting this (like jQuery, React...). + +So, to avoid this caveat, you can either: +* Avoid conflicting class name with potential HTML tag name (don't name your CSS class like `.b` or `.i` or `.span`, ...) +* Avoid using `getElementById`, `getElementsByClassName` in your javascript code (and only fallback to `querySelector` and `querySelectorsAll`) +* Reserve some mapping so the core can't use them (check the `config.reserve` array in the documentation about how to do that) +* Exclude any selector that's conflicting with any HTML tag name (check the `config.exclude` array in the documentation about how to do that) + + +### Warning: + +In the example above, `
` can be what the core is generating for your initial class `something`. So the example above could have been generated from this source: +``` + +
+ Yeah +
+ +``` +In that case, the initial code is semantically wrong since the `querySelector` should return `undefined`. The minified CSS selector code will thus return a different result in that case. + +If you had followed the advice above and excluded (or reserved) all potential HTML tag name (see below), then `something` won't be mapped to `b`, but, for example, `t` and the initial code behavior will be preserved. + +Similarly, if your initial code was: +```js +... +var a = 'b'; +... +``` +then the core will generate a warning telling you that `b` is already used in the renaming map and that you should fix the ambiguity. + +If you are in such cases (you are using `getElementById` et al) then the easiest solution is to exclude all potential HTML tag name with a config file containing: +```json +{ + "exclude": [ +"html", "head", "title", "base", "link", "meta", "style", "body", "article", "section", "nav", "aside", +"h1", "h2", "h3", "h4", "h5", "h6", "hgroup", "address", "p", "hr", "pre", "blockquote", "ol", "ul", +"menu", "li", "dl", "dt", "dd", "figure", "figcaption", "main", "div", "a", "em", "strong", "small", +"s", "cite", "q", "dfn", "abbr", "ruby", "rt", "rp", "data", "time", "code", "var", "samp", "kbd", +"sub", "sup", "i", "b", "u", "mark", "bdi", "bdo", "span", "br", "wbr", "ins", "del", "picture", +"source", "img", "iframe", "embed", "object", "param", "video", "audio", "track", "map", "area", +"table", "caption", "colgroup", "col", "tbody", "thead", "tfoot", "tr", "td", "th", "form", "label", +"input", "button", "select", "datalist", "optgroup", "option", "textarea", "output", "progress", "meter", +"fieldset", "legend", "details", "summary", "dialog", "script", "noscript", "template", "slot", "canvas"] +} +``` +The incovenient being that such selectors won't be minified (think about `header` for example, it's quite common for a class name) + +## Caveat for step 3 + +Replacement is relatively safe for CSS and HTML (again, because such format are explicit enough to avoiding ambiguity). + +Replacements inside Javascript code is much harder because a string for a selector can be generated from many small parts (like in `var a = '.' + objClass;`), can be used in functions that have different semantics (like `getElementById` and `querySelector`), etc... + +So, here's the way the core is trying to resolve ambiguities (but as seen above, not all ambiguities can be solved): + +1. Ecmascript template, like in ``var a = `some text ${jsVar}`;`` is parsed like HTML, looking for `class="X"` or `id='Y'` or `for="Z"`. + If you use template code to make your CSS selector from each part, it'll fail: + Don't write ``var myClass = 'something'; var sel = `.${myClass}`;``, but instead `var myClass = '.something'`. + +2. Each string literal is extracted from your javascript code and: + 1. If it contains some CSS specific selectors chars (like `#` or `.` or ` ` etc...), then it's parsed as a CSS selector. **This is safer and usually gives the expected result.** + 2. If it does not contain some CSS specific selectors (like a single word), then it's tried as an ID selector first and if not found as a class selector (or not replaced if not found in either one). + **This can lead to the ambiguity shown above.** + +So, to avoid such ambiguity, try to store your class or id with their respective prefix (`.` or `#`) in your code, and rely on `querySelector` et al. + +For example, here are some replacement selected by the library, with these CSS selector: + +```css +.something {} // Mapped to .a +#test {} // Mapped to #a +.test {} // Mapped to .b +``` + + + +| Initial code | Replaced code | Reason | +|---|---|---| +|`var a = 'something';`|`var a = 'b';`| The core could not deduce the string literal is a selector, so fallback to searching for any rule with `something`, class had one| +|`var a = 'test';`|`var a = 'a';`| The core could not deduce the string literal is a selector and in fallback to search for any rule, it selected #test=>#a since it was searched first| +|`var a = '.something';`|`var a = '.a';`| The core deduced a class selector was required and replaced it| +|`var a = '.test';`|`var a = '.b';`| The core deduced a class selector was required and replaced it| +|`var a = ' something';`|`var a = ' something';`| The core deduced the string literal is a CSS selector, but could not find any match| +|`var a = 'div[class=something]';`|`var a = 'div[class=a]';`| The core deduced the attribute selector was related to a class selector and replaced it| +|`var a = 'input[name=something]';`|`var a = 'input[name=something]';`| The core deduced the attribute selector wasn't related to a class, id or for attribute, no replacement was done| +|`var a = 'b #test, .something';`|`var a = 'b #a, .a';`| The core parsed all selectors and produced correct replacement for each of them| + + +### Another remark: + +Some are writing CSS selector this way: +```css +div[class = something] +{ +color: red; +} +``` +This is perfectly safe from javascript code (if you have `var a = 'div[class=something]';`), then this will be replaced correctly by the core (*to* `var a = 'div[class=b]';`). + +This however requires much more work from the developper so this is not a solution we recommend. + + diff --git a/index.js b/index.js index af38807..dc5f7b5 100644 --- a/index.js +++ b/index.js @@ -8,7 +8,7 @@ const generateMapping = require('./lib/mapping/generateMapping'); const loadMapping = require('./lib/mapping/loadMapping'); // config -const includeConfig = require('./lib/config/includeConfig'); +const config = require('./lib/config/config'); module.exports = { process: { @@ -28,5 +28,5 @@ module.exports = { generateMappingSync, generateMapping, loadMapping, - includeConfig, + config, }; diff --git a/lib/config/config.js b/lib/config/config.js new file mode 100644 index 0000000..42d2e47 --- /dev/null +++ b/lib/config/config.js @@ -0,0 +1,39 @@ +const rcs = require('rcs-core'); +const path = require('path'); +const json = require('json-extra'); +const minimatch = require('minimatch'); + +class Config { + constructor() { + this.ignorePatterns = []; + } + + load(pathString = path.join(process.cwd(), '.rcsrc')) { + let configObject; + + configObject = json.readToObjSync(pathString); + + if (!configObject) { + // package.json .rcs if no other config is found + configObject = json.readToObjSync(path.join(process.cwd(), 'package.json')).rcs; + } + + if (configObject.exclude) { + rcs.default.selectorsLibrary.setExclude(configObject.exclude); + } + + if (configObject.reserve) { + rcs.default.selectorsLibrary.setReserved(configObject.reserve); + } + + if (configObject.ignore) { + this.ignorePatterns = configObject.ignore; + } + } + + isIgnored(filePath) { + return this.ignorePatterns.some(pattern => minimatch(filePath, pattern)); + } +} + +module.exports = new Config(); diff --git a/lib/config/includeConfig.js b/lib/config/includeConfig.js deleted file mode 100644 index 1df72f8..0000000 --- a/lib/config/includeConfig.js +++ /dev/null @@ -1,20 +0,0 @@ -const rcs = require('rcs-core'); -const path = require('path'); -const json = require('json-extra'); - -const include = (pathString = path.join(process.cwd(), '.rcsrc')) => { - let configObject; - - configObject = json.readToObjSync(pathString); - - if (!configObject) { - // package.json .rcs if no other config is found - configObject = json.readToObjSync(path.join(process.cwd(), 'package.json')).rcs; - } - - if (configObject.exclude) { - rcs.selectorLibrary.setExclude(configObject.exclude); - } -}; // /include - -module.exports = include; diff --git a/lib/mapping/generateMapping.js b/lib/mapping/generateMapping.js index 66b9301..2fda88b 100644 --- a/lib/mapping/generateMapping.js +++ b/lib/mapping/generateMapping.js @@ -47,11 +47,17 @@ const generateMapping = (pathString, opts, cb) => { fileName = options.cssMapping; } - const cssMappingArray = rcs.selectorLibrary.getAll({ + const cssClassMappingArray = rcs.default.selectorsLibrary.getClassSelector().getAll({ extend: options.extended, getRenamedValues: !options.origValues, addSelectorType: options.isSelectors, }); + const cssIdMappingArray = rcs.default.selectorsLibrary.getIdSelector().getAll({ + extend: options.extended, + getRenamedValues: !options.origValues, + addSelectorType: options.isSelectors, + }); + const cssMappingArray = { class: cssClassMappingArray, id: cssIdMappingArray }; const cssMappingJsonString = json.check(cssMappingArray) ? cssMappingArray : json.stringify(cssMappingArray, null, '\t'); let writeData = cssMappingJsonString; diff --git a/lib/mapping/generateMappingSync.js b/lib/mapping/generateMappingSync.js index af18eb4..0c8f4a4 100644 --- a/lib/mapping/generateMappingSync.js +++ b/lib/mapping/generateMappingSync.js @@ -20,9 +20,11 @@ const generateMappingSync = (pathString, options) => { overwrite: false, }; + // eslint-disable-next-line no-param-reassign options = merge({}, optionsDefault, options); if (options.cssMappingMin) { + // eslint-disable-next-line no-param-reassign options.origValues = false; mappingName = 'CSS_NAME_MAPPING_MIN'; fileName = `${fileName}_min`; @@ -37,11 +39,17 @@ const generateMappingSync = (pathString, options) => { fileName = options.cssMapping; } - const cssMappingArray = rcs.selectorLibrary.getAll({ + const cssClassMappingArray = rcs.default.selectorsLibrary.getClassSelector().getAll({ extend: options.extended, getRenamedValues: !options.origValues, addSelectorType: options.isSelectors, }); + const cssIdMappingArray = rcs.default.selectorsLibrary.getIdSelector().getAll({ + extend: options.extended, + getRenamedValues: !options.origValues, + addSelectorType: options.isSelectors, + }); + const cssMappingArray = { class: cssClassMappingArray, id: cssIdMappingArray }; const cssMappingJsonString = json.check(cssMappingArray) ? cssMappingArray : json.stringify(cssMappingArray, null, '\t'); let writeData = cssMappingJsonString; diff --git a/lib/mapping/loadMapping.js b/lib/mapping/loadMapping.js index 5270993..0145f3d 100644 --- a/lib/mapping/loadMapping.js +++ b/lib/mapping/loadMapping.js @@ -2,38 +2,39 @@ const merge = require('lodash.merge'); const rcs = require('rcs-core'); const json = require('json-extra'); -const loadMapping = (pathString, options) => { +const loadReversed = selectors => + Object.entries(selectors).reduce( + (prev, [key, value]) => merge(prev, { [key.charAt(0) + value]: key.slice(1, key.length) }) + , {}); + +const loadMapping = (pathString, options = {}) => { let selectors = pathString; const optionsDefault = { origValues: true, }; - options = options || {}; + // eslint-disable-next-line no-param-reassign options = merge({}, optionsDefault, options); if (typeof pathString === 'string') { selectors = json.readToObjSync(pathString, 'utf8'); } - if (!options.origValues) { - const tempSelectors = {}; - - Object.keys(selectors).forEach((key) => { - const value = selectors[key]; - const modKey = key.slice(1, key.length); + let classes = selectors.class || {}; + let ids = selectors.id || {}; - tempSelectors[key.charAt(0) + value] = modKey; - }); - - selectors = tempSelectors; + if (!options.origValues) { + classes = loadReversed(classes); + ids = loadReversed(ids); } if (!selectors || typeof selectors !== 'object') { return; } - rcs.selectorLibrary.setMultiple(selectors); + rcs.default.selectorsLibrary.getClassSelector().setMultiple(classes); + rcs.default.selectorsLibrary.getIdSelector().setMultiple(ids); }; // /loadMapping module.exports = loadMapping; diff --git a/lib/process/process.js b/lib/process/process.js index aa743c7..59fd7fc 100644 --- a/lib/process/process.js +++ b/lib/process/process.js @@ -10,6 +10,7 @@ const assert = require('assert'); const save = require('../helper/save'); const replaceData = require('./replaceData'); const { fileExt, availableTypes, optionsDefault } = require('./defaults'); +const config = require('../config/config'); const rcsProcess = (pathString, opts, cb) => { let globString = pathString; @@ -37,6 +38,7 @@ const rcsProcess = (pathString, opts, cb) => { glob(globString, { cwd: options.cwd, + ignore: config.ignorePatterns, }, (errGlob, filesArray) => { if (errGlob) { return callback(errGlob); @@ -75,7 +77,7 @@ const rcsProcess = (pathString, opts, cb) => { const isHtml = fileExt.html.includes(path.extname(filePath)); - rcs.fillLibraries( + rcs.default.fillLibraries( bufferData.toString(), { prefix: options.prefix, @@ -129,6 +131,8 @@ const rcsProcess = (pathString, opts, cb) => { }); }); }, (errProcess) => { + rcs.default.warnings.warn(); + if (errProcess) { return callback(errProcess); } diff --git a/lib/process/processSync.js b/lib/process/processSync.js index 915ca10..2278d0d 100644 --- a/lib/process/processSync.js +++ b/lib/process/processSync.js @@ -8,6 +8,7 @@ const assert = require('assert'); const saveSync = require('../helper/saveSync'); const replaceData = require('./replaceData'); const { fileExt, availableTypes, optionsDefault } = require('./defaults'); +const config = require('../config/config'); /** * The synchronous method for process @@ -25,7 +26,7 @@ const processSync = (pathString, opts) => { globString = `{${pathString.join(',')}}`; } - const globArray = glob.sync(globString, { cwd: options.cwd }); + const globArray = glob.sync(globString, { cwd: options.cwd, ignore: config.ignorePatterns }); const cssHtmlFiles = globArray.filter(file => ( fileExt.css.includes(path.extname(file)) || fileExt.html.includes(path.extname(file)) @@ -39,7 +40,7 @@ const processSync = (pathString, opts) => { const fileData = fs.readFileSync(path.join(options.cwd, filePath), 'utf8'); const isHtml = fileExt.html.includes(path.extname(filePath)); - rcs.fillLibraries( + rcs.default.fillLibraries( fileData.toString(), { prefix: options.prefix, @@ -67,6 +68,8 @@ const processSync = (pathString, opts) => { saveSync(joinedPath, data, { overwrite: shouldOverwrite }); }); + + rcs.default.warnings.warn(); }; // /processSync module.exports = processSync; diff --git a/lib/process/replaceData.js b/lib/process/replaceData.js index 3f3a90d..819dc40 100644 --- a/lib/process/replaceData.js +++ b/lib/process/replaceData.js @@ -1,3 +1,4 @@ +const merge = require('lodash.merge'); const rcs = require('rcs-core'); const path = require('path'); const { fileExt } = require('./defaults'); @@ -5,6 +6,7 @@ const { fileExt } = require('./defaults'); const replaceData = (filePath, fileData, options) => { let data; + const sourceFile = { sourceFile: filePath }; if ( options.type === 'js' || ( @@ -12,7 +14,8 @@ const replaceData = (filePath, fileData, options) => { fileExt.js.includes(path.extname(filePath)) ) ) { - data = rcs.replace.js(fileData, options.parserOptions); + const jsxType = { ecmaFeatures: { jsx: path.extname(filePath).match(/jsx/i) !== null } }; + data = rcs.default.replace.js(fileData, merge(jsxType, options.parserOptions, sourceFile)); } else if ( options.type === 'css' || ( @@ -20,7 +23,7 @@ const replaceData = (filePath, fileData, options) => { fileExt.css.includes(path.extname(filePath)) ) ) { - data = rcs.replace.css(fileData); + data = rcs.default.replace.css(fileData, sourceFile); } else if ( options.type === 'html' || ( @@ -28,7 +31,7 @@ const replaceData = (filePath, fileData, options) => { fileExt.html.includes(path.extname(filePath)) ) ) { - data = rcs.replace.html(fileData); + data = rcs.default.replace.html(fileData, sourceFile); } else if ( options.type === 'pug' || ( @@ -36,9 +39,9 @@ const replaceData = (filePath, fileData, options) => { fileExt.pug.includes(path.extname(filePath)) ) ) { - data = rcs.replace.pug(fileData); + data = rcs.default.replace.pug(fileData, sourceFile); } else { - data = rcs.replace.any(fileData); + data = rcs.default.replace.any(fileData, sourceFile); } return data; diff --git a/package.json b/package.json index 98633bb..760a83c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rename-css-selectors", - "version": "3.2.5", + "version": "3.2.6", "description": "Rename css classes and id's in files", "main": "./index.js", "scripts": { @@ -25,6 +25,17 @@ "!test/files/**/*.js" ] }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "*.js": [ + "eslint --fix", + "git add" + ] + }, "keywords": [ "css", "minify", @@ -48,7 +59,8 @@ "glob": "^7.1.1", "json-extra": "^0.5.0", "lodash.merge": "^4.6.1", - "rcs-core": "^2.6.2", + "minimatch": "^3.0.4", + "rcs-core": "^3.0.0-alpha.3", "universalify": "^0.1.2" }, "devDependencies": { @@ -61,6 +73,8 @@ "eslint-config-airbnb-base": "^11.2.0", "eslint-plugin-import": "^2.7.0", "html-minifier": "^3.5.20", + "husky": "^3.0.4", + "lint-staged": "^9.2.3", "nyc": "^12.0.2" } } diff --git a/test/config.js b/test/config.js new file mode 100644 index 0000000..81938cd --- /dev/null +++ b/test/config.js @@ -0,0 +1,94 @@ +import test from 'ava'; +import path from 'path'; +import fs from 'fs-extra'; +import rcs from 'rcs-core'; + +import config from '../lib/config/config'; + +const testFiles = path.join(process.cwd(), '/test/files'); + +test.beforeEach(() => { + rcs.selectorsLibrary.getClassSelector().nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcs.selectorsLibrary.getIdSelector().nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcs.selectorsLibrary.reset(); + rcs.keyframesLibrary.reset(); +}); + +test.cb('should set the config with package.json', (t) => { + // include config + config.load(); + + // include new settings + rcs.selectorsLibrary.set(['.js', '.any-value']); + + t.is(rcs.selectorsLibrary.get('js'), 'js'); + t.is(rcs.selectorsLibrary.get('any-value'), 'a'); + + t.end(); +}); + +test.cb('should set the config with .rcsrc', (t) => { + const file = '.rcsrc'; + + fs.writeFileSync(file, `{ + "exclude": [ + "flexbox", + "no-js" + ], + "reserve": [ + "ad" + ] + }`, { + encoding: 'utf8', + }); + + // include config + config.load(); + + // include new settings + rcs.selectorsLibrary.set(['.flexbox', '.any-value']); + + t.is(rcs.selectorsLibrary.get('flexbox'), 'flexbox'); + t.is(rcs.selectorsLibrary.get('any-value'), 'a'); + + fs.removeSync(file); + + t.end(); +}); + +test.cb('should set the config with package.json', (t) => { + // include config + config.load(path.join(testFiles, '/config.json')); + + // include new settings + rcs.selectorsLibrary.set(['.own-file', '.any-value']); + + t.is(rcs.selectorsLibrary.get('own-file'), 'own-file'); + t.is(rcs.selectorsLibrary.get('any-value'), 'a'); + + t.end(); +}); + +test.cb('should load ignored patterns', (t) => { + const file = '.rcsrc'; + + fs.writeFileSync(file, `{ + "ignore": [ + "a.js", + "**.min.js" + ] + }`, { + encoding: 'utf8', + }); + + // include config + config.load(); + + t.true(config.isIgnored('a.js')); + t.true(config.isIgnored('b.min.js')); + t.false(config.isIgnored('b.js')); + + fs.removeSync(file); + + t.end(); +}); diff --git a/test/files/fixtures/js/react.js b/test/files/fixtures/js/react.jsx similarity index 100% rename from test/files/fixtures/js/react.js rename to test/files/fixtures/js/react.jsx diff --git a/test/files/fixtures/unknown.txt b/test/files/fixtures/unknown.txt new file mode 100644 index 0000000..bdec289 --- /dev/null +++ b/test/files/fixtures/unknown.txt @@ -0,0 +1 @@ +some '.jp-block' going here diff --git a/test/files/results/css/css-variables-ignore.css b/test/files/results/css/css-variables-ignore.css index 63c312f..1aa7157 100644 --- a/test/files/results/css/css-variables-ignore.css +++ b/test/files/results/css/css-variables-ignore.css @@ -46,17 +46,17 @@ content: 'block__element--modifier'; } -#i { +#a { content: 'id'; } -.j[src] { +.i[src] { content: 'attribute'; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } @media screen and (min-width: .40em) { - #i { + #a { height: .20px; width: .20em; } @@ -68,7 +68,7 @@ @media screen and (min-width: 40em) { - #i + #a { height: .20px; width: .20em; @@ -79,22 +79,22 @@ h1 { color: red; } -.k { +.j { content: 'reveal'; color: #eee; font-size: .5rem; } -.l.k { +.k.j { content: 'js reveal'; margin-right: calc(var(--theme-primary, var(--0px)) - var(--theme-secondary, var(--0px))); margin-bottom: calc(var(--theme-tertiary, var(--0px)) - var(--theme-primary, var(--0px))); } -.m.k { +.l.j { content: 'js reveal'; } -.n { +.m { content: 'js-reveal'; } diff --git a/test/files/results/css/css-variables.css b/test/files/results/css/css-variables.css index 8909a2c..3541abf 100644 --- a/test/files/results/css/css-variables.css +++ b/test/files/results/css/css-variables.css @@ -1,16 +1,16 @@ -.d { +.a { --a: #111; --b: #f0f0f0; --c: #999; } -.e { +.b { --a: red; --b: white; --c: black; } -.f { +.c { color: var(--a); background-color: var(--b); font-size: 1.2em; @@ -22,41 +22,41 @@ margin: 0 0 20px; } -.g { +.d { content: 'block'; } -.h { +.e { content: 'block__element'; } -.i { +.f { content: 'block__element--modifier'; } -.j{ +.g{ content: 'block--modifier'; } -.k:before { +.h:before { content: 'before'; } -.i { +.f { content: 'block__element--modifier'; } -#l { +#a { content: 'id'; } -.m[src] { +.i[src] { content: 'attribute'; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } @media screen and (min-width: .40em) { - #l { + #a { height: .20px; width: .20em; } @@ -68,7 +68,7 @@ @media screen and (min-width: 40em) { - #l + #a { height: .20px; width: .20em; @@ -79,22 +79,22 @@ h1 { color: red; } -.n { +.j { content: 'reveal'; color: #eee; font-size: .5rem; } -.o.n { +.k.j { content: 'js reveal'; margin-right: calc(var(--a, var(--0px)) - var(--b, var(--0px))); margin-bottom: calc(var(--c, var(--0px)) - var(--a, var(--0px))); } -.p.n { +.l.j { content: 'js reveal'; } -.q { +.m { content: 'js-reveal'; } diff --git a/test/files/results/css/style-prefix.css b/test/files/results/css/style-prefix.css index 0d6d26a..b63220a 100644 --- a/test/files/results/css/style-prefix.css +++ b/test/files/results/css/style-prefix.css @@ -22,17 +22,17 @@ content: 'block__element--modifier'; } -#prefixed-f { +#prefixed-a { content: 'id'; } -.prefixed-g[src] { +.prefixed-f[src] { content: 'attribute'; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } @media screen and (min-width: .40em) { - #prefixed-f { + #prefixed-a { height: .20px; width: .20em; } @@ -44,7 +44,7 @@ @media screen and (min-width: 40em) { - #prefixed-f + #prefixed-a { height: .20px; width: .20em; @@ -55,20 +55,20 @@ h1 { color: red; } -.prefixed-h { +.prefixed-g { content: 'reveal'; color: #eee; font-size: .5rem; } -.prefixed-i.prefixed-h { +.prefixed-h.prefixed-g { content: 'js reveal'; } -.prefixed-j.prefixed-h { +.prefixed-i.prefixed-g { content: 'js reveal'; } -.prefixed-k { +.prefixed-j { content: 'js-reveal'; } diff --git a/test/files/results/css/style.css b/test/files/results/css/style.css index 11558b4..dfeaa48 100644 --- a/test/files/results/css/style.css +++ b/test/files/results/css/style.css @@ -22,17 +22,17 @@ content: 'block__element--modifier'; } -#f { +#a { content: 'id'; } -.g[src] { +.f[src] { content: 'attribute'; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } @media screen and (min-width: .40em) { - #f { + #a { height: .20px; width: .20em; } @@ -44,7 +44,7 @@ @media screen and (min-width: 40em) { - #f + #a { height: .20px; width: .20em; @@ -55,20 +55,20 @@ h1 { color: red; } -.h { +.g { content: 'reveal'; color: #eee; font-size: .5rem; } -.i.h { +.h.g { content: 'js reveal'; } -.j.h { +.i.g { content: 'js reveal'; } -.k { +.j { content: 'js-reveal'; } diff --git a/test/files/results/css/style2.css b/test/files/results/css/style2.css index b841264..cb1f3f3 100644 --- a/test/files/results/css/style2.css +++ b/test/files/results/css/style2.css @@ -1,4 +1,4 @@ -#f { +#a { content: 'id'; } diff --git a/test/files/results/css/subdirectory/style.css b/test/files/results/css/subdirectory/style.css index 52ea801..4f047dd 100644 --- a/test/files/results/css/subdirectory/style.css +++ b/test/files/results/css/subdirectory/style.css @@ -22,6 +22,6 @@ content: 'before'; } -#f { +#a { content: 'id'; } diff --git a/test/files/results/html/index-with-style.html b/test/files/results/html/index-with-style.html index 9c857e1..f38da18 100644 --- a/test/files/results/html/index-with-style.html +++ b/test/files/results/html/index-with-style.html @@ -9,11 +9,11 @@
diff --git a/test/files/results/js/main.js b/test/files/results/js/main.js index aa940ed..ede96ee 100644 --- a/test/files/results/js/main.js +++ b/test/files/results/js/main.js @@ -3,7 +3,7 @@ $(".a"); // vanillaJS example -document.getElementsByClassName(" b"); +document.getElementsByClassName(" jp-block__element"); document.getElementById("c"); const restSpread = { diff --git a/test/files/results/js/react.js b/test/files/results/js/react.jsx similarity index 100% rename from test/files/results/js/react.js rename to test/files/results/js/react.jsx diff --git a/test/files/results/unknown.txt b/test/files/results/unknown.txt new file mode 100644 index 0000000..c108447 --- /dev/null +++ b/test/files/results/unknown.txt @@ -0,0 +1 @@ +some '.a' going here diff --git a/test/generateMapping.js b/test/generateMapping.js index 5bd60d1..f8cd068 100644 --- a/test/generateMapping.js +++ b/test/generateMapping.js @@ -12,9 +12,9 @@ const fixturesCwd = path.join(process.cwd(), '/test/files/fixtures'); test.beforeEach.cb((t) => { fs.removeSync(testCwd); - rcsCore.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcsCore.nameGenerator.reset(); - rcsCore.selectorLibrary.reset(); + rcsCore.selectorsLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.keyframesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.selectorsLibrary.reset(); rcsCore.keyframesLibrary.reset(); rcs.process.css('**/style*.css', { @@ -30,8 +30,8 @@ test.cb('should create the normal mapping file', (t) => { const cssMapping = json.readToObjSync(path.join(testCwd, '/renaming_map.json'), 'utf8'); t.falsy(err); - t.is(cssMapping['.jp-block'], 'a'); - t.is(cssMapping['.jp-block__element'], 'b'); + t.is(cssMapping.class['.jp-block'], 'a'); + t.is(cssMapping.class['.jp-block__element'], 'b'); t.end(); }); @@ -45,8 +45,8 @@ test.cb('should create the minified mapping file', (t) => { const cssMappingMin = json.readToObjSync(path.join(testCwd, '/renaming_map_min.json'), 'utf8'); t.falsy(err); - t.is(cssMappingMin['.a'], 'jp-block'); - t.is(cssMappingMin['.b'], 'jp-block__element'); + t.is(cssMappingMin.class['.a'], 'jp-block'); + t.is(cssMappingMin.class['.b'], 'jp-block__element'); t.end(); }); @@ -59,9 +59,8 @@ test.cb('should create the extended normal mapping file', (t) => { const cssMapping = json.readToObjSync(path.join(testCwd, '/renaming_map.json'), 'utf8'); t.falsy(err); - t.truthy(cssMapping['.jp-block'].type); - t.truthy(cssMapping['.jp-block'].typeChar); - t.is(cssMapping['.jp-block'].type, 'class'); + t.truthy(cssMapping.class['.jp-block'].type); + t.is(cssMapping.class['.jp-block'].type, 'class'); t.end(); }); @@ -76,8 +75,7 @@ test.cb('should create the minified mapping file', (t) => { const cssMappingMin = json.readToObjSync(path.join(testCwd, '/renaming_map_min.json'), 'utf8'); t.falsy(err); - t.truthy(cssMappingMin['.a'].typeChar); - t.is(cssMappingMin['.a'].type, 'class'); + t.is(cssMappingMin.class['.a'].type, 'class'); t.end(); }); @@ -90,8 +88,8 @@ test.cb('should create the minified mapping file with a custom name', (t) => { const cssMappingMin = json.readToObjSync(path.join(testCwd, '/custom-name.json'), 'utf8'); t.falsy(err); - t.is(cssMappingMin['.a'], 'jp-block'); - t.is(cssMappingMin['.b'], 'jp-block__element'); + t.is(cssMappingMin.class['.a'], 'jp-block'); + t.is(cssMappingMin.class['.b'], 'jp-block__element'); t.end(); }); @@ -139,8 +137,8 @@ test.cb('should create the custom names minified mapping file', (t) => { const cssMapping = json.readToObjSync(path.join(testCwd, '/custom-name.json'), 'utf8'); t.falsy(err); - t.is(cssMapping['.jp-block'], 'a'); - t.is(cssMapping['.jp-block__element'], 'b'); + t.is(cssMapping.class['.jp-block'], 'a'); + t.is(cssMapping.class['.jp-block__element'], 'b'); t.end(); }); diff --git a/test/generateMappingSync.js b/test/generateMappingSync.js index 9511ce6..7402d82 100644 --- a/test/generateMappingSync.js +++ b/test/generateMappingSync.js @@ -11,9 +11,9 @@ const testCwd = path.join(process.cwd(), '/test/files/testCache'); const fixturesCwd = path.join(process.cwd(), '/test/files/fixtures'); test.beforeEach.cb((t) => { - rcsCore.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcsCore.nameGenerator.reset(); - rcsCore.selectorLibrary.reset(); + rcsCore.selectorsLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.keyframesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.selectorsLibrary.reset(); rcsCore.keyframesLibrary.reset(); rcs.process.css('**/style*.css', { @@ -33,8 +33,8 @@ test('should create the normal mapping file synchronously', (t) => { const cssMapping = json.readToObjSync(path.join(testCwd, '/renaming_map.json'), 'utf8'); - t.is(cssMapping['.jp-block'], 'a'); - t.is(cssMapping['.jp-block__element'], 'b'); + t.is(cssMapping.class['.jp-block'], 'a'); + t.is(cssMapping.class['.jp-block__element'], 'b'); }); test('should create the minified mapping file synchronously', (t) => { @@ -45,8 +45,8 @@ test('should create the minified mapping file synchronously', (t) => { const cssMappingMin = json.readToObjSync(path.join(testCwd, '/renaming_map_min.json'), 'utf8'); - t.is(cssMappingMin['.a'], 'jp-block'); - t.is(cssMappingMin['.b'], 'jp-block__element'); + t.is(cssMappingMin.class['.a'], 'jp-block'); + t.is(cssMappingMin.class['.b'], 'jp-block__element'); }); test('should create the custom names minified mapping file synchronously', (t) => { @@ -56,8 +56,8 @@ test('should create the custom names minified mapping file synchronously', (t) = const cssMapping = json.readToObjSync(path.join(testCwd, '/custom-name.json'), 'utf8'); - t.is(cssMapping['.jp-block'], 'a'); - t.is(cssMapping['.jp-block__element'], 'b'); + t.is(cssMapping.class['.jp-block'], 'a'); + t.is(cssMapping.class['.jp-block__element'], 'b'); }); test('should create the minified mapping file with a custom name synchronously', (t) => { @@ -67,8 +67,8 @@ test('should create the minified mapping file with a custom name synchronously', const cssMappingMin = json.readToObjSync(path.join(testCwd, '/custom-name.json'), 'utf8'); - t.is(cssMappingMin['.a'], 'jp-block'); - t.is(cssMappingMin['.b'], 'jp-block__element'); + t.is(cssMappingMin.class['.a'], 'jp-block'); + t.is(cssMappingMin.class['.b'], 'jp-block__element'); }); test('should create the minified mapping js file synchronously', (t) => { diff --git a/test/includeConfig.js b/test/includeConfig.js deleted file mode 100644 index e0b5c6a..0000000 --- a/test/includeConfig.js +++ /dev/null @@ -1,67 +0,0 @@ -import test from 'ava'; -import path from 'path'; -import fs from 'fs-extra'; -import rcs from 'rcs-core'; - -import includeConfig from '../lib/config/includeConfig'; - -const testFiles = path.join(process.cwd(), '/test/files'); - -test.beforeEach(() => { - rcs.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcs.nameGenerator.reset(); - rcs.selectorLibrary.reset(); - rcs.keyframesLibrary.reset(); -}); - -test.cb('should set the config with package.json', (t) => { - // include config - includeConfig(); - - // include new settings - rcs.selectorLibrary.set(['.js', '.any-value']); - - t.is(rcs.selectorLibrary.get('js'), 'js'); - t.is(rcs.selectorLibrary.get('any-value'), 'a'); - - t.end(); -}); - -test.cb('should set the config with .rcsrc', (t) => { - const file = '.rcsrc'; - - fs.writeFileSync(file, `{ - "exclude": [ - "flexbox", - "no-js" - ] - }`, { - encoding: 'utf8', - }); - - // include config - includeConfig(); - - // include new settings - rcs.selectorLibrary.set(['.flexbox', '.any-value']); - - t.is(rcs.selectorLibrary.get('flexbox'), 'flexbox'); - t.is(rcs.selectorLibrary.get('any-value'), 'a'); - - fs.removeSync(file); - - t.end(); -}); - -test.cb('should set the config with package.json', (t) => { - // include config - includeConfig(path.join(testFiles, '/config.json')); - - // include new settings - rcs.selectorLibrary.set(['.own-file', '.any-value']); - - t.is(rcs.selectorLibrary.get('own-file'), 'own-file'); - t.is(rcs.selectorLibrary.get('any-value'), 'a'); - - t.end(); -}); diff --git a/test/integration.js b/test/integration.js index ab67354..ead5357 100644 --- a/test/integration.js +++ b/test/integration.js @@ -11,9 +11,9 @@ const testCwd = path.join(testFiles, 'testCache'); const fixturesCwd = path.join(testFiles, 'fixtures'); test.beforeEach(() => { - rcsCore.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcsCore.nameGenerator.reset(); - rcsCore.selectorLibrary.reset(); + rcsCore.selectorsLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.keyframesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.selectorsLibrary.reset(); rcsCore.keyframesLibrary.reset(); }); diff --git a/test/integration_mapping.js b/test/integration_mapping.js index 5af8a1b..0e000ce 100644 --- a/test/integration_mapping.js +++ b/test/integration_mapping.js @@ -12,9 +12,9 @@ const fixturesCwd = './test/files/fixtures'; const resultsCwd = './test/files/results'; test.beforeEach.cb((t) => { - rcsCore.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcsCore.nameGenerator.reset(); - rcsCore.selectorLibrary.reset(); + rcsCore.selectorsLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.keyframesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.selectorsLibrary.reset(); rcsCore.keyframesLibrary.reset(); rcs.process.css('**/style*.css', { @@ -22,9 +22,7 @@ test.beforeEach.cb((t) => { cwd: fixturesCwd, }, () => { rcs.generateMapping(testCwd, () => { - rcsCore.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcsCore.nameGenerator.reset(); - rcsCore.selectorLibrary.reset(); + rcsCore.selectorsLibrary.reset(); rcsCore.keyframesLibrary.reset(); t.end(); @@ -104,9 +102,7 @@ test.cb('should load from a filestring', (t) => { cwd: fixturesCwd, }, () => { rcs.generateMapping(testCwd, { cssMappingMin: true }, () => { - rcsCore.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcsCore.nameGenerator.reset(); - rcsCore.selectorLibrary.reset(); + rcsCore.selectorsLibrary.reset(); rcsCore.keyframesLibrary.reset(); rcs.loadMapping(path.join(testCwd, '/renaming_map_min.json'), { origValues: false }); diff --git a/test/loadMapping.js b/test/loadMapping.js index e6036e6..6caa57e 100644 --- a/test/loadMapping.js +++ b/test/loadMapping.js @@ -8,10 +8,8 @@ import loadMapping from '../lib/mapping/loadMapping'; const testCwd = path.join(process.cwd(), '/test/files/testCache'); test.beforeEach(() => { - rcs.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcs.nameGenerator.reset(); - rcs.selectorLibrary.reset(); - rcs.keyframesLibrary.reset(); + rcs.selectorsLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcs.selectorsLibrary.reset(); }); test.afterEach(() => { @@ -20,11 +18,15 @@ test.afterEach(() => { test('should load from an object', (t) => { loadMapping({ - '.jp-block': 'a-class', - '#compressed': 'b', + class: { + '.jp-block': 'a-class', + }, + id: { + '#compressed': 'b', + }, }); - t.is(rcs.selectorLibrary.get('jp-block'), 'a-class'); - t.is(rcs.selectorLibrary.get('#compressed'), 'b'); + t.is(rcs.selectorsLibrary.get('jp-block'), 'a-class'); + t.is(rcs.selectorsLibrary.get('#compressed'), 'b'); }); diff --git a/test/processAuto.js b/test/processAuto.js index 4326484..09e5091 100644 --- a/test/processAuto.js +++ b/test/processAuto.js @@ -11,10 +11,11 @@ const fixturesCwd = 'test/files/fixtures'; const resultsCwd = 'test/files/results'; test.beforeEach(() => { - rcsCore.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcsCore.nameGenerator.reset(); - rcsCore.selectorLibrary.reset(); + rcsCore.selectorsLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.selectorsLibrary.reset(); + rcsCore.keyframesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); rcsCore.keyframesLibrary.reset(); + rcsCore.cssVariablesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); rcsCore.cssVariablesLibrary.reset(); }); @@ -44,6 +45,21 @@ test.cb('should process css files', (t) => { }); }); +test.cb('should process unknown files', (t) => { + rcs.process.auto(['css/style.css', 'unknown.txt'], { + newPath: testCwd, + cwd: fixturesCwd, + }, (err) => { + const newFile = fs.readFileSync(path.join(testCwd, 'unknown.txt'), 'utf8'); + const expectedFile = fs.readFileSync(path.join(resultsCwd, 'unknown.txt'), 'utf8'); + + t.falsy(err); + t.is(newFile, expectedFile); + + t.end(); + }); +}); + test.cb('processing | should process all files automatically', (t) => { rcs.process.auto(['**/*.{js,html}', 'css/style.css'], { newPath: testCwd, diff --git a/test/processAutoSync.js b/test/processAutoSync.js index 6abcf94..c3d2492 100644 --- a/test/processAutoSync.js +++ b/test/processAutoSync.js @@ -11,10 +11,12 @@ const fixturesCwd = 'test/files/fixtures'; const resultsCwd = 'test/files/results'; test.beforeEach(() => { - rcsCore.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcsCore.nameGenerator.reset(); - rcsCore.selectorLibrary.reset(); + rcsCore.selectorsLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.selectorsLibrary.reset(); + rcsCore.keyframesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); rcsCore.keyframesLibrary.reset(); + rcsCore.cssVariablesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.cssVariablesLibrary.reset(); }); test.afterEach(() => { diff --git a/test/processCss.js b/test/processCss.js index aa94a0b..a9dc168 100644 --- a/test/processCss.js +++ b/test/processCss.js @@ -10,9 +10,10 @@ const fixturesCwd = 'test/files/fixtures'; const resultsCwd = 'test/files/results'; test.beforeEach(() => { - rcsCore.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcsCore.nameGenerator.reset(); - rcsCore.selectorLibrary.reset(); + rcsCore.selectorsLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.keyframesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.cssVariablesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.selectorsLibrary.reset(); rcsCore.keyframesLibrary.reset(); }); diff --git a/test/processCssSync.js b/test/processCssSync.js index 76f00db..176dc43 100644 --- a/test/processCssSync.js +++ b/test/processCssSync.js @@ -10,9 +10,9 @@ const fixturesCwd = 'test/files/fixtures'; const resultsCwd = 'test/files/results'; test.beforeEach(() => { - rcsCore.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcsCore.nameGenerator.reset(); - rcsCore.selectorLibrary.reset(); + rcsCore.selectorsLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.keyframesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.selectorsLibrary.reset(); rcsCore.keyframesLibrary.reset(); }); diff --git a/test/processJs.js b/test/processJs.js index 189a48f..768d60a 100644 --- a/test/processJs.js +++ b/test/processJs.js @@ -11,12 +11,12 @@ const resultsCwd = 'test/files/results'; test.before(() => { - rcsCore.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcsCore.nameGenerator.reset(); - rcsCore.selectorLibrary.reset(); + rcsCore.selectorsLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.keyframesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.selectorsLibrary.reset(); rcsCore.keyframesLibrary.reset(); - rcsCore.selectorLibrary.fillLibrary(fs.readFileSync(path.join(fixturesCwd, '/css/style.css'), 'utf8')); + rcsCore.selectorsLibrary.fillLibrary(fs.readFileSync(path.join(fixturesCwd, '/css/style.css'), 'utf8')); }); test.afterEach(() => { @@ -39,12 +39,12 @@ test.cb('should process js files', (t) => { }); test.cb('should process jsx files', (t) => { - rcs.process.js('js/react.js', { + rcs.process.js('js/react.jsx', { newPath: testCwd, cwd: fixturesCwd, }, (err) => { - const newFile = fs.readFileSync(path.join(testCwd, '/js/react.js'), 'utf8'); - const expectedFile = fs.readFileSync(path.join(resultsCwd, '/js/react.js'), 'utf8'); + const newFile = fs.readFileSync(path.join(testCwd, '/js/react.jsx'), 'utf8'); + const expectedFile = fs.readFileSync(path.join(resultsCwd, '/js/react.jsx'), 'utf8'); t.falsy(err); t.is(newFile, expectedFile); @@ -54,7 +54,7 @@ test.cb('should process jsx files', (t) => { }); test.cb('should not process jsx files', (t) => { - rcs.process.js('js/react.js', { + rcs.process.js('js/react.jsx', { newPath: testCwd, cwd: fixturesCwd, parserOptions: { @@ -85,17 +85,17 @@ test.cb('should process complex files', (t) => { }); test.cb('should not process multiple files', (t) => { - rcs.process.js('js/*.js', { + rcs.process.js('js/*.js*', { newPath: testCwd, cwd: fixturesCwd, jsx: true, }, (err) => { const newFile = fs.readFileSync(path.join(testCwd, '/js/complex.js'), 'utf8'); const newFileTwo = fs.readFileSync(path.join(testCwd, '/js/main.js'), 'utf8'); - const newFileThree = fs.readFileSync(path.join(testCwd, '/js/react.js'), 'utf8'); + const newFileThree = fs.readFileSync(path.join(testCwd, '/js/react.jsx'), 'utf8'); const expectedFile = fs.readFileSync(path.join(resultsCwd, '/js/complex.js'), 'utf8'); const expectedFileTwo = fs.readFileSync(path.join(resultsCwd, '/js/main.js'), 'utf8'); - const expectedFileThree = fs.readFileSync(path.join(resultsCwd, '/js/react.js'), 'utf8'); + const expectedFileThree = fs.readFileSync(path.join(resultsCwd, '/js/react.jsx'), 'utf8'); t.falsy(err); t.is(newFile, expectedFile); diff --git a/test/processJsSync.js b/test/processJsSync.js index da04930..713a173 100644 --- a/test/processJsSync.js +++ b/test/processJsSync.js @@ -10,12 +10,12 @@ const fixturesCwd = 'test/files/fixtures'; const resultsCwd = 'test/files/results'; test.before(() => { - rcsCore.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcsCore.nameGenerator.reset(); - rcsCore.selectorLibrary.reset(); + rcsCore.selectorsLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.keyframesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.selectorsLibrary.reset(); rcsCore.keyframesLibrary.reset(); - rcsCore.selectorLibrary.fillLibrary(fs.readFileSync(path.join(fixturesCwd, '/css/style.css'), 'utf8')); + rcsCore.selectorsLibrary.fillLibrary(fs.readFileSync(path.join(fixturesCwd, '/css/style.css'), 'utf8')); }); test.afterEach(() => { @@ -35,26 +35,26 @@ test('should process js files', (t) => { }); test('should process jsx files', (t) => { - rcs.process.jsSync('js/react.js', { + rcs.process.jsSync('js/react.jsx', { newPath: testCwd, cwd: fixturesCwd, jsx: true, }); - const newFile = fs.readFileSync(path.join(testCwd, '/js/react.js'), 'utf8'); - const expectedFile = fs.readFileSync(path.join(resultsCwd, '/js/react.js'), 'utf8'); + const newFile = fs.readFileSync(path.join(testCwd, '/js/react.jsx'), 'utf8'); + const expectedFile = fs.readFileSync(path.join(resultsCwd, '/js/react.jsx'), 'utf8'); t.is(newFile, expectedFile); }); test('should not process jsx files', (t) => { - rcs.process.jsSync('js/react.js', { + rcs.process.jsSync('js/react.jsx', { newPath: testCwd, cwd: fixturesCwd, }); - const newFile = fs.readFileSync(path.join(testCwd, '/js/react.js'), 'utf8'); - const expectedFile = fs.readFileSync(path.join(testCwd, '/js/react.js'), 'utf8'); + const newFile = fs.readFileSync(path.join(testCwd, '/js/react.jsx'), 'utf8'); + const expectedFile = fs.readFileSync(path.join(testCwd, '/js/react.jsx'), 'utf8'); t.is(newFile, expectedFile); }); @@ -72,7 +72,7 @@ test('should process complex files', (t) => { }); test('should not process multiple files', (t) => { - rcs.process.jsSync('js/*.js', { + rcs.process.jsSync('js/*.js*', { newPath: testCwd, cwd: fixturesCwd, jsx: true, @@ -80,10 +80,10 @@ test('should not process multiple files', (t) => { const newFile = fs.readFileSync(path.join(testCwd, '/js/complex.js'), 'utf8'); const newFileTwo = fs.readFileSync(path.join(testCwd, '/js/main.js'), 'utf8'); - const newFileThree = fs.readFileSync(path.join(testCwd, '/js/react.js'), 'utf8'); + const newFileThree = fs.readFileSync(path.join(testCwd, '/js/react.jsx'), 'utf8'); const expectedFile = fs.readFileSync(path.join(resultsCwd, '/js/complex.js'), 'utf8'); const expectedFileTwo = fs.readFileSync(path.join(resultsCwd, '/js/main.js'), 'utf8'); - const expectedFileThree = fs.readFileSync(path.join(resultsCwd, '/js/react.js'), 'utf8'); + const expectedFileThree = fs.readFileSync(path.join(resultsCwd, '/js/react.jsx'), 'utf8'); t.is(newFile, expectedFile); t.is(newFileTwo, expectedFileTwo); diff --git a/test/processPug.js b/test/processPug.js index 3b38088..5b4653f 100644 --- a/test/processPug.js +++ b/test/processPug.js @@ -11,12 +11,12 @@ const resultsCwd = 'test/files/results'; test.before(() => { - rcsCore.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcsCore.nameGenerator.reset(); - rcsCore.selectorLibrary.reset(); + rcsCore.selectorsLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.keyframesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.selectorsLibrary.reset(); rcsCore.keyframesLibrary.reset(); - rcsCore.selectorLibrary.fillLibrary(fs.readFileSync(path.join(fixturesCwd, '/css/style.css'), 'utf8')); + rcsCore.selectorsLibrary.fillLibrary(fs.readFileSync(path.join(fixturesCwd, '/css/style.css'), 'utf8')); }); test.afterEach(() => { diff --git a/test/processPugSync.js b/test/processPugSync.js index 0a61c1d..3641c65 100644 --- a/test/processPugSync.js +++ b/test/processPugSync.js @@ -11,12 +11,12 @@ const resultsCwd = 'test/files/results'; test.before(() => { - rcsCore.nameGenerator.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); - rcsCore.nameGenerator.reset(); - rcsCore.selectorLibrary.reset(); + rcsCore.selectorsLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.keyframesLibrary.setAlphabet('#abcdefghijklmnopqrstuvwxyz'); + rcsCore.selectorsLibrary.reset(); rcsCore.keyframesLibrary.reset(); - rcsCore.selectorLibrary.fillLibrary(fs.readFileSync(path.join(fixturesCwd, '/css/style.css'), 'utf8')); + rcsCore.selectorsLibrary.fillLibrary(fs.readFileSync(path.join(fixturesCwd, '/css/style.css'), 'utf8')); }); test.afterEach(() => { diff --git a/yarn.lock b/yarn.lock index 75b6852..6a5e706 100644 --- a/yarn.lock +++ b/yarn.lock @@ -44,6 +44,13 @@ dependencies: "@babel/highlight" "7.0.0-beta.51" +"@babel/code-frame@^7.0.0": + version "7.5.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" + integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== + dependencies: + "@babel/highlight" "^7.0.0" + "@babel/generator@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.51.tgz#6c7575ffde761d07485e04baedc0392c6d9e30f6" @@ -82,6 +89,15 @@ esutils "^2.0.2" js-tokens "^3.0.0" +"@babel/highlight@^7.0.0": + version "7.5.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" + integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + "@babel/parser@7.0.0-beta.51": version "7.0.0-beta.51" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-beta.51.tgz#27cec2df409df60af58270ed8f6aa55409ea86f6" @@ -133,6 +149,34 @@ pretty-ms "^0.2.1" text-table "^0.2.0" +"@nodelib/fs.scandir@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.1.tgz#7fa8fed654939e1a39753d286b48b4836d00e0eb" + integrity sha512-NT/skIZjgotDSiXs0WqYhgcuBKhUMgfekCmCGtkUAiLqZdOnrdjmZr9wRl3ll64J9NF79uZ4fk16Dx0yMc/Xbg== + dependencies: + "@nodelib/fs.stat" "2.0.1" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.1", "@nodelib/fs.stat@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.1.tgz#814f71b1167390cfcb6a6b3d9cdeb0951a192c14" + integrity sha512-+RqhBlLn6YRBGOIoVYthsG0J9dfpO79eJyN7BYBkZJtfqrBwf2KK+rD/M/yjZR6WBmIhAgOV7S60eCgaSWtbFw== + +"@nodelib/fs.walk@^1.2.1": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.2.tgz#6a6450c5e17012abd81450eb74949a4d970d2807" + integrity sha512-J/DR3+W12uCzAJkw7niXDcqcKBg6+5G5Q/ZpThpGNzAUz70eOR6RV4XnnSN01qHZiVl0eavoxJsBypQoKsV2QQ== + dependencies: + "@nodelib/fs.scandir" "2.1.1" + fastq "^1.6.0" + +"@samverschueren/stream-to-observable@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" + integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== + dependencies: + any-observable "^0.3.0" + "@types/babel-types@*", "@types/babel-types@^7.0.0": version "7.0.4" resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.4.tgz#bfd5b0d0d1ba13e351dff65b6e52783b816826c8" @@ -143,6 +187,35 @@ dependencies: "@types/babel-types" "*" +"@types/events@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" + integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== + +"@types/glob@^7.1.1": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575" + integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w== + dependencies: + "@types/events" "*" + "@types/minimatch" "*" + "@types/node" "*" + +"@types/minimatch@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" + integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + +"@types/node@*": + version "12.7.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.7.2.tgz#c4e63af5e8823ce9cc3f0b34f7b998c2171f0c44" + integrity sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + abbrev@1: version "1.0.9" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" @@ -253,6 +326,11 @@ ansi-styles@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" +any-observable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" + integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== + anymatch@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" @@ -330,6 +408,11 @@ array-union@^1.0.1: dependencies: array-uniq "^1.0.1" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + array-uniq@^1.0.1, array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -1112,6 +1195,13 @@ braces@^2.3.1: split-string "^3.0.2" to-regex "^3.0.1" +braces@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + browserslist@^3.2.6: version "3.2.8" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" @@ -1166,16 +1256,35 @@ call-signature@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/call-signature/-/call-signature-0.0.2.tgz#a84abc825a55ef4cb2b028bd74e205a65b9a4996" +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" dependencies: callsites "^0.2.0" +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + camel-case@3.0.x: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" @@ -1229,7 +1338,7 @@ chalk@^0.4.0: has-color "~0.1.0" strip-ansi "~0.1.0" -chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -1255,7 +1364,7 @@ chalk@^2.0.1: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^2.4.2: +chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" dependencies: @@ -1292,6 +1401,11 @@ ci-info@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.4.0.tgz#4841d53cad49f11b827b648ebde27a6e189b412f" +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + circular-json@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" @@ -1323,7 +1437,7 @@ cli-boxes@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" -cli-cursor@^2.1.0: +cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" dependencies: @@ -1333,6 +1447,14 @@ cli-spinners@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + cli-truncate@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.1.0.tgz#2b2dfd83c53cfd3572b87fc4d430a808afb04086" @@ -1413,6 +1535,11 @@ commander@2.17.x, commander@^2.11.0, commander@~2.17.1: version "2.17.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf" +commander@^2.20.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + commander@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" @@ -1514,6 +1641,16 @@ core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +cosmiconfig@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + coveralls@^2.11.15: version "2.11.15" resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-2.11.15.tgz#37d3474369d66c14f33fa73a9d25cee6e099fca0" @@ -1545,6 +1682,17 @@ cross-spawn@^5.0.1: shebang-command "^1.2.0" which "^1.2.9" +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + cryptiles@2.x.x: version "2.0.5" resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" @@ -1567,6 +1715,11 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" +date-fns@^1.27.2: + version "1.30.1" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" + integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + date-time@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/date-time/-/date-time-0.1.1.tgz#ed2f6d93d9790ce2fd66d5b5ff3edd5bbcbf3b07" @@ -1599,6 +1752,13 @@ debug@^3.0.1, debug@^3.1.0: dependencies: ms "2.0.0" +debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -1611,6 +1771,11 @@ decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + deep-equal@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" @@ -1667,6 +1832,17 @@ del@^2.0.2: pinkie-promise "^2.0.0" rimraf "^2.2.8" +del@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/del/-/del-5.0.0.tgz#4fa698b7a1ffb4e2ab3e8929ed699799654d6720" + integrity sha512-TfU3nUY0WDIhN18eq+pgpbLY9AfL5RfiE9czKaTSolc6aK7qASXfDErvYgjV1UqCR4sNXDoxO0/idPmhDUt2Sg== + dependencies: + globby "^10.0.0" + is-path-cwd "^2.0.0" + is-path-in-cwd "^2.0.0" + p-map "^2.0.0" + rimraf "^2.6.3" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1689,6 +1865,13 @@ detect-libc@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" @@ -1727,6 +1910,11 @@ electron-to-chromium@^1.3.47: version "1.3.61" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.61.tgz#a8ac295b28d0f03d85e37326fd16b6b6b17a1795" +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= + empower-core@^0.6.1: version "0.6.2" resolved "https://registry.yarnpkg.com/empower-core/-/empower-core-0.6.2.tgz#5adef566088e31fba80ba0a36df47d7094169144" @@ -1734,6 +1922,13 @@ empower-core@^0.6.1: call-signature "0.0.2" core-js "^2.0.0" +end-of-stream@^1.1.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" + integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== + dependencies: + once "^1.4.0" + equal-length@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/equal-length/-/equal-length-1.0.1.tgz#21ca112d48ab24b4e1e7ffc0e5339d31fdfc274c" @@ -1928,6 +2123,34 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/execa/-/execa-2.0.4.tgz#2f5cc589c81db316628627004ea4e37b93391d8e" + integrity sha512-VcQfhuGD51vQUQtKIq2fjGDLDbL6N1DTQVpYzxZ7LPIXw3HqTuIz6uxRmpV1qf8i31LHf2kjiaGI+GdHwRgbnQ== + dependencies: + cross-spawn "^6.0.5" + get-stream "^5.0.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^3.0.0" + onetime "^5.1.0" + p-finally "^2.0.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -2008,10 +2231,37 @@ fast-diff@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154" +fast-glob@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.0.4.tgz#d484a41005cb6faeb399b951fd1bd70ddaebb602" + integrity sha512-wkIbV6qg37xTJwqSsdnIphL1e+LaGz4AIQqr00mIubMaEhv1/HEmJ0uuCGZRNRUkZZmOB5mJKO0ZUTVq+SxMQg== + dependencies: + "@nodelib/fs.stat" "^2.0.1" + "@nodelib/fs.walk" "^1.2.1" + glob-parent "^5.0.0" + is-glob "^4.0.1" + merge2 "^1.2.3" + micromatch "^4.0.2" + fast-levenshtein@~2.0.4: version "2.0.5" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.5.tgz#bd33145744519ab1c36c3ee9f31f08e9079b67f2" +fastq@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2" + integrity sha512-jmxqQ3Z/nXoeyDmWAzF9kH1aGZSis6e/SbfPmJpUnyZ0ogr6iscHQaml4wsEepEWSdtmpy+eVXmCRIMpxaXqOA== + dependencies: + reusify "^1.0.0" + +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -2048,6 +2298,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + find-cache-dir@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz#c8defae57c8a52a8a784f9e31c57c742e993a0b9" @@ -2077,6 +2334,14 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + flat-cache@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" @@ -2200,6 +2465,11 @@ get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" + integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg== + get-port@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" @@ -2208,10 +2478,29 @@ get-stdin@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" +get-stdin@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" + integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -2246,6 +2535,13 @@ glob-parent@^2.0.0: dependencies: is-glob "^2.0.0" +glob-parent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.0.0.tgz#1dc99f0f39b006d3e92c2c284068382f0c20e954" + integrity sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg== + dependencies: + is-glob "^4.0.1" + glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -2257,6 +2553,18 @@ glob@^7.0.3, glob@^7.0.5, glob@^7.0.6, glob@^7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.1.3: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + 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" + global-dirs@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" @@ -2271,6 +2579,20 @@ globals@^9.17.0, globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" +globby@^10.0.0: + version "10.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.1.tgz#4782c34cb75dd683351335c5829cc3420e606b22" + integrity sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + globby@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" @@ -2469,6 +2791,23 @@ hullabaloo-config-manager@^1.1.0: resolve-from "^3.0.0" safe-buffer "^5.0.1" +husky@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/husky/-/husky-3.0.4.tgz#10a48ac11ab50859b0939750fa0b4e07ad0bf669" + integrity sha512-7Rnt8aJfy+MlV28snmYK7O7vWwtOfeVxV6KhLpUFXlmx5ukQ1nQmNUB7QsAwSgdySB5X+bm7q7JIRgazqBUzKA== + dependencies: + chalk "^2.4.2" + cosmiconfig "^5.2.1" + execa "^1.0.0" + get-stdin "^7.0.0" + is-ci "^2.0.0" + opencollective-postinstall "^2.0.2" + pkg-dir "^4.2.0" + please-upgrade-node "^3.2.0" + read-pkg "^5.1.1" + run-node "^1.0.0" + slash "^3.0.0" + iconv-lite@^0.4.17: version "0.4.18" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2" @@ -2493,6 +2832,19 @@ ignore@^3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d" +ignore@^5.1.1: + version "5.1.4" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" + integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + import-lazy@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" @@ -2612,6 +2964,13 @@ is-ci@^1.0.10, is-ci@^1.0.7: dependencies: ci-info "^1.3.0" +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -2644,6 +3003,11 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + is-dotfile@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" @@ -2679,6 +3043,11 @@ is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + is-finite@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" @@ -2705,6 +3074,13 @@ is-glob@^2.0.0, is-glob@^2.0.1: dependencies: is-extglob "^1.0.0" +is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + is-installed-globally@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" @@ -2741,7 +3117,12 @@ is-number@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" -is-obj@^1.0.0: +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.0, is-obj@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -2751,7 +3132,7 @@ is-observable@^0.2.0: dependencies: symbol-observable "^0.2.2" -is-observable@^1.0.0: +is-observable@^1.0.0, is-observable@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" dependencies: @@ -2761,18 +3142,37 @@ is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" +is-path-cwd@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + is-path-in-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" dependencies: is-path-inside "^1.0.0" +is-path-in-cwd@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" + integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== + dependencies: + is-path-inside "^2.1.0" + is-path-inside@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" dependencies: path-is-inside "^1.0.1" +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + is-plain-obj@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" @@ -2807,6 +3207,11 @@ is-regex@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.3.tgz#0d55182bddf9f2fde278220aec3a75642c908637" +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + is-resolvable@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" @@ -2821,6 +3226,11 @@ is-stream@^1.0.0, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + is-symbol@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" @@ -2932,7 +3342,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -"js-tokens@^3.0.0 || ^4.0.0": +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -2950,6 +3360,14 @@ js-yaml@^3.10.0: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + js-yaml@^3.8.4: version "3.9.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.0.tgz#4ffbbf25c2ac963b8299dc74da7e3740de1c18ce" @@ -3095,6 +3513,75 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +lint-staged@^9.2.3: + version "9.2.3" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-9.2.3.tgz#a4ef2b7033f83e8dbc718556610e20e0098356c0" + integrity sha512-ovDmF0c0VJDTP0VmwLetJQ+lVGyNqOkTniwO9S0MOJxGxIExpSRTL56/ZmvXZ1tHNA53GBbXQbfS8RnNGRXFjg== + dependencies: + chalk "^2.4.2" + commander "^2.20.0" + cosmiconfig "^5.2.1" + debug "^4.1.1" + dedent "^0.7.0" + del "^5.0.0" + execa "^2.0.3" + listr "^0.14.3" + log-symbols "^3.0.0" + micromatch "^4.0.2" + normalize-path "^3.0.0" + please-upgrade-node "^3.1.1" + string-argv "^0.3.0" + stringify-object "^3.3.0" + +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= + +listr-update-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" + integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^2.3.0" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" + integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== + dependencies: + chalk "^2.4.1" + cli-cursor "^2.1.0" + date-fns "^1.27.2" + figures "^2.0.0" + +listr@^0.14.3: + version "0.14.3" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" + integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== + dependencies: + "@samverschueren/stream-to-observable" "^0.3.0" + is-observable "^1.1.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.5.0" + listr-verbose-renderer "^0.5.0" + p-map "^2.0.0" + rxjs "^6.3.3" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -3130,6 +3617,13 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -3182,6 +3676,29 @@ log-driver@1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.5.tgz#7ae4ec257302fd790d557cb10c97100d857b0056" +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + dependencies: + chalk "^1.0.0" + +log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" + longest@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" @@ -3287,6 +3804,16 @@ merge-source-map@^1.1.0: dependencies: source-map "^0.6.1" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.4.tgz#c9269589e6885a60cf80605d9522d4b67ca646e3" + integrity sha512-FYE8xI+6pjFOhokZu0We3S5NKCirLbCzSh2Usf3qEyr4X8U+0jNg9P8RZ4qz+V2UoECLVwSyzU3LxXBaLGtD3A== + micromatch@^2.1.5: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" @@ -3323,6 +3850,14 @@ micromatch@^3.1.10, micromatch@^3.1.8: snapdragon "^0.8.1" to-regex "^3.0.2" +micromatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" + integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== + dependencies: + braces "^3.0.1" + picomatch "^2.0.5" + mime-db@~1.24.0: version "1.24.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.24.0.tgz#e2d13f939f0016c6e4e9ad25a8652f126c467f0c" @@ -3337,6 +3872,11 @@ mimic-fn@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + minimatch@^3.0.0, minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -3391,6 +3931,11 @@ ms@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + multimatch@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" @@ -3436,6 +3981,11 @@ needle@^2.2.1: iconv-lite "^0.4.4" sax "^1.2.4" +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + no-case@^2.2.0: version "2.3.2" resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" @@ -3477,12 +4027,27 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + normalize-path@^2.0.0, normalize-path@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: remove-trailing-separator "^1.0.1" +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + npm-bundled@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.5.tgz#3c1732b7ba936b3a10325aef616467c0ccbcc979" @@ -3500,6 +4065,13 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" +npm-run-path@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-3.1.0.tgz#7f91be317f6a466efed3c9f2980ad8a4ee8b0fa5" + integrity sha512-Dbl4A/VfiVGLgQv29URL9xshU8XDY1GeLy+fsaZ1AA8JDSfjvr5P5+pzRbWqRSBxk6/DW7MIh8lTM/PaGnP2kg== + dependencies: + path-key "^3.0.0" + npmlog@^4.0.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" @@ -3609,7 +4181,7 @@ observable-to-promise@^0.5.0: is-observable "^0.2.0" symbol-observable "^1.0.4" -once@^1.3.0: +once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -3621,6 +4193,18 @@ onetime@^2.0.0: dependencies: mimic-fn "^1.0.0" +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +opencollective-postinstall@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89" + integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw== + optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -3678,16 +4262,45 @@ p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" +p-finally@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" + integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== + p-limit@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" +p-limit@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" + integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== + dependencies: + p-try "^2.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" dependencies: p-limit "^1.1.0" +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + package-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-1.2.0.tgz#003e56cd57b736a6ed6114cc2b81542672770e44" @@ -3740,6 +4353,16 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" +parse-json@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.0.0.tgz#73e5114c986d143efa3712d4ea24db9a4266f60f" + integrity sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + lines-and-columns "^1.1.6" + parse-ms@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-0.1.2.tgz#dd3fa25ed6c2efc7bdde12ad9b46c163aa29224e" @@ -3770,6 +4393,11 @@ path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -3778,14 +4406,24 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" -path-key@^2.0.0: +path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" +path-key@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.0.tgz#99a10d870a803bdd5ee6f0470e58dfcd2f9a54d3" + integrity sha512-8cChqz0RP6SHJkMt48FW0A7+qUOn+OsnOsVtzI59tZ8m+5bCSk7hzwET0pulwOM2YMn9J1efb07KB9l9f30SGg== + path-parse@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" @@ -3800,6 +4438,16 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +picomatch@^2.0.5: + version "2.0.7" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.0.7.tgz#514169d8c7cd0bdbeecc8a2609e34a7163de69f6" + integrity sha512-oLHIdio3tZ0qH76NybpeneBhYVj0QFTfXEFTc/B3zKQspYfYYkWYgFsmzo+4kvId/bQRcNkVeguI3y+CD22BtA== + pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -3847,6 +4495,20 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" +pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +please-upgrade-node@^3.1.1, please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" + plur@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/plur/-/plur-2.1.2.tgz#7482452c1a0f508e3e344eaec312c91c29dc655a" @@ -3978,6 +4640,14 @@ pug-walk@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.7.tgz#c00d5c5128bac5806bec15d2b7e7cdabe42531f3" +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" @@ -4003,10 +4673,10 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -rcs-core@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/rcs-core/-/rcs-core-2.6.2.tgz#446f864c796867235d403dc9cda6d4018d85b7d5" - integrity sha512-SYXc11j/BL8+8KcXGqB/9hV4BZEYljPUrXpE6GAt81Wss/Hg1nJC/H8cg/Segiy8+ZqFDAkZAdz0E1eOhqThMQ== +rcs-core@^3.0.0-alpha.3: + version "3.0.0-alpha.3" + resolved "https://registry.yarnpkg.com/rcs-core/-/rcs-core-3.0.0-alpha.3.tgz#c1e0134606bb054f811670b2daeb7f9c0b10bd83" + integrity sha512-VQp2aDy5ttdD8bBIC9oEdPkkw/x6wME/3E6TxBW+M2YmWTyNJJXj4/kQCF5zebrahChiS+k3aWR4tIcADURpig== dependencies: array-includes "^3.0.2" ast-traverse "^0.1.1" @@ -4058,6 +4728,16 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" +read-pkg@^5.1.1: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" + readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" @@ -4277,6 +4957,13 @@ resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" +resolve@^1.10.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" + integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== + dependencies: + path-parse "^1.0.6" + resolve@^1.2.0: version "1.3.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.3.tgz#655907c3469a8680dc2de3a275a8fdd69691f0e5" @@ -4294,6 +4981,11 @@ ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" +reusify@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + right-align@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" @@ -4312,12 +5004,29 @@ rimraf@^2.6.1, rimraf@^2.6.2: dependencies: glob "^7.0.5" +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" dependencies: is-promise "^2.1.0" +run-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/run-node/-/run-node-1.0.0.tgz#46b50b946a2aa2d4947ae1d886e9856fd9cabe5e" + integrity sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A== + +run-parallel@^1.1.9: + version "1.1.9" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" + integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + rx-lite-aggregates@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be" @@ -4328,6 +5037,13 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" +rxjs@^6.3.3: + version "6.5.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" + integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== + dependencies: + tslib "^1.9.0" + safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -4350,6 +5066,11 @@ sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + semver-diff@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" @@ -4412,6 +5133,11 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" @@ -4571,6 +5297,11 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" +string-argv@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.0.tgz#0ea99e7257fea5e97a1bfcdfc19cf12d68e6ec6a" + integrity sha512-NGZHq3nkSXVtGZXTBjFru3MNfoZyIzN25T7BmvdgnSC0LCJczAGLLMQLyjywSIaAoqSemgLzBRHOsnrHbt60+Q== + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -4609,6 +5340,15 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" + stringstream@~0.0.4: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -4649,6 +5389,11 @@ strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + strip-indent@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" @@ -4794,6 +5539,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -4829,6 +5581,11 @@ tryit@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" +tslib@^1.9.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + tunnel-agent@~0.4.1: version "0.4.3" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" @@ -4843,6 +5600,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -5029,6 +5791,14 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"