├── .github └── workflows │ └── rubocop.yml ├── LICENSE ├── README.md ├── eslint ├── .eslintrc.json ├── .gitignore ├── .npmignore ├── CHANGELOG.md ├── README.md ├── flow.js ├── index.js ├── jest.js ├── package.json ├── react.js ├── rules │ ├── es6.yml │ ├── etc.yml │ ├── flowtype.yml │ ├── import.yml │ ├── jest.yml │ └── react.yml └── yarn.lock ├── rubocop ├── .gitignore ├── .rubocop.yml ├── Gemfile ├── Gemfile.lock ├── README.md ├── Rakefile ├── bin │ ├── rake │ └── rubocop ├── lib │ ├── rubocop.performance.yml │ ├── rubocop.rails.yml │ ├── rubocop.rake.yml │ ├── rubocop.rspec.yml │ ├── rubocop.sequel.yml │ └── rubocop.yml └── rubocop.gemspec └── stylelint ├── .gitignore ├── .stylelintrc.styled-components.yml ├── .stylelintrc.yml ├── CHANGELOG.md ├── README.md ├── package.json └── yarn.lock /.github/workflows/rubocop.yml: -------------------------------------------------------------------------------- 1 | name: Rubocop 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | lint: 7 | runs-on: ubuntu-latest 8 | 9 | # We want to run on external PRs, but not on our own internal PRs as they'll be run on push event 10 | if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != 'umbrellio/code-style' 11 | 12 | steps: 13 | - uses: actions/checkout@v2 14 | 15 | - uses: ruby/setup-ruby@v1 16 | with: 17 | ruby-version: 3 18 | bundler-cache: true 19 | working-directory: rubocop 20 | 21 | - run: cd rubocop && bundle exec rake 22 | 23 | deploy: 24 | runs-on: ubuntu-latest 25 | 26 | environment: Deploy 27 | 28 | # Run on push to master branch 29 | if: github.event_name == 'push' && github.ref == 'refs/heads/master' 30 | 31 | steps: 32 | - uses: actions/checkout@v1 33 | 34 | - uses: umbrellio/publish-ruby-gem-action@v1.0.4 35 | with: 36 | api-key: ${{ secrets.RUBYGEMS_API_KEY }} 37 | working-directory: rubocop 38 | env: 39 | PUBLISH_JOB: true 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017-2019 Umbrellio 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # UMBRELLIO code-style 2 | 3 | Linter settings used in [Umbrellio](https://umbrellio.biz) projects. 4 | 5 | --- 6 | 7 | * [RuboCop](https://github.com/umbrellio/code-style/tree/master/rubocop) `ruby` 8 | * [ESLint](https://github.com/umbrellio/code-style/tree/master/eslint) `js` 9 | * [stylelint](https://github.com/umbrellio/code-style/tree/master/stylelint) `css` 10 | * [EasyCodingStandard](https://github.com/umbrellio/code-style-php) `php` 11 | 12 | --- 13 | 14 | ## Contributing 15 | 16 | - Fork it: (`https://github.com/umbrellio/code-style/fork`) 17 | - Create your feature branch (`git checkout -b feature/my-new-feature`) 18 | - Commit your changes (`git commit -am 'Add some feature'`) 19 | - Push to the branch (`git push origin feature/my-new-feature`) 20 | - Create new Pull Request 21 | 22 | ## License 23 | 24 | Released under MIT License 25 | 26 | --- 27 | 28 | 29 | Supported by Umbrellio 30 | 31 | -------------------------------------------------------------------------------- /eslint/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "./index.js", 4 | "./flow.js", 5 | "./jest.js", 6 | "./react.js" 7 | ], 8 | "env": { 9 | "node": true 10 | }, 11 | "rules": { 12 | "quote-props": 0, 13 | "no-multiple-empty-lines": 0 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /eslint/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | /rules/*.json 3 | -------------------------------------------------------------------------------- /eslint/.npmignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | /rules/*.yml 3 | /.eslintrc.json 4 | /.gitignore 5 | /.hound.yml 6 | /yarn.lock 7 | -------------------------------------------------------------------------------- /eslint/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | All notable changes to this project will be documented in this file. 3 | 4 | ## [5.0.0] 5 | ### Changed 6 | - new package versioning scheme; 7 | - updated major dependencies (eslint 5.0 and other eslint sub-projects); 8 | 9 | ## [4.8.0] - PENDING 10 | ### Changed 11 | - Updated ESLint to 4.8.0. 12 | - Updated all ESLint plugins. 13 | - Updated `yamljs` to `0.3.0`. 14 | - Enabled `switch-colon-spacing` and `no-buffer-constructor` rules. 15 | 16 | ## [0.4.5] - 2017-07-25 17 | ### Changed 18 | - Set `arrow` to `false` for `react/jsx-wrap-multilines` rule. 19 | 20 | ## [0.4.4] - 2017-06-23 21 | ### Added 22 | - Set `error` for `no-alert` and `no-console` rules. 23 | ### Changed 24 | - Set `props` to `true` for `no-param-reassign` rule. 25 | 26 | ## [0.4.3] - 2017-06-08 27 | ### Changed 28 | - Changed `quotes` and `jsx-quotes` rules to `double`. 29 | 30 | ## [0.4.2] - 2017-06-06 31 | ### Removed 32 | - `eslint-plugin-curry` 33 | 34 | ## [0.4.1] - 2017-06-06 35 | ### Changed 36 | - Added `ForInStatement` to `no-restricted-syntax` rule. 37 | 38 | ## [0.4.0] - 2017-05-15 39 | ### Added 40 | - Config for [Jest](https://github.com/facebook/jest). 41 | ### Changed 42 | - `newline-per-chained-call` - disabled 43 | - Split one big config into three separate ones: general, React and Flow. 44 | 45 | ## [0.3.3] - 2017-05-12 46 | ### Changed 47 | - `curry/arrow-parens` set to `requireForBlockBody: false` 48 | - `import/prefer-default-export` - disabled 49 | 50 | ## [0.3.2] - 2017-05-11 51 | ### Added 52 | - `no-var: error` 53 | 54 | ## [0.3.1] - 2017-05-02 55 | ### Added 56 | - `eslint-plugin-curry` 57 | 58 | ## [0.3.0] - 2017-04-28 59 | ### Added 60 | - `object-curly-spacing: always` 61 | - Rules for Flow. 62 | ### Changed 63 | - Allow parens in `no-confusing-arrow` 64 | 65 | ## [0.2.0] - 2017-04-14 66 | ### Changed 67 | - Rules are now in Yaml. 68 | -------------------------------------------------------------------------------- /eslint/README.md: -------------------------------------------------------------------------------- 1 | # eslint-config-umbrellio 2 | [![npm version](https://badge.fury.io/js/eslint-config-umbrellio.svg)](https://badge.fury.io/js/eslint-config-umbrellio) 3 | 4 | ### Package Versioning (Semver) 5 | 6 | Example: 5.29.0 7 | 8 | **5** - Major ESlint Version 9 | **29** - development updates and dependencies updates 10 | **0** - patches and bug fixes 11 | 12 | ### Installation 13 | with [yarn](https://github.com/yarnpkg/yarn/): 14 | 15 | ``` 16 | yarn add -D eslint-config-umbrellio 17 | ``` 18 | 19 | Add `umbrellio` to "extends" section of .eslintrc.json: 20 | 21 | ```json 22 | { 23 | "extends": "umbrellio" 24 | } 25 | ``` 26 | 27 | You can also enable optional configs: 28 | 29 | ```json 30 | { 31 | "extends": [ 32 | "umbrellio", 33 | "umbrellio/flow", 34 | "umbrellio/react", 35 | "umbrellio/jest" 36 | ] 37 | } 38 | ``` 39 | 40 | ### Dependencies 41 | 42 | for `umbrellio`: 43 | 44 | ``` 45 | yarn add -D eslint-plugin-import eslint-plugin-node eslint-plugin-prefer-object-spread eslint-plugin-promise 46 | ``` 47 | 48 | for `umbrellio/flow`: 49 | ``` 50 | yarn add -D eslint-plugin-flowtype 51 | ``` 52 | 53 | for `umbrellio/react`: 54 | 55 | ``` 56 | yarn add -D eslint-plugin-react eslint-plugin-jsx-a11y 57 | ``` 58 | 59 | for `umbrellio/jest`: 60 | ``` 61 | yarn add -D eslint-plugin-jest 62 | ``` 63 | -------------------------------------------------------------------------------- /eslint/flow.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: ["flowtype"], 3 | extends: ["./rules/flowtype"].map(require.resolve), 4 | } 5 | 6 | -------------------------------------------------------------------------------- /eslint/index.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: ["import", "node", "prefer-object-spread", "promise"], 3 | extends: ["./rules/es6", "./rules/etc", "./rules/import"].map(require.resolve), 4 | } 5 | -------------------------------------------------------------------------------- /eslint/jest.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: ["jest"], 3 | extends: ["./rules/jest"].map(require.resolve), 4 | } 5 | -------------------------------------------------------------------------------- /eslint/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "eslint-config-umbrellio", 3 | "version": "5.0.1", 4 | "description": "ESLint config for Umbrellio javascript code style", 5 | "main": "index.js", 6 | "keywords": [ 7 | "eslint", 8 | "config", 9 | "umbrellio" 10 | ], 11 | "repository": "https://github.com/umbrellio/code-style", 12 | "author": "Alexander Komarov ", 13 | "license": "MIT", 14 | "devDependencies": { 15 | "eslint": "^5.16.0", 16 | "eslint-plugin-flowtype": "^3.10.3", 17 | "eslint-plugin-import": "^2.17.3", 18 | "eslint-plugin-jest": "^22.6.4", 19 | "eslint-plugin-jsx-a11y": "^6.2.1", 20 | "eslint-plugin-node": "^9.1.0", 21 | "eslint-plugin-prefer-object-spread": "^1.2.1", 22 | "eslint-plugin-promise": "^4.1.1", 23 | "eslint-plugin-react": "^7.13.0", 24 | "yamljs": "^0.3.0" 25 | }, 26 | "peerDependencies": { 27 | "eslint": "^5.16.0" 28 | }, 29 | "scripts": { 30 | "build": "yaml2json rules -s", 31 | "lint": "eslint *.js" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /eslint/react.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: ["react", "jsx-a11y"], 3 | extends: ["./rules/react"].map(require.resolve), 4 | } 5 | 6 | -------------------------------------------------------------------------------- /eslint/rules/es6.yml: -------------------------------------------------------------------------------- 1 | rules: 2 | accessor-pairs: error 3 | array-callback-return: error 4 | arrow-parens: 5 | - error 6 | - as-needed 7 | arrow-spacing: 8 | - error 9 | - before: true 10 | after: true 11 | block-spacing: 12 | - error 13 | - always 14 | brace-style: 15 | - error 16 | - 1tbs 17 | - allowSingleLine: true 18 | camelcase: 19 | - error 20 | - properties: never 21 | comma-dangle: 22 | - error 23 | - always-multiline 24 | comma-spacing: 25 | - error 26 | - before: false 27 | after: true 28 | comma-style: 29 | - error 30 | - last 31 | constructor-super: error 32 | curly: 33 | - error 34 | - multi-line 35 | dot-location: 36 | - error 37 | - property 38 | dot-notation: error 39 | eol-last: error 40 | eqeqeq: 41 | - error 42 | - always 43 | func-call-spacing: 44 | - error 45 | - never 46 | generator-star-spacing: 47 | - error 48 | - before: false 49 | after: true 50 | handle-callback-err: 51 | - error 52 | - ^(err|error)$ 53 | indent: 54 | - error 55 | - 2 56 | - SwitchCase: 1 57 | key-spacing: 58 | - error 59 | - beforeColon: false 60 | afterColon: true 61 | keyword-spacing: 62 | - error 63 | - before: true 64 | after: true 65 | max-len: 66 | - error 67 | - 100 68 | new-cap: error 69 | new-parens: error 70 | newline-per-chained-call: off 71 | no-alert: error 72 | no-array-constructor: error 73 | no-caller: error 74 | no-class-assign: error 75 | no-cond-assign: error 76 | no-confusing-arrow: 77 | - error 78 | - allowParens: true 79 | no-console: error 80 | no-const-assign: error 81 | no-constant-condition: 82 | - error 83 | - checkLoops: false 84 | no-control-regex: error 85 | no-debugger: error 86 | no-delete-var: error 87 | no-dupe-args: error 88 | no-dupe-class-members: error 89 | no-dupe-keys: error 90 | no-duplicate-case: error 91 | no-empty-character-class: error 92 | no-empty-pattern: error 93 | no-eval: error 94 | no-ex-assign: error 95 | no-extend-native: error 96 | no-extra-bind: error 97 | no-extra-boolean-cast: error 98 | no-extra-parens: 99 | - error 100 | - functions 101 | no-fallthrough: error 102 | no-floating-decimal: error 103 | no-func-assign: error 104 | no-global-assign: error 105 | no-implied-eval: error 106 | no-inner-declarations: 107 | - error 108 | - functions 109 | no-invalid-regexp: error 110 | no-irregular-whitespace: error 111 | no-iterator: error 112 | no-label-var: error 113 | no-labels: 114 | - error 115 | - allowLoop: false 116 | allowSwitch: false 117 | no-lone-blocks: error 118 | no-loop-func: error 119 | no-mixed-operators: 120 | - error 121 | - groups: 122 | - ['==', '!=', '===', '!==', '>', '>=', '<', '<='] 123 | - ['&&', '||'] 124 | - [in, instanceof] 125 | allowSamePrecedence: true 126 | no-mixed-spaces-and-tabs: error 127 | no-multi-spaces: error 128 | no-multi-str: error 129 | no-multiple-empty-lines: 130 | - error 131 | - max: 1 132 | maxEOF: 0 133 | no-negated-in-lhs: error 134 | no-nested-ternary: error 135 | no-new: error 136 | no-new-func: error 137 | no-new-object: error 138 | no-new-require: error 139 | no-new-symbol: error 140 | no-new-wrappers: error 141 | no-obj-calls: error 142 | no-octal: error 143 | no-octal-escape: error 144 | no-param-reassign: 145 | - error 146 | - props: true 147 | no-path-concat: error 148 | no-plusplus: error 149 | no-proto: error 150 | no-redeclare: off 151 | no-regex-spaces: error 152 | no-restricted-syntax: 153 | - error 154 | - ForOfStatement 155 | - ForInStatement 156 | no-return-assign: 157 | - error 158 | - except-parens 159 | no-return-await: error 160 | no-self-assign: error 161 | no-self-compare: error 162 | no-sequences: error 163 | no-shadow-restricted-names: error 164 | no-sparse-arrays: error 165 | no-tabs: error 166 | no-template-curly-in-string: error 167 | no-this-before-super: error 168 | no-throw-literal: error 169 | no-trailing-spaces: error 170 | no-undef: error 171 | no-undef-init: error 172 | no-unexpected-multiline: error 173 | no-unmodified-loop-condition: error 174 | no-unneeded-ternary: 175 | - error 176 | - defaultAssignment: false 177 | no-unreachable: error 178 | no-unsafe-finally: error 179 | no-unsafe-negation: error 180 | no-unused-expressions: 181 | - error 182 | - allowShortCircuit: true 183 | allowTernary: true 184 | allowTaggedTemplates: true 185 | no-unused-vars: 186 | - error 187 | - vars: all 188 | args: none 189 | ignoreRestSiblings: true 190 | no-use-before-define: 191 | - error 192 | - functions: false 193 | classes: false 194 | variables: false 195 | no-useless-call: error 196 | no-useless-computed-key: error 197 | no-useless-constructor: error 198 | no-useless-escape: error 199 | no-useless-rename: error 200 | no-useless-return: error 201 | no-var: error 202 | no-whitespace-before-property: error 203 | no-with: error 204 | object-curly-spacing: 205 | - error 206 | - always 207 | object-property-newline: 208 | - error 209 | - allowMultiplePropertiesPerLine: true 210 | object-shorthand: error 211 | one-var: 212 | - error 213 | - initialized: never 214 | operator-linebreak: 215 | - error 216 | - after 217 | - overrides: 218 | "?": before 219 | ":": before 220 | padded-blocks: 221 | - error 222 | - blocks: never 223 | switches: never 224 | classes: never 225 | prefer-arrow-callback: error 226 | prefer-const: error 227 | prefer-promise-reject-errors: error 228 | prefer-rest-params: error 229 | prefer-spread: error 230 | prefer-template: error 231 | quotes: 232 | - error 233 | - double 234 | - avoidEscape: true 235 | allowTemplateLiterals: true 236 | quote-props: 237 | - error 238 | - as-needed 239 | radix: error 240 | rest-spread-spacing: 241 | - error 242 | - never 243 | semi: 244 | - error 245 | - never 246 | semi-spacing: 247 | - error 248 | - before: false 249 | after: true 250 | space-before-blocks: 251 | - error 252 | - always 253 | space-before-function-paren: 254 | - error 255 | - always 256 | space-in-parens: 257 | - error 258 | - never 259 | space-infix-ops: error 260 | space-unary-ops: 261 | - error 262 | - words: true 263 | nonwords: false 264 | spaced-comment: 265 | - error 266 | - always 267 | - line: 268 | markers: ['*package', '!', '/', ','] 269 | block: 270 | balanced: true 271 | markers: ['*package', '!', ',', ':', '::', 'flow-include'] 272 | exceptions: ['*'] 273 | switch-colon-spacing: 274 | - error 275 | - after: true 276 | before: false 277 | symbol-description: error 278 | template-curly-spacing: 279 | - error 280 | - never 281 | template-tag-spacing: 282 | - error 283 | - never 284 | unicode-bom: 285 | - error 286 | - never 287 | use-isnan: error 288 | valid-typeof: 289 | - error 290 | - requireStringLiterals: true 291 | wrap-iife: 292 | - error 293 | - inside 294 | - functionPrototypeMethods: true 295 | yield-star-spacing: 296 | - error 297 | - both 298 | yoda: 299 | - error 300 | - never 301 | -------------------------------------------------------------------------------- /eslint/rules/etc.yml: -------------------------------------------------------------------------------- 1 | rules: 2 | no-buffer-constructor: error 3 | 4 | prefer-object-spread/prefer-object-spread: error 5 | 6 | node/no-deprecated-api: error 7 | node/process-exit-as-throw: error 8 | 9 | promise/param-names: error 10 | -------------------------------------------------------------------------------- /eslint/rules/flowtype.yml: -------------------------------------------------------------------------------- 1 | rules: 2 | flowtype/boolean-style: 3 | - error 4 | - boolean 5 | flowtype/delimiter-dangle: 6 | - error 7 | - always-multiline 8 | flowtype/generic-spacing: 9 | - error 10 | - never 11 | flowtype/no-primitive-constructor-types: error 12 | flowtype/object-type-delimiter: 13 | - error 14 | - comma 15 | flowtype/semi: 16 | - error 17 | - never 18 | flowtype/space-after-type-colon: 19 | - error 20 | - always 21 | flowtype/space-before-generic-bracket: 22 | - error 23 | - never 24 | flowtype/space-before-type-colon: 25 | - error 26 | - never 27 | flowtype/union-intersection-spacing: 28 | - error 29 | - always 30 | -------------------------------------------------------------------------------- /eslint/rules/import.yml: -------------------------------------------------------------------------------- 1 | rules: 2 | import/export: error 3 | import/first: error 4 | import/no-absolute-path: error 5 | import/no-duplicates: error 6 | import/no-mutable-exports: error 7 | import/no-webpack-loader-syntax: error 8 | import/prefer-default-export: off 9 | -------------------------------------------------------------------------------- /eslint/rules/jest.yml: -------------------------------------------------------------------------------- 1 | rules: 2 | jest/no-disabled-tests: error 3 | jest/no-focused-tests: error 4 | jest/no-identical-title: error 5 | jest/valid-expect: error 6 | -------------------------------------------------------------------------------- /eslint/rules/react.yml: -------------------------------------------------------------------------------- 1 | rules: 2 | jsx-quotes: 3 | - error 4 | - prefer-double 5 | 6 | react/jsx-boolean-value: error 7 | react/jsx-closing-bracket-location: error 8 | react/jsx-curly-spacing: 9 | - error 10 | - never 11 | react/jsx-equals-spacing: 12 | - error 13 | - never 14 | react/jsx-indent: 15 | - error 16 | - 2 17 | react/jsx-indent-props: 18 | - error 19 | - 2 20 | react/jsx-no-bind: 21 | - error 22 | - allowArrowFunctions: true 23 | allowBind: false 24 | ignoreRefs: true 25 | react/jsx-no-duplicate-props: error 26 | react/jsx-no-undef: error 27 | react/jsx-pascal-case: error 28 | react/jsx-tag-spacing: 29 | - error 30 | - closingSlash: never 31 | beforeSelfClosing: always 32 | afterOpening: never 33 | react/jsx-uses-react: error 34 | react/jsx-uses-vars: error 35 | react/jsx-wrap-multilines: 36 | - error 37 | - declaration: true 38 | assignment: true 39 | return: true 40 | arrow: false 41 | react/no-did-update-set-state: error 42 | react/no-is-mounted: error 43 | react/no-string-refs: error 44 | react/no-unknown-property: error 45 | react/no-unused-prop-types: error 46 | react/prop-types: error 47 | react/prefer-es6-class: error 48 | react/prefer-stateless-function: error 49 | react/react-in-jsx-scope: error 50 | react/require-render-return: error 51 | react/self-closing-comp: error 52 | react/sort-comp: 53 | - error 54 | - order: 55 | - type-annotations 56 | - static-methods 57 | - lifecycle 58 | - everything-else 59 | - render 60 | 61 | jsx-a11y/alt-text: error 62 | jsx-a11y/img-redundant-alt: error 63 | jsx-a11y/aria-role: error 64 | jsx-a11y/no-access-key: error 65 | -------------------------------------------------------------------------------- /eslint/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0": 6 | version "7.0.0" 7 | resolved "https://registry.yarnpkg.com/@babel%2fcode-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" 8 | integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== 9 | dependencies: 10 | "@babel/highlight" "^7.0.0" 11 | 12 | "@babel/highlight@^7.0.0": 13 | version "7.0.0" 14 | resolved "https://registry.yarnpkg.com/@babel%2fhighlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" 15 | integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== 16 | dependencies: 17 | chalk "^2.0.0" 18 | esutils "^2.0.2" 19 | js-tokens "^4.0.0" 20 | 21 | acorn-jsx@^5.0.0: 22 | version "5.0.1" 23 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" 24 | integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== 25 | 26 | acorn@^6.0.7: 27 | version "6.1.1" 28 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" 29 | integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== 30 | 31 | ajv@^6.9.1: 32 | version "6.10.0" 33 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" 34 | integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== 35 | dependencies: 36 | fast-deep-equal "^2.0.1" 37 | fast-json-stable-stringify "^2.0.0" 38 | json-schema-traverse "^0.4.1" 39 | uri-js "^4.2.2" 40 | 41 | ansi-escapes@^3.2.0: 42 | version "3.2.0" 43 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" 44 | integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== 45 | 46 | ansi-regex@^3.0.0: 47 | version "3.0.0" 48 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" 49 | 50 | ansi-regex@^4.1.0: 51 | version "4.1.0" 52 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" 53 | integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== 54 | 55 | ansi-styles@^3.1.0: 56 | version "3.2.0" 57 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.0.tgz#c159b8d5be0f9e5a6f346dab94f16ce022161b88" 58 | dependencies: 59 | color-convert "^1.9.0" 60 | 61 | ansi-styles@^3.2.0, ansi-styles@^3.2.1: 62 | version "3.2.1" 63 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 64 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 65 | dependencies: 66 | color-convert "^1.9.0" 67 | 68 | argparse@^1.0.7: 69 | version "1.0.10" 70 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 71 | dependencies: 72 | sprintf-js "~1.0.2" 73 | 74 | aria-query@^3.0.0: 75 | version "3.0.0" 76 | resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" 77 | integrity sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w= 78 | dependencies: 79 | ast-types-flow "0.0.7" 80 | commander "^2.11.0" 81 | 82 | array-includes@^3.0.3: 83 | version "3.0.3" 84 | resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" 85 | dependencies: 86 | define-properties "^1.1.2" 87 | es-abstract "^1.7.0" 88 | 89 | ast-types-flow@0.0.7, ast-types-flow@^0.0.7: 90 | version "0.0.7" 91 | resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" 92 | integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= 93 | 94 | astral-regex@^1.0.0: 95 | version "1.0.0" 96 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" 97 | integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== 98 | 99 | axobject-query@^2.0.2: 100 | version "2.0.2" 101 | resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" 102 | integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== 103 | dependencies: 104 | ast-types-flow "0.0.7" 105 | 106 | balanced-match@^0.4.1: 107 | version "0.4.2" 108 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 109 | 110 | brace-expansion@^1.1.7: 111 | version "1.1.7" 112 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" 113 | dependencies: 114 | balanced-match "^0.4.1" 115 | concat-map "0.0.1" 116 | 117 | builtin-modules@^1.0.0: 118 | version "1.1.1" 119 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 120 | 121 | callsites@^3.0.0: 122 | version "3.1.0" 123 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 124 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 125 | 126 | chalk@^2.0.0, chalk@^2.4.2: 127 | version "2.4.2" 128 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 129 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 130 | dependencies: 131 | ansi-styles "^3.2.1" 132 | escape-string-regexp "^1.0.5" 133 | supports-color "^5.3.0" 134 | 135 | chalk@^2.1.0: 136 | version "2.1.0" 137 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.1.0.tgz#ac5becf14fa21b99c6c92ca7a7d7cfd5b17e743e" 138 | dependencies: 139 | ansi-styles "^3.1.0" 140 | escape-string-regexp "^1.0.5" 141 | supports-color "^4.0.0" 142 | 143 | chardet@^0.7.0: 144 | version "0.7.0" 145 | resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" 146 | integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== 147 | 148 | cli-cursor@^2.1.0: 149 | version "2.1.0" 150 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" 151 | dependencies: 152 | restore-cursor "^2.0.0" 153 | 154 | cli-width@^2.0.0: 155 | version "2.1.0" 156 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" 157 | 158 | color-convert@^1.9.0: 159 | version "1.9.0" 160 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a" 161 | dependencies: 162 | color-name "^1.1.1" 163 | 164 | color-name@^1.1.1: 165 | version "1.1.3" 166 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 167 | 168 | commander@^2.11.0: 169 | version "2.20.0" 170 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" 171 | integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== 172 | 173 | concat-map@0.0.1: 174 | version "0.0.1" 175 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 176 | 177 | contains-path@^0.1.0: 178 | version "0.1.0" 179 | resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" 180 | 181 | cross-spawn@^6.0.5: 182 | version "6.0.5" 183 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 184 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 185 | dependencies: 186 | nice-try "^1.0.4" 187 | path-key "^2.0.1" 188 | semver "^5.5.0" 189 | shebang-command "^1.2.0" 190 | which "^1.2.9" 191 | 192 | damerau-levenshtein@^1.0.4: 193 | version "1.0.5" 194 | resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz#780cf7144eb2e8dbd1c3bb83ae31100ccc31a414" 195 | integrity sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA== 196 | 197 | debug@^2.6.8: 198 | version "2.6.8" 199 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" 200 | dependencies: 201 | ms "2.0.0" 202 | 203 | debug@^2.6.9: 204 | version "2.6.9" 205 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 206 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 207 | dependencies: 208 | ms "2.0.0" 209 | 210 | debug@^4.0.1: 211 | version "4.1.1" 212 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" 213 | integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== 214 | dependencies: 215 | ms "^2.1.1" 216 | 217 | deep-is@~0.1.3: 218 | version "0.1.3" 219 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 220 | 221 | define-properties@^1.1.2: 222 | version "1.1.2" 223 | resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.2.tgz#83a73f2fea569898fb737193c8f873caf6d45c94" 224 | dependencies: 225 | foreach "^2.0.5" 226 | object-keys "^1.0.8" 227 | 228 | doctrine@1.5.0: 229 | version "1.5.0" 230 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 231 | dependencies: 232 | esutils "^2.0.2" 233 | isarray "^1.0.0" 234 | 235 | doctrine@^2.1.0: 236 | version "2.1.0" 237 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" 238 | integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== 239 | dependencies: 240 | esutils "^2.0.2" 241 | 242 | doctrine@^3.0.0: 243 | version "3.0.0" 244 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 245 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 246 | dependencies: 247 | esutils "^2.0.2" 248 | 249 | emoji-regex@^7.0.1, emoji-regex@^7.0.2: 250 | version "7.0.3" 251 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 252 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 253 | 254 | error-ex@^1.2.0: 255 | version "1.3.1" 256 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" 257 | dependencies: 258 | is-arrayish "^0.2.1" 259 | 260 | es-abstract@^1.11.0: 261 | version "1.13.0" 262 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" 263 | integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== 264 | dependencies: 265 | es-to-primitive "^1.2.0" 266 | function-bind "^1.1.1" 267 | has "^1.0.3" 268 | is-callable "^1.1.4" 269 | is-regex "^1.0.4" 270 | object-keys "^1.0.12" 271 | 272 | es-abstract@^1.7.0: 273 | version "1.7.0" 274 | resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.7.0.tgz#dfade774e01bfcd97f96180298c449c8623fb94c" 275 | dependencies: 276 | es-to-primitive "^1.1.1" 277 | function-bind "^1.1.0" 278 | is-callable "^1.1.3" 279 | is-regex "^1.0.3" 280 | 281 | es-to-primitive@^1.1.1: 282 | version "1.1.1" 283 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.1.1.tgz#45355248a88979034b6792e19bb81f2b7975dd0d" 284 | dependencies: 285 | is-callable "^1.1.1" 286 | is-date-object "^1.0.1" 287 | is-symbol "^1.0.1" 288 | 289 | es-to-primitive@^1.2.0: 290 | version "1.2.0" 291 | resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" 292 | integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== 293 | dependencies: 294 | is-callable "^1.1.4" 295 | is-date-object "^1.0.1" 296 | is-symbol "^1.0.2" 297 | 298 | escape-string-regexp@^1.0.5: 299 | version "1.0.5" 300 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 301 | 302 | eslint-import-resolver-node@^0.3.2: 303 | version "0.3.2" 304 | resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" 305 | integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== 306 | dependencies: 307 | debug "^2.6.9" 308 | resolve "^1.5.0" 309 | 310 | eslint-module-utils@^2.4.0: 311 | version "2.4.0" 312 | resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a" 313 | integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw== 314 | dependencies: 315 | debug "^2.6.8" 316 | pkg-dir "^2.0.0" 317 | 318 | eslint-plugin-es@^1.4.0: 319 | version "1.4.0" 320 | resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6" 321 | integrity sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw== 322 | dependencies: 323 | eslint-utils "^1.3.0" 324 | regexpp "^2.0.1" 325 | 326 | eslint-plugin-flowtype@^3.10.3: 327 | version "3.10.3" 328 | resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.10.3.tgz#4a249e2fa98679d87cddbc00e22241e2466abe2e" 329 | integrity sha512-b1OzI5drhiDmIG52jiZVR7IWQkiwN1vLD+VqvYuLnpzGBwfdw/mjdXz+qN7XN1IVKQ6pUSV0t4F9TxKoJNkpRA== 330 | dependencies: 331 | lodash "^4.17.11" 332 | 333 | eslint-plugin-import@^2.17.3: 334 | version "2.17.3" 335 | resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.17.3.tgz#00548b4434c18faebaba04b24ae6198f280de189" 336 | integrity sha512-qeVf/UwXFJbeyLbxuY8RgqDyEKCkqV7YC+E5S5uOjAp4tOc8zj01JP3ucoBM8JcEqd1qRasJSg6LLlisirfy0Q== 337 | dependencies: 338 | array-includes "^3.0.3" 339 | contains-path "^0.1.0" 340 | debug "^2.6.9" 341 | doctrine "1.5.0" 342 | eslint-import-resolver-node "^0.3.2" 343 | eslint-module-utils "^2.4.0" 344 | has "^1.0.3" 345 | lodash "^4.17.11" 346 | minimatch "^3.0.4" 347 | read-pkg-up "^2.0.0" 348 | resolve "^1.11.0" 349 | 350 | eslint-plugin-jest@^22.6.4: 351 | version "22.6.4" 352 | resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-22.6.4.tgz#2895b047dd82f90f43a58a25cf136220a21c9104" 353 | integrity sha512-36OqnZR/uMCDxXGmTsqU4RwllR0IiB/XF8GW3ODmhsjiITKuI0GpgultWFt193ipN3HARkaIcKowpE6HBvRHNg== 354 | 355 | eslint-plugin-jsx-a11y@^6.2.1: 356 | version "6.2.1" 357 | resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.1.tgz#4ebba9f339b600ff415ae4166e3e2e008831cf0c" 358 | integrity sha512-cjN2ObWrRz0TTw7vEcGQrx+YltMvZoOEx4hWU8eEERDnBIU00OTq7Vr+jA7DFKxiwLNv4tTh5Pq2GUNEa8b6+w== 359 | dependencies: 360 | aria-query "^3.0.0" 361 | array-includes "^3.0.3" 362 | ast-types-flow "^0.0.7" 363 | axobject-query "^2.0.2" 364 | damerau-levenshtein "^1.0.4" 365 | emoji-regex "^7.0.2" 366 | has "^1.0.3" 367 | jsx-ast-utils "^2.0.1" 368 | 369 | eslint-plugin-node@^9.1.0: 370 | version "9.1.0" 371 | resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-9.1.0.tgz#f2fd88509a31ec69db6e9606d76dabc5adc1b91a" 372 | integrity sha512-ZwQYGm6EoV2cfLpE1wxJWsfnKUIXfM/KM09/TlorkukgCAwmkgajEJnPCmyzoFPQQkmvo5DrW/nyKutNIw36Mw== 373 | dependencies: 374 | eslint-plugin-es "^1.4.0" 375 | eslint-utils "^1.3.1" 376 | ignore "^5.1.1" 377 | minimatch "^3.0.4" 378 | resolve "^1.10.1" 379 | semver "^6.1.0" 380 | 381 | eslint-plugin-prefer-object-spread@^1.2.1: 382 | version "1.2.1" 383 | resolved "https://registry.yarnpkg.com/eslint-plugin-prefer-object-spread/-/eslint-plugin-prefer-object-spread-1.2.1.tgz#27fb91853690cceb3ae6101d9c8aecc6a67a402c" 384 | 385 | eslint-plugin-promise@^4.1.1: 386 | version "4.1.1" 387 | resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.1.1.tgz#1e08cb68b5b2cd8839f8d5864c796f56d82746db" 388 | integrity sha512-faAHw7uzlNPy7b45J1guyjazw28M+7gJokKUjC5JSFoYfUEyy6Gw/i7YQvmv2Yk00sUjWcmzXQLpU1Ki/C2IZQ== 389 | 390 | eslint-plugin-react@^7.13.0: 391 | version "7.13.0" 392 | resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.13.0.tgz#bc13fd7101de67996ea51b33873cd9dc2b7e5758" 393 | integrity sha512-uA5LrHylu8lW/eAH3bEQe9YdzpPaFd9yAJTwTi/i/BKTD7j6aQMKVAdGM/ML72zD6womuSK7EiGtMKuK06lWjQ== 394 | dependencies: 395 | array-includes "^3.0.3" 396 | doctrine "^2.1.0" 397 | has "^1.0.3" 398 | jsx-ast-utils "^2.1.0" 399 | object.fromentries "^2.0.0" 400 | prop-types "^15.7.2" 401 | resolve "^1.10.1" 402 | 403 | eslint-scope@^4.0.3: 404 | version "4.0.3" 405 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" 406 | integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== 407 | dependencies: 408 | esrecurse "^4.1.0" 409 | estraverse "^4.1.1" 410 | 411 | eslint-utils@^1.3.0, eslint-utils@^1.3.1: 412 | version "1.3.1" 413 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" 414 | integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== 415 | 416 | eslint-visitor-keys@^1.0.0: 417 | version "1.0.0" 418 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" 419 | integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== 420 | 421 | eslint@^5.16.0: 422 | version "5.16.0" 423 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" 424 | integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== 425 | dependencies: 426 | "@babel/code-frame" "^7.0.0" 427 | ajv "^6.9.1" 428 | chalk "^2.1.0" 429 | cross-spawn "^6.0.5" 430 | debug "^4.0.1" 431 | doctrine "^3.0.0" 432 | eslint-scope "^4.0.3" 433 | eslint-utils "^1.3.1" 434 | eslint-visitor-keys "^1.0.0" 435 | espree "^5.0.1" 436 | esquery "^1.0.1" 437 | esutils "^2.0.2" 438 | file-entry-cache "^5.0.1" 439 | functional-red-black-tree "^1.0.1" 440 | glob "^7.1.2" 441 | globals "^11.7.0" 442 | ignore "^4.0.6" 443 | import-fresh "^3.0.0" 444 | imurmurhash "^0.1.4" 445 | inquirer "^6.2.2" 446 | js-yaml "^3.13.0" 447 | json-stable-stringify-without-jsonify "^1.0.1" 448 | levn "^0.3.0" 449 | lodash "^4.17.11" 450 | minimatch "^3.0.4" 451 | mkdirp "^0.5.1" 452 | natural-compare "^1.4.0" 453 | optionator "^0.8.2" 454 | path-is-inside "^1.0.2" 455 | progress "^2.0.0" 456 | regexpp "^2.0.1" 457 | semver "^5.5.1" 458 | strip-ansi "^4.0.0" 459 | strip-json-comments "^2.0.1" 460 | table "^5.2.3" 461 | text-table "^0.2.0" 462 | 463 | espree@^5.0.1: 464 | version "5.0.1" 465 | resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" 466 | integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== 467 | dependencies: 468 | acorn "^6.0.7" 469 | acorn-jsx "^5.0.0" 470 | eslint-visitor-keys "^1.0.0" 471 | 472 | esprima@^4.0.0: 473 | version "4.0.1" 474 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 475 | 476 | esquery@^1.0.1: 477 | version "1.0.1" 478 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" 479 | integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== 480 | dependencies: 481 | estraverse "^4.0.0" 482 | 483 | esrecurse@^4.1.0: 484 | version "4.1.0" 485 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" 486 | dependencies: 487 | estraverse "~4.1.0" 488 | object-assign "^4.0.1" 489 | 490 | estraverse@^4.0.0, estraverse@^4.1.1: 491 | version "4.2.0" 492 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 493 | 494 | estraverse@~4.1.0: 495 | version "4.1.1" 496 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" 497 | 498 | esutils@^2.0.2: 499 | version "2.0.2" 500 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 501 | 502 | external-editor@^3.0.3: 503 | version "3.0.3" 504 | resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" 505 | integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== 506 | dependencies: 507 | chardet "^0.7.0" 508 | iconv-lite "^0.4.24" 509 | tmp "^0.0.33" 510 | 511 | fast-deep-equal@^2.0.1: 512 | version "2.0.1" 513 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" 514 | integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= 515 | 516 | fast-json-stable-stringify@^2.0.0: 517 | version "2.0.0" 518 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" 519 | integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= 520 | 521 | fast-levenshtein@~2.0.4: 522 | version "2.0.6" 523 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 524 | 525 | figures@^2.0.0: 526 | version "2.0.0" 527 | resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" 528 | dependencies: 529 | escape-string-regexp "^1.0.5" 530 | 531 | file-entry-cache@^5.0.1: 532 | version "5.0.1" 533 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" 534 | integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== 535 | dependencies: 536 | flat-cache "^2.0.1" 537 | 538 | find-up@^2.0.0, find-up@^2.1.0: 539 | version "2.1.0" 540 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" 541 | dependencies: 542 | locate-path "^2.0.0" 543 | 544 | flat-cache@^2.0.1: 545 | version "2.0.1" 546 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" 547 | integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== 548 | dependencies: 549 | flatted "^2.0.0" 550 | rimraf "2.6.3" 551 | write "1.0.3" 552 | 553 | flatted@^2.0.0: 554 | version "2.0.0" 555 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" 556 | integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== 557 | 558 | foreach@^2.0.5: 559 | version "2.0.5" 560 | resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" 561 | 562 | fs.realpath@^1.0.0: 563 | version "1.0.0" 564 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 565 | 566 | function-bind@^1.0.2, function-bind@^1.1.0: 567 | version "1.1.0" 568 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771" 569 | 570 | function-bind@^1.1.1: 571 | version "1.1.1" 572 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 573 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 574 | 575 | functional-red-black-tree@^1.0.1: 576 | version "1.0.1" 577 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 578 | 579 | glob@^7.0.5, glob@^7.1.2: 580 | version "7.1.2" 581 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" 582 | dependencies: 583 | fs.realpath "^1.0.0" 584 | inflight "^1.0.4" 585 | inherits "2" 586 | minimatch "^3.0.4" 587 | once "^1.3.0" 588 | path-is-absolute "^1.0.0" 589 | 590 | glob@^7.1.3: 591 | version "7.1.4" 592 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" 593 | integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== 594 | dependencies: 595 | fs.realpath "^1.0.0" 596 | inflight "^1.0.4" 597 | inherits "2" 598 | minimatch "^3.0.4" 599 | once "^1.3.0" 600 | path-is-absolute "^1.0.0" 601 | 602 | globals@^11.7.0: 603 | version "11.12.0" 604 | resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" 605 | integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== 606 | 607 | graceful-fs@^4.1.2: 608 | version "4.1.11" 609 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 610 | 611 | has-flag@^2.0.0: 612 | version "2.0.0" 613 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" 614 | 615 | has-flag@^3.0.0: 616 | version "3.0.0" 617 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 618 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 619 | 620 | has-symbols@^1.0.0: 621 | version "1.0.0" 622 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" 623 | integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= 624 | 625 | has@^1.0.1: 626 | version "1.0.1" 627 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28" 628 | dependencies: 629 | function-bind "^1.0.2" 630 | 631 | has@^1.0.3: 632 | version "1.0.3" 633 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 634 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 635 | dependencies: 636 | function-bind "^1.1.1" 637 | 638 | hosted-git-info@^2.1.4: 639 | version "2.5.0" 640 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" 641 | 642 | iconv-lite@^0.4.24: 643 | version "0.4.24" 644 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 645 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 646 | dependencies: 647 | safer-buffer ">= 2.1.2 < 3" 648 | 649 | ignore@^4.0.6: 650 | version "4.0.6" 651 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 652 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 653 | 654 | ignore@^5.1.1: 655 | version "5.1.2" 656 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.2.tgz#e28e584d43ad7e92f96995019cc43b9e1ac49558" 657 | integrity sha512-vdqWBp7MyzdmHkkRWV5nY+PfGRbYbahfuvsBCh277tq+w9zyNi7h5CYJCK0kmzti9kU+O/cB7sE8HvKv6aXAKQ== 658 | 659 | import-fresh@^3.0.0: 660 | version "3.0.0" 661 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" 662 | integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== 663 | dependencies: 664 | parent-module "^1.0.0" 665 | resolve-from "^4.0.0" 666 | 667 | imurmurhash@^0.1.4: 668 | version "0.1.4" 669 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 670 | 671 | inflight@^1.0.4: 672 | version "1.0.6" 673 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 674 | dependencies: 675 | once "^1.3.0" 676 | wrappy "1" 677 | 678 | inherits@2: 679 | version "2.0.3" 680 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 681 | 682 | inquirer@^6.2.2: 683 | version "6.3.1" 684 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" 685 | integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== 686 | dependencies: 687 | ansi-escapes "^3.2.0" 688 | chalk "^2.4.2" 689 | cli-cursor "^2.1.0" 690 | cli-width "^2.0.0" 691 | external-editor "^3.0.3" 692 | figures "^2.0.0" 693 | lodash "^4.17.11" 694 | mute-stream "0.0.7" 695 | run-async "^2.2.0" 696 | rxjs "^6.4.0" 697 | string-width "^2.1.0" 698 | strip-ansi "^5.1.0" 699 | through "^2.3.6" 700 | 701 | is-arrayish@^0.2.1: 702 | version "0.2.1" 703 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 704 | 705 | is-builtin-module@^1.0.0: 706 | version "1.0.0" 707 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 708 | dependencies: 709 | builtin-modules "^1.0.0" 710 | 711 | is-callable@^1.1.1, is-callable@^1.1.3: 712 | version "1.1.3" 713 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.3.tgz#86eb75392805ddc33af71c92a0eedf74ee7604b2" 714 | 715 | is-callable@^1.1.4: 716 | version "1.1.4" 717 | resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" 718 | integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== 719 | 720 | is-date-object@^1.0.1: 721 | version "1.0.1" 722 | resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" 723 | 724 | is-fullwidth-code-point@^2.0.0: 725 | version "2.0.0" 726 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 727 | 728 | is-promise@^2.1.0: 729 | version "2.1.0" 730 | resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" 731 | 732 | is-regex@^1.0.3, is-regex@^1.0.4: 733 | version "1.0.4" 734 | resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" 735 | dependencies: 736 | has "^1.0.1" 737 | 738 | is-symbol@^1.0.1: 739 | version "1.0.1" 740 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.1.tgz#3cc59f00025194b6ab2e38dbae6689256b660572" 741 | 742 | is-symbol@^1.0.2: 743 | version "1.0.2" 744 | resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" 745 | integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== 746 | dependencies: 747 | has-symbols "^1.0.0" 748 | 749 | isarray@^1.0.0: 750 | version "1.0.0" 751 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 752 | 753 | isexe@^2.0.0: 754 | version "2.0.0" 755 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 756 | 757 | "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: 758 | version "4.0.0" 759 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 760 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 761 | 762 | js-yaml@^3.13.0: 763 | version "3.13.1" 764 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" 765 | integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== 766 | dependencies: 767 | argparse "^1.0.7" 768 | esprima "^4.0.0" 769 | 770 | json-schema-traverse@^0.4.1: 771 | version "0.4.1" 772 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 773 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 774 | 775 | json-stable-stringify-without-jsonify@^1.0.1: 776 | version "1.0.1" 777 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 778 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= 779 | 780 | jsx-ast-utils@^2.0.1, jsx-ast-utils@^2.1.0: 781 | version "2.1.0" 782 | resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz#0ee4e2c971fb9601c67b5641b71be80faecf0b36" 783 | integrity sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA== 784 | dependencies: 785 | array-includes "^3.0.3" 786 | 787 | levn@^0.3.0, levn@~0.3.0: 788 | version "0.3.0" 789 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 790 | dependencies: 791 | prelude-ls "~1.1.2" 792 | type-check "~0.3.2" 793 | 794 | load-json-file@^2.0.0: 795 | version "2.0.0" 796 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" 797 | dependencies: 798 | graceful-fs "^4.1.2" 799 | parse-json "^2.2.0" 800 | pify "^2.0.0" 801 | strip-bom "^3.0.0" 802 | 803 | locate-path@^2.0.0: 804 | version "2.0.0" 805 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" 806 | dependencies: 807 | p-locate "^2.0.0" 808 | path-exists "^3.0.0" 809 | 810 | lodash@^4.17.11: 811 | version "4.17.11" 812 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" 813 | integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== 814 | 815 | loose-envify@^1.4.0: 816 | version "1.4.0" 817 | resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" 818 | integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== 819 | dependencies: 820 | js-tokens "^3.0.0 || ^4.0.0" 821 | 822 | mimic-fn@^1.0.0: 823 | version "1.1.0" 824 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18" 825 | 826 | minimatch@^3.0.4: 827 | version "3.0.4" 828 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 829 | dependencies: 830 | brace-expansion "^1.1.7" 831 | 832 | minimist@0.0.8: 833 | version "0.0.8" 834 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 835 | 836 | mkdirp@^0.5.1: 837 | version "0.5.1" 838 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 839 | dependencies: 840 | minimist "0.0.8" 841 | 842 | ms@2.0.0: 843 | version "2.0.0" 844 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 845 | 846 | ms@^2.1.1: 847 | version "2.1.2" 848 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 849 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 850 | 851 | mute-stream@0.0.7: 852 | version "0.0.7" 853 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" 854 | 855 | natural-compare@^1.4.0: 856 | version "1.4.0" 857 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 858 | 859 | nice-try@^1.0.4: 860 | version "1.0.5" 861 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 862 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 863 | 864 | normalize-package-data@^2.3.2: 865 | version "2.4.0" 866 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f" 867 | dependencies: 868 | hosted-git-info "^2.1.4" 869 | is-builtin-module "^1.0.0" 870 | semver "2 || 3 || 4 || 5" 871 | validate-npm-package-license "^3.0.1" 872 | 873 | object-assign@^4.0.1, object-assign@^4.1.1: 874 | version "4.1.1" 875 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 876 | 877 | object-keys@^1.0.12: 878 | version "1.1.1" 879 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" 880 | integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== 881 | 882 | object-keys@^1.0.8: 883 | version "1.0.11" 884 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.0.11.tgz#c54601778ad560f1142ce0e01bcca8b56d13426d" 885 | 886 | object.fromentries@^2.0.0: 887 | version "2.0.0" 888 | resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.0.tgz#49a543d92151f8277b3ac9600f1e930b189d30ab" 889 | integrity sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA== 890 | dependencies: 891 | define-properties "^1.1.2" 892 | es-abstract "^1.11.0" 893 | function-bind "^1.1.1" 894 | has "^1.0.1" 895 | 896 | once@^1.3.0: 897 | version "1.4.0" 898 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 899 | dependencies: 900 | wrappy "1" 901 | 902 | onetime@^2.0.0: 903 | version "2.0.1" 904 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" 905 | dependencies: 906 | mimic-fn "^1.0.0" 907 | 908 | optionator@^0.8.2: 909 | version "0.8.2" 910 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 911 | dependencies: 912 | deep-is "~0.1.3" 913 | fast-levenshtein "~2.0.4" 914 | levn "~0.3.0" 915 | prelude-ls "~1.1.2" 916 | type-check "~0.3.2" 917 | wordwrap "~1.0.0" 918 | 919 | os-tmpdir@~1.0.2: 920 | version "1.0.2" 921 | resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" 922 | integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= 923 | 924 | p-limit@^1.1.0: 925 | version "1.1.0" 926 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.1.0.tgz#b07ff2d9a5d88bec806035895a2bab66a27988bc" 927 | 928 | p-locate@^2.0.0: 929 | version "2.0.0" 930 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" 931 | dependencies: 932 | p-limit "^1.1.0" 933 | 934 | parent-module@^1.0.0: 935 | version "1.0.1" 936 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 937 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 938 | dependencies: 939 | callsites "^3.0.0" 940 | 941 | parse-json@^2.2.0: 942 | version "2.2.0" 943 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 944 | dependencies: 945 | error-ex "^1.2.0" 946 | 947 | path-exists@^3.0.0: 948 | version "3.0.0" 949 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 950 | 951 | path-is-absolute@^1.0.0: 952 | version "1.0.1" 953 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 954 | 955 | path-is-inside@^1.0.2: 956 | version "1.0.2" 957 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 958 | 959 | path-key@^2.0.1: 960 | version "2.0.1" 961 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 962 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 963 | 964 | path-parse@^1.0.6: 965 | version "1.0.6" 966 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 967 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 968 | 969 | path-type@^2.0.0: 970 | version "2.0.0" 971 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" 972 | dependencies: 973 | pify "^2.0.0" 974 | 975 | pify@^2.0.0: 976 | version "2.3.0" 977 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 978 | 979 | pkg-dir@^2.0.0: 980 | version "2.0.0" 981 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" 982 | integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= 983 | dependencies: 984 | find-up "^2.1.0" 985 | 986 | prelude-ls@~1.1.2: 987 | version "1.1.2" 988 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 989 | 990 | progress@^2.0.0: 991 | version "2.0.0" 992 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f" 993 | 994 | prop-types@^15.7.2: 995 | version "15.7.2" 996 | resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" 997 | integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== 998 | dependencies: 999 | loose-envify "^1.4.0" 1000 | object-assign "^4.1.1" 1001 | react-is "^16.8.1" 1002 | 1003 | punycode@^2.1.0: 1004 | version "2.1.1" 1005 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1006 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1007 | 1008 | react-is@^16.8.1: 1009 | version "16.8.6" 1010 | resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" 1011 | integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== 1012 | 1013 | read-pkg-up@^2.0.0: 1014 | version "2.0.0" 1015 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" 1016 | dependencies: 1017 | find-up "^2.0.0" 1018 | read-pkg "^2.0.0" 1019 | 1020 | read-pkg@^2.0.0: 1021 | version "2.0.0" 1022 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" 1023 | dependencies: 1024 | load-json-file "^2.0.0" 1025 | normalize-package-data "^2.3.2" 1026 | path-type "^2.0.0" 1027 | 1028 | regexpp@^2.0.1: 1029 | version "2.0.1" 1030 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" 1031 | integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== 1032 | 1033 | resolve-from@^4.0.0: 1034 | version "4.0.0" 1035 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1036 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1037 | 1038 | resolve@^1.10.1, resolve@^1.11.0, resolve@^1.5.0: 1039 | version "1.11.1" 1040 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" 1041 | integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== 1042 | dependencies: 1043 | path-parse "^1.0.6" 1044 | 1045 | restore-cursor@^2.0.0: 1046 | version "2.0.0" 1047 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" 1048 | dependencies: 1049 | onetime "^2.0.0" 1050 | signal-exit "^3.0.2" 1051 | 1052 | rimraf@2.6.3: 1053 | version "2.6.3" 1054 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" 1055 | integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== 1056 | dependencies: 1057 | glob "^7.1.3" 1058 | 1059 | run-async@^2.2.0: 1060 | version "2.3.0" 1061 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" 1062 | dependencies: 1063 | is-promise "^2.1.0" 1064 | 1065 | rxjs@^6.4.0: 1066 | version "6.5.2" 1067 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" 1068 | integrity sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg== 1069 | dependencies: 1070 | tslib "^1.9.0" 1071 | 1072 | "safer-buffer@>= 2.1.2 < 3": 1073 | version "2.1.2" 1074 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1075 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1076 | 1077 | "semver@2 || 3 || 4 || 5": 1078 | version "5.3.0" 1079 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 1080 | 1081 | semver@^5.5.0, semver@^5.5.1: 1082 | version "5.7.0" 1083 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" 1084 | integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== 1085 | 1086 | semver@^6.1.0: 1087 | version "6.1.1" 1088 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.1.1.tgz#53f53da9b30b2103cd4f15eab3a18ecbcb210c9b" 1089 | integrity sha512-rWYq2e5iYW+fFe/oPPtYJxYgjBm8sC4rmoGdUOgBB7VnwKt6HrL793l2voH1UlsyYZpJ4g0wfjnTEO1s1NP2eQ== 1090 | 1091 | shebang-command@^1.2.0: 1092 | version "1.2.0" 1093 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 1094 | dependencies: 1095 | shebang-regex "^1.0.0" 1096 | 1097 | shebang-regex@^1.0.0: 1098 | version "1.0.0" 1099 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 1100 | 1101 | signal-exit@^3.0.2: 1102 | version "3.0.2" 1103 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1104 | 1105 | slice-ansi@^2.1.0: 1106 | version "2.1.0" 1107 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" 1108 | integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== 1109 | dependencies: 1110 | ansi-styles "^3.2.0" 1111 | astral-regex "^1.0.0" 1112 | is-fullwidth-code-point "^2.0.0" 1113 | 1114 | spdx-correct@~1.0.0: 1115 | version "1.0.2" 1116 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 1117 | dependencies: 1118 | spdx-license-ids "^1.0.2" 1119 | 1120 | spdx-expression-parse@~1.0.0: 1121 | version "1.0.4" 1122 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 1123 | 1124 | spdx-license-ids@^1.0.2: 1125 | version "1.2.2" 1126 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 1127 | 1128 | sprintf-js@~1.0.2: 1129 | version "1.0.3" 1130 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1131 | 1132 | string-width@^2.1.0: 1133 | version "2.1.1" 1134 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" 1135 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== 1136 | dependencies: 1137 | is-fullwidth-code-point "^2.0.0" 1138 | strip-ansi "^4.0.0" 1139 | 1140 | string-width@^3.0.0: 1141 | version "3.1.0" 1142 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 1143 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 1144 | dependencies: 1145 | emoji-regex "^7.0.1" 1146 | is-fullwidth-code-point "^2.0.0" 1147 | strip-ansi "^5.1.0" 1148 | 1149 | strip-ansi@^4.0.0: 1150 | version "4.0.0" 1151 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" 1152 | dependencies: 1153 | ansi-regex "^3.0.0" 1154 | 1155 | strip-ansi@^5.1.0: 1156 | version "5.2.0" 1157 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 1158 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 1159 | dependencies: 1160 | ansi-regex "^4.1.0" 1161 | 1162 | strip-bom@^3.0.0: 1163 | version "3.0.0" 1164 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 1165 | 1166 | strip-json-comments@^2.0.1: 1167 | version "2.0.1" 1168 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 1169 | integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= 1170 | 1171 | supports-color@^4.0.0: 1172 | version "4.4.0" 1173 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" 1174 | dependencies: 1175 | has-flag "^2.0.0" 1176 | 1177 | supports-color@^5.3.0: 1178 | version "5.5.0" 1179 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1180 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1181 | dependencies: 1182 | has-flag "^3.0.0" 1183 | 1184 | table@^5.2.3: 1185 | version "5.4.0" 1186 | resolved "https://registry.yarnpkg.com/table/-/table-5.4.0.tgz#d772a3216e68829920a41a32c18eda286c95d780" 1187 | integrity sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw== 1188 | dependencies: 1189 | ajv "^6.9.1" 1190 | lodash "^4.17.11" 1191 | slice-ansi "^2.1.0" 1192 | string-width "^3.0.0" 1193 | 1194 | text-table@^0.2.0: 1195 | version "0.2.0" 1196 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1197 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= 1198 | 1199 | through@^2.3.6: 1200 | version "2.3.8" 1201 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1202 | 1203 | tmp@^0.0.33: 1204 | version "0.0.33" 1205 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" 1206 | integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 1207 | dependencies: 1208 | os-tmpdir "~1.0.2" 1209 | 1210 | tslib@^1.9.0: 1211 | version "1.10.0" 1212 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" 1213 | integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== 1214 | 1215 | type-check@~0.3.2: 1216 | version "0.3.2" 1217 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1218 | dependencies: 1219 | prelude-ls "~1.1.2" 1220 | 1221 | uri-js@^4.2.2: 1222 | version "4.2.2" 1223 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" 1224 | integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== 1225 | dependencies: 1226 | punycode "^2.1.0" 1227 | 1228 | validate-npm-package-license@^3.0.1: 1229 | version "3.0.1" 1230 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 1231 | dependencies: 1232 | spdx-correct "~1.0.0" 1233 | spdx-expression-parse "~1.0.0" 1234 | 1235 | which@^1.2.9: 1236 | version "1.3.0" 1237 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" 1238 | dependencies: 1239 | isexe "^2.0.0" 1240 | 1241 | wordwrap@~1.0.0: 1242 | version "1.0.0" 1243 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1244 | 1245 | wrappy@1: 1246 | version "1.0.2" 1247 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1248 | 1249 | write@1.0.3: 1250 | version "1.0.3" 1251 | resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" 1252 | integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== 1253 | dependencies: 1254 | mkdirp "^0.5.1" 1255 | 1256 | yamljs@^0.3.0: 1257 | version "0.3.0" 1258 | resolved "https://registry.yarnpkg.com/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b" 1259 | dependencies: 1260 | argparse "^1.0.7" 1261 | glob "^7.0.5" 1262 | -------------------------------------------------------------------------------- /rubocop/.gitignore: -------------------------------------------------------------------------------- 1 | /.bundle/ 2 | /.yardoc 3 | /_yardoc/ 4 | /coverage/ 5 | /doc/ 6 | /pkg/ 7 | /spec/reports/ 8 | /tmp/ 9 | 10 | # rspec failure tracking 11 | .rspec_status 12 | *.gem 13 | -------------------------------------------------------------------------------- /rubocop/.rubocop.yml: -------------------------------------------------------------------------------- 1 | inherit_gem: 2 | rubocop-config-umbrellio: lib/rubocop.yml 3 | 4 | AllCops: 5 | TargetRubyVersion: 3.0 6 | -------------------------------------------------------------------------------- /rubocop/Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source "https://rubygems.org" 4 | 5 | # Specify your gem's dependencies in rubocop.gemspec 6 | gemspec 7 | 8 | gem "bundler", "~> 2.2" 9 | gem "rake", "~> 13.0" 10 | -------------------------------------------------------------------------------- /rubocop/Gemfile.lock: -------------------------------------------------------------------------------- 1 | PATH 2 | remote: . 3 | specs: 4 | rubocop-config-umbrellio (1.75.0) 5 | rubocop (~> 1.75.0) 6 | rubocop-factory_bot (~> 2.27.0) 7 | rubocop-performance (~> 1.25.0) 8 | rubocop-rails (~> 2.32.0) 9 | rubocop-rake (~> 0.7.0) 10 | rubocop-rspec (~> 3.6.0) 11 | rubocop-sequel (~> 0.4.0) 12 | 13 | GEM 14 | remote: https://rubygems.org/ 15 | specs: 16 | activesupport (8.0.2) 17 | base64 18 | benchmark (>= 0.3) 19 | bigdecimal 20 | concurrent-ruby (~> 1.0, >= 1.3.1) 21 | connection_pool (>= 2.2.5) 22 | drb 23 | i18n (>= 1.6, < 2) 24 | logger (>= 1.4.2) 25 | minitest (>= 5.1) 26 | securerandom (>= 0.3) 27 | tzinfo (~> 2.0, >= 2.0.5) 28 | uri (>= 0.13.1) 29 | ast (2.4.3) 30 | base64 (0.2.0) 31 | benchmark (0.4.0) 32 | bigdecimal (3.1.9) 33 | concurrent-ruby (1.3.5) 34 | connection_pool (2.5.3) 35 | drb (2.2.3) 36 | i18n (1.14.7) 37 | concurrent-ruby (~> 1.0) 38 | json (2.12.2) 39 | language_server-protocol (3.17.0.5) 40 | lint_roller (1.1.0) 41 | logger (1.7.0) 42 | minitest (5.25.5) 43 | parallel (1.27.0) 44 | parser (3.3.8.0) 45 | ast (~> 2.4.1) 46 | racc 47 | prism (1.4.0) 48 | racc (1.8.1) 49 | rack (3.1.15) 50 | rainbow (3.1.1) 51 | rake (13.2.1) 52 | regexp_parser (2.10.0) 53 | rubocop (1.75.7) 54 | json (~> 2.3) 55 | language_server-protocol (~> 3.17.0.2) 56 | lint_roller (~> 1.1.0) 57 | parallel (~> 1.10) 58 | parser (>= 3.3.0.2) 59 | rainbow (>= 2.2.2, < 4.0) 60 | regexp_parser (>= 2.9.3, < 3.0) 61 | rubocop-ast (>= 1.44.0, < 2.0) 62 | ruby-progressbar (~> 1.7) 63 | unicode-display_width (>= 2.4.0, < 4.0) 64 | rubocop-ast (1.44.1) 65 | parser (>= 3.3.7.2) 66 | prism (~> 1.4) 67 | rubocop-factory_bot (2.27.1) 68 | lint_roller (~> 1.1) 69 | rubocop (~> 1.72, >= 1.72.1) 70 | rubocop-performance (1.25.0) 71 | lint_roller (~> 1.1) 72 | rubocop (>= 1.75.0, < 2.0) 73 | rubocop-ast (>= 1.38.0, < 2.0) 74 | rubocop-rails (2.32.0) 75 | activesupport (>= 4.2.0) 76 | lint_roller (~> 1.1) 77 | rack (>= 1.1) 78 | rubocop (>= 1.75.0, < 2.0) 79 | rubocop-ast (>= 1.44.0, < 2.0) 80 | rubocop-rake (0.7.1) 81 | lint_roller (~> 1.1) 82 | rubocop (>= 1.72.1) 83 | rubocop-rspec (3.6.0) 84 | lint_roller (~> 1.1) 85 | rubocop (~> 1.72, >= 1.72.1) 86 | rubocop-sequel (0.4.1) 87 | lint_roller (~> 1.1) 88 | rubocop (>= 1.72.1, < 2) 89 | ruby-progressbar (1.13.0) 90 | securerandom (0.4.1) 91 | tzinfo (2.0.6) 92 | concurrent-ruby (~> 1.0) 93 | unicode-display_width (3.1.4) 94 | unicode-emoji (~> 4.0, >= 4.0.4) 95 | unicode-emoji (4.0.4) 96 | uri (1.0.3) 97 | 98 | PLATFORMS 99 | arm64-darwin-21 100 | ruby 101 | x86_64-darwin-20 102 | x86_64-linux 103 | 104 | DEPENDENCIES 105 | bundler (~> 2.2) 106 | rake (~> 13.0) 107 | rubocop-config-umbrellio! 108 | 109 | BUNDLED WITH 110 | 2.6.9 111 | -------------------------------------------------------------------------------- /rubocop/README.md: -------------------------------------------------------------------------------- 1 | # Umbrellio code style: rubocop-config-umbrellio 2 | This gem provides default rubocop settings for Umbrellio projects. 3 | 4 | When writing Ruby, we mostly follow this guide: https://github.com/airbnb/ruby. 5 | 6 | ## Usage 7 | 8 | 1. Add `gem 'rubocop-config-umbrellio'` to your Gemfile. 9 | 10 | To test this gem before release, you can add 11 | `gem 'rubocop-config-umbrellio', github: 'umbrellio/code-style'` instead. 12 | 13 | Do `$ bundle install`. If it fails, run `$ bundle update rubocop rubocop-rspec` instead. 14 | 15 | 2. Edit `.rubocop.yml`: 16 | 17 | ```yaml 18 | inherit_gem: 19 | rubocop-config-umbrellio: lib/rubocop.yml 20 | # OR 21 | rubocop-config-umbrellio: lib/rubocop.rails.yml 22 | 23 | AllCops: 24 | TargetRubyVersion: 2.3 25 | 26 | # Optional overrides 27 | ``` 28 | -------------------------------------------------------------------------------- /rubocop/Rakefile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require "bundler/gem_tasks" 4 | require "rubocop/rake_task" 5 | require "rubocop" 6 | require "rubocop-performance" 7 | require "rubocop-rspec" 8 | 9 | RuboCop::RakeTask.new(:rubocop) do |t| 10 | t.options = %w[--config ./.rubocop.yml] 11 | t.plugins << "rubocop-rspec" 12 | t.plugins << "rubocop-performance" 13 | end 14 | 15 | task default: :rubocop 16 | -------------------------------------------------------------------------------- /rubocop/bin/rake: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # frozen_string_literal: true 3 | # 4 | # This file was generated by Bundler. 5 | # 6 | # The application 'rake' is installed as part of a gem, and 7 | # this file is here to facilitate running it. 8 | # 9 | 10 | require "pathname" 11 | ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", 12 | Pathname.new(__FILE__).realpath) 13 | 14 | require "rubygems" 15 | require "bundler/setup" 16 | 17 | load Gem.bin_path("rake", "rake") 18 | -------------------------------------------------------------------------------- /rubocop/bin/rubocop: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | # frozen_string_literal: true 3 | # 4 | # This file was generated by Bundler. 5 | # 6 | # The application 'rubocop' is installed as part of a gem, and 7 | # this file is here to facilitate running it. 8 | # 9 | 10 | require "pathname" 11 | ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", Pathname.new(__FILE__).realpath) 12 | 13 | require "rubygems" 14 | require "bundler/setup" 15 | 16 | load Gem.bin_path("rubocop", "rubocop") 17 | -------------------------------------------------------------------------------- /rubocop/lib/rubocop.performance.yml: -------------------------------------------------------------------------------- 1 | plugins: rubocop-performance 2 | 3 | Performance/Caller: 4 | Enabled: true 5 | 6 | Performance/Casecmp: 7 | Enabled: false 8 | 9 | Performance/UnfreezeString: 10 | Enabled: true 11 | -------------------------------------------------------------------------------- /rubocop/lib/rubocop.rails.yml: -------------------------------------------------------------------------------- 1 | plugins: rubocop-rails 2 | 3 | inherit_gem: 4 | rubocop-config-umbrellio: lib/rubocop.yml 5 | 6 | # Layout 7 | 8 | Layout/LineLength: 9 | Exclude: 10 | - config/environments/* 11 | - lib/**/tasks/**/* 12 | 13 | # Metrics 14 | 15 | Metrics/MethodLength: 16 | Exclude: 17 | - db/**/* 18 | - config/initializers/**/* 19 | 20 | # Rails 21 | 22 | Rails: 23 | Enabled: true 24 | 25 | Rails/ApplicationJob: 26 | Enabled: true 27 | 28 | Rails/ApplicationRecord: 29 | # Use it even you use Sequel 30 | Enabled: true 31 | 32 | Rails/CreateTableWithTimestamps: 33 | # Conflicts with Sequel 34 | Enabled: false 35 | 36 | Rails/Delegate: 37 | Enabled: false 38 | 39 | Rails/HasAndBelongsToMany: 40 | Enabled: false 41 | 42 | Rails/HasManyOrHasOneDependent: 43 | Enabled: false 44 | 45 | Rails/HttpPositionalArguments: 46 | # rails 5 feature https://github.com/bbatsov/rubocop/issues/3629 47 | Enabled: false 48 | 49 | Rails/OutputSafety: 50 | Enabled: false 51 | 52 | Rails/RenderInline: 53 | Enabled: false # See https://github.com/rubocop-hq/rubocop-rails/issues/300 54 | 55 | Rails/SaveBang: 56 | # Disabled by default 57 | Enabled: true 58 | 59 | Rails/SkipsModelValidations: 60 | Enabled: false 61 | 62 | Rails/UnknownEnv: 63 | Environments: 64 | - development 65 | - test 66 | - staging 67 | - production 68 | 69 | Rails/Validation: 70 | Enabled: false 71 | 72 | # Style 73 | 74 | Style/ClassAndModuleChildren: 75 | Enabled: true 76 | EnforcedStyle: compact 77 | Exclude: 78 | - config/**/* 79 | 80 | Style/HashSyntax: 81 | Exclude: 82 | - lib/**/tasks/**/* 83 | -------------------------------------------------------------------------------- /rubocop/lib/rubocop.rake.yml: -------------------------------------------------------------------------------- 1 | plugins: rubocop-rake 2 | -------------------------------------------------------------------------------- /rubocop/lib/rubocop.rspec.yml: -------------------------------------------------------------------------------- 1 | plugins: 2 | - rubocop-rspec 3 | - rubocop-factory_bot 4 | 5 | # RSpec 6 | 7 | RSpec/AlignLeftLetBrace: 8 | # Never do it 9 | Enabled: false 10 | 11 | RSpec/AlignRightLetBrace: 12 | # Never do it 13 | Enabled: false 14 | 15 | RSpec/AnyInstance: 16 | Enabled: false 17 | 18 | RSpec/ExampleLength: 19 | Max: 20 20 | Exclude: 21 | - spec/features/**/* 22 | 23 | RSpec/DescribeClass: 24 | Enabled: false 25 | 26 | RSpec/DescribedClass: 27 | Enabled: false 28 | 29 | RSpec/DescribeMethod: 30 | Enabled: false 31 | 32 | RSpec/ContextWording: 33 | Enabled: false 34 | 35 | RSpec/ExpectInHook: 36 | # try not to use expect in before / after / around blocks anyway 37 | Enabled: false 38 | 39 | RSpec/SpecFilePathFormat: 40 | Enabled: false 41 | 42 | RSpec/LeadingSubject: 43 | Enabled: false # Context includes look better at the top of context, I think 44 | 45 | RSpec/LetBeforeExamples: 46 | Enabled: true 47 | 48 | RSpec/LetSetup: 49 | Enabled: false 50 | 51 | RSpec/MessageChain: 52 | Enabled: false 53 | 54 | RSpec/MessageSpies: 55 | Enabled: false 56 | 57 | RSpec/MultipleDescribes: 58 | Enabled: false 59 | 60 | RSpec/MultipleExpectations: 61 | Enabled: false 62 | 63 | RSpec/MultipleSubjects: 64 | Enabled: true 65 | 66 | RSpec/MultipleMemoizedHelpers: 67 | Enabled: false # No idea how to limit amount of lets 68 | 69 | RSpec/NestedGroups: 70 | Enabled: false 71 | 72 | RSpec/ReturnFromStub: 73 | # expect(foo).to receive(:bar) { :baz } # Bad 74 | # expect(foo).to receive(:bar).and_return(:baz) # Good 75 | # expect(foo).to receive(:bar).and_return { Time.current } # Good 76 | Enabled: true 77 | 78 | RSpec/PredicateMatcher: 79 | # Predicate matchers' error messages are shitty, we should not use them unless they aren't 80 | # expect(foo).to be_nil # good 81 | # expect(foo).to be_active # bad if foo.inspect takes 5 screens 82 | # expect(foo.active?).to be_truthy # good 83 | Enabled: false 84 | 85 | RSpec/ScatteredSetup: 86 | Enabled: false 87 | 88 | RSpec/VerifiedDoubles: 89 | Enabled: false 90 | 91 | RSpec/VoidExpect: 92 | Enabled: true 93 | 94 | RSpec/BeEq: 95 | Enabled: false 96 | 97 | RSpec/BeNil: 98 | Enabled: false 99 | 100 | RSpec/ExpectChange: 101 | Enabled: false 102 | 103 | RSpec/NoExpectationExample: 104 | Enabled: false 105 | -------------------------------------------------------------------------------- /rubocop/lib/rubocop.sequel.yml: -------------------------------------------------------------------------------- 1 | plugins: rubocop-sequel 2 | -------------------------------------------------------------------------------- /rubocop/lib/rubocop.yml: -------------------------------------------------------------------------------- 1 | inherit_gem: 2 | rubocop-config-umbrellio: 3 | - lib/rubocop.rspec.yml 4 | - lib/rubocop.performance.yml 5 | - lib/rubocop.rake.yml 6 | 7 | AllCops: 8 | NewCops: enable 9 | DisplayCopNames: true 10 | Exclude: 11 | - bin/**/* 12 | - node_modules/**/* 13 | - vendor/**/* 14 | - tmp/**/* 15 | 16 | Gemspec/RequireMFA: 17 | Enabled: false 18 | 19 | # Layout 20 | 21 | Layout/ClassStructure: 22 | Enabled: true 23 | 24 | Layout/EmptyLineAfterGuardClause: 25 | Enabled: false 26 | 27 | Layout/EmptyLinesAroundArguments: 28 | # Conflicts with memery / memoist, try to enable after next rubocop upgrade 29 | Enabled: false 30 | 31 | Layout/FirstArrayElementIndentation: 32 | # Good 33 | # foo([ 34 | # :first, 35 | # :second, 36 | # ]) 37 | # Bad 38 | # foo([ 39 | # :first, 40 | # :second 41 | # ]) 42 | EnforcedStyle: consistent 43 | 44 | Layout/FirstHashElementIndentation: 45 | EnforcedStyle: consistent 46 | 47 | Layout/LineLength: 48 | Max: 100 49 | AllowHeredoc: false 50 | AllowURI: false 51 | Exclude: 52 | - Gemfile 53 | 54 | Layout/MultilineMethodCallIndentation: 55 | # We don't like this cop 56 | Enabled: false 57 | 58 | Layout/MultilineOperationIndentation: 59 | Enabled: false 60 | 61 | Layout/ParameterAlignment: 62 | Enabled: true 63 | 64 | Layout/SpaceBeforeBrackets: 65 | Enabled: false # currently broken for cases like `add_primary_key [:some_id]` 66 | 67 | Layout/SpaceInLambdaLiteral: 68 | EnforcedStyle: require_space 69 | 70 | Layout/SpaceInsideArrayLiteralBrackets: 71 | Enabled: false 72 | 73 | # Lint 74 | 75 | Lint/AmbiguousBlockAssociation: 76 | # `scope :name, -> (param) { ... }` is a valid syntax 77 | Enabled: false 78 | 79 | Lint/AmbiguousOperator: 80 | Enabled: false 81 | 82 | Lint/EmptyWhen: 83 | # Good: 84 | # case x 85 | # when :foo 86 | # # return nil 87 | # when :bar 88 | # :bar 89 | # else 90 | # :baz 91 | # end 92 | Enabled: false 93 | 94 | Lint/NonLocalExitFromIterator: 95 | Enabled: false 96 | 97 | Lint/RaiseException: 98 | Enabled: true 99 | 100 | Lint/RescueType: 101 | # It's generally useless, but why not? 102 | Enabled: true 103 | 104 | Lint/ShadowingOuterLocalVariable: 105 | Enabled: false 106 | 107 | Lint/ScriptPermission: 108 | # checks +x on scripts 109 | Enabled: true 110 | 111 | Lint/StructNewOverride: 112 | Enabled: true 113 | 114 | Lint/SuppressedException: 115 | Enabled: false 116 | 117 | # Metrics 118 | 119 | Metrics/AbcSize: 120 | Enabled: false 121 | 122 | Metrics/BlockLength: 123 | Enabled: false 124 | 125 | Metrics/ClassLength: 126 | Enabled: false 127 | 128 | Metrics/CyclomaticComplexity: 129 | Enabled: false 130 | 131 | Metrics/MethodLength: 132 | Max: 20 133 | 134 | Metrics/PerceivedComplexity: 135 | Enabled: false 136 | 137 | # Naming 138 | 139 | Naming/RescuedExceptionsVariableName: 140 | PreferredName: error 141 | 142 | Naming/AccessorMethodName: 143 | # This cop assumes every method is accessor 144 | Enabled: false 145 | 146 | Naming/PredicateName: 147 | # `has_` is generally good 148 | ForbiddenPrefixes: 149 | - is_ 150 | 151 | # Security 152 | 153 | Security/YAMLLoad: 154 | Enabled: false 155 | 156 | # Style 157 | 158 | Style/AsciiComments: 159 | Enabled: false 160 | 161 | Style/AndOr: 162 | # `do_something and return` 163 | Enabled: false 164 | 165 | Style/ClassAndModuleChildren: 166 | # Enable it in non-rails projects with EnforcedStyle you prefer 167 | Enabled: false 168 | 169 | Style/CommentAnnotation: 170 | # Also, i think that better to use yard's `@todo` and other in ruby code 171 | Enabled: false 172 | 173 | Style/ConditionalAssignment: 174 | Enabled: false 175 | 176 | Style/Dir: 177 | Enabled: true 178 | 179 | Style/Documentation: 180 | Enabled: false 181 | 182 | Style/DoubleNegation: 183 | # Always return booleans in predicates 184 | Enabled: false 185 | 186 | Style/EmptyCaseCondition: 187 | Enabled: false 188 | 189 | Style/EmptyElse: 190 | Enabled: false 191 | 192 | Style/Encoding: 193 | Enabled: false 194 | 195 | Style/FormatStringToken: 196 | # Bad 197 | # [7] pry(main)> format "%{foo}", foo: 123 198 | # => "123" 199 | # Good 200 | # [8] pry(main)> format "%s", foo: 123 201 | # => "123" 202 | # Also good 203 | # [9] pry(main)> format "%f", foo: 123 204 | # => "123.000000" 205 | Enabled: true 206 | 207 | Style/IfUnlessModifier: 208 | # Doesn't work well with Metrics/LineLength 209 | Enabled: false 210 | 211 | Style/GuardClause: 212 | Enabled: false 213 | 214 | Style/HashEachMethods: 215 | Enabled: true 216 | 217 | Style/HashTransformKeys: 218 | Enabled: true 219 | 220 | Style/HashTransformValues: 221 | Enabled: true 222 | 223 | Style/LambdaCall: 224 | Enabled: false 225 | 226 | Style/ModuleFunction: 227 | Enabled: false 228 | 229 | Style/MultilineTernaryOperator: 230 | Enabled: false 231 | 232 | Style/MultipleComparison: 233 | # Bad 234 | # if foo == 1 || foo == 2 235 | # Good 236 | # [1, 2].include?(foo) 237 | # With activesupport, this is better 238 | # foo.in? [1, 2] 239 | Enabled: true 240 | 241 | Style/NumericLiterals: 242 | Description: 'Use indent in groups of 3 unlesss you meet project-specific rule' 243 | Enabled: false 244 | 245 | Style/ParallelAssignment: 246 | Enabled: false 247 | 248 | Style/PerlBackrefs: 249 | # Disable localy if realy neeeded 250 | Enabled: true 251 | 252 | Style/RaiseArgs: 253 | Description: 'Use `raise, ErrorClass` in all cases but not when you need ErrorClass constructor' 254 | Enabled: false 255 | 256 | Style/RedundantConditional: 257 | Enabled: true 258 | 259 | Style/RegexpLiteral: 260 | EnforcedStyle: mixed 261 | Enabled: true 262 | 263 | Style/RescueModifier: 264 | Enabled: false 265 | 266 | Style/RescueStandardError: 267 | # We forced `rescue` over `rescue StandardError` 268 | Enabled: false 269 | 270 | Style/StringLiterals: 271 | EnforcedStyle: double_quotes 272 | ConsistentQuotesInMultiline: true 273 | 274 | Style/SignalException: 275 | EnforcedStyle: only_raise 276 | 277 | Style/SingleLineBlockParams: 278 | Enabled: false 279 | 280 | Style/StringLiteralsInInterpolation: 281 | Enabled: false 282 | 283 | Style/SymbolArray: 284 | # Be consistent 285 | # Good, array of symbols expected 286 | # :foo.in? &i[foo bar] 287 | # Good, link_to receives array of generic objects 288 | # link_to [:admin, :users] 289 | # Good, if second is not a symbol array, first is not expected to be 290 | # [ 291 | # [:foo, :bar] 292 | # [:boo, :bar, baz: true] 293 | # ] 294 | Enabled: false 295 | 296 | Style/TrailingCommaInArguments: 297 | EnforcedStyleForMultiline: comma 298 | 299 | Style/TrailingCommaInArrayLiteral: 300 | EnforcedStyleForMultiline: comma 301 | 302 | Style/TrailingCommaInHashLiteral: 303 | EnforcedStyleForMultiline: comma 304 | 305 | Style/TrivialAccessors: 306 | AllowPredicates: true 307 | Enabled: false 308 | 309 | Style/YodaCondition: 310 | # REVIEW: i sure that we don't need it 311 | Enabled: false 312 | -------------------------------------------------------------------------------- /rubocop/rubocop.gemspec: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | # frozen_string_literal: true 3 | 4 | Gem::Specification.new do |spec| 5 | spec.required_ruby_version = ">= 3.0.0" 6 | 7 | rubocop_version = "1.75.0" 8 | 9 | if ENV.fetch("PUBLISH_JOB", nil) 10 | release_version = "#{rubocop_version}.#{ENV.fetch("GITHUB_RUN_NUMBER")}" 11 | end 12 | 13 | spec.name = "rubocop-config-umbrellio" 14 | spec.version = release_version || rubocop_version 15 | spec.authors = ["Umbrellio"] 16 | spec.email = ["oss@umbrellio.biz"] 17 | 18 | spec.summary = "This gem provides default rubocop settings for Umbrellio projects" 19 | spec.homepage = "https://github.com/umbrellio/code-style" 20 | spec.license = "MIT" 21 | 22 | spec.files = Dir["lib/rubocop.*.yml"] << "lib/rubocop.yml" 23 | 24 | spec.add_dependency "rubocop", "~> #{rubocop_version}" 25 | spec.add_dependency "rubocop-factory_bot", "~> 2.27.0" 26 | spec.add_dependency "rubocop-performance", "~> 1.25.0" 27 | spec.add_dependency "rubocop-rails", "~> 2.32.0" 28 | spec.add_dependency "rubocop-rake", "~> 0.7.0" 29 | spec.add_dependency "rubocop-rspec", "~> 3.6.0" 30 | spec.add_dependency "rubocop-sequel", "~> 0.4.0" 31 | end 32 | -------------------------------------------------------------------------------- /stylelint/.gitignore: -------------------------------------------------------------------------------- 1 | /*.log 2 | /node_modules/ 3 | -------------------------------------------------------------------------------- /stylelint/.stylelintrc.styled-components.yml: -------------------------------------------------------------------------------- 1 | extends: stylelint-config-umbrellio/.stylelintrc.yml 2 | rules: 3 | rule-empty-line-before: null 4 | value-keyword-case: null 5 | declaration-block-semicolon-newline-after: null 6 | string-quotes: double 7 | 8 | -------------------------------------------------------------------------------- /stylelint/.stylelintrc.yml: -------------------------------------------------------------------------------- 1 | rules: 2 | # Colors 3 | color-hex-case: lower 4 | color-hex-length: short 5 | color-named: never 6 | color-no-hex: null 7 | color-no-invalid-hex: true 8 | # Fonts 9 | font-family-name-quotes: always-where-recommended 10 | font-family-no-duplicate-names: true 11 | font-weight-notation: null 12 | # Functions 13 | function-calc-no-unspaced-operator: true 14 | function-comma-newline-after: null 15 | function-comma-newline-before: null 16 | function-comma-space-after: always 17 | function-comma-space-before: never 18 | function-linear-gradient-no-nonstandard-direction: true 19 | function-max-empty-lines: 0 20 | function-name-case: lower 21 | function-parentheses-newline-inside: null 22 | function-parentheses-space-inside: never 23 | function-url-no-scheme-relative: true 24 | function-url-quotes: 25 | - always 26 | - except: empty 27 | function-whitespace-after: always 28 | # Numbers 29 | number-leading-zero: never 30 | number-max-precision: null 31 | number-no-trailing-zeros: true 32 | # Strings 33 | string-no-newline: true 34 | string-quotes: single 35 | # Length 36 | length-zero-no-unit: true 37 | # Time 38 | time-min-milliseconds: null 39 | # Units 40 | unit-case: lower 41 | unit-no-unknown: true 42 | # Values 43 | value-keyword-case: lower 44 | value-no-vendor-prefix: null 45 | value-list-comma-newline-after: null 46 | value-list-comma-newline-before: null 47 | value-list-comma-space-after: always 48 | value-list-comma-space-before: never 49 | value-list-max-empty-lines: 0 50 | # Properties 51 | custom-property-empty-line-before: never 52 | shorthand-property-no-redundant-values: true 53 | property-case: lower 54 | property-no-unknown: true 55 | property-no-vendor-prefix: null 56 | # Declarations 57 | keyframe-declaration-no-important: null 58 | declaration-bang-space-after: never 59 | declaration-bang-space-before: always 60 | declaration-colon-newline-after: always-multi-line 61 | declaration-colon-space-after: always 62 | declaration-colon-space-before: never 63 | declaration-empty-line-before: null 64 | declaration-no-important: null 65 | declaration-block-no-duplicate-properties: 66 | - true 67 | - ignore: consecutive-duplicates-with-different-values 68 | declaration-block-no-redundant-longhand-properties: true 69 | declaration-block-no-shorthand-property-overrides: true 70 | declaration-block-semicolon-newline-after: always 71 | declaration-block-semicolon-newline-before: never-multi-line 72 | declaration-block-semicolon-space-after: always-single-line 73 | declaration-block-semicolon-space-before: never 74 | declaration-block-single-line-max-declarations: 1 75 | declaration-block-trailing-semicolon: always 76 | # Blocks 77 | block-closing-brace-empty-line-before: never 78 | block-closing-brace-newline-after: always 79 | block-closing-brace-newline-before: always-multi-line 80 | block-closing-brace-space-after: null 81 | block-closing-brace-space-before: null 82 | block-no-empty: null 83 | block-opening-brace-newline-after: always-multi-line 84 | block-opening-brace-newline-before: null 85 | # Selectors 86 | selector-attribute-brackets-space-inside: never 87 | selector-attribute-operator-space-after: never 88 | selector-attribute-operator-space-before: never 89 | selector-attribute-quotes: always 90 | selector-combinator-space-after: always 91 | selector-combinator-space-before: always 92 | selector-descendant-combinator-no-non-space: true 93 | selector-pseudo-class-case: lower 94 | selector-pseudo-class-no-unknown: true 95 | selector-pseudo-class-parentheses-space-inside: never 96 | selector-pseudo-element-case: lower 97 | selector-pseudo-element-colon-notation: single 98 | selector-pseudo-element-no-unknown: true 99 | selector-type-case: lower 100 | selector-type-no-unknown: true 101 | selector-max-empty-lines: 0 102 | selector-list-comma-newline-after: null 103 | selector-list-comma-newline-before: null 104 | selector-list-comma-space-after: always-single-line 105 | selector-list-comma-space-before: never 106 | # Rules 107 | rule-empty-line-before: 108 | - always 109 | - ignore: 110 | - after-comment 111 | - inside-block 112 | media-feature-colon-space-after: always 113 | media-feature-colon-space-before: never 114 | media-feature-name-case: lower 115 | media-feature-name-no-unknown: true 116 | media-feature-parentheses-space-inside: never 117 | media-feature-range-operator-space-after: always 118 | media-feature-range-operator-space-before: always 119 | media-query-list-comma-space-after: always 120 | media-query-list-comma-space-before: never 121 | at-rule-empty-line-before: 122 | - always 123 | - except: 124 | - after-same-name 125 | - inside-block 126 | at-rule-name-case: lower 127 | at-rule-name-space-after: always 128 | at-rule-no-unknown: true 129 | at-rule-semicolon-newline-after: always 130 | at-rule-semicolon-space-before: never 131 | # Comments 132 | comment-no-empty: true 133 | comment-whitespace-inside: always 134 | # General 135 | indentation: 2 136 | max-empty-lines: 1 137 | max-nesting-depth: 6 138 | max-line-length: 100 139 | no-eol-whitespace: true 140 | no-extra-semicolons: true 141 | no-invalid-double-slash-comments: true 142 | no-missing-end-of-source-newline: true 143 | no-unknown-animations: true 144 | -------------------------------------------------------------------------------- /stylelint/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | All notable changes to this project will be documented in this file. 3 | 4 | The format is based on [Keep a Changelog](http://keepachangelog.com/) 5 | and this project adheres to [Semantic Versioning](http://semver.org/). 6 | 7 | ## [0.1.1] - 2019-06-17 8 | ### Changed 9 | - Removed deprecated rule `function-url-data-uris`. 10 | 11 | ## [0.1.1] - 2017-07-03 12 | ### Changed 13 | - Added a separate config for styled-components. 14 | 15 | ## [0.1.0] - 2017-05-16 16 | Initial config. 17 | -------------------------------------------------------------------------------- /stylelint/README.md: -------------------------------------------------------------------------------- 1 | # stylelint-config-umbrellio 2 | [![npm version](https://badge.fury.io/js/stylelint-config-umbrellio.svg)](https://badge.fury.io/js/stylelint-config-umbrellio) 3 | 4 | Install with [yarn](https://github.com/yarnpkg/yarn): 5 | 6 | ``` 7 | yarn add -D stylelint-config-umbrellio 8 | ``` 9 | 10 | Add `stylelint-config-umbrellio` to "extends" section of Stylelint config: 11 | 12 | ```json 13 | { 14 | "extends": "stylelint-config-umbrellio" 15 | } 16 | ``` 17 | -------------------------------------------------------------------------------- /stylelint/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "stylelint-config-umbrellio", 3 | "version": "0.1.2", 4 | "description": "Stylelint config used for Umbrellio projects", 5 | "main": ".stylelintrc.yml", 6 | "files": [ 7 | ".stylelintrc.yml", 8 | ".stylelintrc.styled-components.yml" 9 | ], 10 | "keywords": [ 11 | "stylelint", 12 | "stylelint-config", 13 | "umbrellio" 14 | ], 15 | "repository": "https://github.com/umbrellio/code-style", 16 | "author": "Alexander Komarov ", 17 | "license": "MIT", 18 | "peerDependencies": { 19 | "stylelint": "^7.10.1" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /stylelint/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | --------------------------------------------------------------------------------