├── .gitignore ├── README.md ├── lib ├── index.js └── rules │ └── no-zangyo.js ├── package.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # eslint-plugin-no-zangyo 2 | 3 | 本日はノー残業デーです!!! 4 | 5 | ![image](https://cloud.githubusercontent.com/assets/1403842/24955457/7cf85910-1fbe-11e7-89f3-0230928497da.png) 6 | 7 | ## Installation 8 | 9 | ``` 10 | $ npm i -D eslint @fand/eslint-plugin-no-zangyo 11 | ``` 12 | 13 | ## Usage 14 | 15 | ```json 16 | { 17 | "plugins": [ 18 | "@fand/no-zangyo" 19 | ], 20 | "rules": { 21 | "no-zangyo/no-zangyo": 2 22 | } 23 | } 24 | ``` 25 | 26 | You can specify begin/end time of your company. 27 | 28 | ```json 29 | { 30 | "plugins": [ 31 | "@fand/no-zangyo" 32 | ], 33 | "rules": { 34 | "no-zangyo/no-zangyo": [2, { 35 | "beginWorking": "10:00", 36 | "endWorking": "19:00" 37 | }] 38 | } 39 | } 40 | ``` 41 | 42 | ## Supported Rules 43 | * no-zangyo/no-zangyo: はよ帰れ 44 | 45 | # Author 46 | [amagitakayosi](https://twitter.com/amagitakayosi) 47 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview ESLint plugin to disallow zangyo.. 3 | * @author amagitakayosi 4 | */ 5 | "use strict"; 6 | 7 | //------------------------------------------------------------------------------ 8 | // Requirements 9 | //------------------------------------------------------------------------------ 10 | 11 | var requireIndex = require("requireindex"); 12 | 13 | //------------------------------------------------------------------------------ 14 | // Plugin Definition 15 | //------------------------------------------------------------------------------ 16 | 17 | 18 | // import all rules in lib/rules 19 | module.exports.rules = requireIndex(__dirname + "/rules"); 20 | -------------------------------------------------------------------------------- /lib/rules/no-zangyo.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview Rule to disallow zangyo 3 | * @author amagitakayosi 4 | * @copyright 2017 amagitakayosi. All rights reserved. 5 | */ 6 | const moment = require('moment'); 7 | 8 | //------------------------------------------------------------------------------ 9 | // Rule Definition 10 | //------------------------------------------------------------------------------ 11 | 12 | module.exports = { 13 | meta: { 14 | docs: { 15 | description: "disallow zangyo", 16 | category: "Possible Errors", 17 | }, 18 | schema: [{ 19 | type : 'object', 20 | properties : { 21 | beginWorking : { 22 | type : 'string', 23 | }, 24 | endWorking : { 25 | type : 'string', 26 | }, 27 | }, 28 | }] 29 | }, 30 | create: function(context) { 31 | const options = context.options[0] || {}; 32 | const beginWorking = moment(options.beginWorking || "10:00", "hh:mm"); 33 | const endWorking = moment(options.endWorking || "19:00", "hh:mm"); 34 | 35 | return { 36 | Program : function checkZangyo (node) { 37 | const now = moment(); 38 | const sourceCode = context.getSourceCode(); 39 | 40 | 41 | console.log(sourceCode); 42 | 43 | if (now.isBefore(beginWorking) || now.isAfter(endWorking)) { 44 | context.report({ node, message: 'はよ帰れ', loc: { 45 | start: sourceCode.getLocFromIndex(0), 46 | end: sourceCode.getLocFromIndex(sourceCode.getText().length - 1), 47 | }}) 48 | } 49 | }, 50 | }; 51 | } 52 | }; 53 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@fand/eslint-plugin-no-zangyo", 3 | "version": "0.0.0", 4 | "description": "ESLint plugin to disallow zangyo.", 5 | "keywords": [ 6 | "eslint", 7 | "eslintplugin", 8 | "eslint-plugin" 9 | ], 10 | "author": "amagitakayosi", 11 | "main": "lib/index.js", 12 | "scripts": { 13 | "test": "echo TBD" 14 | }, 15 | "dependencies": { 16 | "moment": "^2.18.1", 17 | "requireindex": "~1.1.0" 18 | }, 19 | "devDependencies": { 20 | "eslint": "~3.9.1" 21 | }, 22 | "license": "ISC" 23 | } 24 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | acorn-jsx@^3.0.0: 6 | version "3.0.1" 7 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 8 | dependencies: 9 | acorn "^3.0.4" 10 | 11 | acorn@^3.0.4: 12 | version "3.3.0" 13 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 14 | 15 | acorn@^5.0.1: 16 | version "5.0.3" 17 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.0.3.tgz#c460df08491463f028ccb82eab3730bf01087b3d" 18 | 19 | ajv-keywords@^1.0.0: 20 | version "1.5.1" 21 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" 22 | 23 | ajv@^4.7.0: 24 | version "4.11.6" 25 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.6.tgz#947e93049790942b2a2d60a8289b28924d39f987" 26 | dependencies: 27 | co "^4.6.0" 28 | json-stable-stringify "^1.0.1" 29 | 30 | ansi-escapes@^1.1.0: 31 | version "1.4.0" 32 | resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" 33 | 34 | ansi-regex@^2.0.0: 35 | version "2.1.1" 36 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 37 | 38 | ansi-styles@^2.2.1: 39 | version "2.2.1" 40 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 41 | 42 | argparse@^1.0.7: 43 | version "1.0.9" 44 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86" 45 | dependencies: 46 | sprintf-js "~1.0.2" 47 | 48 | array-union@^1.0.1: 49 | version "1.0.2" 50 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 51 | dependencies: 52 | array-uniq "^1.0.1" 53 | 54 | array-uniq@^1.0.1: 55 | version "1.0.3" 56 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 57 | 58 | arrify@^1.0.0: 59 | version "1.0.1" 60 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 61 | 62 | babel-code-frame@^6.16.0: 63 | version "6.22.0" 64 | resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4" 65 | dependencies: 66 | chalk "^1.1.0" 67 | esutils "^2.0.2" 68 | js-tokens "^3.0.0" 69 | 70 | balanced-match@^0.4.1: 71 | version "0.4.2" 72 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 73 | 74 | brace-expansion@^1.0.0: 75 | version "1.1.7" 76 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.7.tgz#3effc3c50e000531fb720eaff80f0ae8ef23cf59" 77 | dependencies: 78 | balanced-match "^0.4.1" 79 | concat-map "0.0.1" 80 | 81 | buffer-shims@~1.0.0: 82 | version "1.0.0" 83 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" 84 | 85 | caller-path@^0.1.0: 86 | version "0.1.0" 87 | resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" 88 | dependencies: 89 | callsites "^0.2.0" 90 | 91 | callsites@^0.2.0: 92 | version "0.2.0" 93 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" 94 | 95 | chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3: 96 | version "1.1.3" 97 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 98 | dependencies: 99 | ansi-styles "^2.2.1" 100 | escape-string-regexp "^1.0.2" 101 | has-ansi "^2.0.0" 102 | strip-ansi "^3.0.0" 103 | supports-color "^2.0.0" 104 | 105 | circular-json@^0.3.1: 106 | version "0.3.1" 107 | resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d" 108 | 109 | cli-cursor@^1.0.1: 110 | version "1.0.2" 111 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" 112 | dependencies: 113 | restore-cursor "^1.0.1" 114 | 115 | cli-width@^2.0.0: 116 | version "2.1.0" 117 | resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a" 118 | 119 | co@^4.6.0: 120 | version "4.6.0" 121 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 122 | 123 | code-point-at@^1.0.0: 124 | version "1.1.0" 125 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 126 | 127 | concat-map@0.0.1: 128 | version "0.0.1" 129 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 130 | 131 | concat-stream@^1.4.6: 132 | version "1.6.0" 133 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7" 134 | dependencies: 135 | inherits "^2.0.3" 136 | readable-stream "^2.2.2" 137 | typedarray "^0.0.6" 138 | 139 | core-util-is@~1.0.0: 140 | version "1.0.2" 141 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 142 | 143 | d@1: 144 | version "1.0.0" 145 | resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" 146 | dependencies: 147 | es5-ext "^0.10.9" 148 | 149 | debug@^2.1.1: 150 | version "2.6.3" 151 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.3.tgz#0f7eb8c30965ec08c72accfa0130c8b79984141d" 152 | dependencies: 153 | ms "0.7.2" 154 | 155 | deep-is@~0.1.3: 156 | version "0.1.3" 157 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 158 | 159 | del@^2.0.2: 160 | version "2.2.2" 161 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 162 | dependencies: 163 | globby "^5.0.0" 164 | is-path-cwd "^1.0.0" 165 | is-path-in-cwd "^1.0.0" 166 | object-assign "^4.0.1" 167 | pify "^2.0.0" 168 | pinkie-promise "^2.0.0" 169 | rimraf "^2.2.8" 170 | 171 | doctrine@^1.2.2: 172 | version "1.5.0" 173 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" 174 | dependencies: 175 | esutils "^2.0.2" 176 | isarray "^1.0.0" 177 | 178 | es5-ext@^0.10.14, es5-ext@^0.10.9, es5-ext@~0.10.14: 179 | version "0.10.15" 180 | resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.15.tgz#c330a5934c1ee21284a7c081a86e5fd937c91ea6" 181 | dependencies: 182 | es6-iterator "2" 183 | es6-symbol "~3.1" 184 | 185 | es6-iterator@2, es6-iterator@^2.0.1, es6-iterator@~2.0.1: 186 | version "2.0.1" 187 | resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.1.tgz#8e319c9f0453bf575d374940a655920e59ca5512" 188 | dependencies: 189 | d "1" 190 | es5-ext "^0.10.14" 191 | es6-symbol "^3.1" 192 | 193 | es6-map@^0.1.3: 194 | version "0.1.5" 195 | resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" 196 | dependencies: 197 | d "1" 198 | es5-ext "~0.10.14" 199 | es6-iterator "~2.0.1" 200 | es6-set "~0.1.5" 201 | es6-symbol "~3.1.1" 202 | event-emitter "~0.3.5" 203 | 204 | es6-set@~0.1.5: 205 | version "0.1.5" 206 | resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" 207 | dependencies: 208 | d "1" 209 | es5-ext "~0.10.14" 210 | es6-iterator "~2.0.1" 211 | es6-symbol "3.1.1" 212 | event-emitter "~0.3.5" 213 | 214 | es6-symbol@3.1.1, es6-symbol@^3.1, es6-symbol@^3.1.1, es6-symbol@~3.1, es6-symbol@~3.1.1: 215 | version "3.1.1" 216 | resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" 217 | dependencies: 218 | d "1" 219 | es5-ext "~0.10.14" 220 | 221 | es6-weak-map@^2.0.1: 222 | version "2.0.2" 223 | resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" 224 | dependencies: 225 | d "1" 226 | es5-ext "^0.10.14" 227 | es6-iterator "^2.0.1" 228 | es6-symbol "^3.1.1" 229 | 230 | escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: 231 | version "1.0.5" 232 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 233 | 234 | escope@^3.6.0: 235 | version "3.6.0" 236 | resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" 237 | dependencies: 238 | es6-map "^0.1.3" 239 | es6-weak-map "^2.0.1" 240 | esrecurse "^4.1.0" 241 | estraverse "^4.1.1" 242 | 243 | eslint@~3.9.1: 244 | version "3.9.1" 245 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-3.9.1.tgz#5a8597706fc6048bc6061ac754d4a211d28f4f5b" 246 | dependencies: 247 | babel-code-frame "^6.16.0" 248 | chalk "^1.1.3" 249 | concat-stream "^1.4.6" 250 | debug "^2.1.1" 251 | doctrine "^1.2.2" 252 | escope "^3.6.0" 253 | espree "^3.3.1" 254 | estraverse "^4.2.0" 255 | esutils "^2.0.2" 256 | file-entry-cache "^2.0.0" 257 | glob "^7.0.3" 258 | globals "^9.2.0" 259 | ignore "^3.1.5" 260 | imurmurhash "^0.1.4" 261 | inquirer "^0.12.0" 262 | is-my-json-valid "^2.10.0" 263 | is-resolvable "^1.0.0" 264 | js-yaml "^3.5.1" 265 | json-stable-stringify "^1.0.0" 266 | levn "^0.3.0" 267 | lodash "^4.0.0" 268 | mkdirp "^0.5.0" 269 | natural-compare "^1.4.0" 270 | optionator "^0.8.2" 271 | path-is-inside "^1.0.1" 272 | pluralize "^1.2.1" 273 | progress "^1.1.8" 274 | require-uncached "^1.0.2" 275 | shelljs "^0.7.5" 276 | strip-bom "^3.0.0" 277 | strip-json-comments "~1.0.1" 278 | table "^3.7.8" 279 | text-table "~0.2.0" 280 | user-home "^2.0.0" 281 | 282 | espree@^3.3.1: 283 | version "3.4.1" 284 | resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.1.tgz#28a83ab4aaed71ed8fe0f5efe61b76a05c13c4d2" 285 | dependencies: 286 | acorn "^5.0.1" 287 | acorn-jsx "^3.0.0" 288 | 289 | esprima@^3.1.1: 290 | version "3.1.3" 291 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" 292 | 293 | esrecurse@^4.1.0: 294 | version "4.1.0" 295 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.1.0.tgz#4713b6536adf7f2ac4f327d559e7756bff648220" 296 | dependencies: 297 | estraverse "~4.1.0" 298 | object-assign "^4.0.1" 299 | 300 | estraverse@^4.1.1, estraverse@^4.2.0: 301 | version "4.2.0" 302 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" 303 | 304 | estraverse@~4.1.0: 305 | version "4.1.1" 306 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.1.1.tgz#f6caca728933a850ef90661d0e17982ba47111a2" 307 | 308 | esutils@^2.0.2: 309 | version "2.0.2" 310 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 311 | 312 | event-emitter@~0.3.5: 313 | version "0.3.5" 314 | resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" 315 | dependencies: 316 | d "1" 317 | es5-ext "~0.10.14" 318 | 319 | exit-hook@^1.0.0: 320 | version "1.1.1" 321 | resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" 322 | 323 | fast-levenshtein@~2.0.4: 324 | version "2.0.6" 325 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 326 | 327 | figures@^1.3.5: 328 | version "1.7.0" 329 | resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" 330 | dependencies: 331 | escape-string-regexp "^1.0.5" 332 | object-assign "^4.1.0" 333 | 334 | file-entry-cache@^2.0.0: 335 | version "2.0.0" 336 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" 337 | dependencies: 338 | flat-cache "^1.2.1" 339 | object-assign "^4.0.1" 340 | 341 | flat-cache@^1.2.1: 342 | version "1.2.2" 343 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96" 344 | dependencies: 345 | circular-json "^0.3.1" 346 | del "^2.0.2" 347 | graceful-fs "^4.1.2" 348 | write "^0.2.1" 349 | 350 | fs.realpath@^1.0.0: 351 | version "1.0.0" 352 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 353 | 354 | generate-function@^2.0.0: 355 | version "2.0.0" 356 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 357 | 358 | generate-object-property@^1.1.0: 359 | version "1.2.0" 360 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 361 | dependencies: 362 | is-property "^1.0.0" 363 | 364 | glob@^7.0.0, glob@^7.0.3, glob@^7.0.5: 365 | version "7.1.1" 366 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 367 | dependencies: 368 | fs.realpath "^1.0.0" 369 | inflight "^1.0.4" 370 | inherits "2" 371 | minimatch "^3.0.2" 372 | once "^1.3.0" 373 | path-is-absolute "^1.0.0" 374 | 375 | globals@^9.2.0: 376 | version "9.17.0" 377 | resolved "https://registry.yarnpkg.com/globals/-/globals-9.17.0.tgz#0c0ca696d9b9bb694d2e5470bd37777caad50286" 378 | 379 | globby@^5.0.0: 380 | version "5.0.0" 381 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 382 | dependencies: 383 | array-union "^1.0.1" 384 | arrify "^1.0.0" 385 | glob "^7.0.3" 386 | object-assign "^4.0.1" 387 | pify "^2.0.0" 388 | pinkie-promise "^2.0.0" 389 | 390 | graceful-fs@^4.1.2: 391 | version "4.1.11" 392 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 393 | 394 | has-ansi@^2.0.0: 395 | version "2.0.0" 396 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 397 | dependencies: 398 | ansi-regex "^2.0.0" 399 | 400 | ignore@^3.1.5: 401 | version "3.2.7" 402 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.2.7.tgz#4810ca5f1d8eca5595213a34b94f2eb4ed926bbd" 403 | 404 | imurmurhash@^0.1.4: 405 | version "0.1.4" 406 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 407 | 408 | inflight@^1.0.4: 409 | version "1.0.6" 410 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 411 | dependencies: 412 | once "^1.3.0" 413 | wrappy "1" 414 | 415 | inherits@2, inherits@^2.0.3, inherits@~2.0.1: 416 | version "2.0.3" 417 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 418 | 419 | inquirer@^0.12.0: 420 | version "0.12.0" 421 | resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-0.12.0.tgz#1ef2bfd63504df0bc75785fff8c2c41df12f077e" 422 | dependencies: 423 | ansi-escapes "^1.1.0" 424 | ansi-regex "^2.0.0" 425 | chalk "^1.0.0" 426 | cli-cursor "^1.0.1" 427 | cli-width "^2.0.0" 428 | figures "^1.3.5" 429 | lodash "^4.3.0" 430 | readline2 "^1.0.1" 431 | run-async "^0.1.0" 432 | rx-lite "^3.1.2" 433 | string-width "^1.0.1" 434 | strip-ansi "^3.0.0" 435 | through "^2.3.6" 436 | 437 | interpret@^1.0.0: 438 | version "1.0.2" 439 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.2.tgz#f4f623f0bb7122f15f5717c8e254b8161b5c5b2d" 440 | 441 | is-fullwidth-code-point@^1.0.0: 442 | version "1.0.0" 443 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 444 | dependencies: 445 | number-is-nan "^1.0.0" 446 | 447 | is-fullwidth-code-point@^2.0.0: 448 | version "2.0.0" 449 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 450 | 451 | is-my-json-valid@^2.10.0: 452 | version "2.16.0" 453 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" 454 | dependencies: 455 | generate-function "^2.0.0" 456 | generate-object-property "^1.1.0" 457 | jsonpointer "^4.0.0" 458 | xtend "^4.0.0" 459 | 460 | is-path-cwd@^1.0.0: 461 | version "1.0.0" 462 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 463 | 464 | is-path-in-cwd@^1.0.0: 465 | version "1.0.0" 466 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" 467 | dependencies: 468 | is-path-inside "^1.0.0" 469 | 470 | is-path-inside@^1.0.0: 471 | version "1.0.0" 472 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" 473 | dependencies: 474 | path-is-inside "^1.0.1" 475 | 476 | is-property@^1.0.0: 477 | version "1.0.2" 478 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 479 | 480 | is-resolvable@^1.0.0: 481 | version "1.0.0" 482 | resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62" 483 | dependencies: 484 | tryit "^1.0.1" 485 | 486 | isarray@^1.0.0, isarray@~1.0.0: 487 | version "1.0.0" 488 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 489 | 490 | js-tokens@^3.0.0: 491 | version "3.0.1" 492 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.1.tgz#08e9f132484a2c45a30907e9dc4d5567b7f114d7" 493 | 494 | js-yaml@^3.5.1: 495 | version "3.8.3" 496 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.3.tgz#33a05ec481c850c8875929166fe1beb61c728766" 497 | dependencies: 498 | argparse "^1.0.7" 499 | esprima "^3.1.1" 500 | 501 | json-stable-stringify@^1.0.0, json-stable-stringify@^1.0.1: 502 | version "1.0.1" 503 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 504 | dependencies: 505 | jsonify "~0.0.0" 506 | 507 | jsonify@~0.0.0: 508 | version "0.0.0" 509 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 510 | 511 | jsonpointer@^4.0.0: 512 | version "4.0.1" 513 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 514 | 515 | levn@^0.3.0, levn@~0.3.0: 516 | version "0.3.0" 517 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 518 | dependencies: 519 | prelude-ls "~1.1.2" 520 | type-check "~0.3.2" 521 | 522 | lodash@^4.0.0, lodash@^4.3.0: 523 | version "4.17.4" 524 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 525 | 526 | minimatch@^3.0.2: 527 | version "3.0.3" 528 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" 529 | dependencies: 530 | brace-expansion "^1.0.0" 531 | 532 | minimist@0.0.8: 533 | version "0.0.8" 534 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 535 | 536 | mkdirp@^0.5.0, mkdirp@^0.5.1: 537 | version "0.5.1" 538 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 539 | dependencies: 540 | minimist "0.0.8" 541 | 542 | moment@^2.18.1: 543 | version "2.18.1" 544 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" 545 | 546 | ms@0.7.2: 547 | version "0.7.2" 548 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" 549 | 550 | mute-stream@0.0.5: 551 | version "0.0.5" 552 | resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.5.tgz#8fbfabb0a98a253d3184331f9e8deb7372fac6c0" 553 | 554 | natural-compare@^1.4.0: 555 | version "1.4.0" 556 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 557 | 558 | number-is-nan@^1.0.0: 559 | version "1.0.1" 560 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 561 | 562 | object-assign@^4.0.1, object-assign@^4.1.0: 563 | version "4.1.1" 564 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 565 | 566 | once@^1.3.0: 567 | version "1.4.0" 568 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 569 | dependencies: 570 | wrappy "1" 571 | 572 | onetime@^1.0.0: 573 | version "1.1.0" 574 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" 575 | 576 | optionator@^0.8.2: 577 | version "0.8.2" 578 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 579 | dependencies: 580 | deep-is "~0.1.3" 581 | fast-levenshtein "~2.0.4" 582 | levn "~0.3.0" 583 | prelude-ls "~1.1.2" 584 | type-check "~0.3.2" 585 | wordwrap "~1.0.0" 586 | 587 | os-homedir@^1.0.0: 588 | version "1.0.2" 589 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 590 | 591 | path-is-absolute@^1.0.0: 592 | version "1.0.1" 593 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 594 | 595 | path-is-inside@^1.0.1: 596 | version "1.0.2" 597 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 598 | 599 | path-parse@^1.0.5: 600 | version "1.0.5" 601 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 602 | 603 | pify@^2.0.0: 604 | version "2.3.0" 605 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 606 | 607 | pinkie-promise@^2.0.0: 608 | version "2.0.1" 609 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 610 | dependencies: 611 | pinkie "^2.0.0" 612 | 613 | pinkie@^2.0.0: 614 | version "2.0.4" 615 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 616 | 617 | pluralize@^1.2.1: 618 | version "1.2.1" 619 | resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45" 620 | 621 | prelude-ls@~1.1.2: 622 | version "1.1.2" 623 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 624 | 625 | process-nextick-args@~1.0.6: 626 | version "1.0.7" 627 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 628 | 629 | progress@^1.1.8: 630 | version "1.1.8" 631 | resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" 632 | 633 | readable-stream@^2.2.2: 634 | version "2.2.9" 635 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.9.tgz#cf78ec6f4a6d1eb43d26488cac97f042e74b7fc8" 636 | dependencies: 637 | buffer-shims "~1.0.0" 638 | core-util-is "~1.0.0" 639 | inherits "~2.0.1" 640 | isarray "~1.0.0" 641 | process-nextick-args "~1.0.6" 642 | string_decoder "~1.0.0" 643 | util-deprecate "~1.0.1" 644 | 645 | readline2@^1.0.1: 646 | version "1.0.1" 647 | resolved "https://registry.yarnpkg.com/readline2/-/readline2-1.0.1.tgz#41059608ffc154757b715d9989d199ffbf372e35" 648 | dependencies: 649 | code-point-at "^1.0.0" 650 | is-fullwidth-code-point "^1.0.0" 651 | mute-stream "0.0.5" 652 | 653 | rechoir@^0.6.2: 654 | version "0.6.2" 655 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 656 | dependencies: 657 | resolve "^1.1.6" 658 | 659 | require-uncached@^1.0.2: 660 | version "1.0.3" 661 | resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" 662 | dependencies: 663 | caller-path "^0.1.0" 664 | resolve-from "^1.0.0" 665 | 666 | requireindex@~1.1.0: 667 | version "1.1.0" 668 | resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162" 669 | 670 | resolve-from@^1.0.0: 671 | version "1.0.1" 672 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" 673 | 674 | resolve@^1.1.6: 675 | version "1.3.2" 676 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235" 677 | dependencies: 678 | path-parse "^1.0.5" 679 | 680 | restore-cursor@^1.0.1: 681 | version "1.0.1" 682 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" 683 | dependencies: 684 | exit-hook "^1.0.0" 685 | onetime "^1.0.0" 686 | 687 | rimraf@^2.2.8: 688 | version "2.6.1" 689 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" 690 | dependencies: 691 | glob "^7.0.5" 692 | 693 | run-async@^0.1.0: 694 | version "0.1.0" 695 | resolved "https://registry.yarnpkg.com/run-async/-/run-async-0.1.0.tgz#c8ad4a5e110661e402a7d21b530e009f25f8e389" 696 | dependencies: 697 | once "^1.3.0" 698 | 699 | rx-lite@^3.1.2: 700 | version "3.1.2" 701 | resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-3.1.2.tgz#19ce502ca572665f3b647b10939f97fd1615f102" 702 | 703 | shelljs@^0.7.5: 704 | version "0.7.7" 705 | resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.7.tgz#b2f5c77ef97148f4b4f6e22682e10bba8667cff1" 706 | dependencies: 707 | glob "^7.0.0" 708 | interpret "^1.0.0" 709 | rechoir "^0.6.2" 710 | 711 | slice-ansi@0.0.4: 712 | version "0.0.4" 713 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" 714 | 715 | sprintf-js@~1.0.2: 716 | version "1.0.3" 717 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 718 | 719 | string-width@^1.0.1: 720 | version "1.0.2" 721 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 722 | dependencies: 723 | code-point-at "^1.0.0" 724 | is-fullwidth-code-point "^1.0.0" 725 | strip-ansi "^3.0.0" 726 | 727 | string-width@^2.0.0: 728 | version "2.0.0" 729 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.0.0.tgz#635c5436cc72a6e0c387ceca278d4e2eec52687e" 730 | dependencies: 731 | is-fullwidth-code-point "^2.0.0" 732 | strip-ansi "^3.0.0" 733 | 734 | string_decoder@~1.0.0: 735 | version "1.0.0" 736 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.0.tgz#f06f41157b664d86069f84bdbdc9b0d8ab281667" 737 | dependencies: 738 | buffer-shims "~1.0.0" 739 | 740 | strip-ansi@^3.0.0: 741 | version "3.0.1" 742 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 743 | dependencies: 744 | ansi-regex "^2.0.0" 745 | 746 | strip-bom@^3.0.0: 747 | version "3.0.0" 748 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" 749 | 750 | strip-json-comments@~1.0.1: 751 | version "1.0.4" 752 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" 753 | 754 | supports-color@^2.0.0: 755 | version "2.0.0" 756 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 757 | 758 | table@^3.7.8: 759 | version "3.8.3" 760 | resolved "https://registry.yarnpkg.com/table/-/table-3.8.3.tgz#2bbc542f0fda9861a755d3947fefd8b3f513855f" 761 | dependencies: 762 | ajv "^4.7.0" 763 | ajv-keywords "^1.0.0" 764 | chalk "^1.1.1" 765 | lodash "^4.0.0" 766 | slice-ansi "0.0.4" 767 | string-width "^2.0.0" 768 | 769 | text-table@~0.2.0: 770 | version "0.2.0" 771 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 772 | 773 | through@^2.3.6: 774 | version "2.3.8" 775 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 776 | 777 | tryit@^1.0.1: 778 | version "1.0.3" 779 | resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb" 780 | 781 | type-check@~0.3.2: 782 | version "0.3.2" 783 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 784 | dependencies: 785 | prelude-ls "~1.1.2" 786 | 787 | typedarray@^0.0.6: 788 | version "0.0.6" 789 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" 790 | 791 | user-home@^2.0.0: 792 | version "2.0.0" 793 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f" 794 | dependencies: 795 | os-homedir "^1.0.0" 796 | 797 | util-deprecate@~1.0.1: 798 | version "1.0.2" 799 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 800 | 801 | wordwrap@~1.0.0: 802 | version "1.0.0" 803 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 804 | 805 | wrappy@1: 806 | version "1.0.2" 807 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 808 | 809 | write@^0.2.1: 810 | version "0.2.1" 811 | resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" 812 | dependencies: 813 | mkdirp "^0.5.1" 814 | 815 | xtend@^4.0.0: 816 | version "4.0.1" 817 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 818 | --------------------------------------------------------------------------------