Merge lp:~cjwatson/launchpad/eslint into lp:launchpad

Proposed by Colin Watson
Status: Merged
Merged at revision: 18523
Proposed branch: lp:~cjwatson/launchpad/eslint
Merge into: lp:launchpad
Prerequisite: lp:~cjwatson/launchpad/yarn
Diff against target: 959 lines (+836/-14)
6 files modified
.eslintignore (+9/-0)
.eslintrc.json (+49/-0)
Makefile (+14/-9)
utilities/lint (+18/-5)
yarn/package.json (+6/-0)
yarn/yarn.lock (+740/-0)
To merge this branch: bzr merge lp:~cjwatson/launchpad/eslint
Reviewer Review Type Date Requested Status
William Grant code Approve
Review via email: mp+327884@code.launchpad.net

Commit message

Use eslint to lint JavaScript files.

Description of the change

It's much pickier than pocketlint, has found several real bugs so far for me, and has a very low false positive rate.

To post a comment you must log in.
Revision history for this message
William Grant (wgrant) :
review: Approve (code)
Revision history for this message
Colin Watson (cjwatson) :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file '.eslintignore'
2--- .eslintignore 1970-01-01 00:00:00 +0000
3+++ .eslintignore 2018-01-01 20:41:28 +0000
4@@ -0,0 +1,9 @@
5+# Third-party modules, albeit modified somewhat for Launchpad.
6+lib/lp/app/javascript/ellipsis.js
7+lib/lp/app/javascript/gallery-accordion/gallery-accordion.js
8+lib/lp/app/javascript/mustache.js
9+lib/lp/app/javascript/sorttable/sorttable.js
10+
11+# Minified third-party files.
12+lib/lp/app/tour/jquery-*.pack.js
13+lib/lp/app/tour/selector.js
14
15=== added file '.eslintrc.json'
16--- .eslintrc.json 1970-01-01 00:00:00 +0000
17+++ .eslintrc.json 2018-01-01 20:41:28 +0000
18@@ -0,0 +1,49 @@
19+{
20+ "env": {
21+ "browser": true
22+ },
23+ "extends": "eslint:recommended",
24+ "globals": {
25+ "$": false,
26+ "LP": true,
27+ "YUI": false,
28+ "YUI_config": true
29+ },
30+ "rules": {
31+ "comma-dangle": "error",
32+ "curly": "error",
33+ "eqeqeq": [
34+ "error",
35+ "smart"
36+ ],
37+ "guard-for-in": "error",
38+ "linebreak-style": [
39+ "error",
40+ "unix"
41+ ],
42+ "max-len": [
43+ "error",
44+ {
45+ "ignoreRegExpLiterals": true
46+ }
47+ ],
48+ "no-caller": "error",
49+ "no-eval": "error",
50+ "no-implied-eval": "error",
51+ "no-invalid-this": "error",
52+ "no-new": "error",
53+ "no-tabs": "error",
54+ "no-trailing-spaces": "error",
55+ "no-unused-vars": [
56+ "error",
57+ {
58+ "args": "none"
59+ }
60+ ],
61+ "no-with": "error",
62+ "semi": [
63+ "error",
64+ "always"
65+ ]
66+ }
67+}
68
69=== modified file 'Makefile'
70--- Makefile 2017-12-09 21:10:13 +0000
71+++ Makefile 2018-01-01 20:41:28 +0000
72@@ -114,27 +114,27 @@
73 $(MAKE) -C doc/ html
74
75 # Run by PQM.
76-check_config: build
77+check_config: build $(JS_BUILD_DIR)/.development
78 bin/test -m lp.services.config.tests -vvt test_config
79
80 # Clean before running the test suite, since the build might fail depending
81 # what source changes happened. (e.g. apidoc depends on interfaces)
82-check: clean build
83+check: clean build $(JS_BUILD_DIR)/.development
84 # Run all tests. test_on_merge.py takes care of setting up the
85 # database.
86 ${PY} -t ./test_on_merge.py $(VERBOSITY) $(TESTOPTS)
87 bzr status --no-pending
88
89-check_mailman: build
90+check_mailman: build $(JS_BUILD_DIR)/.development
91 # Run all tests, including the Mailman integration
92 # tests. test_on_merge.py takes care of setting up the database.
93 ${PY} -t ./test_on_merge.py $(VERBOSITY) $(TESTOPTS) \
94 lp.services.mailman.tests
95
96-lint: ${PY}
97+lint: ${PY} $(JS_BUILD_DIR)/.development
98 @bash ./utilities/lint
99
100-lint-verbose: ${PY}
101+lint-verbose: ${PY} $(JS_BUILD_DIR)/.development
102 @bash ./utilities/lint -v
103
104 logs:
105@@ -190,13 +190,18 @@
106 mv $@/tmp/yarn-v$(YARN_VERSION)/* $@
107 $(RM) -r $@/tmp
108
109-yarn/node_modules/yui: yarn/package.json | $(YARN_BUILD)
110- $(YARN) install --offline --frozen-lockfile
111+$(JS_BUILD_DIR)/.production: yarn/package.json | $(YARN_BUILD)
112+ $(YARN) install --offline --frozen-lockfile --production
113 # We don't use YUI's Flash components and they have a bad security
114 # record. Kill them.
115 find yarn/node_modules/yui -name '*.swf' -delete
116-
117-$(YUI_SYMLINK): yarn/node_modules/yui
118+ touch $@
119+
120+$(JS_BUILD_DIR)/.development: $(JS_BUILD_DIR)/.production
121+ $(YARN) install --offline --frozen-lockfile
122+ touch $@
123+
124+$(YUI_SYMLINK): $(JS_BUILD_DIR)/.production
125 ln -sfn ../../yarn/node_modules/yui $@
126
127 $(LP_JS_BUILD): | $(JS_BUILD_DIR)
128
129=== modified file 'utilities/lint'
130--- utilities/lint 2017-01-17 22:23:39 +0000
131+++ utilities/lint 2018-01-01 20:41:28 +0000
132@@ -31,10 +31,23 @@
133 fi
134
135 # Sample data contains auto generated files with long lines.
136-pocketlint_files=`echo "$files" | env -i grep -v ".sql$"`
137-if [ -z "$pocketlint_files" ]; then
138+lint_files=`echo "$files" | env -i grep -v '\.sql$'`
139+if [ -z "$lint_files" ]; then
140 exit 0
141 fi
142-
143-echo ""
144-pocketlint $pocketlint_files 2>&1
145+lint_files=`echo "$lint_files" | tr " " "\n"`
146+
147+non_js_files=`echo "$lint_files" | env -i grep -v '\.js$'`
148+js_files=`echo "$lint_files" | env -i grep '\.js$'`
149+
150+ret=0
151+if [ "$non_js_files" ]; then
152+ echo ""
153+ pocketlint $non_js_files 2>&1 || ret=$?
154+fi
155+if [ "$js_files" ]; then
156+ # eslint emits a leading blank line by itself if it produces any other
157+ # output.
158+ nodejs yarn/node_modules/.bin/eslint $js_files 2>&1 || ret=$?
159+fi
160+exit $ret
161
162=== modified file 'yarn/package.json'
163--- yarn/package.json 2017-07-24 12:47:04 +0000
164+++ yarn/package.json 2018-01-01 20:41:28 +0000
165@@ -11,5 +11,11 @@
166 "license": "AGPL-3.0",
167 "dependencies": {
168 "yui": "3.10.3"
169+ },
170+ "devDependencies": {
171+ "eslint": "^4.2.0"
172+ },
173+ "scripts": {
174+ "lint": "eslint 'lib/lp/**/*.js'"
175 }
176 }
177
178=== modified file 'yarn/yarn.lock'
179--- yarn/yarn.lock 2017-07-24 12:47:04 +0000
180+++ yarn/yarn.lock 2018-01-01 20:41:28 +0000
181@@ -2,20 +2,335 @@
182 # yarn lockfile v1
183
184
185+acorn-jsx@^3.0.0:
186+ version "3.0.1"
187+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b"
188+ dependencies:
189+ acorn "^3.0.4"
190+
191+acorn@^3.0.4:
192+ version "3.3.0"
193+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
194+
195+acorn@^5.0.1:
196+ version "5.1.1"
197+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.1.1.tgz#53fe161111f912ab999ee887a90a0bc52822fd75"
198+
199+ajv-keywords@^1.0.0:
200+ version "1.5.1"
201+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c"
202+
203+ajv@^4.7.0:
204+ version "4.11.8"
205+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
206+ dependencies:
207+ co "^4.6.0"
208+ json-stable-stringify "^1.0.1"
209+
210+ajv@^5.2.0:
211+ version "5.2.2"
212+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.2.2.tgz#47c68d69e86f5d953103b0074a9430dc63da5e39"
213+ dependencies:
214+ co "^4.6.0"
215+ fast-deep-equal "^1.0.0"
216+ json-schema-traverse "^0.3.0"
217+ json-stable-stringify "^1.0.1"
218+
219+ansi-escapes@^2.0.0:
220+ version "2.0.0"
221+ resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-2.0.0.tgz#5bae52be424878dd9783e8910e3fc2922e83c81b"
222+
223+ansi-regex@^2.0.0:
224+ version "2.1.1"
225+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
226+
227+ansi-regex@^3.0.0:
228+ version "3.0.0"
229+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
230+
231+ansi-styles@^2.2.1:
232+ version "2.2.1"
233+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
234+
235+ansi-styles@^3.1.0:
236+ version "3.1.0"
237+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.1.0.tgz#09c202d5c917ec23188caa5c9cb9179cd9547750"
238+ dependencies:
239+ color-convert "^1.0.0"
240+
241+argparse@^1.0.7:
242+ version "1.0.9"
243+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
244+ dependencies:
245+ sprintf-js "~1.0.2"
246+
247+array-union@^1.0.1:
248+ version "1.0.2"
249+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
250+ dependencies:
251+ array-uniq "^1.0.1"
252+
253+array-uniq@^1.0.1:
254+ version "1.0.3"
255+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
256+
257+arrify@^1.0.0:
258+ version "1.0.1"
259+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
260+
261 async@~0.2.7:
262 version "0.2.10"
263 resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
264
265+babel-code-frame@^6.22.0:
266+ version "6.22.0"
267+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.22.0.tgz#027620bee567a88c32561574e7fd0801d33118e4"
268+ dependencies:
269+ chalk "^1.1.0"
270+ esutils "^2.0.2"
271+ js-tokens "^3.0.0"
272+
273+balanced-match@^1.0.0:
274+ version "1.0.0"
275+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
276+
277+brace-expansion@^1.1.7:
278+ version "1.1.8"
279+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
280+ dependencies:
281+ balanced-match "^1.0.0"
282+ concat-map "0.0.1"
283+
284+caller-path@^0.1.0:
285+ version "0.1.0"
286+ resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f"
287+ dependencies:
288+ callsites "^0.2.0"
289+
290+callsites@^0.2.0:
291+ version "0.2.0"
292+ resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca"
293+
294+chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
295+ version "1.1.3"
296+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
297+ dependencies:
298+ ansi-styles "^2.2.1"
299+ escape-string-regexp "^1.0.2"
300+ has-ansi "^2.0.0"
301+ strip-ansi "^3.0.0"
302+ supports-color "^2.0.0"
303+
304+chalk@^2.0.0:
305+ version "2.0.1"
306+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.0.1.tgz#dbec49436d2ae15f536114e76d14656cdbc0f44d"
307+ dependencies:
308+ ansi-styles "^3.1.0"
309+ escape-string-regexp "^1.0.5"
310+ supports-color "^4.0.0"
311+
312+circular-json@^0.3.1:
313+ version "0.3.1"
314+ resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.1.tgz#be8b36aefccde8b3ca7aa2d6afc07a37242c0d2d"
315+
316+cli-cursor@^2.1.0:
317+ version "2.1.0"
318+ resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5"
319+ dependencies:
320+ restore-cursor "^2.0.0"
321+
322+cli-width@^2.0.0:
323+ version "2.1.0"
324+ resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.1.0.tgz#b234ca209b29ef66fc518d9b98d5847b00edf00a"
325+
326+co@^4.6.0:
327+ version "4.6.0"
328+ resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
329+
330+color-convert@^1.0.0:
331+ version "1.9.0"
332+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
333+ dependencies:
334+ color-name "^1.1.1"
335+
336+color-name@^1.1.1:
337+ version "1.1.3"
338+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
339+
340 combined-stream@~0.0.4:
341 version "0.0.7"
342 resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-0.0.7.tgz#0137e657baa5a7541c57ac37ac5fc07d73b4dc1f"
343 dependencies:
344 delayed-stream "0.0.5"
345
346+concat-map@0.0.1:
347+ version "0.0.1"
348+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
349+
350+concat-stream@^1.6.0:
351+ version "1.6.0"
352+ resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.0.tgz#0aac662fd52be78964d5532f694784e70110acf7"
353+ dependencies:
354+ inherits "^2.0.3"
355+ readable-stream "^2.2.2"
356+ typedarray "^0.0.6"
357+
358+core-util-is@~1.0.0:
359+ version "1.0.2"
360+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
361+
362+debug@^2.6.8:
363+ version "2.6.8"
364+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc"
365+ dependencies:
366+ ms "2.0.0"
367+
368+deep-is@~0.1.3:
369+ version "0.1.3"
370+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
371+
372+del@^2.0.2:
373+ version "2.2.2"
374+ resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
375+ dependencies:
376+ globby "^5.0.0"
377+ is-path-cwd "^1.0.0"
378+ is-path-in-cwd "^1.0.0"
379+ object-assign "^4.0.1"
380+ pify "^2.0.0"
381+ pinkie-promise "^2.0.0"
382+ rimraf "^2.2.8"
383+
384 delayed-stream@0.0.5:
385 version "0.0.5"
386 resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-0.0.5.tgz#d4b1f43a93e8296dfe02694f4680bc37a313c73f"
387
388+doctrine@^2.0.0:
389+ version "2.0.0"
390+ resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.0.0.tgz#c73d8d2909d22291e1a007a395804da8b665fe63"
391+ dependencies:
392+ esutils "^2.0.2"
393+ isarray "^1.0.0"
394+
395+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5:
396+ version "1.0.5"
397+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
398+
399+eslint-scope@^3.7.1:
400+ version "3.7.1"
401+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
402+ dependencies:
403+ esrecurse "^4.1.0"
404+ estraverse "^4.1.1"
405+
406+eslint@^4.2.0:
407+ version "4.2.0"
408+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-4.2.0.tgz#a2b3184111b198e02e9c7f3cca625a5e01c56b3d"
409+ dependencies:
410+ ajv "^5.2.0"
411+ babel-code-frame "^6.22.0"
412+ chalk "^1.1.3"
413+ concat-stream "^1.6.0"
414+ debug "^2.6.8"
415+ doctrine "^2.0.0"
416+ eslint-scope "^3.7.1"
417+ espree "^3.4.3"
418+ esquery "^1.0.0"
419+ estraverse "^4.2.0"
420+ esutils "^2.0.2"
421+ file-entry-cache "^2.0.0"
422+ glob "^7.1.2"
423+ globals "^9.17.0"
424+ ignore "^3.3.3"
425+ imurmurhash "^0.1.4"
426+ inquirer "^3.0.6"
427+ is-resolvable "^1.0.0"
428+ js-yaml "^3.8.4"
429+ json-stable-stringify "^1.0.1"
430+ levn "^0.3.0"
431+ lodash "^4.17.4"
432+ minimatch "^3.0.2"
433+ mkdirp "^0.5.1"
434+ natural-compare "^1.4.0"
435+ optionator "^0.8.2"
436+ path-is-inside "^1.0.2"
437+ pluralize "^4.0.0"
438+ progress "^2.0.0"
439+ require-uncached "^1.0.3"
440+ strip-json-comments "~2.0.1"
441+ table "^4.0.1"
442+ text-table "~0.2.0"
443+
444+espree@^3.4.3:
445+ version "3.4.3"
446+ resolved "https://registry.yarnpkg.com/espree/-/espree-3.4.3.tgz#2910b5ccd49ce893c2ffffaab4fd8b3a31b82374"
447+ dependencies:
448+ acorn "^5.0.1"
449+ acorn-jsx "^3.0.0"
450+
451+esprima@^4.0.0:
452+ version "4.0.0"
453+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804"
454+
455+esquery@^1.0.0:
456+ version "1.0.0"
457+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.0.tgz#cfba8b57d7fba93f17298a8a006a04cda13d80fa"
458+ dependencies:
459+ estraverse "^4.0.0"
460+
461+esrecurse@^4.1.0:
462+ version "4.2.0"
463+ resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.0.tgz#fa9568d98d3823f9a41d91e902dcab9ea6e5b163"
464+ dependencies:
465+ estraverse "^4.1.0"
466+ object-assign "^4.0.1"
467+
468+estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0:
469+ version "4.2.0"
470+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13"
471+
472+esutils@^2.0.2:
473+ version "2.0.2"
474+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
475+
476+external-editor@^2.0.4:
477+ version "2.0.4"
478+ resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.0.4.tgz#1ed9199da9cbfe2ef2f7a31b2fde8b0d12368972"
479+ dependencies:
480+ iconv-lite "^0.4.17"
481+ jschardet "^1.4.2"
482+ tmp "^0.0.31"
483+
484+fast-deep-equal@^1.0.0:
485+ version "1.0.0"
486+ resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
487+
488+fast-levenshtein@~2.0.4:
489+ version "2.0.6"
490+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
491+
492+figures@^2.0.0:
493+ version "2.0.0"
494+ resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962"
495+ dependencies:
496+ escape-string-regexp "^1.0.5"
497+
498+file-entry-cache@^2.0.0:
499+ version "2.0.0"
500+ resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361"
501+ dependencies:
502+ flat-cache "^1.2.1"
503+ object-assign "^4.0.1"
504+
505+flat-cache@^1.2.1:
506+ version "1.2.2"
507+ resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.2.2.tgz#fa86714e72c21db88601761ecf2f555d1abc6b96"
508+ dependencies:
509+ circular-json "^0.3.1"
510+ del "^2.0.2"
511+ graceful-fs "^4.1.2"
512+ write "^0.2.1"
513+
514 form-data@~0.0.3:
515 version "0.0.10"
516 resolved "https://registry.yarnpkg.com/form-data/-/form-data-0.0.10.tgz#db345a5378d86aeeb1ed5d553b869ac192d2f5ed"
517@@ -24,10 +339,283 @@
518 combined-stream "~0.0.4"
519 mime "~1.2.2"
520
521+fs.realpath@^1.0.0:
522+ version "1.0.0"
523+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
524+
525+glob@^7.0.3, glob@^7.0.5, glob@^7.1.2:
526+ version "7.1.2"
527+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
528+ dependencies:
529+ fs.realpath "^1.0.0"
530+ inflight "^1.0.4"
531+ inherits "2"
532+ minimatch "^3.0.4"
533+ once "^1.3.0"
534+ path-is-absolute "^1.0.0"
535+
536+globals@^9.17.0:
537+ version "9.18.0"
538+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
539+
540+globby@^5.0.0:
541+ version "5.0.0"
542+ resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
543+ dependencies:
544+ array-union "^1.0.1"
545+ arrify "^1.0.0"
546+ glob "^7.0.3"
547+ object-assign "^4.0.1"
548+ pify "^2.0.0"
549+ pinkie-promise "^2.0.0"
550+
551+graceful-fs@^4.1.2:
552+ version "4.1.11"
553+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
554+
555+has-ansi@^2.0.0:
556+ version "2.0.0"
557+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
558+ dependencies:
559+ ansi-regex "^2.0.0"
560+
561+has-flag@^2.0.0:
562+ version "2.0.0"
563+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
564+
565+iconv-lite@^0.4.17:
566+ version "0.4.18"
567+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.18.tgz#23d8656b16aae6742ac29732ea8f0336a4789cf2"
568+
569+ignore@^3.3.3:
570+ version "3.3.3"
571+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.3.tgz#432352e57accd87ab3110e82d3fea0e47812156d"
572+
573+imurmurhash@^0.1.4:
574+ version "0.1.4"
575+ resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
576+
577+inflight@^1.0.4:
578+ version "1.0.6"
579+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
580+ dependencies:
581+ once "^1.3.0"
582+ wrappy "1"
583+
584+inherits@2, inherits@^2.0.3, inherits@~2.0.3:
585+ version "2.0.3"
586+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
587+
588+inquirer@^3.0.6:
589+ version "3.2.0"
590+ resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.2.0.tgz#45b44c2160c729d7578c54060b3eed94487bb42b"
591+ dependencies:
592+ ansi-escapes "^2.0.0"
593+ chalk "^2.0.0"
594+ cli-cursor "^2.1.0"
595+ cli-width "^2.0.0"
596+ external-editor "^2.0.4"
597+ figures "^2.0.0"
598+ lodash "^4.3.0"
599+ mute-stream "0.0.7"
600+ run-async "^2.2.0"
601+ rx-lite "^4.0.8"
602+ rx-lite-aggregates "^4.0.8"
603+ string-width "^2.1.0"
604+ strip-ansi "^4.0.0"
605+ through "^2.3.6"
606+
607+is-fullwidth-code-point@^2.0.0:
608+ version "2.0.0"
609+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
610+
611+is-path-cwd@^1.0.0:
612+ version "1.0.0"
613+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
614+
615+is-path-in-cwd@^1.0.0:
616+ version "1.0.0"
617+ resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
618+ dependencies:
619+ is-path-inside "^1.0.0"
620+
621+is-path-inside@^1.0.0:
622+ version "1.0.0"
623+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f"
624+ dependencies:
625+ path-is-inside "^1.0.1"
626+
627+is-promise@^2.1.0:
628+ version "2.1.0"
629+ resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa"
630+
631+is-resolvable@^1.0.0:
632+ version "1.0.0"
633+ resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.0.0.tgz#8df57c61ea2e3c501408d100fb013cf8d6e0cc62"
634+ dependencies:
635+ tryit "^1.0.1"
636+
637+isarray@^1.0.0, isarray@~1.0.0:
638+ version "1.0.0"
639+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
640+
641+js-tokens@^3.0.0:
642+ version "3.0.2"
643+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
644+
645+js-yaml@^3.8.4:
646+ version "3.9.0"
647+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.9.0.tgz#4ffbbf25c2ac963b8299dc74da7e3740de1c18ce"
648+ dependencies:
649+ argparse "^1.0.7"
650+ esprima "^4.0.0"
651+
652+jschardet@^1.4.2:
653+ version "1.5.0"
654+ resolved "https://registry.yarnpkg.com/jschardet/-/jschardet-1.5.0.tgz#a61f310306a5a71188e1b1acd08add3cfbb08b1e"
655+
656+json-schema-traverse@^0.3.0:
657+ version "0.3.1"
658+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
659+
660+json-stable-stringify@^1.0.1:
661+ version "1.0.1"
662+ resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
663+ dependencies:
664+ jsonify "~0.0.0"
665+
666+jsonify@~0.0.0:
667+ version "0.0.0"
668+ resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
669+
670+levn@^0.3.0, levn@~0.3.0:
671+ version "0.3.0"
672+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
673+ dependencies:
674+ prelude-ls "~1.1.2"
675+ type-check "~0.3.2"
676+
677+lodash@^4.0.0, lodash@^4.17.4, lodash@^4.3.0:
678+ version "4.17.4"
679+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae"
680+
681 mime@~1.2.2, mime@~1.2.7:
682 version "1.2.11"
683 resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10"
684
685+mimic-fn@^1.0.0:
686+ version "1.1.0"
687+ resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
688+
689+minimatch@^3.0.2, minimatch@^3.0.4:
690+ version "3.0.4"
691+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
692+ dependencies:
693+ brace-expansion "^1.1.7"
694+
695+minimist@0.0.8:
696+ version "0.0.8"
697+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
698+
699+mkdirp@^0.5.1:
700+ version "0.5.1"
701+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
702+ dependencies:
703+ minimist "0.0.8"
704+
705+ms@2.0.0:
706+ version "2.0.0"
707+ resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
708+
709+mute-stream@0.0.7:
710+ version "0.0.7"
711+ resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
712+
713+natural-compare@^1.4.0:
714+ version "1.4.0"
715+ resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
716+
717+object-assign@^4.0.1:
718+ version "4.1.1"
719+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
720+
721+once@^1.3.0:
722+ version "1.4.0"
723+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
724+ dependencies:
725+ wrappy "1"
726+
727+onetime@^2.0.0:
728+ version "2.0.1"
729+ resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
730+ dependencies:
731+ mimic-fn "^1.0.0"
732+
733+optionator@^0.8.2:
734+ version "0.8.2"
735+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
736+ dependencies:
737+ deep-is "~0.1.3"
738+ fast-levenshtein "~2.0.4"
739+ levn "~0.3.0"
740+ prelude-ls "~1.1.2"
741+ type-check "~0.3.2"
742+ wordwrap "~1.0.0"
743+
744+os-tmpdir@~1.0.1:
745+ version "1.0.2"
746+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
747+
748+path-is-absolute@^1.0.0:
749+ version "1.0.1"
750+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
751+
752+path-is-inside@^1.0.1, path-is-inside@^1.0.2:
753+ version "1.0.2"
754+ resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
755+
756+pify@^2.0.0:
757+ version "2.3.0"
758+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
759+
760+pinkie-promise@^2.0.0:
761+ version "2.0.1"
762+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
763+ dependencies:
764+ pinkie "^2.0.0"
765+
766+pinkie@^2.0.0:
767+ version "2.0.4"
768+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
769+
770+pluralize@^4.0.0:
771+ version "4.0.0"
772+ resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-4.0.0.tgz#59b708c1c0190a2f692f1c7618c446b052fd1762"
773+
774+prelude-ls@~1.1.2:
775+ version "1.1.2"
776+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
777+
778+process-nextick-args@~1.0.6:
779+ version "1.0.7"
780+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
781+
782+progress@^2.0.0:
783+ version "2.0.0"
784+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.0.tgz#8a1be366bf8fc23db2bd23f10c6fe920b4389d1f"
785+
786+readable-stream@^2.2.2:
787+ version "2.3.3"
788+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
789+ dependencies:
790+ core-util-is "~1.0.0"
791+ inherits "~2.0.3"
792+ isarray "~1.0.0"
793+ process-nextick-args "~1.0.6"
794+ safe-buffer "~5.1.1"
795+ string_decoder "~1.0.3"
796+ util-deprecate "~1.0.1"
797+
798 request@~2.14.0:
799 version "2.14.0"
800 resolved "https://registry.yarnpkg.com/request/-/request-2.14.0.tgz#0d8acbb0b14c1ab82e000b7d381fa8c80d1a7d88"
801@@ -35,6 +623,158 @@
802 form-data "~0.0.3"
803 mime "~1.2.7"
804
805+require-uncached@^1.0.3:
806+ version "1.0.3"
807+ resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3"
808+ dependencies:
809+ caller-path "^0.1.0"
810+ resolve-from "^1.0.0"
811+
812+resolve-from@^1.0.0:
813+ version "1.0.1"
814+ resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226"
815+
816+restore-cursor@^2.0.0:
817+ version "2.0.0"
818+ resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf"
819+ dependencies:
820+ onetime "^2.0.0"
821+ signal-exit "^3.0.2"
822+
823+rimraf@^2.2.8:
824+ version "2.6.1"
825+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d"
826+ dependencies:
827+ glob "^7.0.5"
828+
829+run-async@^2.2.0:
830+ version "2.3.0"
831+ resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0"
832+ dependencies:
833+ is-promise "^2.1.0"
834+
835+rx-lite-aggregates@^4.0.8:
836+ version "4.0.8"
837+ resolved "https://registry.yarnpkg.com/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz#753b87a89a11c95467c4ac1626c4efc4e05c67be"
838+ dependencies:
839+ rx-lite "*"
840+
841+rx-lite@*, rx-lite@^4.0.8:
842+ version "4.0.8"
843+ resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444"
844+
845+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
846+ version "5.1.1"
847+ resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
848+
849+signal-exit@^3.0.2:
850+ version "3.0.2"
851+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
852+
853+slice-ansi@0.0.4:
854+ version "0.0.4"
855+ resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35"
856+
857+sprintf-js@~1.0.2:
858+ version "1.0.3"
859+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
860+
861+string-width@^2.0.0, string-width@^2.1.0:
862+ version "2.1.1"
863+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
864+ dependencies:
865+ is-fullwidth-code-point "^2.0.0"
866+ strip-ansi "^4.0.0"
867+
868+string_decoder@~1.0.3:
869+ version "1.0.3"
870+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
871+ dependencies:
872+ safe-buffer "~5.1.0"
873+
874+strip-ansi@^3.0.0:
875+ version "3.0.1"
876+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
877+ dependencies:
878+ ansi-regex "^2.0.0"
879+
880+strip-ansi@^4.0.0:
881+ version "4.0.0"
882+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
883+ dependencies:
884+ ansi-regex "^3.0.0"
885+
886+strip-json-comments@~2.0.1:
887+ version "2.0.1"
888+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
889+
890+supports-color@^2.0.0:
891+ version "2.0.0"
892+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
893+
894+supports-color@^4.0.0:
895+ version "4.2.0"
896+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.2.0.tgz#ad986dc7eb2315d009b4d77c8169c2231a684037"
897+ dependencies:
898+ has-flag "^2.0.0"
899+
900+table@^4.0.1:
901+ version "4.0.1"
902+ resolved "https://registry.yarnpkg.com/table/-/table-4.0.1.tgz#a8116c133fac2c61f4a420ab6cdf5c4d61f0e435"
903+ dependencies:
904+ ajv "^4.7.0"
905+ ajv-keywords "^1.0.0"
906+ chalk "^1.1.1"
907+ lodash "^4.0.0"
908+ slice-ansi "0.0.4"
909+ string-width "^2.0.0"
910+
911+text-table@~0.2.0:
912+ version "0.2.0"
913+ resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
914+
915+through@^2.3.6:
916+ version "2.3.8"
917+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
918+
919+tmp@^0.0.31:
920+ version "0.0.31"
921+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.31.tgz#8f38ab9438e17315e5dbd8b3657e8bfb277ae4a7"
922+ dependencies:
923+ os-tmpdir "~1.0.1"
924+
925+tryit@^1.0.1:
926+ version "1.0.3"
927+ resolved "https://registry.yarnpkg.com/tryit/-/tryit-1.0.3.tgz#393be730a9446fd1ead6da59a014308f36c289cb"
928+
929+type-check@~0.3.2:
930+ version "0.3.2"
931+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
932+ dependencies:
933+ prelude-ls "~1.1.2"
934+
935+typedarray@^0.0.6:
936+ version "0.0.6"
937+ resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
938+
939+util-deprecate@~1.0.1:
940+ version "1.0.2"
941+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
942+
943+wordwrap@~1.0.0:
944+ version "1.0.0"
945+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
946+
947+wrappy@1:
948+ version "1.0.2"
949+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
950+
951+write@^0.2.1:
952+ version "0.2.1"
953+ resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757"
954+ dependencies:
955+ mkdirp "^0.5.1"
956+
957 yui@3.10.3:
958 version "3.10.3"
959 resolved "https://registry.yarnpkg.com/yui/-/yui-3.10.3.tgz#35fcea1bfafc6d435d27f13621d1ae9deb1e9f85"